In the hope my mailbox doesnt get flooded, a possibility for you guys to create your own engine wallhack
The flags
Code:
enum whMasks
{
mask_wh = 0x1,
mask_outline_white = 0x2,
mask_outline_red = 0x4,
mask_outline_green = 0x6,
mask_outline_blue = 0x8,
mask_outline_orange = 0xA,
mask_outline_yellow = 0xC,
};
Gets the wallhack mask for an object
Code:
DWORD ObjectWallhack(CEntity * pEnt, CClientInfo * pLocalClient)
{
CClientInfo * pClient = GetClientByIndex(pEnt->clientNum);
CEntity * pLocalEnt = GetEntityByIndex(cg->clientNum);
if(pClient != NULL && pLocalClient != NULL)
{
if(pClient->Team == pLocalClient->Team)
return outlineblue;
else
{
if(!CanSeePlayer(pEnt, 0x280F823))
return outlinered;
else
return outlinegreen;
}
}
return NULL;
}
Gets the mask for an object with an important parent
Code:
DWORD ParentWallhack(CEntity * pEnt, CClientInfo * pLocalClient)
{
CClientInfo * pClient = GetClientByIndex(pEnt->ParentIndex);
if(pClient != NULL && pLocalClient != NULL)
{
if(pClient->Team == pLocalClient->Team)
return outlineblue;
else
return outlinered;
}
return NULL;
}
Entity loop trough all types you want to show on screen
Code:
DWORD GetWallhackMask(CEntity * pEnt)
{
CClientInfo * pLocalClient = GetClientByIndex(cg->clientNum);
if(pEnt != NULL && pEnt->isAlive & 1)
{
switch (pEnt->Type)
{
case ET_PLAYER:
{
return ObjectWallhack(pEnt, pLocalClient);
} break;
case ET_MISSILE:
{
return ParentWallhack(pEnt, pLocalClient);
} break;
case ET_ITEM:
{
return outlinewhite;
} break;
case ET_TURRET:
{
return ParentWallhack(pEnt, pLocalClient);
} break;
case ET_HELICOPTER:
{
return ParentWallhack(pEnt, pLocalClient);
} break;
case ET_PLANE:
{
return ParentWallhack(pEnt, pLocalClient);
} break;
case ET_VEHICLE:
{
return ParentWallhack(pEnt, pLocalClient);
} break;
case ET_AGENT:
{
return ObjectWallhack(pEnt, pLocalClient);
} break;
}
}
return NULL;
}
Sample pseudo hook, you have to write this yourself
Code:
void SampleAddRefEntityToScene_Hook()
{
CEntity * pEnt = (CEntity*)GrabEntityFromStack(); //hint: entity is the second param
DWORD dwMask = GetWallhackMask(pEnt);
//pseudo
rsi register = dwMask;
jumpback to original addrefentitytoscene
//
}
*edit, some extra info
Code:
typedef bool (*CanSeePlayer_)(int unknown, CEntity * pEnt, DWORD mask);
CanSeePlayer_ CanSeePlayer = (CanSeePlayer_)0x1402A65B0;
AddCEntity jumptable - 0x140264B30
gl & hf