2
0
mirror of https://github.com/rehlds/reapi.git synced 2025-01-14 15:48:03 +03:00

Implemented CCSEntity members to export in AMXX headers (#296)

This commit is contained in:
Francisco Muñoz 2023-11-26 06:45:39 -03:00 committed by GitHub
parent 4c1932c2c9
commit 5c38e6f5e4
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
6 changed files with 42 additions and 3 deletions

View File

@ -80,7 +80,8 @@ enum members_tables_e
mt_mapinfo,
mt_csplayerweapon,
mt_gib,
mt_netadr
mt_netadr,
mt_csentity
};
#define ReAPIFunc {EngineFunc, GamedllFunc, GamedllFunc_CBaseAnimating, GamedllFunc_CBasePlayer, GamedllFunc_CSGameRules, GamedllFunc_CGrenade, GamedllFunc_CWeaponBox, ReCheckerFunc, GamedllFunc_CBasePlayerWeapon, GamedllFunc_CGib, GamedllFunc_CBaseEntity, GamedllFunc_CBotManager}

View File

@ -6342,3 +6342,25 @@ enum CGib_Members
*/
m_Gib_lifeTime,
};
/**
* CCSEntity API Members
*/
enum CCSEntity_Members
{
/*
* Description: Penetration level of the damage caused by the inflictor
* Member type: unsigned char
* Get params: get_member(index, member);
* Set params: set_member(index, member, value);
*/
m_ucDmgPenetrationLevel = BEGIN_MEMBER_REGION(csplayerweapon),
/*
* Description: Cached inflictor passed inside TakeDamage to retrieve in Killed
* Member type: entvars_t *
* Get params: get_member(index, member);
* Set params: set_member(index, member, value);
*/
m_pevLastInflictor,
};

View File

@ -47,12 +47,13 @@ public:
public:
CBaseEntity *m_pContainingEntity;
unsigned char m_ucDmgPenetrationLevel; // penetration level of the damage caused by the inflictor
entvars_t *m_pevLastInflictor;
private:
#if defined(_MSC_VER)
#pragma region reserve_data_Region
#endif
char CCSEntity_Reserve[0x3FFF];
char CCSEntity_Reserve[0x3FF7];
virtual void func_reserve1() {};
virtual void func_reserve2() {};

View File

@ -70,6 +70,7 @@
#define MAPINFO_MEMBERS(mx) CLASS_MEMBERS_PREF(CMapInfo, mx, m_MapInfo_##mx, m_)
#define CSPLWPN_MEMBERS(mx) CLASS_MEMBERS_PREF(CCSPlayerWeapon, mx, m_Weapon_##mx, m_)
#define GIB_MEMBERS(mx) CLASS_MEMBERS_PREF(CGib, mx, m_Gib_##mx, m_)
#define CSENT_MEMBERS(mx) CLASS_MEMBERS(CCSEntity, mx, mx)
inline MType getMemberType(float*) { return MEMBER_FLOAT; }
inline MType getMemberType(float) { return MEMBER_FLOAT; }
@ -1064,6 +1065,11 @@ member_t memberlist_netadr[] = {
NETADR_MEMBERS(port)
};
member_t memberlist_csentity[] = {
CSENT_MEMBERS(m_ucDmgPenetrationLevel),
CSENT_MEMBERS(m_pevLastInflictor),
};
#ifdef __GNUC__
#pragma GCC diagnostic pop
#endif // #ifdef __GNUC__
@ -1128,6 +1134,7 @@ member_t *memberlist_t::operator[](size_t members) const
CASE(csplayerweapon)
CASE(gib)
CASE(netadr)
CASE(csentity)
}
#undef CASE

View File

@ -83,7 +83,8 @@ struct memberlist_t
mt_mapinfo,
mt_csplayerweapon,
mt_gib,
mt_netadr
mt_netadr,
mt_csentity
};
};
@ -1088,3 +1089,9 @@ enum CGib_Members
m_Gib_material,
m_Gib_lifeTime,
};
enum CSEntity_Members
{
m_ucDmgPenetrationLevel = BEGIN_MEMBER_REGION(csentity),
m_pevLastInflictor,
};

View File

@ -1122,6 +1122,7 @@ void *get_pdata_custom(CBaseEntity *pEntity, cell member)
{
const auto table = memberlist_t::members_tables_e(member / MAX_REGION_RANGE);
switch (table) {
case memberlist_t::mt_csentity:
case memberlist_t::mt_csplayer:
case memberlist_t::mt_csplayerweapon: {
if (unlikely(pEntity->m_pEntity == nullptr)) {