Weapon Class ( update: 12/01/2017 )
Code:
#define ADDR_WEAPONMANAGER 0x01B854FC
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 _0x0BFC[324];
vec PerturbMax; //0x0D40
char _0x0D64[324];
float Range; //0x0EA8
char _0x0EAC[12];
float AmmoDamage; //0x0EB8
char _0x0EBC[568];
float KnifeNormalRange; //0x10F4
char _0x10F8[8];
float KnifeNormalAngle; //0x1100
char _0x1104[32];
float KnifeBigshotAngle; //0x1124
char _0x1128[104];
float NoZoom; //0x1190
char _0x1194[196];
float MoveSpeedPenalty; //0x1258
char _0x125C[336];
float ReloadAnimRatio; //0x13AC
float ChangeWeaponAnimRatio; //0x13B0
char _0x13B4[696];
vec DetailPerturbShot; //0x166C
char _0x1690[324];
vec DetailReactPitchShot; //0x17D4
char _0x17F8[324];
vec DetailReactYawShot; //0x193C
char _0x1960[9752];
vec BulletPosOffset; //0x3F78
char _0x3F9C[444];
vec ShotReactPitch; //0x4158
char _0x417C[1020];
float BoomDurationDamage; //0x4578
char _0x457C[28];
vec CrossHairRatioPerRealSize; //0x4598
static CWeapon *GetWeaponByIndex( int i, DWORD WeaponManager )
{
return *( CWeapon ** ) ( WeaponManager + ( 4 * i ) );
}
};//Size=0x4598
Code:
void WINAPI weaponFunctions( DWORD CShell )
{
if( CShell != 0 )
{
DWORD WeaponManager = *( DWORD * ) ( CShell + ADDR_WEAPONMANAGER );
if( WeaponManager != 0 )
{
for( int i = 0; i <= 1791; 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->PerturbMin[ 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;
}
}
}
}
}