struct CPlayer
{
char unknown0[66030];
WORD weapon; //0x101EE
};
struct CWeaponInformations
{
char _0x0000[20];
char Name[25]; //0x0014
char _0x002D[39];
char ShortName[4]; //0x0054
char _0x0058[1];
char Animation[4]; //0x0059
char _0x005D[5219];
DWORD dwDamage; //0x14C0
DWORD dwDefence; //0x14C4
DWORD dwRange; //0x14C8
DWORD dwAmmoNum; //0x14CC
DWORD dwMagazineNum; //0x14D0
DWORD dwEffectRange; //0x14D4
DWORD dwParabola; //0x14D8 ?
float ReactAmount; //0x14DC
float ReactRecovery; //0x14E0
float Accurate; //0x14E4
DWORD dwShotSpeed; //0x14E8
DWORD dwWeight; //0x14EC
};
Damage = 0x84;
Defence = 0x88;
Range = 0x8C;
AmmoNum = 0x90;
MagazineNum = 0x94;
EffectRange = 0x98;
Parabola = 0x9C;
ShotSpeed = 0xAC;
Weight = 0xB0;
class CWeaponInformations
{
public:
char padd1[132];
DWORD dwDamage; // 0x84
DWORD dwDefence; //0x88
DWORD dwRange; // 0x8C
DWORD dwAmmoNum; //0x90
DWORD dwMagazineNum; //0x94
DWORD dwEffectRange; //0x98
DWORD dwParabola; // 0x9C
char padd2[12];
DWORD dwShotSpeed; //0xAC
DWORD dwWeight; //0xB0
};
CWeaponInformations* getWeaponInfo(int index, DWORD ptr)
{
DWORD dwPtrToWeapons = *(DWORD *)(ptr + 0x40);
if(!dwPtrToWeapons)
return 0;
DWORD dwPtrToDesiredWeapon = *(DWORD *)(dwPtrToWeapons + index);
if(!dwPtrToDesiredWeapon)
return 0;
return (CWeaponInformations*)(dwPtrToDesiredWeapon);
}
// Initialize Class
CWeaponInformations* weaponInformations = getWeaponInfo(66, ADR_WeaponGlobal1);
CWeaponInformations* weaponInformations2 = getWeaponInfo(66, ADR_WeaponGlobal2);
// How To Use
void AMMO()
{
weaponInformations->dwAmmoNum = 9;
weaponInformations->dwRange = 9000000;
weaponInformations->dwEffectRange = 90000;
}