good
This commit is contained in:
431
examples/cs2-silent-aim-master/cstrike/sdk/entity.h
Normal file
431
examples/cs2-silent-aim-master/cstrike/sdk/entity.h
Normal file
@@ -0,0 +1,431 @@
|
||||
#pragma once
|
||||
|
||||
// @test: using interfaces in the header | not critical but could blow up someday with thousands of errors or affect to compilation time etc
|
||||
// used: cgameentitysystem, ischemasystem
|
||||
#include "../core/interfaces.h"
|
||||
#include "interfaces/igameresourceservice.h"
|
||||
#include "interfaces/ischemasystem.h"
|
||||
|
||||
// used: schema field
|
||||
#include "../core/schema.h"
|
||||
|
||||
// used: l_print
|
||||
#include "../utilities/log.h"
|
||||
// used: vector_t
|
||||
#include "datatypes/vector.h"
|
||||
// used: qangle_t
|
||||
#include "datatypes/qangle.h"
|
||||
// used: ctransform
|
||||
#include "datatypes/transform.h"
|
||||
|
||||
// used: cbasehandle
|
||||
#include "entity_handle.h"
|
||||
// used: game's definitions
|
||||
#include "const.h"
|
||||
// used: entity vdata
|
||||
#include "vdata.h"
|
||||
|
||||
using GameTime_t = std::float_t;
|
||||
using GameTick_t = std::int32_t;
|
||||
|
||||
class CEntityInstance;
|
||||
|
||||
class CEntityIdentity
|
||||
{
|
||||
public:
|
||||
CS_CLASS_NO_INITIALIZER(CEntityIdentity);
|
||||
|
||||
// @note: handle index is not entity index
|
||||
SCHEMA_ADD_OFFSET(std::uint32_t, GetIndex, 0x10);
|
||||
SCHEMA_ADD_FIELD(const char*, GetDesignerName, "CEntityIdentity->m_designerName");
|
||||
SCHEMA_ADD_FIELD(std::uint32_t, GetFlags, "CEntityIdentity->m_flags");
|
||||
|
||||
[[nodiscard]] bool IsValid()
|
||||
{
|
||||
return GetIndex() != INVALID_EHANDLE_INDEX;
|
||||
}
|
||||
|
||||
[[nodiscard]] int GetEntryIndex()
|
||||
{
|
||||
if (!IsValid())
|
||||
return ENT_ENTRY_MASK;
|
||||
|
||||
return GetIndex() & ENT_ENTRY_MASK;
|
||||
}
|
||||
|
||||
[[nodiscard]] int GetSerialNumber()
|
||||
{
|
||||
return GetIndex() >> NUM_SERIAL_NUM_SHIFT_BITS;
|
||||
}
|
||||
|
||||
CEntityInstance* pInstance; // 0x00
|
||||
};
|
||||
|
||||
class CEntityInstance
|
||||
{
|
||||
public:
|
||||
CS_CLASS_NO_INITIALIZER(CEntityInstance);
|
||||
|
||||
void GetSchemaClassInfo(SchemaClassInfoData_t** pReturn)
|
||||
{
|
||||
return MEM::CallVFunc<void, 38U>(this, pReturn);
|
||||
}
|
||||
|
||||
[[nodiscard]] CBaseHandle GetRefEHandle()
|
||||
{
|
||||
CEntityIdentity* pIdentity = GetIdentity();
|
||||
if (pIdentity == nullptr)
|
||||
return CBaseHandle();
|
||||
|
||||
return CBaseHandle(pIdentity->GetEntryIndex(), pIdentity->GetSerialNumber() - (pIdentity->GetFlags() & 1));
|
||||
}
|
||||
|
||||
SCHEMA_ADD_FIELD(CEntityIdentity*, GetIdentity, "CEntityInstance->m_pEntity");
|
||||
};
|
||||
|
||||
class CCollisionProperty
|
||||
{
|
||||
public:
|
||||
std::uint16_t CollisionMask()
|
||||
{
|
||||
return *reinterpret_cast<std::uint16_t*>(reinterpret_cast<std::uintptr_t>(this) + 0x38);
|
||||
}
|
||||
|
||||
CS_CLASS_NO_INITIALIZER(CCollisionProperty);
|
||||
|
||||
SCHEMA_ADD_FIELD(Vector_t, GetMins, "CCollisionProperty->m_vecMins");
|
||||
SCHEMA_ADD_FIELD(Vector_t, GetMaxs, "CCollisionProperty->m_vecMaxs");
|
||||
|
||||
SCHEMA_ADD_FIELD(std::uint8_t, GetSolidFlags, "CCollisionProperty->m_usSolidFlags");
|
||||
SCHEMA_ADD_FIELD(std::uint8_t, GetCollisionGroup, "CCollisionProperty->m_CollisionGroup");
|
||||
};
|
||||
|
||||
class CSkeletonInstance;
|
||||
class CGameSceneNode
|
||||
{
|
||||
public:
|
||||
CS_CLASS_NO_INITIALIZER(CGameSceneNode);
|
||||
|
||||
SCHEMA_ADD_FIELD(CTransform, GetNodeToWorld, "CGameSceneNode->m_nodeToWorld");
|
||||
SCHEMA_ADD_FIELD(CEntityInstance*, GetOwner, "CGameSceneNode->m_pOwner");
|
||||
|
||||
SCHEMA_ADD_FIELD(Vector_t, GetAbsOrigin, "CGameSceneNode->m_vecAbsOrigin");
|
||||
SCHEMA_ADD_FIELD(Vector_t, GetRenderOrigin, "CGameSceneNode->m_vRenderOrigin");
|
||||
|
||||
SCHEMA_ADD_FIELD(QAngle_t, GetAngleRotation, "CGameSceneNode->m_angRotation");
|
||||
SCHEMA_ADD_FIELD(QAngle_t, GetAbsAngleRotation, "CGameSceneNode->m_angAbsRotation");
|
||||
|
||||
SCHEMA_ADD_FIELD(bool, IsDormant, "CGameSceneNode->m_bDormant");
|
||||
|
||||
CSkeletonInstance* GetSkeletonInstance()
|
||||
{
|
||||
return MEM::CallVFunc<CSkeletonInstance*, 8U>(this);
|
||||
}
|
||||
};
|
||||
|
||||
class C_BaseEntity : public CEntityInstance
|
||||
{
|
||||
public:
|
||||
CS_CLASS_NO_INITIALIZER(C_BaseEntity);
|
||||
|
||||
[[nodiscard]] bool IsBasePlayerController()
|
||||
{
|
||||
SchemaClassInfoData_t* pClassInfo;
|
||||
GetSchemaClassInfo(&pClassInfo);
|
||||
if (pClassInfo == nullptr)
|
||||
return false;
|
||||
|
||||
return FNV1A::Hash(pClassInfo->szName) == FNV1A::HashConst("C_CSPlayerController");
|
||||
}
|
||||
|
||||
[[nodiscard]] bool IsWeapon()
|
||||
{
|
||||
static SchemaClassInfoData_t* pWeaponBaseClass = nullptr;
|
||||
if (pWeaponBaseClass == nullptr)
|
||||
I::SchemaSystem->FindTypeScopeForModule(CS_XOR("client.dll"))->FindDeclaredClass(&pWeaponBaseClass, CS_XOR("C_CSWeaponBase"));
|
||||
|
||||
|
||||
SchemaClassInfoData_t* pClassInfo;
|
||||
GetSchemaClassInfo(&pClassInfo);
|
||||
if (pClassInfo == nullptr)
|
||||
return false;
|
||||
|
||||
return (pClassInfo->InheritsFrom(pWeaponBaseClass));
|
||||
}
|
||||
|
||||
static C_BaseEntity* GetLocalPlayer();
|
||||
|
||||
// get entity origin on scene
|
||||
[[nodiscard]] const Vector_t& GetSceneOrigin();
|
||||
|
||||
SCHEMA_ADD_FIELD(CGameSceneNode*, GetGameSceneNode, "C_BaseEntity->m_pGameSceneNode");
|
||||
SCHEMA_ADD_FIELD(CCollisionProperty*, GetCollision, "C_BaseEntity->m_pCollision");
|
||||
SCHEMA_ADD_FIELD(std::uint8_t, GetTeam, "C_BaseEntity->m_iTeamNum");
|
||||
SCHEMA_ADD_FIELD(CBaseHandle, GetOwnerHandle, "C_BaseEntity->m_hOwnerEntity");
|
||||
SCHEMA_ADD_FIELD(Vector_t, GetBaseVelocity, "C_BaseEntity->m_vecBaseVelocity");
|
||||
SCHEMA_ADD_FIELD(Vector_t, GetAbsVelocity, "C_BaseEntity->m_vecAbsVelocity");
|
||||
SCHEMA_ADD_FIELD(bool, IsTakingDamage, "C_BaseEntity->m_bTakesDamage");
|
||||
SCHEMA_ADD_FIELD(std::uint32_t, GetFlags, "C_BaseEntity->m_fFlags");
|
||||
SCHEMA_ADD_FIELD(std::int32_t, GetEflags, "C_BaseEntity->m_iEFlags");
|
||||
SCHEMA_ADD_FIELD(std::int32_t, GetMoveType, "C_BaseEntity->m_MoveType");
|
||||
SCHEMA_ADD_FIELD(std::uint8_t, GetLifeState, "C_BaseEntity->m_lifeState");
|
||||
SCHEMA_ADD_FIELD(std::int32_t, GetHealth, "C_BaseEntity->m_iHealth");
|
||||
SCHEMA_ADD_FIELD(std::int32_t, GetMaxHealth, "C_BaseEntity->m_iMaxHealth");
|
||||
SCHEMA_ADD_FIELD(float, GetWaterLevel, "C_BaseEntity->m_flWaterLevel");
|
||||
SCHEMA_ADD_FIELD_OFFSET(void*, GetVData, "C_BaseEntity->m_nSubclassID", 0x8);
|
||||
};
|
||||
|
||||
class CGlowProperty;
|
||||
|
||||
class C_BaseModelEntity : public C_BaseEntity
|
||||
{
|
||||
public:
|
||||
CS_CLASS_NO_INITIALIZER(C_BaseModelEntity);
|
||||
|
||||
SCHEMA_ADD_FIELD(CCollisionProperty, GetCollisionInstance, "C_BaseModelEntity->m_Collision");
|
||||
SCHEMA_ADD_FIELD(CGlowProperty, GetGlowProperty, "C_BaseModelEntity->m_Glow");
|
||||
SCHEMA_ADD_FIELD(Vector_t, GetViewOffset, "C_BaseModelEntity->m_vecViewOffset");
|
||||
SCHEMA_ADD_FIELD(GameTime_t, GetCreationTime, "C_BaseModelEntity->m_flCreateTime");
|
||||
SCHEMA_ADD_FIELD(GameTick_t, GetCreationTick, "C_BaseModelEntity->m_nCreationTick");
|
||||
SCHEMA_ADD_FIELD(CBaseHandle, GetMoveParent, "C_BaseModelEntity->m_hOldMoveParent");
|
||||
SCHEMA_ADD_FIELD(std::float_t, GetAnimTime, "C_BaseModelEntity->m_flAnimTime");
|
||||
SCHEMA_ADD_FIELD(std::float_t, GetSimulationTime, "C_BaseModelEntity->m_flSimulationTime");
|
||||
};
|
||||
|
||||
class CPlayer_ItemServices;
|
||||
class CPlayer_CameraServices;
|
||||
|
||||
class CPlayer_WeaponServices
|
||||
{
|
||||
public:
|
||||
SCHEMA_ADD_FIELD(CBaseHandle, GetActiveWeapon, "CPlayer_WeaponServices->m_hActiveWeapon");
|
||||
};
|
||||
|
||||
class CCSPlayer_WeaponServices : public CPlayer_WeaponServices
|
||||
{
|
||||
public:
|
||||
SCHEMA_ADD_FIELD(GameTime_t, GetNextAttack, "CCSPlayer_WeaponServices->m_flNextAttack");
|
||||
};
|
||||
|
||||
class C_BasePlayerPawn : public C_BaseModelEntity
|
||||
{
|
||||
public:
|
||||
CS_CLASS_NO_INITIALIZER(C_BasePlayerPawn);
|
||||
|
||||
SCHEMA_ADD_FIELD(CBaseHandle, GetControllerHandle, "C_BasePlayerPawn->m_hController");
|
||||
SCHEMA_ADD_FIELD(CCSPlayer_WeaponServices*, GetWeaponServices, "C_BasePlayerPawn->m_pWeaponServices");
|
||||
SCHEMA_ADD_FIELD(CPlayer_ItemServices*, GetItemServices, "C_BasePlayerPawn->m_pItemServices");
|
||||
SCHEMA_ADD_FIELD(CPlayer_CameraServices*, GetCameraServices, "C_BasePlayerPawn->m_pCameraServices");
|
||||
|
||||
[[nodiscard]] Vector_t GetEyePosition()
|
||||
{
|
||||
Vector_t vecEyePosition = Vector_t(0.0f, 0.0f, 0.0f);
|
||||
MEM::CallVFunc<void, 166U>(this, &vecEyePosition);
|
||||
return vecEyePosition;
|
||||
}
|
||||
};
|
||||
|
||||
class CCSPlayer_ViewModelServices;
|
||||
|
||||
class C_CSPlayerPawnBase : public C_BasePlayerPawn
|
||||
{
|
||||
public:
|
||||
CS_CLASS_NO_INITIALIZER(C_CSPlayerPawnBase);
|
||||
|
||||
SCHEMA_ADD_FIELD(CCSPlayer_ViewModelServices*, GetViewModelServices, "C_CSPlayerPawnBase->m_pViewModelServices");
|
||||
SCHEMA_ADD_FIELD(float, GetLowerBodyYawTarget, "C_CSPlayerPawnBase->m_flLowerBodyYawTarget");
|
||||
SCHEMA_ADD_FIELD(float, GetFlashMaxAlpha, "C_CSPlayerPawnBase->m_flFlashMaxAlpha");
|
||||
SCHEMA_ADD_FIELD(float, GetFlashDuration, "C_CSPlayerPawnBase->m_flFlashDuration");
|
||||
SCHEMA_ADD_FIELD(Vector_t, GetLastSmokeOverlayColor, "C_CSPlayerPawnBase->m_vLastSmokeOverlayColor");
|
||||
SCHEMA_ADD_FIELD(int, GetSurvivalTeam, "C_CSPlayerPawnBase->m_nSurvivalTeam"); // danger zone
|
||||
};
|
||||
|
||||
class C_CSPlayerPawn : public C_CSPlayerPawnBase
|
||||
{
|
||||
public:
|
||||
CS_CLASS_NO_INITIALIZER(C_CSPlayerPawn);
|
||||
|
||||
[[nodiscard]] bool IsOtherEnemy(C_CSPlayerPawn* pOther);
|
||||
[[nodiscard]] int GetAssociatedTeam();
|
||||
[[nodiscard]] bool CanAttack(const float flServerTime);
|
||||
[[nodiscard]] std::uint32_t GetOwnerHandleIndex();
|
||||
[[nodiscard]] std::uint16_t GetCollisionMask();
|
||||
|
||||
SCHEMA_ADD_FIELD(bool, IsScoped, "C_CSPlayerPawn->m_bIsScoped");
|
||||
SCHEMA_ADD_FIELD(bool, IsDefusing, "C_CSPlayerPawn->m_bIsDefusing");
|
||||
SCHEMA_ADD_FIELD(bool, IsGrabbingHostage, "C_CSPlayerPawn->m_bIsGrabbingHostage");
|
||||
SCHEMA_ADD_FIELD(bool, IsWaitForNoAttack, "C_CSPlayerPawn->m_bWaitForNoAttack");
|
||||
SCHEMA_ADD_FIELD(int, GetShotsFired, "C_CSPlayerPawn->m_iShotsFired");
|
||||
SCHEMA_ADD_FIELD(std::int32_t, GetArmorValue, "C_CSPlayerPawn->m_ArmorValue");
|
||||
SCHEMA_ADD_FIELD(QAngle_t, GetAimPuchAngle, "C_CSPlayerPawn->m_aimPunchAngle");
|
||||
};
|
||||
|
||||
class CBasePlayerController : public C_BaseModelEntity
|
||||
{
|
||||
public:
|
||||
CS_CLASS_NO_INITIALIZER(CBasePlayerController);
|
||||
|
||||
SCHEMA_ADD_FIELD(std::uint64_t, GetSteamId, "CBasePlayerController->m_steamID");
|
||||
SCHEMA_ADD_FIELD(std::uint32_t, GetTickBase, "CBasePlayerController->m_nTickBase");
|
||||
SCHEMA_ADD_FIELD(CBaseHandle, GetPawnHandle, "CBasePlayerController->m_hPawn");
|
||||
SCHEMA_ADD_FIELD(bool, IsLocalPlayerController, "CBasePlayerController->m_bIsLocalPlayerController");
|
||||
};
|
||||
|
||||
// forward decleration
|
||||
class C_CSWeaponBaseGun;
|
||||
class C_BasePlayerWeapon;
|
||||
class CCSPlayerController : public CBasePlayerController
|
||||
{
|
||||
public:
|
||||
CS_CLASS_NO_INITIALIZER(CCSPlayerController);
|
||||
|
||||
[[nodiscard]] static CCSPlayerController* GetLocalPlayerController();
|
||||
|
||||
// @note: always get origin from pawn not controller
|
||||
[[nodiscard]] const Vector_t& GetPawnOrigin();
|
||||
|
||||
SCHEMA_ADD_FIELD(std::uint32_t, GetPing, "CCSPlayerController->m_iPing");
|
||||
SCHEMA_ADD_FIELD(const char*, GetPlayerName, "CCSPlayerController->m_sSanitizedPlayerName");
|
||||
SCHEMA_ADD_FIELD(std::int32_t, GetPawnHealth, "CCSPlayerController->m_iPawnHealth");
|
||||
SCHEMA_ADD_FIELD(std::int32_t, GetPawnArmor, "CCSPlayerController->m_iPawnArmor");
|
||||
SCHEMA_ADD_FIELD(bool, IsPawnHasDefuser, "CCSPlayerController->m_bPawnHasDefuser");
|
||||
SCHEMA_ADD_FIELD(bool, IsPawnHasHelmet, "CCSPlayerController->m_bPawnHasHelmet");
|
||||
SCHEMA_ADD_FIELD(bool, IsPawnAlive, "CCSPlayerController->m_bPawnIsAlive");
|
||||
SCHEMA_ADD_FIELD(CBaseHandle, GetPlayerPawnHandle, "CCSPlayerController->m_hPlayerPawn");
|
||||
};
|
||||
|
||||
class CBaseAnimGraph : public C_BaseModelEntity
|
||||
{
|
||||
public:
|
||||
CS_CLASS_NO_INITIALIZER(CBaseAnimGraph);
|
||||
|
||||
SCHEMA_ADD_FIELD(bool, IsClientRagdoll, "CBaseAnimGraph->m_bClientRagdoll");
|
||||
};
|
||||
|
||||
class C_BaseFlex : public CBaseAnimGraph
|
||||
{
|
||||
public:
|
||||
CS_CLASS_NO_INITIALIZER(C_BaseFlex);
|
||||
/* not implemented */
|
||||
};
|
||||
|
||||
class C_EconItemView
|
||||
{
|
||||
public:
|
||||
CS_CLASS_NO_INITIALIZER(C_EconItemView);
|
||||
|
||||
SCHEMA_ADD_FIELD(std::uint16_t, GetItemDefinitionIndex, "C_EconItemView->m_iItemDefinitionIndex");
|
||||
SCHEMA_ADD_FIELD(std::uint64_t, GetItemID, "C_EconItemView->m_iItemID");
|
||||
SCHEMA_ADD_FIELD(std::uint32_t, GetItemIDHigh, "C_EconItemView->m_iItemIDHigh");
|
||||
SCHEMA_ADD_FIELD(std::uint32_t, GetItemIDLow, "C_EconItemView->m_iItemIDLow");
|
||||
SCHEMA_ADD_FIELD(std::uint32_t, GetAccountID, "C_EconItemView->m_iAccountID");
|
||||
SCHEMA_ADD_FIELD(char[161], GetCustomName, "C_EconItemView->m_szCustomName");
|
||||
SCHEMA_ADD_FIELD(char[161], GetCustomNameOverride, "C_EconItemView->m_szCustomNameOverride");
|
||||
};
|
||||
|
||||
class CAttributeManager
|
||||
{
|
||||
public:
|
||||
CS_CLASS_NO_INITIALIZER(CAttributeManager);
|
||||
virtual ~CAttributeManager() = 0;
|
||||
};
|
||||
static_assert(sizeof(CAttributeManager) == 0x8);
|
||||
|
||||
class C_AttributeContainer : public CAttributeManager
|
||||
{
|
||||
public:
|
||||
CS_CLASS_NO_INITIALIZER(C_AttributeContainer);
|
||||
|
||||
SCHEMA_ADD_PFIELD(C_EconItemView, GetItem, "C_AttributeContainer->m_Item");
|
||||
};
|
||||
|
||||
class C_EconEntity : public C_BaseFlex
|
||||
{
|
||||
public:
|
||||
CS_CLASS_NO_INITIALIZER(C_EconEntity);
|
||||
|
||||
SCHEMA_ADD_PFIELD(C_AttributeContainer, GetAttributeManager, "C_EconEntity->m_AttributeManager");
|
||||
SCHEMA_ADD_FIELD(std::uint32_t, GetOriginalOwnerXuidLow, "C_EconEntity->m_OriginalOwnerXuidLow");
|
||||
SCHEMA_ADD_FIELD(std::uint32_t, GetOriginalOwnerXuidHigh, "C_EconEntity->m_OriginalOwnerXuidHigh");
|
||||
SCHEMA_ADD_FIELD(std::int32_t, GetFallbackPaintKit, "C_EconEntity->m_nFallbackPaintKit");
|
||||
SCHEMA_ADD_FIELD(std::int32_t, GetFallbackSeed, "C_EconEntity->m_nFallbackSeed");
|
||||
SCHEMA_ADD_FIELD(std::int32_t, GetFallbackWear, "C_EconEntity->m_flFallbackWear");
|
||||
SCHEMA_ADD_FIELD(std::int32_t, GetFallbackStatTrak, "C_EconEntity->m_nFallbackStatTrak");
|
||||
SCHEMA_ADD_FIELD(CBaseHandle, GetViewModelAttachmentHandle, "C_EconEntity->m_hViewmodelAttachment");
|
||||
};
|
||||
|
||||
class C_EconWearable : public C_EconEntity
|
||||
{
|
||||
public:
|
||||
CS_CLASS_NO_INITIALIZER(C_EconWearable);
|
||||
|
||||
SCHEMA_ADD_FIELD(std::int32_t, GetForceSkin, "C_EconWearable->m_nForceSkin");
|
||||
SCHEMA_ADD_FIELD(bool, IsAlwaysAllow, "C_EconWearable->m_bAlwaysAllow");
|
||||
};
|
||||
|
||||
class C_BasePlayerWeapon : public C_EconEntity
|
||||
{
|
||||
public:
|
||||
CS_CLASS_NO_INITIALIZER(C_BasePlayerWeapon);
|
||||
|
||||
SCHEMA_ADD_FIELD(GameTick_t, GetNextPrimaryAttackTick, "C_BasePlayerWeapon->m_nNextPrimaryAttackTick");
|
||||
SCHEMA_ADD_FIELD(float, GetNextPrimaryAttackTickRatio, "C_BasePlayerWeapon->m_flNextPrimaryAttackTickRatio");
|
||||
SCHEMA_ADD_FIELD(GameTick_t, GetNextSecondaryAttackTick, "C_BasePlayerWeapon->m_nNextSecondaryAttackTick");
|
||||
SCHEMA_ADD_FIELD(float, GetNextSecondaryAttackTickRatio, "C_BasePlayerWeapon->m_flNextSecondaryAttackTickRatio");
|
||||
SCHEMA_ADD_FIELD(std::int32_t, GetClip1, "C_BasePlayerWeapon->m_iClip1");
|
||||
SCHEMA_ADD_FIELD(std::int32_t, GetClip2, "C_BasePlayerWeapon->m_iClip2");
|
||||
SCHEMA_ADD_FIELD(std::int32_t[2], GetReserveAmmo, "C_BasePlayerWeapon->m_pReserveAmmo");
|
||||
};
|
||||
|
||||
class C_CSWeaponBase : public C_BasePlayerWeapon
|
||||
{
|
||||
public:
|
||||
CS_CLASS_NO_INITIALIZER(C_CSWeaponBase);
|
||||
|
||||
SCHEMA_ADD_FIELD(bool, IsInReload, "C_CSWeaponBase->m_bInReload");
|
||||
|
||||
CCSWeaponBaseVData* GetWeaponVData()
|
||||
{
|
||||
return static_cast<CCSWeaponBaseVData*>(GetVData());
|
||||
}
|
||||
};
|
||||
|
||||
class C_CSWeaponBaseGun : public C_CSWeaponBase
|
||||
{
|
||||
public:
|
||||
CS_CLASS_NO_INITIALIZER(C_CSWeaponBaseGun);
|
||||
|
||||
SCHEMA_ADD_FIELD(std::int32_t, GetZoomLevel, "C_CSWeaponBaseGun->m_zoomLevel");
|
||||
SCHEMA_ADD_FIELD(std::int32_t, GetBurstShotsRemaining, "C_CSWeaponBaseGun->m_iBurstShotsRemaining");
|
||||
SCHEMA_ADD_FIELD(bool, IsBurstMode, "C_CSWeaponBase->m_bBurstMode");
|
||||
SCHEMA_ADD_FIELD(float, GetPostponeFireReadyFrac, "C_CSWeaponBase->m_flPostponeFireReadyFrac");
|
||||
|
||||
[[nodiscard]] bool CanPrimaryAttack(const int nWeaponType, const float flServerTime);
|
||||
[[nodiscard]] bool CanSecondaryAttack(const int nWeaponType, const float flServerTime);
|
||||
};
|
||||
|
||||
class C_BaseCSGrenade : public C_CSWeaponBase
|
||||
{
|
||||
public:
|
||||
SCHEMA_ADD_FIELD(bool, IsHeldByPlayer, "C_BaseCSGrenade->m_bIsHeldByPlayer");
|
||||
SCHEMA_ADD_FIELD(bool, IsPinPulled, "C_BaseCSGrenade->m_bPinPulled");
|
||||
SCHEMA_ADD_FIELD(GameTime_t, GetThrowTime, "C_BaseCSGrenade->m_fThrowTime");
|
||||
SCHEMA_ADD_FIELD(float, GetThrowStrength, "C_BaseCSGrenade->m_flThrowStrength");
|
||||
};
|
||||
|
||||
class C_BaseGrenade : public C_BaseFlex
|
||||
{
|
||||
public:
|
||||
CS_CLASS_NO_INITIALIZER(C_BaseGrenade);
|
||||
};
|
||||
|
||||
class CSkeletonInstance : public CGameSceneNode
|
||||
{
|
||||
public:
|
||||
MEM_PAD(0x1CC); //0x0000
|
||||
int nBoneCount; //0x01CC
|
||||
MEM_PAD(0x18); //0x01D0
|
||||
int nMask; //0x01E8
|
||||
MEM_PAD(0x4); //0x01EC
|
||||
Matrix2x4_t* pBoneCache; //0x01F0
|
||||
};
|
||||
Reference in New Issue
Block a user