- 18, Jan 2014
- #1
VOID FireWeapon( LTPlayerClient* Client, INT a1 )
{
DWORD CallAddress = FireWeaponAddress;
_asm PUSH a1;
_asm MOV ECX, Client;
_asm CALL CallAddress;
}
Теперь нужно сделать пару проверок, в противном случае оружие будет продолжать стрелять, даже если у вас кончились патроны.
VOID IPlayerMng::Fire()
{
if( !bIsReady )
return;
if( Engine::ClientShell->Client->Ammo > 0 )
Engine::FireWeapon( Engine::ClientShell->Client, 1 );
else
Engine::ClientShell->Client->FireState = 6;
}
Патроны - 0x240 of LTPlayerClient, FireState 0x354
Находим и получаем FireWeaponAddress (Тестировалось на NA & EU):
\x83\xEC\x20\x56\x8B\xF1\xB9\x00\x00\x00\x00\xE8\x00\x00\x00\x00\x84\xC0\x74\x09\x32\xC0\x5E
xxxxxxx????x????xxxxxxx