Code:
#define ADDR_WEAPONMGR 0x3799DAFC
class CWeaponInfo
{
public:
char unknown1[12]; //0x0000
DWORD dwClientWeaponType; //0x000C
char unknown2[16]; //0x0010
DWORD dwAlt_InstDamage; //0x0020
DWORD dwInstDamage; //0x0024
char unknown3[108]; //0x0028
DWORD dwFireSnd; //0x0094
char unknown4[108]; //0x0098
float fFireDelay1; //0x0104
float ffiredelay1; //0x0108
DWORD dwMaxAmmo3; //0x010C
DWORD dwMaxAmmo2; //0x0110
char unknown5[304]; //0x0114
BYTE TripleShotMode;; //0x0244
char unknown6[3]; //0x0245
DWORD dwTripleShotRoundNum; //0x0248
float fDamageRFacter; //0x024C
char unknown7[28]; //0x0250
DWORD dwInfiAmmo2; //0x026C
DWORD dwInfiniteAmmo; //0x0270
DWORD dwHideWhenEmpty; //0x0274
DWORD dwIsAmmo; //0x0278
char unknown8[4]; //0x027C
DWORD dwShotsPerClip; //0x0280
char unknown9[52]; //0x0284
float fZoomTime; //0x02B8
DWORD dwMinPerturb; //0x02BC
DWORD dwMaxPerturb; //0x02C0
float fDuckPerturb; //0x02C4
float fMoveDuckPerturb; //0x02C8
DWORD dwZoomedMinPerturb; //0x02CC
DWORD dwZoomedMaxPerturb; //0x02D0
DWORD dwRange; //0x02D4
char unknown10[12]; //0x02D8
DWORD VectorsPerRound; //0x02E4
char unknown11[40]; //0x02E8
float fPerturbIncSpeed; //0x0310
float fPerturbDecSpeed; //0x0314
char unknown12[4]; //0x0318
float fZoomedPerturbIncSpeed; //0x031C
float fZoomedPerturbDecSpeed; //0x0320
char unknown13[4]; //0x0324
float fBaseCamRecoilPitch; //0x0328
float fBaseCamRecoilAccelPitch; //0x032C
char unknown14[36]; //0x0330
float fTripleShotMaxCamRecoilPitch; //0x0354
float fTripleShotBaseCamRecoilPitch; //0x0358
char unknown15[8]; //0x035C
DWORD dwTripleShotMinPerturb; //0x0364
DWORD dwTripleShotMaxPerturb; //0x0368
float fTripleShotPerturbIncSpeed; //0x036C
float fTripleShotPerturbDecSpeed; //0x0370
char unknown16[156]; //0x0374
BYTE DisableCrosshair; //0x0410
char unknown17[27]; //0x0411
float fCameraSwayXFreq; //0x042C
float fCameraSwayYFreq; //0x0430
char unknown18[12]; //0x0434
DWORD dwTargetCrosshairFlag; //0x0440
DWORD dwEffectRange; //0x0444
char unknown19[188]; //0x0448
};//Size=0x0504(1284)
class CWeaponManager
{
public:
char unknown0[5600]; //0x0000
CWeaponInfo** Weapons; //0x15E0
__int32 WeaponCount; //0x15E4
};//Size=0x15E8
VOID AimCorrection( VOID )
{
static bool CAimCorrection;
if( !CAimCorrection )
{
CWeaponManager* WeaponManager = *(CWeaponManager **)ADDR_WEAPONMGR;
if( WeaponManager )
{
for( int i = 0; i < WeaponManager->WeaponCount; i++ )
{
CWeaponInfo* WeaponInfo = WeaponManager->Weapons[i];
if( WeaponInfo )
{
WeaponInfo->fDuckPerturb = 0.0f;
WeaponInfo->fMoveDuckPerturb = 0.0f;
WeaponInfo->fPerturbIncSpeed = 0.0f;
WeaponInfo->fPerturbDecSpeed = 0.0f;
WeaponInfo->fCameraSwayXFreq = 0.0f;
WeaponInfo->fCameraSwayYFreq = 0.0f;
WeaponInfo->fZoomedPerturbIncSpeed = 0.0f;
WeaponInfo->fZoomedPerturbDecSpeed = 0.0f;
WeaponInfo->fTripleShotMaxCamRecoilPitch = 0.0f;
WeaponInfo->fTripleShotBaseCamRecoilPitch = 0.0f;
WeaponInfo->fTripleShotPerturbIncSpeed = 0.0f;
WeaponInfo->fTripleShotPerturbDecSpeed = 0.0f;
WeaponInfo->fBaseCamRecoilPitch = 0.0f;
WeaponInfo->fBaseCamRecoilAccelPitch = 0.0f;
WeaponInfo->dwTripleShotMinPerturb = 0.0f;
WeaponInfo->dwTripleShotMaxPerturb = 0.0f;
WeaponInfo->dwMaxPerturb = 0.0f;
WeaponInfo->dwMinPerturb = 0.0f;
WeaponInfo->dwZoomedMaxPerturb = 0.0f;
WeaponInfo->dwZoomedMinPerturb = 0.0f;
}
}
}
}
}
HRESULT WINAPI Present( LPDIRECT3DDEVICE9 pDevice, ..., ..., ..., ... )
{
AimCorrection();
return OPresent( pDevice, ..., ..., ..., ... );
}