DWORD dwEBX = NULL;
HRESULT WINAPI new_DrawIndexedPrimitive(LPDIRECT3DDEVICE9 pDevice, D3DPRIMITIVETYPE Type, INT BaseVertexIndex, UINT MinVertexIndex, UINT NumVertices, UINT startIndex, UINT primCount)
{
_asm mov dwEBX, ebx;
// If you want to find this function (caller) again, do this:
// F7 40 04 00 00 00 10
BYTE* pReturnAddressBytes = (BYTE*) _ReturnAddress();
pReturnAddressBytes -= 0x2F;
if(
pReturnAddressBytes[0] == 0xC1 &&
pReturnAddressBytes[1] == 0xE8 &&
pReturnAddressBytes[2] == 0x1F)
{
_asm push eax;
_asm mov eax, dwEBX;
_asm mov eax, [eax];
_asm mov dwEBX, eax;
_asm pop eax;
char* modelName = (char*)(dwEBX + 0x14);
if(GetAsyncKeyState(VK_F3) != 0)
{
gApp.AddToLogFileA("obj.log", "%s (0x%X)", (char*)(dwEBX + 0x14), ((DWORD)_ReturnAddress() - (DWORD)GetModuleHandle(NULL)));
}
if(gLiveMenu.esp_chams->Boolean())
{
if(
_strnicmp(modelName, "Hero_", 5) == 0 || // Player Models
_strnicmp(modelName, "Gear_", 5) == 0 || // Gear (backpacks, etc)
_strnicmp(modelName, "HGEAR_", 6) == 0 || // Headgear (masks, helmets, etc)
_strnicmp(modelName, "HEADHELMET", 10) == 0 || // Helmet
_strnicmp(modelName, "ARMOR_", 6) == 0 || // Armor
_strnicmp(modelName, "Head_", 5) == 0 || // Head stuff
_strnicmp(modelName, "Mask_", 5) == 0 || // Mask (again?)
_strnicmp(modelName, "UpperBody_", 10) == 0 || // Shirts and crap
_strnicmp(modelName, "LowerBody_", 10) == 0 // Pants and crap
)
{
// Player!
}
else if(_strnicmp(modelName, "Zombie_", 7) == 0) // Zombies (Zombie_ and zombie_)
{
//Zombie!
}
else if(
_strnicmp(modelName, "SHG_", 4) == 0 || // Shotguns (again??)
_strnicmp(modelName, "SMG_", 4) == 0 || // Submachine Guns
_strnicmp(modelName, "MG_", 3) == 0 || // Machine Guns
_strnicmp(modelName, "ASR_", 4) == 0 || // Assault Rifles
_strnicmp(modelName, "SNP_", 4) == 0 || // Sniper Rifles
_strnicmp(modelName, "EXP_", 4) == 0 || // Explosives
_strnicmp(modelName, "Consumables_", 12) == 0 || // Consumables
_strnicmp(modelName, "Item_", 5) == 0 || // Items (Item_ and item_)
_strnicmp(modelName, "MEL_", 4) == 0 || // Melee
_strnicmp(modelName, "HG_", 3) == 0 || // Hand Guns
_strnicmp(modelName, "SUP_", 4) == 0 || // Suppressors
_strnicmp(modelName, "Loot_", 5) == 0 || // Loot
_strnicmp(modelName, "ATTM_", 5) == 0 // Attachments
)
{
//Items!
}
}
}
return gOrig.DrawIndexedPrimitive(pDevice, Type, BaseVertexIndex, MinVertexIndex, NumVertices, startIndex, primCount);
}