With recent patches my esp became outdated and request an update.
Code:
GetMeIdxInPlayerInfoList
56 8B F1 0F B6 86 ?? ?? ?? ?? 50 E8 ?? ?? ?? ?? 83 C4 04 84 C0 75 04
Code:
___:5DAAAFB0 sub_5DAAAFB0 proc near ; CODE XREF: sub_5D0B7560+D2p
___:5DAAAFB0 ; sub_5D0BC3C0+68p ...
___:5DAAAFB0 push esi
___:5DAAAFB1 mov esi, ecx
___:5DAAAFB3 movzx eax, byte ptr [esi+1FCh] // IClientShellStub offset
___:5DAAAFBA push eax
___:5DAAAFBB call sub_5DB00080
___:5DAAAFC0 add esp, 4
___:5DAAAFC3 test al, al
___:5DAAAFC5 jnz short loc_5DAAAFCB
___:5DAAAFC7 or al, 0FFh
___:5DAAAFC9 pop esi
___:5DAAAFCA retn
___:5DAAAFCB ; ---------------------------------------------------------------------------
___:5DAAAFCB
___:5DAAAFCB loc_5DAAAFCB: ; CODE XREF: sub_5DAAAFB0+15j
___:5DAAAFCB movzx eax, byte ptr [esi+1FCh]
___:5DAAAFD2 imul eax, 0D80h // CPlayerInformation class size
___:5DAAAFD8 mov al, [eax+esi+204h]
___:5DAAAFDF pop esi
___:5DAAAFE0 retn
___:5DAAAFE0 sub_5DAAAFB0 endp
Code:
class CPlayerInformation
{
public:
HOBJECT Object;
char ClientId;
char Team;
char Name[12];
char _0x0012[2];
int unk;
int Slot;
int Unknown1;
bool C4;
int CallState;
int Rank;
int Unknown2;
int Unknown3;
short Health;
short Kills;
__int32 Deaths;
char spacer[0xD80 - 0x3C];
bool IsValid() const
{
if (Object != nullptr) {
return (true);
}
return (false);
}
bool IsAlive() const
{
if (Health > 0) {
return (true);
}
return (false);
}
};
class IClientShellStub
{
public:
char pad_0x0004[0x1FC-4];
CPlayerInformation Clients[16];
};
Maybe also trouble with DrawTest, but should not be the case.
Code:
void Esp::DrawTest()
{
for (int PlayerId = 0; PlayerId < 16; PlayerId++)
{
const CPlayerInformation PlayerInfoIterator = Engine::EngineSingleton().GetPlayerInfoById(PlayerId);
if (!Engine::EngineSingleton().IsObjectValid(PlayerInfoIterator.Object) || !Engine::EngineSingleton().IsPlayerValid(PlayerInfoIterator)) {
continue;
}
//if (Engine::EngineSingleton().IsPlayerLocal(PlayerInfoIterator)) {
// continue;
//}
LTVector PlayerPosMin3D = Engine::EngineSingleton().GetObjectBoxMins(PlayerInfoIterator.Object);
LTVector PlayerPosMin2D;
if (!WorldToScreen(Engine::EngineSingleton().GetDirect3DDevice(), PlayerPosMin3D, PlayerPosMin2D)) {
continue;
}
ToolkitRenderer::GetToolkitRenderer().Text(PlayerPosMin2D.x, PlayerPosMin2D.y, DT_CENTER, 0xffff0000, PlayerInfoIterator.Name, false);
}
}