******************************************* ***** ExperTHack Logger ***** ***** Version : 2.0 ***** ******************************************* #define GameStatus 0x377E23D0 //Correct #define LTClientEXE 0x00490520 #define LTClientDLL 0x377C9B80 #define WeaponMgr 0x37833CF4 #define GameClientShell 0x3780A2BC #define PlayerByIndex 0x37199130 #define PlayerMgr 0x3780A31C #define PlayerStatus 0x377E8984 #define ClientInfoMgr 0x377E929C #define LocalPlayer 0x37199BA0 #define SuperBullets 0x37452656 //Bytes : \x0F\x94\xC0 #define RemoteKill1 0x374584B1 //Bytes : \x8B\x51\x64\xFF\xD2 #define RemoteKill2 0x374584B2 #define RemoteKill3 0x37458831 #define RemoteKill4 0x37458832 //Bytes : \x8B\x51\x64\xFF\xD2 #define WeaponRange1 0x37458389 //Bytes : \x8B\x80\xD0\x02\x00\x00 #define WeaponRange2 0x37458709 //Bytes : \x8B\x80\xD0\x02\x00\x00 #define NoRecoil 0x373638C0 //Bytes : \xD9\x44\x24\x14 #define RapidFire 0x37458E6A //Bytes : \x74\x3E #define LTCSBase 0x377C9B68 #define DeviceGame 0x008795D8 #define Intersect 0x00476CE0 #define DrawPrimitive 0x0076D4A0

