Code:
typedef float vec[ 9 ];
class CWeapon
{
public:
BYTE WeaponIndex; //0x0000
char _0x0001[1];
BYTE WeaponClass; //0x0002
char _0x0003[6];
char WeaponName[28]; //0x0009
char _0x0025[2151];
vec PertubMin; //0x088C
char _0x08B0[324];
vec PerturbMax; //0x09F4
char _0x0A18[324];
float Range; //0x0B5C
char _0x0B60[12];
float AmmoDamage; //0x0B6C
char _0x0B70[1256];
float ReloadAnimRatio; //0x1058
float ChangeWeaponAnimRatio; //0x105C
char _0x1060[696];
vec DetailPerturbShot; //0x1318
char _0x133C[324];
vec DetailReactPitchShot; //0x1480
char _0x14A4[324];
vec DetailReactYawShot; //0x15E8
char _0x160C[9536];
vec BulletPosOffset; //0x3B4C
char _0x3B70[444];
vec ShotReactPitch; //0x3D2C
char _0x3D50[1104];
vec CrossHairRatioPerRealSize; //0x41A0
static CWeapon *GetWeaponByIndex( int i, DWORD WeaponManager )
{
return *( CWeapon ** ) ( WeaponManager + ( 4 * i ) );
}
};//Size=0x41A4
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;
}
}
}