class C_BaseCombatWeapon
{
public:
CNETVAR_FUNC(float, GetNextPrimaryAttack, 0xDB7B106E); //m_flNextPrimaryAttack
CNETVAR_FUNC(int, GetAmmoInClip, 0x97B6F70C); //m_iClip1
CNETVAR_FUNC(HANDLE, GetOwnerHandle, 0xC32DF98D); //m_hOwner
CNETVAR_FUNC(float, GetAccuracyPenalty, 0xE2958A63); //m_fAccuracyPenalty
CNETVAR_FUNC(Vector, GetOrigin, 0x1231CE10); //m_vecOrigin
CPNETVAR_FUNC(int*, FallbackPaintKit, 0xADE4C870); // m_nFallbackPaintKit
CPNETVAR_FUNC(int*, FallbackSeed, 0xC2D0683D); // m_nFallbackSeed
CPNETVAR_FUNC(float*, FallbackWear, 0xA263576C); //m_flFallbackWear
CPNETVAR_FUNC(int*, FallbackStatTrak, 0x1ED78768); //m_nFallbackStatTrak
CPNETVAR_FUNC(int*, OwnerXuidLow, 0xAD8D897F);
CPNETVAR_FUNC(int*, OwnerXuidHigh, 0x90511E77);
CPNETVAR_FUNC(int*, ViewModelIndex, 0x7F7C89C1);
CPNETVAR_FUNC(int*, ModelIndex, 0x27016F83);
CPNETVAR_FUNC(int*, WorldModelIndex, 0x4D8AD9F3);
CPNETVAR_FUNC(char*, szCustomName, 0x0);
CPNETVAR_FUNC(AttributeContainer*, m_AttributeManager, 0xCFFCE089);
CNETVAR_FUNC(int, GetZoomLevel, 0x26553F1A);
float GetInaccuracy()
{
typedef float(__thiscall* oInaccuracy)(PVOID);
return call_vfunc< oInaccuracy >(this, 470)
(this);
}
float GetSpread()
{
typedef float(__thiscall *OrigFn)(void *);
return call_vfunc<OrigFn>(this, 439)(this);
}
int* GetEntityQuality()
{
return (int*)((DWORD)this + 0x2D70 + 0x40 + 0x1DC);
}
int GetWeaponID2()
{
return *(int*)((DWORD)this + 0x00002F88);
}
void PreDataUpdate(int updateType)
{
PVOID pNetworkable = (PVOID)((DWORD)(this) + 0x8);
typedef void(__thiscall* OriginalFn)(PVOID, int);
return call_vfunc<OriginalFn>(pNetworkable, 6)(pNetworkable, updateType);
}
void SetModelIndex(int modelIndex) {
typedef void(__thiscall* OriginalFn)(PVOID, int);
return call_vfunc<OriginalFn>(this, 75)(this, modelIndex);
}
void UpdateAccPenalty()
{
typedef void(__thiscall *OrigFn)(void *);
return call_vfunc<OrigFn>(this, 471)(this);
}
bool IsScoped(int x = 0)
{
return GetZoomLevel() > 0;
}
CSWeaponInfo* GetCSWpnData()
{
if (!this)
return nullptr;
typedef CSWeaponInfo*(__thiscall* OriginalFn)(void*);
return call_vfunc< OriginalFn >(this, 447)(this);
return nullptr;
}
};