class cWeaponInfo
{
public:
char Unk0[12]; //0x0000
DWORD dwClientWeaponType; //0x000C
char Unk1[16]; //0x0010
DWORD dwAlt_InsDamage; //0x0020
DWORD dwInstDamage; //0x0024
char Unk2[108]; //0x0028
DWORD dwFireSnd; //0x0094
char Unk3[108]; //0x0098
float fFireDelay1; //0x0104
float fFireDelay2; //0x0108
DWORD dwMaxAmmo3; //0x010C
DWORD dwMaxAmmo2; //0x0110
char Unk4[300]; //0x0114
BYTE bTripleShotMode; //0x0240
char Unk5[3]; //0x0241
DWORD dwTripleShotRoundNum; //0x0244
float fDamageRFacter; //0x0248
char Unk6[28]; //0x024C
DWORD dwInfiAmmo2; //0x0268
DWORD dwInfiniteAmmo; //0x026C
DWORD dwHideWhenEmpty; //0x0270
DWORD dwIsAmmo; //0x0274
char Unk7[4]; //0x0278
DWORD dwShotsPerClip; //0x027C
char Unk8[52]; //0x0280
float fZoomTime; //0x02B4
DWORD dwMinPerturb; //0x02B8
DWORD dwMaxPerturb; //0x02BC
float fDuckPerturb; //0x02C0
float fMoveDuckPerturb; //0x02C4
DWORD dwZoomedMinPerturb; //0x02C8
DWORD dwZoomedMaxPerturb; //0x02CC
DWORD dwRange; //0x02D0
char Un9[12]; //0x02D4
DWORD dwVectorsPerRound; //0x02E0
char Unk10[40]; //0x02E4
float fPerturbIncSpeed; //0x030C
float fPerturbDecSpeed; //0x0310
char Unk11[4]; //0x0314
float fZoomedPerturbIncSpeed; //0x0318
float fZoomedPerturbDecSpeed; //0x031C
char Unk12[4]; //0x0320
float fBaseCamRecoilPitch; //0x0324
float fBaseCamRecoilAccelPitch; //0x0328
char Unk13[36]; //0x032C
float fTripleShotMaxCamRecoilPitch; //0x0350
float fTripleShotBaseCamRecoilPitch; //0x0354
char Unk14[8]; //0x0358
DWORD dwTripleShotMinPerturb; //0x0360
DWORD dwTripleShotMaxPerturb; //0x0364
float fTripleShotPerturbIncSpeed; //0x0368
float fTripleShotPerturbDecSpeed; //0x036C
char Unk15[156]; //0x0370
BYTE bDisableCrosshair; //0x040C
char Unk16[27]; //0x040D
float fCameraSwayXFreq; //0x0428
float fCameraSwayYFreq; //0x042C
char Unk17[12]; //0x0430
DWORD dwTargetCrosshairFlag; //0x043C
DWORD dwEffectRange; //0x0440
char Unk18[188]; //0x0444
};//Size=0x0500
class cWeaponMgr
{
public:
char Unk0[5568]; //0x0000
cWeaponInfo** Weapons; //0x15BC
__int32 WeaponCount; //0x15C0
};//Size=0x15C4
float OgAwepData[20][1000];
bool SetWepData = true;
bool StoreWepData = false;
void WeaponsModifications( int NoRecoil )
{
if( !StoreWepData )
{
cWeaponMgr* WepMgr = *(cWeaponMgr**)WeaponMgr; //WeaponMgr Addie
if( WepMgr )
{
for( int i = 0; i < WepMgr->WeaponCount; i++ )
{
cWeaponInfo* Wep = WepMgr->Weapons[i];
if( Wep )
{
OgAwepData[0][i] = Wep->fDuckPerturb;
OgAwepData[1][i] = Wep->fMoveDuckPerturb;
OgAwepData[2][i] = Wep->fPerturbIncSpeed;
OgAwepData[3][i] = Wep->fPerturbDecSpeed;
OgAwepData[4][i] = Wep->fCameraSwayXFreq;
OgAwepData[5][i] = Wep->fCameraSwayYFreq;
OgAwepData[6][i] = Wep->fZoomedPerturbIncSpeed;
OgAwepData[7][i] = Wep->fZoomedPerturbDecSpeed;
OgAwepData[8][i] = Wep->fTripleShotMaxCamRecoilPitch;
OgAwepData[9][i] = Wep->fTripleShotBaseCamRecoilPitch;
OgAwepData[10][i] = Wep->fTripleShotPerturbIncSpeed;
OgAwepData[11][i] = Wep->fTripleShotPerturbDecSpeed;
OgAwepData[12][i] = Wep->fBaseCamRecoilPitch;
OgAwepData[13][i] = Wep->fBaseCamRecoilAccelPitch;
OgAwepData[14][i] = Wep->dwTripleShotMinPerturb;
OgAwepData[15][i] = Wep->dwTripleShotMaxPerturb;
OgAwepData[16][i] = Wep->dwMaxPerturb;
OgAwepData[17][i] = Wep->dwMinPerturb;
OgAwepData[18][i] = Wep->dwZoomedMaxPerturb;
OgAwepData[19][i] = Wep->dwZoomedMinPerturb;
}
}
}
StoreWepData = true;
}
if( NoRecoil )
{
if( SetWepData )
{
cWeaponMgr* WepMgr = *(cWeaponMgr**)ADDR_WEAPONMGR;
if( WepMgr )
{
for( int i = 0; i < WepMgr->WeaponCount; i++ )
{
cWeaponInfo* Wep = WepMgr->Weapons[i];
if( Wep )
{
Wep->fCameraSwayXFreq = 0.0f;
Wep->fCameraSwayYFreq = 0.0f;
Wep->fTripleShotMaxCamRecoilPitch = 0.0f;
Wep->fTripleShotBaseCamRecoilPitch = 0.0f;
Wep->fBaseCamRecoilPitch = 0.0f;
Wep->fBaseCamRecoilAccelPitch = 0.0f;
}
}
}
SetWepData = false;
}
}
else
{
if( !SetWepData )
{
cWeaponMgr* WepMgr = *(cWeaponMgr**)ADDR_WEAPONMGR;
if( WepMgr )
{
for( int i = 0; i < WepMgr->WeaponCount; i++ )
{
cWeaponInfo* Wep = WepMgr->Weapons[i];
if( Wep )
{
Wep->fCameraSwayXFreq = OgAwepData[4][i];
Wep->fCameraSwayYFreq = OgAwepData[5][i];
Wep->fTripleShotMaxCamRecoilPitch = OgAwepData[8][i];
Wep->fTripleShotBaseCamRecoilPitch = OgAwepData[9][i];
Wep->fBaseCamRecoilPitch = OgAwepData[12][i];
Wep->fBaseCamRecoilAccelPitch = OgAwepData[13][i];
}
}
}
SetWepData = true;
}
}
}
void __cdecl PushToConsole( const char* szCommand )
{
DWORD *LTClient = ( DWORD* )( 0x377C9B80 );
__asm pushad;
void* CONoff = ( void* )*( DWORD* )( *LTClient + 0x208 );
__asm
{
push szCommand;
call CONoff;
add esp, 4;
}
__asm popad;
}
bool IsGameReadyForHook()
{
if( GetModuleHandle( (LPCWSTR)"d3d9.dll" ) != NULL
&& GetModuleHandle( (LPCWSTR)"ClientFX.fxd" ) != NULL
&& GetModuleHandle( (LPCWSTR)"CShell.dll" ) != NULL )
return true;
return false;
}
PushToConsole("ShowFPS 1")