mirror of
https://github.com/Mauler125/r5sdk.git
synced 2025-02-09 19:15:03 +01:00
Server: fix server entity structs
The sizes were correct, but some of the field offsets weren't. CBaseCombatCharacter also contained fields specific to CPlayer, these have been moved to CPlayer. CBaseCombatCharacter now aligns on all classes deriving from it (CAI_BaseNPC, etc..). Classes now align properly in the disassembler. Also added more static assertions to prevent mistakes.
This commit is contained in:
parent
b491abb5ec
commit
2b80341c51
@ -133,8 +133,11 @@ protected:
|
||||
char gap_119c[4];
|
||||
__int64 m_AnimSyncScriptProps[8];
|
||||
int m_numAnimSyncScriptProps;
|
||||
char padding_unknown[8];
|
||||
};
|
||||
|
||||
static_assert(sizeof(CBaseAnimating) == 0x11F0);
|
||||
|
||||
inline CBaseAnimating*(*CBaseAnimating__LockStudioHdr)(CBaseAnimating* thisp);
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
@ -14,7 +14,6 @@
|
||||
|
||||
class CBaseAnimatingOverlay : public CBaseAnimating
|
||||
{
|
||||
void* __vftable;
|
||||
int m_maxOverlays;
|
||||
char gap_11f4[4];
|
||||
CAnimationLayer m_AnimOverlay;
|
||||
@ -43,4 +42,6 @@ class CBaseAnimatingOverlay : public CBaseAnimating
|
||||
float m_localAnimOverlayFadeOutDuration[4];
|
||||
};
|
||||
|
||||
static_assert(sizeof(CBaseAnimatingOverlay) == 0x15B0);
|
||||
|
||||
#endif // BASE_ANIMATING_OVERLAY_H
|
||||
|
@ -44,9 +44,6 @@ struct CTether
|
||||
//-----------------------------------------------------------------------------
|
||||
class CBaseCombatCharacter : public CBaseAnimatingOverlay
|
||||
{
|
||||
public:
|
||||
inline const char* GetNetName() const { return m_szNetname; };
|
||||
|
||||
private:
|
||||
bool m_bPreventWeaponPickup;
|
||||
char gap_15b1[3];
|
||||
@ -136,18 +133,8 @@ private:
|
||||
char gap_5949[3];
|
||||
int m_latest3pWeaponGettingEquipped[2];
|
||||
char gap_5954[12];
|
||||
char m_szNetname[256];
|
||||
bool m_zoomViewdriftDebounceEnabled;
|
||||
bool m_bZooming;
|
||||
char gap_5a62[2];
|
||||
float m_zoomToggleOnStartTime;
|
||||
float m_zoomBaseFrac;
|
||||
float m_zoomBaseTime;
|
||||
float m_zoomFullStartTime;
|
||||
int m_physicsSolidMask;
|
||||
int m_rightHandAttachment;
|
||||
int m_leftHandAttachment;
|
||||
int m_headAttachment;
|
||||
int m_chestAttachment;
|
||||
};
|
||||
|
||||
static_assert(sizeof(CBaseCombatCharacter) == 0x5960);
|
||||
|
||||
#endif // BASECOMBATCHARACTER_H
|
||||
|
@ -69,9 +69,10 @@ protected:
|
||||
void* m_pfnMoveDone;
|
||||
void* m_pfnThink;
|
||||
CServerNetworkProperty m_Network;
|
||||
char padding_or_unknown[8];
|
||||
string_t m_ModelName;
|
||||
int m_entIndex;
|
||||
char gap_74[8]; // Aligns properly in IDA and generated code after setting from 4 to 8.
|
||||
char gap_74[4];
|
||||
string_t* m_iClassname;
|
||||
float m_flAnimTime;
|
||||
float m_flSimulationTime;
|
||||
@ -276,7 +277,7 @@ protected:
|
||||
char m_realmsTransmitMaskCached[16];
|
||||
int m_realmsTransmitMaskCachedSerialNumber;
|
||||
};
|
||||
static_assert(sizeof(CBaseEntity) == 2824);
|
||||
static_assert(sizeof(CBaseEntity) == 0xB08);
|
||||
|
||||
inline CBaseEntity*(*CBaseEntity__GetBaseEntity)(CBaseEntity* thisp);
|
||||
|
||||
|
@ -263,7 +263,22 @@ public:
|
||||
|
||||
inline NucleusID_t GetPlatformUserId() const { return m_platformUserId; };
|
||||
|
||||
inline const char* GetNetName() const { return m_szNetname; };
|
||||
|
||||
private:
|
||||
char m_szNetname[256];
|
||||
bool m_zoomViewdriftDebounceEnabled;
|
||||
bool m_bZooming;
|
||||
char gap_5a62[2];
|
||||
float m_zoomToggleOnStartTime;
|
||||
float m_zoomBaseFrac;
|
||||
float m_zoomBaseTime;
|
||||
float m_zoomFullStartTime;
|
||||
int m_physicsSolidMask;
|
||||
int m_rightHandAttachment;
|
||||
int m_leftHandAttachment;
|
||||
int m_headAttachment;
|
||||
int m_chestAttachment;
|
||||
int m_StuckLast;
|
||||
char gap_5a8c[4];
|
||||
CPlayerLocalData m_Local;
|
||||
@ -795,7 +810,7 @@ private:
|
||||
char gap_7ee5[3];
|
||||
int m_armsModelIndex;
|
||||
};
|
||||
static_assert(sizeof(CPlayer) == 0x7EF0); // !TODO: backwards compatibility.
|
||||
static_assert(sizeof(CPlayer) == 0x7EF0);
|
||||
|
||||
inline QAngle*(*CPlayer__EyeAngles)(CPlayer* pPlayer, QAngle* pAngles);
|
||||
inline void(*CPlayer__PlayerRunCommand)(CPlayer* pPlayer, CUserCmd* pUserCmd, IMoveHelper* pMover);
|
||||
|
@ -38,4 +38,6 @@ class CCollisionProperty : public ICollideable
|
||||
float m_hitboxTestRadius;
|
||||
};
|
||||
|
||||
static_assert(sizeof(CCollisionProperty) == 0x78);
|
||||
|
||||
#endif // COLLISIONPROPERTY_H
|
Loading…
x
Reference in New Issue
Block a user