Weapon Manager Class [ Updated ]
Code:
#define ADDR_WEAPONMANAGER 0x01AD8F3C
Code:
class CWeapon;
typedef float vec[ 9 ];
class CWeapon
{
public:
__int16 WeaponIndex; //0x0000
BYTE WeaponClass; //0x0002
char _0x0003[6];
char WeaponName[28]; //0x0009
char _0x0025[2995];
vec PerturbMin; //0x0BD8
char _0x0BF8[328];
vec PerturbMax; //0x0D40
char _0x0D60[344];
float AmmoDamage; //0x0EB8
char _0x0EBC[1260];
float ReloadAnimRatio; //0x13A8
float ChangeWeaponAnimRatio; //0x13AC
char _0x13B0[696];
vec DetailPerturbShot; //0x1668
char _0x168C[324];
vec DetailReactPitchShot; //0x17D0
char _0x17F4[324];
vec DetailReactYawShot; //0x1938
char _0x195C[9592];
vec BulletPosOffset; //0x3ED4
char _0x3EF8[444];
vec ShotReactPitch; //0x40B4
char _0x40D8[1052];
vec CrossHairRatioPerRealSize; //0x44F4
static CWeapon *GetWeaponByIndex( int i, DWORD WeaponManager )
{
return *( CWeapon ** ) ( WeaponManager + ( 4 * i ) );
}
};//Size=0x44F8
Code:
void WINAPI weaponFunctions( DWORD CShell )
{
DWORD WeaponManager = *( DWORD * ) ( CShell + ADDR_WEAPONMANAGER );
for( int i = 0; i <= 1757; i++ )
{
CWeapon *pWeapon = pWeapon->GetWeaponByIndex( i, WeaponManager );
if( pWeapon != 0 )
{
for( int y = 0; y < 9; y++ )
{
//No recoil
pWeapon->ShotReactPitch[ y ] = 0.0f;
pWeapon->DetailReactPitchShot[ y ] = 0.0f;
pWeapon->DetailReactYawShot[ y ] = 0.0f;
//No spread
pWeapon->BulletPosOffset[ y ] = 0.0f;
pWeapon->PertubMin[ y ] = 0.0f;
pWeapon->PerturbMax[ y ] = 0.0f;
pWeapon->BulletPosOffset[ y ] = 0.0f;
pWeapon->DetailPerturbShot[ y ] = 0.0f;
pWeapon->ShotReactPitch[ y ] = 0.0f;
}
//No grenade damage
if( pWeapon->WeaponClass == 6 )
pWeapon->AmmoDamage = 0.0f;
}
}
}