mirror of
https://github.com/rehlds/reapi.git
synced 2025-02-10 13:48:55 +03:00
Added api hook RG_RoundEnd
Added natives rg_round_end, rg_update_teamscores
This commit is contained in:
parent
3000269b18
commit
ea35220838
@ -17,13 +17,13 @@
|
|||||||
#include <reapi_engine.inc> // NOTE: only for ReHLDS
|
#include <reapi_engine.inc> // NOTE: only for ReHLDS
|
||||||
#include <reapi_gamedll.inc> // NOTE: only for gamedll Counter-Strike (ReGameDLL_CS)
|
#include <reapi_gamedll.inc> // NOTE: only for gamedll Counter-Strike (ReGameDLL_CS)
|
||||||
|
|
||||||
// return constants
|
// hookchain return type
|
||||||
enum
|
enum
|
||||||
{
|
{
|
||||||
HC_CONTINUE = 0,
|
HC_CONTINUE = 0, // plugin didn't take any action
|
||||||
HC_OVERRIDE,
|
HC_OVERRIDE, // call real function, but use my return value
|
||||||
HC_SUPERCEDE,
|
HC_SUPERCEDE, // skip real function, use my return value
|
||||||
HC_BREAK
|
HC_BREAK // skip a call each forward in AMXX plugins
|
||||||
};
|
};
|
||||||
|
|
||||||
// hookchain types
|
// hookchain types
|
||||||
@ -80,7 +80,7 @@ native bool:EnableHookChain(HookChain:hook);
|
|||||||
*
|
*
|
||||||
* native SetHookChainReturn(AType:type, any:...);
|
* native SetHookChainReturn(AType:type, any:...);
|
||||||
*/
|
*/
|
||||||
native SetHookChainReturn(HookChainReturn:type, any:...);
|
native SetHookChainReturn(AType:type, any:...);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Gets the return value of a hookchain.
|
* Gets the return value of a hookchain.
|
||||||
|
@ -65,3 +65,6 @@ native rg_multidmg_add(inflictor, victim, Float:flDamage, bitsDamageType);
|
|||||||
|
|
||||||
native rg_fire_bullets(inflictor, attacker, shots, Float:vecSrc[3], Float:vecDirShooting[3], Float:vecSpread[3], Float:flDistance, iBulletType, iTracerFreq, iDamage);
|
native rg_fire_bullets(inflictor, attacker, shots, Float:vecSrc[3], Float:vecDirShooting[3], Float:vecSpread[3], Float:flDistance, iBulletType, iTracerFreq, iDamage);
|
||||||
native Float:[3] rg_fire_bullets3(inflictor, attacker, Float:vecSrc[3], Float:vecDirShooting[3], Float:vecSpread, Float:flDistance, iPenetration, iBulletType, iDamage, Float:flRangeModifier, bool:bPistol, shared_rand);
|
native Float:[3] rg_fire_bullets3(inflictor, attacker, Float:vecSrc[3], Float:vecDirShooting[3], Float:vecSpread, Float:flDistance, iPenetration, iBulletType, iDamage, Float:flRangeModifier, bool:bPistol, shared_rand);
|
||||||
|
|
||||||
|
native rg_round_end(Float:tmDelay, WinStatus:st, ScenarionEventEndRound:event = ROUND_NONE, const message[] = "default", const sentence[] = "default");
|
||||||
|
native rg_update_teamscores(iCtsWins = 0, iTsWins = 0, bool:bAdd = true);
|
||||||
|
@ -11,6 +11,35 @@
|
|||||||
#define SIGNAL_ESCAPE (1<<3)
|
#define SIGNAL_ESCAPE (1<<3)
|
||||||
#define SIGNAL_VIPSAFETY (1<<4)
|
#define SIGNAL_VIPSAFETY (1<<4)
|
||||||
|
|
||||||
|
enum WinStatus
|
||||||
|
{
|
||||||
|
WINSTATUS_CTS = 1,
|
||||||
|
WINSTATUS_TERRORISTS,
|
||||||
|
WINSTATUS_DRAW,
|
||||||
|
};
|
||||||
|
|
||||||
|
// used for EndRoundMessage() logged messages
|
||||||
|
enum ScenarionEventEndRound
|
||||||
|
{
|
||||||
|
ROUND_NONE,
|
||||||
|
ROUND_TARGET_BOMB,
|
||||||
|
ROUND_VIP_ESCAPED,
|
||||||
|
ROUND_VIP_ASSASSINATED,
|
||||||
|
ROUND_TERRORISTS_ESCAPED,
|
||||||
|
ROUND_CTS_PREVENT_ESCAPE,
|
||||||
|
ROUND_ESCAPING_TERRORISTS_NEUTRALIZED,
|
||||||
|
ROUND_BOMB_DEFUSED,
|
||||||
|
ROUND_CTS_WIN,
|
||||||
|
ROUND_TERRORISTS_WIN,
|
||||||
|
ROUND_END_DRAW,
|
||||||
|
ROUND_ALL_HOSTAGES_RESCUED,
|
||||||
|
ROUND_TARGET_SAVED,
|
||||||
|
ROUND_HOSTAGE_NOT_RESCUED,
|
||||||
|
ROUND_TERRORISTS_NOT_ESCAPED,
|
||||||
|
ROUND_VIP_NOT_ESCAPED,
|
||||||
|
ROUND_GAME_COMMENCE,
|
||||||
|
};
|
||||||
|
|
||||||
enum PLAYER_ANIM
|
enum PLAYER_ANIM
|
||||||
{
|
{
|
||||||
PLAYER_IDLE,
|
PLAYER_IDLE,
|
||||||
@ -33,22 +62,28 @@ enum GamedllFunc
|
|||||||
* Return type: int
|
* Return type: int
|
||||||
* Params: (const pObserver)
|
* Params: (const pObserver)
|
||||||
*/
|
*/
|
||||||
RH_GetForceCamera = 1024,
|
RG_GetForceCamera = 1024,
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Description: -
|
* Description: -
|
||||||
* Params: (const index, const inflictor, const attacker, const Float:fadeTime, const Float:fadeHold, const alpha, Float:color[3])
|
* Params: (const index, const inflictor, const attacker, const Float:fadeTime, const Float:fadeHold, const alpha, Float:color[3])
|
||||||
*/
|
*/
|
||||||
RH_PlayerBlind,
|
RG_PlayerBlind,
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Description: -
|
* Description: -
|
||||||
* Params: (const index, inflictor, attacker, Float:vecSrc[3], Float:vecSpot[3], tracehandle)
|
* Params: (const index, inflictor, attacker, Float:vecSrc[3], Float:vecSpot[3], tracehandle)
|
||||||
*/
|
*/
|
||||||
RH_RadiusFlash_TraceLine,
|
RG_RadiusFlash_TraceLine,
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Description: -
|
||||||
|
* Params: (WinStatus:status, ScenarionEventEndRound:event, Float:tmDelay)
|
||||||
|
*/
|
||||||
|
RG_RoundEnd,
|
||||||
|
|
||||||
// [...]
|
// [...]
|
||||||
RH_GameDLL_End
|
RG_End
|
||||||
};
|
};
|
||||||
|
|
||||||
enum GamedllFunc_CBaseAnimating
|
enum GamedllFunc_CBaseAnimating
|
||||||
@ -57,10 +92,10 @@ enum GamedllFunc_CBaseAnimating
|
|||||||
* Description: -
|
* Description: -
|
||||||
* Params: (const this)
|
* Params: (const this)
|
||||||
*/
|
*/
|
||||||
RH_CBaseAnimating_ResetSequenceInfo = 2048,
|
RG_CBaseAnimating_ResetSequenceInfo = 2048,
|
||||||
|
|
||||||
// [...]
|
// [...]
|
||||||
RH_CBaseAnimating_End
|
RG_CBaseAnimating_End
|
||||||
};
|
};
|
||||||
|
|
||||||
enum GamedllFunc_CBasePlayer
|
enum GamedllFunc_CBasePlayer
|
||||||
@ -69,20 +104,20 @@ enum GamedllFunc_CBasePlayer
|
|||||||
* Description: -
|
* Description: -
|
||||||
* Params: (const this)
|
* Params: (const this)
|
||||||
*/
|
*/
|
||||||
RH_CBasePlayer_Spawn = 3072,
|
RG_CBasePlayer_Spawn = 3072,
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Description: -
|
* Description: -
|
||||||
* Params: (const this)
|
* Params: (const this)
|
||||||
*/
|
*/
|
||||||
RH_CBasePlayer_Precache,
|
RG_CBasePlayer_Precache,
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Description: -
|
* Description: -
|
||||||
* Return type: int
|
* Return type: int
|
||||||
* Params: (const this)
|
* Params: (const this)
|
||||||
*/
|
*/
|
||||||
RH_CBasePlayer_ObjectCaps,
|
RG_CBasePlayer_ObjectCaps,
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -90,128 +125,128 @@ enum GamedllFunc_CBasePlayer
|
|||||||
* Return type: int
|
* Return type: int
|
||||||
* Params: (const this)
|
* Params: (const this)
|
||||||
*/
|
*/
|
||||||
RH_CBasePlayer_Classify,
|
RG_CBasePlayer_Classify,
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Description: -
|
* Description: -
|
||||||
* Params: (const this, pevAttacker, Float:flDamage, Float:vecDir[3], tracehandle, bitsDamageType)
|
* Params: (const this, pevAttacker, Float:flDamage, Float:vecDir[3], tracehandle, bitsDamageType)
|
||||||
*/
|
*/
|
||||||
RH_CBasePlayer_TraceAttack,
|
RG_CBasePlayer_TraceAttack,
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Description: -
|
* Description: -
|
||||||
* Return type: int
|
* Return type: int
|
||||||
* Params: (const this, pevInflictor, pevAttacker, Float:flDamage, bitsDamageType)
|
* Params: (const this, pevInflictor, pevAttacker, Float:flDamage, bitsDamageType)
|
||||||
*/
|
*/
|
||||||
RH_CBasePlayer_TakeDamage,
|
RG_CBasePlayer_TakeDamage,
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Description: -
|
* Description: -
|
||||||
* Params: (const this, Float:flHealth, bitsDamageType)
|
* Params: (const this, Float:flHealth, bitsDamageType)
|
||||||
*/
|
*/
|
||||||
RH_CBasePlayer_TakeHealth,
|
RG_CBasePlayer_TakeHealth,
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Description: -
|
* Description: -
|
||||||
* Params: (const this, pevAttacker, iGib)
|
* Params: (const this, pevAttacker, iGib)
|
||||||
*/
|
*/
|
||||||
RH_CBasePlayer_Killed,
|
RG_CBasePlayer_Killed,
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Description: -
|
* Description: -
|
||||||
* Params: (const this, score, bAllowNegativeScore)
|
* Params: (const this, score, bAllowNegativeScore)
|
||||||
*/
|
*/
|
||||||
RH_CBasePlayer_AddPoints,
|
RG_CBasePlayer_AddPoints,
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Description: -
|
* Description: -
|
||||||
* Params: (const this, score, bAllowNegativeScore)
|
* Params: (const this, score, bAllowNegativeScore)
|
||||||
*/
|
*/
|
||||||
RH_CBasePlayer_AddPointsToTeam,
|
RG_CBasePlayer_AddPointsToTeam,
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Description: -
|
* Description: -
|
||||||
* Return type: BOOL
|
* Return type: BOOL
|
||||||
* Params: (const this, const pItem)
|
* Params: (const this, const pItem)
|
||||||
*/
|
*/
|
||||||
RH_CBasePlayer_AddPlayerItem,
|
RG_CBasePlayer_AddPlayerItem,
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Description: -
|
* Description: -
|
||||||
* Return type: BOOL
|
* Return type: BOOL
|
||||||
* Params: (const this, const pItem)
|
* Params: (const this, const pItem)
|
||||||
*/
|
*/
|
||||||
RH_CBasePlayer_RemovePlayerItem,
|
RG_CBasePlayer_RemovePlayerItem,
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Description: -
|
* Description: -
|
||||||
* Return type: int
|
* Return type: int
|
||||||
* Params: (const this, iAmount, szName[], iMax)
|
* Params: (const this, iAmount, szName[], iMax)
|
||||||
*/
|
*/
|
||||||
RH_CBasePlayer_GiveAmmo,
|
RG_CBasePlayer_GiveAmmo,
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Description: -
|
* Description: -
|
||||||
* Params: (const this)
|
* Params: (const this)
|
||||||
*/
|
*/
|
||||||
RH_CBasePlayer_ResetMaxSpeed,
|
RG_CBasePlayer_ResetMaxSpeed,
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Description: -
|
* Description: -
|
||||||
* Params: (const this)
|
* Params: (const this)
|
||||||
*/
|
*/
|
||||||
RH_CBasePlayer_Jump,
|
RG_CBasePlayer_Jump,
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Description: -
|
* Description: -
|
||||||
* Params: (const this)
|
* Params: (const this)
|
||||||
*/
|
*/
|
||||||
RH_CBasePlayer_Duck,
|
RG_CBasePlayer_Duck,
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Description: -
|
* Description: -
|
||||||
* Params: (const this)
|
* Params: (const this)
|
||||||
*/
|
*/
|
||||||
RH_CBasePlayer_PreThink,
|
RG_CBasePlayer_PreThink,
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Description: -
|
* Description: -
|
||||||
* Params: (const this)
|
* Params: (const this)
|
||||||
*/
|
*/
|
||||||
RH_CBasePlayer_PostThink,
|
RG_CBasePlayer_PostThink,
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Description: -
|
* Description: -
|
||||||
* Params: (const this)
|
* Params: (const this)
|
||||||
*/
|
*/
|
||||||
RH_CBasePlayer_UpdateClientData,
|
RG_CBasePlayer_UpdateClientData,
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Description: -
|
* Description: -
|
||||||
* Params: (const this)
|
* Params: (const this)
|
||||||
*/
|
*/
|
||||||
RH_CBasePlayer_ImpulseCommands,
|
RG_CBasePlayer_ImpulseCommands,
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Description: -
|
* Description: -
|
||||||
* Params: (const this)
|
* Params: (const this)
|
||||||
*/
|
*/
|
||||||
RH_CBasePlayer_RoundRespawn,
|
RG_CBasePlayer_RoundRespawn,
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Description: -
|
* Description: -
|
||||||
* Params: (const this, Float:flUntilTime, Float:flHoldTime, Float:flFadeTime, iAlpha)
|
* Params: (const this, Float:flUntilTime, Float:flHoldTime, Float:flFadeTime, iAlpha)
|
||||||
*/
|
*/
|
||||||
RH_CBasePlayer_Blind,
|
RG_CBasePlayer_Blind,
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Description: -
|
* Description: -
|
||||||
* Params: (const this, iPlayerIndex, bool:bSameTeam)
|
* Params: (const this, iPlayerIndex, bool:bSameTeam)
|
||||||
*/
|
*/
|
||||||
RH_CBasePlayer_Observer_IsValidTarget,
|
RG_CBasePlayer_Observer_IsValidTarget,
|
||||||
|
|
||||||
// [...]
|
// [...]
|
||||||
RH_CBasePlayer_End
|
RG_CBasePlayer_End
|
||||||
};
|
};
|
||||||
|
|
||||||
// CSGameRules
|
// CSGameRules
|
||||||
|
@ -71,7 +71,8 @@ enum
|
|||||||
// used for EndRoundMessage() logged messages
|
// used for EndRoundMessage() logged messages
|
||||||
enum ScenarionEventEndRound
|
enum ScenarionEventEndRound
|
||||||
{
|
{
|
||||||
ROUND_TARGET_BOMB = 1,
|
ROUND_NONE,
|
||||||
|
ROUND_TARGET_BOMB,
|
||||||
ROUND_VIP_ESCAPED,
|
ROUND_VIP_ESCAPED,
|
||||||
ROUND_VIP_ASSASSINATED,
|
ROUND_VIP_ASSASSINATED,
|
||||||
ROUND_TERRORISTS_ESCAPED,
|
ROUND_TERRORISTS_ESCAPED,
|
||||||
@ -375,6 +376,13 @@ public:
|
|||||||
void MarkSpawnSkipped() { m_bSkipSpawn = false; }
|
void MarkSpawnSkipped() { m_bSkipSpawn = false; }
|
||||||
float TimeRemaining() { return m_iRoundTimeSecs - gpGlobals->time + m_fRoundCount; }
|
float TimeRemaining() { return m_iRoundTimeSecs - gpGlobals->time + m_fRoundCount; }
|
||||||
bool IsMatchStarted() { return (m_fTeamCount != 0.0f || m_fCareerRoundMenuTime != 0.0f || m_fCareerMatchMenuTime != 0.0f); }
|
bool IsMatchStarted() { return (m_fTeamCount != 0.0f || m_fCareerRoundMenuTime != 0.0f || m_fCareerMatchMenuTime != 0.0f); }
|
||||||
|
|
||||||
|
inline void TerminateRound(float tmDelay, int iWinStatus)
|
||||||
|
{
|
||||||
|
m_iRoundWinStatus = iWinStatus;
|
||||||
|
m_fTeamCount = gpGlobals->time + tmDelay;
|
||||||
|
m_bRoundTerminating = true;
|
||||||
|
}
|
||||||
public:
|
public:
|
||||||
CVoiceGameMgr m_VoiceGameMgr;
|
CVoiceGameMgr m_VoiceGameMgr;
|
||||||
float m_fTeamCount; // m_flRestartRoundTime, the global time when the round is supposed to end, if this is not 0
|
float m_fTeamCount; // m_flRestartRoundTime, the global time when the round is supposed to end, if this is not 0
|
||||||
@ -458,6 +466,10 @@ public:
|
|||||||
int m_iRoundWinDifference;
|
int m_iRoundWinDifference;
|
||||||
float m_fCareerMatchMenuTime;
|
float m_fCareerMatchMenuTime;
|
||||||
bool m_bSkipSpawn;
|
bool m_bSkipSpawn;
|
||||||
|
|
||||||
|
// custom
|
||||||
|
bool m_bNeededPlayers;
|
||||||
|
float m_flEscapeRatio;
|
||||||
};
|
};
|
||||||
|
|
||||||
typedef struct mapcycle_item_s
|
typedef struct mapcycle_item_s
|
||||||
|
@ -68,6 +68,16 @@ public:
|
|||||||
virtual void unregisterHook(hookfunc_t hook) = 0;
|
virtual void unregisterHook(hookfunc_t hook) = 0;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// Hook chain registry(for hooks [un]registration)
|
||||||
|
template<typename t_ret, typename ...t_args>
|
||||||
|
class IHookChainRegistryClassEmpty {
|
||||||
|
public:
|
||||||
|
typedef t_ret(*hookfunc_t)(IHookChain<t_ret, t_args...>*, t_args...);
|
||||||
|
|
||||||
|
virtual void registerHook(hookfunc_t hook) = 0;
|
||||||
|
virtual void unregisterHook(hookfunc_t hook) = 0;
|
||||||
|
};
|
||||||
|
|
||||||
// Hook chain registry(for hooks [un]registration)
|
// Hook chain registry(for hooks [un]registration)
|
||||||
template<typename ...t_args>
|
template<typename ...t_args>
|
||||||
class IVoidHookChainRegistry {
|
class IVoidHookChainRegistry {
|
||||||
|
@ -170,6 +170,10 @@ typedef IVoidHookChainRegistry<class CBasePlayer *, struct entvars_s *, struct e
|
|||||||
typedef IVoidHookChain<class CBasePlayer *, struct entvars_s *, struct entvars_s *, Vector &, Vector &, struct TraceResult *> IReGameHook_RadiusFlash_TraceLine;
|
typedef IVoidHookChain<class CBasePlayer *, struct entvars_s *, struct entvars_s *, Vector &, Vector &, struct TraceResult *> IReGameHook_RadiusFlash_TraceLine;
|
||||||
typedef IVoidHookChainRegistry<class CBasePlayer *, struct entvars_s *, struct entvars_s *, Vector &, Vector &, struct TraceResult *> IReGameHookRegistry_RadiusFlash_TraceLine;
|
typedef IVoidHookChainRegistry<class CBasePlayer *, struct entvars_s *, struct entvars_s *, Vector &, Vector &, struct TraceResult *> IReGameHookRegistry_RadiusFlash_TraceLine;
|
||||||
|
|
||||||
|
// RoundEnd hook
|
||||||
|
typedef IHookChain<bool, int, ScenarionEventEndRound, float> IReGameHook_RoundEnd;
|
||||||
|
typedef IHookChainRegistryClassEmpty<bool, int, ScenarionEventEndRound, float> IReGameHookRegistry_RoundEnd;
|
||||||
|
|
||||||
class IReGameHookchains {
|
class IReGameHookchains {
|
||||||
public:
|
public:
|
||||||
virtual ~IReGameHookchains() {}
|
virtual ~IReGameHookchains() {}
|
||||||
@ -211,6 +215,7 @@ public:
|
|||||||
virtual IReGameHookRegistry_GetForceCamera* GetForceCamera() = 0;
|
virtual IReGameHookRegistry_GetForceCamera* GetForceCamera() = 0;
|
||||||
virtual IReGameHookRegistry_PlayerBlind* PlayerBlind() = 0;
|
virtual IReGameHookRegistry_PlayerBlind* PlayerBlind() = 0;
|
||||||
virtual IReGameHookRegistry_RadiusFlash_TraceLine* RadiusFlash_TraceLine() = 0;
|
virtual IReGameHookRegistry_RadiusFlash_TraceLine* RadiusFlash_TraceLine() = 0;
|
||||||
|
virtual IReGameHookRegistry_RoundEnd* RoundEnd() = 0;
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -229,6 +234,8 @@ struct ReGameFuncs_t {
|
|||||||
void (*ApplyMultiDamage)(entvars_t *pevInflictor, entvars_t *pevAttacker);
|
void (*ApplyMultiDamage)(entvars_t *pevInflictor, entvars_t *pevAttacker);
|
||||||
void (*AddMultiDamage)(entvars_t *pevInflictor, CBaseEntity *pEntity, float flDamage, int bitsDamageType);
|
void (*AddMultiDamage)(entvars_t *pevInflictor, CBaseEntity *pEntity, float flDamage, int bitsDamageType);
|
||||||
|
|
||||||
|
void (*EndRoundMessage)(const char *sentence, int event);
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
class IReGameApi {
|
class IReGameApi {
|
||||||
|
@ -68,12 +68,12 @@ public:
|
|||||||
virtual void SetObjectCollisionBox() = 0;
|
virtual void SetObjectCollisionBox() = 0;
|
||||||
virtual int Classify() = 0;
|
virtual int Classify() = 0;
|
||||||
virtual void DeathNotice(struct entvars_s *pevChild) = 0;
|
virtual void DeathNotice(struct entvars_s *pevChild) = 0;
|
||||||
virtual void TraceAttack(struct entvars_s *pevAttacker, float flDamage, Vector vecDir, struct TraceResult *ptr, int bitsDamageType) = 0;
|
virtual void TraceAttack(struct entvars_s *pevAttacker, float flDamage, Vector &vecDir, struct TraceResult *ptr, int bitsDamageType) = 0;
|
||||||
virtual int TakeDamage(struct entvars_s *pevInflictor, struct entvars_s *pevAttacker, float flDamage, int bitsDamageType) = 0;
|
virtual int TakeDamage(struct entvars_s *pevInflictor, struct entvars_s *pevAttacker, float flDamage, int bitsDamageType) = 0;
|
||||||
virtual int TakeHealth(float flHealth, int bitsDamageType) = 0;
|
virtual int TakeHealth(float flHealth, int bitsDamageType) = 0;
|
||||||
virtual void Killed(struct entvars_s *pevAttacker, int iGib) = 0;
|
virtual void Killed(struct entvars_s *pevAttacker, int iGib) = 0;
|
||||||
virtual int BloodColor() = 0;
|
virtual int BloodColor() = 0;
|
||||||
virtual void TraceBleed(float flDamage, Vector vecDir, struct TraceResult *ptr, int bitsDamageType) = 0;
|
virtual void TraceBleed(float flDamage, Vector &vecDir, struct TraceResult *ptr, int bitsDamageType) = 0;
|
||||||
virtual bool IsTriggered(CCSEntity *pActivator) = 0;
|
virtual bool IsTriggered(CCSEntity *pActivator) = 0;
|
||||||
virtual ICSMonster *MyMonsterPointer() = 0;
|
virtual ICSMonster *MyMonsterPointer() = 0;
|
||||||
virtual ICSquadMonster *MySquadMonsterPointer() = 0;
|
virtual ICSquadMonster *MySquadMonsterPointer() = 0;
|
||||||
@ -118,8 +118,8 @@ public:
|
|||||||
public:
|
public:
|
||||||
virtual struct entvars_s *GetEntVars() const = 0;
|
virtual struct entvars_s *GetEntVars() const = 0;
|
||||||
virtual class CBaseEntity *GetEntity() const = 0;
|
virtual class CBaseEntity *GetEntity() const = 0;
|
||||||
virtual void FireBullets(int iShots, Vector vecSrc, Vector vecDirShooting, Vector vecSpread, float flDistance, int iBulletType, int iTracerFreq, int iDamage, entvars_t *pevAttacker) = 0;
|
virtual void FireBullets(int iShots, Vector &vecSrc, Vector &vecDirShooting, Vector &vecSpread, float flDistance, int iBulletType, int iTracerFreq, int iDamage, entvars_t *pevAttacker) = 0;
|
||||||
virtual Vector FireBullets3(Vector vecSrc, Vector vecDirShooting, float vecSpread, float flDistance, int iPenetration, int iBulletType, int iDamage, float flRangeModifier, entvars_t *pevAttacker, bool bPistol, int shared_rand) = 0;
|
virtual Vector FireBullets3(Vector &vecSrc, Vector &vecDirShooting, float vecSpread, float flDistance, int iPenetration, int iBulletType, int iDamage, float flRangeModifier, entvars_t *pevAttacker, bool bPistol, int shared_rand) = 0;
|
||||||
};
|
};
|
||||||
|
|
||||||
class ICSDelay: public ICSEntity {
|
class ICSDelay: public ICSEntity {
|
||||||
@ -208,7 +208,7 @@ public:
|
|||||||
class ICSMonster: public ICSToggle {
|
class ICSMonster: public ICSToggle {
|
||||||
public:
|
public:
|
||||||
virtual void KeyValue(struct KeyValueData_s *pkvd) = 0;
|
virtual void KeyValue(struct KeyValueData_s *pkvd) = 0;
|
||||||
virtual void TraceAttack(struct entvars_s *pevAttacker, float flDamage, Vector vecDir, struct TraceResult *ptr, int bitsDamageType) = 0;
|
virtual void TraceAttack(struct entvars_s *pevAttacker, float flDamage, Vector &vecDir, struct TraceResult *ptr, int bitsDamageType) = 0;
|
||||||
virtual int TakeDamage(struct entvars_s *pevInflictor, struct entvars_s *pevAttacker, float flDamage, int bitsDamageType) = 0;
|
virtual int TakeDamage(struct entvars_s *pevInflictor, struct entvars_s *pevAttacker, float flDamage, int bitsDamageType) = 0;
|
||||||
virtual int TakeHealth(float flHealth, int bitsDamageType) = 0;
|
virtual int TakeHealth(float flHealth, int bitsDamageType) = 0;
|
||||||
virtual void Killed(struct entvars_s *pevAttacker, int iGib) = 0;
|
virtual void Killed(struct entvars_s *pevAttacker, int iGib) = 0;
|
||||||
@ -260,7 +260,7 @@ public:
|
|||||||
virtual int Restore(CRestore &restore) = 0;
|
virtual int Restore(CRestore &restore) = 0;
|
||||||
virtual int ObjectCaps() = 0;
|
virtual int ObjectCaps() = 0;
|
||||||
virtual int Classify() = 0;
|
virtual int Classify() = 0;
|
||||||
virtual void TraceAttack(struct entvars_s *pevAttacker, float flDamage, Vector vecDir, struct TraceResult *ptr, int bitsDamageType) = 0;
|
virtual void TraceAttack(struct entvars_s *pevAttacker, float flDamage, Vector &vecDir, struct TraceResult *ptr, int bitsDamageType) = 0;
|
||||||
virtual int TakeDamage(struct entvars_s *pevInflictor, struct entvars_s *pevAttacker, float flDamage, int bitsDamageType) = 0;
|
virtual int TakeDamage(struct entvars_s *pevInflictor, struct entvars_s *pevAttacker, float flDamage, int bitsDamageType) = 0;
|
||||||
virtual int TakeHealth(float flHealth, int bitsDamageType) = 0;
|
virtual int TakeHealth(float flHealth, int bitsDamageType) = 0;
|
||||||
virtual void Killed(struct entvars_s *pevAttacker, int iGib) = 0;
|
virtual void Killed(struct entvars_s *pevAttacker, int iGib) = 0;
|
||||||
@ -846,7 +846,7 @@ public:
|
|||||||
virtual int Save(CSave &save) = 0;
|
virtual int Save(CSave &save) = 0;
|
||||||
virtual int Restore(CRestore &restore) = 0;
|
virtual int Restore(CRestore &restore) = 0;
|
||||||
virtual int ObjectCaps() = 0;
|
virtual int ObjectCaps() = 0;
|
||||||
virtual void TraceAttack(struct entvars_s *pevAttacker, float flDamage, Vector vecDir, struct TraceResult *ptr, int bitsDamageType) = 0;
|
virtual void TraceAttack(struct entvars_s *pevAttacker, float flDamage, Vector &vecDir, struct TraceResult *ptr, int bitsDamageType) = 0;
|
||||||
virtual int TakeDamage(struct entvars_s *pevInflictor, struct entvars_s *pevAttacker, float flDamage, int bitsDamageType) = 0;
|
virtual int TakeDamage(struct entvars_s *pevInflictor, struct entvars_s *pevAttacker, float flDamage, int bitsDamageType) = 0;
|
||||||
virtual int DamageDecal(int bitsDamageType) = 0;
|
virtual int DamageDecal(int bitsDamageType) = 0;
|
||||||
virtual void Use(CCSEntity *pActivator, CCSEntity *pCaller, USE_TYPE useType, float value) = 0;
|
virtual void Use(CCSEntity *pActivator, CCSEntity *pCaller, USE_TYPE useType, float value) = 0;
|
||||||
|
@ -245,6 +245,7 @@
|
|||||||
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Create</PrecompiledHeader>
|
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Create</PrecompiledHeader>
|
||||||
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Create</PrecompiledHeader>
|
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Create</PrecompiledHeader>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\src\reapi_utils.cpp" />
|
||||||
<ClCompile Include="..\src\sdk_util.cpp" />
|
<ClCompile Include="..\src\sdk_util.cpp" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
|
@ -698,6 +698,9 @@
|
|||||||
<ClCompile Include="..\src\natives_misc.cpp">
|
<ClCompile Include="..\src\natives_misc.cpp">
|
||||||
<Filter>src\natives</Filter>
|
<Filter>src\natives</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\src\reapi_utils.cpp">
|
||||||
|
<Filter>src</Filter>
|
||||||
|
</ClCompile>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<None Include="..\extra\amxmodx\scripting\include\reapi.inc">
|
<None Include="..\extra\amxmodx\scripting\include\reapi.inc">
|
||||||
|
@ -55,7 +55,7 @@ struct amxx_module_info_s
|
|||||||
|
|
||||||
/* calling convention for native functions */
|
/* calling convention for native functions */
|
||||||
#if !defined AMX_NATIVE_CALL
|
#if !defined AMX_NATIVE_CALL
|
||||||
#define AMX_NATIVE_CALL
|
#define AMX_NATIVE_CALL FORCE_STACK_ALIGN
|
||||||
#endif
|
#endif
|
||||||
/* calling convention for all interface functions and callback functions */
|
/* calling convention for all interface functions and callback functions */
|
||||||
#if !defined AMXAPI
|
#if !defined AMXAPI
|
||||||
|
@ -55,7 +55,7 @@ void CBasePlayer_Spawn(IReGameHook_CBasePlayer_Spawn *chain, CBasePlayer *pthis)
|
|||||||
chain->callNext();
|
chain->callNext();
|
||||||
};
|
};
|
||||||
|
|
||||||
callVoidForward(RH_CBasePlayer_Spawn, original, pthis->entindex());
|
callVoidForward(RG_CBasePlayer_Spawn, original, pthis->entindex());
|
||||||
}
|
}
|
||||||
|
|
||||||
void CBasePlayer_Precache(IReGameHook_CBasePlayer_Precache *chain, CBasePlayer *pthis)
|
void CBasePlayer_Precache(IReGameHook_CBasePlayer_Precache *chain, CBasePlayer *pthis)
|
||||||
@ -65,7 +65,7 @@ void CBasePlayer_Precache(IReGameHook_CBasePlayer_Precache *chain, CBasePlayer *
|
|||||||
chain->callNext();
|
chain->callNext();
|
||||||
};
|
};
|
||||||
|
|
||||||
callVoidForward(RH_CBasePlayer_Precache, original, pthis->entindex());
|
callVoidForward(RG_CBasePlayer_Precache, original, pthis->entindex());
|
||||||
}
|
}
|
||||||
|
|
||||||
int CBasePlayer_ObjectCaps(IReGameHook_CBasePlayer_ObjectCaps *chain, CBasePlayer *pthis)
|
int CBasePlayer_ObjectCaps(IReGameHook_CBasePlayer_ObjectCaps *chain, CBasePlayer *pthis)
|
||||||
@ -75,7 +75,7 @@ int CBasePlayer_ObjectCaps(IReGameHook_CBasePlayer_ObjectCaps *chain, CBasePlaye
|
|||||||
return chain->callNext();
|
return chain->callNext();
|
||||||
};
|
};
|
||||||
|
|
||||||
return callForward<int>(RH_CBasePlayer_ObjectCaps, original, pthis->entindex());
|
return callForward<int>(RG_CBasePlayer_ObjectCaps, original, pthis->entindex());
|
||||||
}
|
}
|
||||||
|
|
||||||
int CBasePlayer_Classify(IReGameHook_CBasePlayer_Classify *chain, CBasePlayer *pthis)
|
int CBasePlayer_Classify(IReGameHook_CBasePlayer_Classify *chain, CBasePlayer *pthis)
|
||||||
@ -85,7 +85,7 @@ int CBasePlayer_Classify(IReGameHook_CBasePlayer_Classify *chain, CBasePlayer *p
|
|||||||
return chain->callNext();
|
return chain->callNext();
|
||||||
};
|
};
|
||||||
|
|
||||||
return callForward<int>(RH_CBasePlayer_Classify, original, pthis->entindex());
|
return callForward<int>(RG_CBasePlayer_Classify, original, pthis->entindex());
|
||||||
}
|
}
|
||||||
|
|
||||||
void CBasePlayer_TraceAttack(IReGameHook_CBasePlayer_TraceAttack *chain, CBasePlayer *pthis, entvars_t *pevAttacker, float flDamage, Vector& vecDir, TraceResult *ptr, int bitsDamageType)
|
void CBasePlayer_TraceAttack(IReGameHook_CBasePlayer_TraceAttack *chain, CBasePlayer *pthis, entvars_t *pevAttacker, float flDamage, Vector& vecDir, TraceResult *ptr, int bitsDamageType)
|
||||||
@ -97,7 +97,7 @@ void CBasePlayer_TraceAttack(IReGameHook_CBasePlayer_TraceAttack *chain, CBasePl
|
|||||||
chain->callNext(PEV(_pevAttacker), _flDamage, vecDirCopy, (TraceResult *)_ptr, _bitsDamageType);
|
chain->callNext(PEV(_pevAttacker), _flDamage, vecDirCopy, (TraceResult *)_ptr, _bitsDamageType);
|
||||||
};
|
};
|
||||||
|
|
||||||
callVoidForward(RH_CBasePlayer_TraceAttack, original, pthis->entindex(), indexOfEdict(pevAttacker), flDamage, g_amxxapi.PrepareCellArrayA(reinterpret_cast<cell *>(&vecDirCopy), 3, true), int(ptr), bitsDamageType);
|
callVoidForward(RG_CBasePlayer_TraceAttack, original, pthis->entindex(), indexOfEdict(pevAttacker), flDamage, g_amxxapi.PrepareCellArrayA(reinterpret_cast<cell *>(&vecDirCopy), 3, true), int(ptr), bitsDamageType);
|
||||||
}
|
}
|
||||||
|
|
||||||
int CBasePlayer_TakeDamage(IReGameHook_CBasePlayer_TakeDamage *chain, CBasePlayer *pthis, entvars_t *pevInflictor, entvars_t *pevAttacker, float flDamage, int bitsDamageType)
|
int CBasePlayer_TakeDamage(IReGameHook_CBasePlayer_TakeDamage *chain, CBasePlayer *pthis, entvars_t *pevInflictor, entvars_t *pevAttacker, float flDamage, int bitsDamageType)
|
||||||
@ -107,7 +107,7 @@ int CBasePlayer_TakeDamage(IReGameHook_CBasePlayer_TakeDamage *chain, CBasePlaye
|
|||||||
return chain->callNext(PEV(_pevInflictor), PEV(_pevAttacker), _flDamage, _bitsDamageType);
|
return chain->callNext(PEV(_pevInflictor), PEV(_pevAttacker), _flDamage, _bitsDamageType);
|
||||||
};
|
};
|
||||||
|
|
||||||
return callForward<int>(RH_CBasePlayer_TakeDamage, original, pthis->entindex(), indexOfEdict(pevInflictor), indexOfEdict(pevAttacker), flDamage, bitsDamageType);
|
return callForward<int>(RG_CBasePlayer_TakeDamage, original, pthis->entindex(), indexOfEdict(pevInflictor), indexOfEdict(pevAttacker), flDamage, bitsDamageType);
|
||||||
}
|
}
|
||||||
|
|
||||||
int CBasePlayer_TakeHealth(IReGameHook_CBasePlayer_TakeHealth *chain, CBasePlayer *pthis, float flHealth, int bitsDamageType)
|
int CBasePlayer_TakeHealth(IReGameHook_CBasePlayer_TakeHealth *chain, CBasePlayer *pthis, float flHealth, int bitsDamageType)
|
||||||
@ -117,7 +117,7 @@ int CBasePlayer_TakeHealth(IReGameHook_CBasePlayer_TakeHealth *chain, CBasePlaye
|
|||||||
return chain->callNext(_flHealth, _bitsDamageType);
|
return chain->callNext(_flHealth, _bitsDamageType);
|
||||||
};
|
};
|
||||||
|
|
||||||
return callForward<int>(RH_CBasePlayer_TakeHealth, original, pthis->entindex(), flHealth, bitsDamageType);
|
return callForward<int>(RG_CBasePlayer_TakeHealth, original, pthis->entindex(), flHealth, bitsDamageType);
|
||||||
}
|
}
|
||||||
|
|
||||||
void CBasePlayer_Killed(IReGameHook_CBasePlayer_Killed *chain, CBasePlayer *pthis, entvars_t *pevAttacker, int iGib)
|
void CBasePlayer_Killed(IReGameHook_CBasePlayer_Killed *chain, CBasePlayer *pthis, entvars_t *pevAttacker, int iGib)
|
||||||
@ -127,7 +127,7 @@ void CBasePlayer_Killed(IReGameHook_CBasePlayer_Killed *chain, CBasePlayer *pthi
|
|||||||
chain->callNext(PEV(_pevAttacker), _iGib);
|
chain->callNext(PEV(_pevAttacker), _iGib);
|
||||||
};
|
};
|
||||||
|
|
||||||
callVoidForward(RH_CBasePlayer_Killed, original, pthis->entindex(), indexOfEdict(pevAttacker), iGib);
|
callVoidForward(RG_CBasePlayer_Killed, original, pthis->entindex(), indexOfEdict(pevAttacker), iGib);
|
||||||
}
|
}
|
||||||
|
|
||||||
void CBasePlayer_AddPoints(IReGameHook_CBasePlayer_AddPoints *chain, CBasePlayer *pthis, int score, BOOL bAllowNegativeScore)
|
void CBasePlayer_AddPoints(IReGameHook_CBasePlayer_AddPoints *chain, CBasePlayer *pthis, int score, BOOL bAllowNegativeScore)
|
||||||
@ -137,7 +137,7 @@ void CBasePlayer_AddPoints(IReGameHook_CBasePlayer_AddPoints *chain, CBasePlayer
|
|||||||
chain->callNext(_score, _bAllowNegativeScore);
|
chain->callNext(_score, _bAllowNegativeScore);
|
||||||
};
|
};
|
||||||
|
|
||||||
callVoidForward(RH_CBasePlayer_AddPoints, original, pthis->entindex(), score, bAllowNegativeScore);
|
callVoidForward(RG_CBasePlayer_AddPoints, original, pthis->entindex(), score, bAllowNegativeScore);
|
||||||
}
|
}
|
||||||
|
|
||||||
void CBasePlayer_AddPointsToTeam(IReGameHook_CBasePlayer_AddPointsToTeam *chain, CBasePlayer *pthis, int score, BOOL bAllowNegativeScore)
|
void CBasePlayer_AddPointsToTeam(IReGameHook_CBasePlayer_AddPointsToTeam *chain, CBasePlayer *pthis, int score, BOOL bAllowNegativeScore)
|
||||||
@ -147,7 +147,7 @@ void CBasePlayer_AddPointsToTeam(IReGameHook_CBasePlayer_AddPointsToTeam *chain,
|
|||||||
chain->callNext(_score, _bAllowNegativeScore);
|
chain->callNext(_score, _bAllowNegativeScore);
|
||||||
};
|
};
|
||||||
|
|
||||||
callVoidForward(RH_CBasePlayer_AddPointsToTeam, original, pthis->entindex(), score, bAllowNegativeScore);
|
callVoidForward(RG_CBasePlayer_AddPointsToTeam, original, pthis->entindex(), score, bAllowNegativeScore);
|
||||||
}
|
}
|
||||||
|
|
||||||
BOOL CBasePlayer_AddPlayerItem(IReGameHook_CBasePlayer_AddPlayerItem *chain, CBasePlayer *pthis, CBasePlayerItem *pItem)
|
BOOL CBasePlayer_AddPlayerItem(IReGameHook_CBasePlayer_AddPlayerItem *chain, CBasePlayer *pthis, CBasePlayerItem *pItem)
|
||||||
@ -157,7 +157,7 @@ BOOL CBasePlayer_AddPlayerItem(IReGameHook_CBasePlayer_AddPlayerItem *chain, CBa
|
|||||||
return chain->callNext(getPrivate<CBasePlayerItem>(_pItem));
|
return chain->callNext(getPrivate<CBasePlayerItem>(_pItem));
|
||||||
};
|
};
|
||||||
|
|
||||||
return callForward<BOOL>(RH_CBasePlayer_AddPlayerItem, original, pthis->entindex(), pItem->entindex());
|
return callForward<BOOL>(RG_CBasePlayer_AddPlayerItem, original, pthis->entindex(), pItem->entindex());
|
||||||
}
|
}
|
||||||
|
|
||||||
BOOL CBasePlayer_RemovePlayerItem(IReGameHook_CBasePlayer_RemovePlayerItem *chain, CBasePlayer *pthis, CBasePlayerItem *pItem)
|
BOOL CBasePlayer_RemovePlayerItem(IReGameHook_CBasePlayer_RemovePlayerItem *chain, CBasePlayer *pthis, CBasePlayerItem *pItem)
|
||||||
@ -167,7 +167,7 @@ BOOL CBasePlayer_RemovePlayerItem(IReGameHook_CBasePlayer_RemovePlayerItem *chai
|
|||||||
return chain->callNext(getPrivate<CBasePlayerItem>(_pItem));
|
return chain->callNext(getPrivate<CBasePlayerItem>(_pItem));
|
||||||
};
|
};
|
||||||
|
|
||||||
return callForward<BOOL>(RH_CBasePlayer_RemovePlayerItem, original, pthis->entindex(), pItem->entindex());
|
return callForward<BOOL>(RG_CBasePlayer_RemovePlayerItem, original, pthis->entindex(), pItem->entindex());
|
||||||
}
|
}
|
||||||
|
|
||||||
int CBasePlayer_GiveAmmo(IReGameHook_CBasePlayer_GiveAmmo *chain, CBasePlayer *pthis, int iAmount, char *szName, int iMax)
|
int CBasePlayer_GiveAmmo(IReGameHook_CBasePlayer_GiveAmmo *chain, CBasePlayer *pthis, int iAmount, char *szName, int iMax)
|
||||||
@ -177,7 +177,7 @@ int CBasePlayer_GiveAmmo(IReGameHook_CBasePlayer_GiveAmmo *chain, CBasePlayer *p
|
|||||||
return chain->callNext(_iAmount, _szName, _iMax);
|
return chain->callNext(_iAmount, _szName, _iMax);
|
||||||
};
|
};
|
||||||
|
|
||||||
return callForward<int>(RH_CBasePlayer_GiveAmmo, original, pthis->entindex(), iAmount, szName, iMax);
|
return callForward<int>(RG_CBasePlayer_GiveAmmo, original, pthis->entindex(), iAmount, szName, iMax);
|
||||||
}
|
}
|
||||||
|
|
||||||
void CBasePlayer_ResetMaxSpeed(IReGameHook_CBasePlayer_ResetMaxSpeed *chain, CBasePlayer *pthis)
|
void CBasePlayer_ResetMaxSpeed(IReGameHook_CBasePlayer_ResetMaxSpeed *chain, CBasePlayer *pthis)
|
||||||
@ -187,7 +187,7 @@ void CBasePlayer_ResetMaxSpeed(IReGameHook_CBasePlayer_ResetMaxSpeed *chain, CBa
|
|||||||
chain->callNext();
|
chain->callNext();
|
||||||
};
|
};
|
||||||
|
|
||||||
callVoidForward(RH_CBasePlayer_ResetMaxSpeed, original, pthis->entindex());
|
callVoidForward(RG_CBasePlayer_ResetMaxSpeed, original, pthis->entindex());
|
||||||
}
|
}
|
||||||
|
|
||||||
void CBasePlayer_Jump(IReGameHook_CBasePlayer_Jump *chain, CBasePlayer *pthis)
|
void CBasePlayer_Jump(IReGameHook_CBasePlayer_Jump *chain, CBasePlayer *pthis)
|
||||||
@ -197,7 +197,7 @@ void CBasePlayer_Jump(IReGameHook_CBasePlayer_Jump *chain, CBasePlayer *pthis)
|
|||||||
chain->callNext();
|
chain->callNext();
|
||||||
};
|
};
|
||||||
|
|
||||||
callVoidForward(RH_CBasePlayer_Jump, original, pthis->entindex());
|
callVoidForward(RG_CBasePlayer_Jump, original, pthis->entindex());
|
||||||
}
|
}
|
||||||
|
|
||||||
void CBasePlayer_Duck(IReGameHook_CBasePlayer_Duck *chain, CBasePlayer *pthis)
|
void CBasePlayer_Duck(IReGameHook_CBasePlayer_Duck *chain, CBasePlayer *pthis)
|
||||||
@ -207,7 +207,7 @@ void CBasePlayer_Duck(IReGameHook_CBasePlayer_Duck *chain, CBasePlayer *pthis)
|
|||||||
chain->callNext();
|
chain->callNext();
|
||||||
};
|
};
|
||||||
|
|
||||||
callVoidForward(RH_CBasePlayer_Duck, original, pthis->entindex());
|
callVoidForward(RG_CBasePlayer_Duck, original, pthis->entindex());
|
||||||
}
|
}
|
||||||
|
|
||||||
void CBasePlayer_PreThink(IReGameHook_CBasePlayer_PreThink *chain, CBasePlayer *pthis)
|
void CBasePlayer_PreThink(IReGameHook_CBasePlayer_PreThink *chain, CBasePlayer *pthis)
|
||||||
@ -217,7 +217,7 @@ void CBasePlayer_PreThink(IReGameHook_CBasePlayer_PreThink *chain, CBasePlayer *
|
|||||||
chain->callNext();
|
chain->callNext();
|
||||||
};
|
};
|
||||||
|
|
||||||
callVoidForward(RH_CBasePlayer_PreThink, original, pthis->entindex());
|
callVoidForward(RG_CBasePlayer_PreThink, original, pthis->entindex());
|
||||||
}
|
}
|
||||||
|
|
||||||
void CBasePlayer_PostThink(IReGameHook_CBasePlayer_PostThink *chain, CBasePlayer *pthis)
|
void CBasePlayer_PostThink(IReGameHook_CBasePlayer_PostThink *chain, CBasePlayer *pthis)
|
||||||
@ -227,7 +227,7 @@ void CBasePlayer_PostThink(IReGameHook_CBasePlayer_PostThink *chain, CBasePlayer
|
|||||||
chain->callNext();
|
chain->callNext();
|
||||||
};
|
};
|
||||||
|
|
||||||
callVoidForward(RH_CBasePlayer_PostThink, original, pthis->entindex());
|
callVoidForward(RG_CBasePlayer_PostThink, original, pthis->entindex());
|
||||||
}
|
}
|
||||||
|
|
||||||
void CBasePlayer_UpdateClientData(IReGameHook_CBasePlayer_UpdateClientData *chain, CBasePlayer *pthis)
|
void CBasePlayer_UpdateClientData(IReGameHook_CBasePlayer_UpdateClientData *chain, CBasePlayer *pthis)
|
||||||
@ -237,7 +237,7 @@ void CBasePlayer_UpdateClientData(IReGameHook_CBasePlayer_UpdateClientData *chai
|
|||||||
chain->callNext();
|
chain->callNext();
|
||||||
};
|
};
|
||||||
|
|
||||||
callVoidForward(RH_CBasePlayer_UpdateClientData, original, pthis->entindex());
|
callVoidForward(RG_CBasePlayer_UpdateClientData, original, pthis->entindex());
|
||||||
}
|
}
|
||||||
|
|
||||||
void CBasePlayer_ImpulseCommands(IReGameHook_CBasePlayer_ImpulseCommands *chain, CBasePlayer *pthis)
|
void CBasePlayer_ImpulseCommands(IReGameHook_CBasePlayer_ImpulseCommands *chain, CBasePlayer *pthis)
|
||||||
@ -247,7 +247,7 @@ void CBasePlayer_ImpulseCommands(IReGameHook_CBasePlayer_ImpulseCommands *chain,
|
|||||||
chain->callNext();
|
chain->callNext();
|
||||||
};
|
};
|
||||||
|
|
||||||
callVoidForward(RH_CBasePlayer_ImpulseCommands, original, pthis->entindex());
|
callVoidForward(RG_CBasePlayer_ImpulseCommands, original, pthis->entindex());
|
||||||
}
|
}
|
||||||
|
|
||||||
void CBasePlayer_RoundRespawn(IReGameHook_CBasePlayer_RoundRespawn *chain, CBasePlayer *pthis)
|
void CBasePlayer_RoundRespawn(IReGameHook_CBasePlayer_RoundRespawn *chain, CBasePlayer *pthis)
|
||||||
@ -257,7 +257,7 @@ void CBasePlayer_RoundRespawn(IReGameHook_CBasePlayer_RoundRespawn *chain, CBase
|
|||||||
chain->callNext();
|
chain->callNext();
|
||||||
};
|
};
|
||||||
|
|
||||||
callVoidForward(RH_CBasePlayer_RoundRespawn, original, pthis->entindex());
|
callVoidForward(RG_CBasePlayer_RoundRespawn, original, pthis->entindex());
|
||||||
}
|
}
|
||||||
|
|
||||||
void CBasePlayer_Blind(IReGameHook_CBasePlayer_Blind *chain, CBasePlayer *pthis, float flUntilTime, float flHoldTime, float flFadeTime, int iAlpha)
|
void CBasePlayer_Blind(IReGameHook_CBasePlayer_Blind *chain, CBasePlayer *pthis, float flUntilTime, float flHoldTime, float flFadeTime, int iAlpha)
|
||||||
@ -267,7 +267,7 @@ void CBasePlayer_Blind(IReGameHook_CBasePlayer_Blind *chain, CBasePlayer *pthis,
|
|||||||
chain->callNext(_flUntilTime, _flHoldTime, _flFadeTime, _iAlpha);
|
chain->callNext(_flUntilTime, _flHoldTime, _flFadeTime, _iAlpha);
|
||||||
};
|
};
|
||||||
|
|
||||||
callVoidForward(RH_CBasePlayer_Blind, original, pthis->entindex(), flUntilTime, flHoldTime, flFadeTime, iAlpha);
|
callVoidForward(RG_CBasePlayer_Blind, original, pthis->entindex(), flUntilTime, flHoldTime, flFadeTime, iAlpha);
|
||||||
}
|
}
|
||||||
|
|
||||||
CBaseEntity *CBasePlayer_Observer_IsValidTarget(IReGameHook_CBasePlayer_Observer_IsValidTarget *chain, CBasePlayer *pthis, int iPlayerIndex, bool bSameTeam)
|
CBaseEntity *CBasePlayer_Observer_IsValidTarget(IReGameHook_CBasePlayer_Observer_IsValidTarget *chain, CBasePlayer *pthis, int iPlayerIndex, bool bSameTeam)
|
||||||
@ -277,7 +277,7 @@ CBaseEntity *CBasePlayer_Observer_IsValidTarget(IReGameHook_CBasePlayer_Observer
|
|||||||
return chain->callNext(_iPlayerIndex, _bSameTeam);
|
return chain->callNext(_iPlayerIndex, _bSameTeam);
|
||||||
};
|
};
|
||||||
|
|
||||||
return callForward<CBaseEntity *>(RH_CBasePlayer_Observer_IsValidTarget, original, pthis->entindex(), iPlayerIndex, bSameTeam);
|
return callForward<CBaseEntity *>(RG_CBasePlayer_Observer_IsValidTarget, original, pthis->entindex(), iPlayerIndex, bSameTeam);
|
||||||
}
|
}
|
||||||
|
|
||||||
void CBasePlayer_SetAnimation(IReGameHook_CBasePlayer_SetAnimation *chain, CBasePlayer *pthis, PLAYER_ANIM playerAnim)
|
void CBasePlayer_SetAnimation(IReGameHook_CBasePlayer_SetAnimation *chain, CBasePlayer *pthis, PLAYER_ANIM playerAnim)
|
||||||
@ -287,7 +287,7 @@ void CBasePlayer_SetAnimation(IReGameHook_CBasePlayer_SetAnimation *chain, CBase
|
|||||||
chain->callNext(_playerAnim);
|
chain->callNext(_playerAnim);
|
||||||
};
|
};
|
||||||
|
|
||||||
callVoidForward(RH_CBasePlayer_SetAnimation, original, pthis->entindex(), playerAnim);
|
callVoidForward(RG_CBasePlayer_SetAnimation, original, pthis->entindex(), playerAnim);
|
||||||
}
|
}
|
||||||
|
|
||||||
void CBasePlayer_GiveDefaultItems(IReGameHook_CBasePlayer_GiveDefaultItems *chain, CBasePlayer *pthis)
|
void CBasePlayer_GiveDefaultItems(IReGameHook_CBasePlayer_GiveDefaultItems *chain, CBasePlayer *pthis)
|
||||||
@ -297,7 +297,7 @@ void CBasePlayer_GiveDefaultItems(IReGameHook_CBasePlayer_GiveDefaultItems *chai
|
|||||||
chain->callNext();
|
chain->callNext();
|
||||||
};
|
};
|
||||||
|
|
||||||
callVoidForward(RH_CBasePlayer_GiveDefaultItems, original, pthis->entindex());
|
callVoidForward(RG_CBasePlayer_GiveDefaultItems, original, pthis->entindex());
|
||||||
}
|
}
|
||||||
|
|
||||||
void CBasePlayer_GiveNamedItem(IReGameHook_CBasePlayer_GiveNamedItem *chain, CBasePlayer *pthis, const char *pszName)
|
void CBasePlayer_GiveNamedItem(IReGameHook_CBasePlayer_GiveNamedItem *chain, CBasePlayer *pthis, const char *pszName)
|
||||||
@ -307,7 +307,7 @@ void CBasePlayer_GiveNamedItem(IReGameHook_CBasePlayer_GiveNamedItem *chain, CBa
|
|||||||
chain->callNext(_pszName);
|
chain->callNext(_pszName);
|
||||||
};
|
};
|
||||||
|
|
||||||
callVoidForward(RH_CBasePlayer_GiveNamedItem, original, pthis->entindex(), pszName);
|
callVoidForward(RG_CBasePlayer_GiveNamedItem, original, pthis->entindex(), pszName);
|
||||||
}
|
}
|
||||||
|
|
||||||
void CBasePlayer_AddAccount(IReGameHook_CBasePlayer_AddAccount *chain, CBasePlayer *pthis, int amount, bool bTrackChange)
|
void CBasePlayer_AddAccount(IReGameHook_CBasePlayer_AddAccount *chain, CBasePlayer *pthis, int amount, bool bTrackChange)
|
||||||
@ -317,7 +317,7 @@ void CBasePlayer_AddAccount(IReGameHook_CBasePlayer_AddAccount *chain, CBasePlay
|
|||||||
chain->callNext(_amount, _bTrackChange);
|
chain->callNext(_amount, _bTrackChange);
|
||||||
};
|
};
|
||||||
|
|
||||||
callVoidForward(RH_CBasePlayer_AddAccount, original, pthis->entindex(), amount, bTrackChange);
|
callVoidForward(RG_CBasePlayer_AddAccount, original, pthis->entindex(), amount, bTrackChange);
|
||||||
}
|
}
|
||||||
|
|
||||||
void CBasePlayer_GiveShield(IReGameHook_CBasePlayer_GiveShield *chain, CBasePlayer *pthis, bool bDeploy)
|
void CBasePlayer_GiveShield(IReGameHook_CBasePlayer_GiveShield *chain, CBasePlayer *pthis, bool bDeploy)
|
||||||
@ -327,7 +327,7 @@ void CBasePlayer_GiveShield(IReGameHook_CBasePlayer_GiveShield *chain, CBasePlay
|
|||||||
chain->callNext(_bDeploy);
|
chain->callNext(_bDeploy);
|
||||||
};
|
};
|
||||||
|
|
||||||
callVoidForward(RH_CBasePlayer_GiveShield, original, pthis->entindex(), bDeploy);
|
callVoidForward(RG_CBasePlayer_GiveShield, original, pthis->entindex(), bDeploy);
|
||||||
}
|
}
|
||||||
|
|
||||||
void CBaseAnimating_ResetSequenceInfo(IReGameHook_CBaseAnimating_ResetSequenceInfo *chain, CBaseAnimating *pthis)
|
void CBaseAnimating_ResetSequenceInfo(IReGameHook_CBaseAnimating_ResetSequenceInfo *chain, CBaseAnimating *pthis)
|
||||||
@ -337,7 +337,7 @@ void CBaseAnimating_ResetSequenceInfo(IReGameHook_CBaseAnimating_ResetSequenceIn
|
|||||||
chain->callNext();
|
chain->callNext();
|
||||||
};
|
};
|
||||||
|
|
||||||
callVoidForward(RH_CBaseAnimating_ResetSequenceInfo, original, pthis->entindex());
|
callVoidForward(RG_CBaseAnimating_ResetSequenceInfo, original, pthis->entindex());
|
||||||
}
|
}
|
||||||
|
|
||||||
int GetForceCamera(IReGameHook_GetForceCamera *chain, CBasePlayer *pObserver)
|
int GetForceCamera(IReGameHook_GetForceCamera *chain, CBasePlayer *pObserver)
|
||||||
@ -347,7 +347,7 @@ int GetForceCamera(IReGameHook_GetForceCamera *chain, CBasePlayer *pObserver)
|
|||||||
return chain->callNext(getPrivate<CBasePlayer>(_pObserver));
|
return chain->callNext(getPrivate<CBasePlayer>(_pObserver));
|
||||||
};
|
};
|
||||||
|
|
||||||
return callForward<int>(RH_GetForceCamera, original, pObserver->entindex());
|
return callForward<int>(RG_GetForceCamera, original, pObserver->entindex());
|
||||||
}
|
}
|
||||||
|
|
||||||
void PlayerBlind(IReGameHook_PlayerBlind *chain, CBasePlayer *pPlayer, entvars_t *pevInflictor, entvars_t *pevAttacker, float fadeTime, float fadeHold, int alpha, Vector& color)
|
void PlayerBlind(IReGameHook_PlayerBlind *chain, CBasePlayer *pPlayer, entvars_t *pevInflictor, entvars_t *pevAttacker, float fadeTime, float fadeHold, int alpha, Vector& color)
|
||||||
@ -359,7 +359,7 @@ void PlayerBlind(IReGameHook_PlayerBlind *chain, CBasePlayer *pPlayer, entvars_t
|
|||||||
chain->callNext(getPrivate<CBasePlayer>(_pPlayer), PEV(_pevInflictor), PEV(_pevAttacker), _fadeTime, _fadeHold, _alpha, colorCopy);
|
chain->callNext(getPrivate<CBasePlayer>(_pPlayer), PEV(_pevInflictor), PEV(_pevAttacker), _fadeTime, _fadeHold, _alpha, colorCopy);
|
||||||
};
|
};
|
||||||
|
|
||||||
callVoidForward(RH_PlayerBlind, original, pPlayer->entindex(), indexOfEdict(pevInflictor), indexOfEdict(pevAttacker), fadeTime, fadeHold, alpha, g_amxxapi.PrepareCellArrayA(reinterpret_cast<cell *>(&colorCopy), 3, true));
|
callVoidForward(RG_PlayerBlind, original, pPlayer->entindex(), indexOfEdict(pevInflictor), indexOfEdict(pevAttacker), fadeTime, fadeHold, alpha, g_amxxapi.PrepareCellArrayA(reinterpret_cast<cell *>(&colorCopy), 3, true));
|
||||||
}
|
}
|
||||||
|
|
||||||
void RadiusFlash_TraceLine(IReGameHook_RadiusFlash_TraceLine *chain, CBasePlayer *pPlayer, entvars_t *pevInflictor, entvars_t *pevAttacker, Vector& vecSrc, Vector& vecSpot, TraceResult *ptr)
|
void RadiusFlash_TraceLine(IReGameHook_RadiusFlash_TraceLine *chain, CBasePlayer *pPlayer, entvars_t *pevInflictor, entvars_t *pevAttacker, Vector& vecSrc, Vector& vecSpot, TraceResult *ptr)
|
||||||
@ -371,5 +371,15 @@ void RadiusFlash_TraceLine(IReGameHook_RadiusFlash_TraceLine *chain, CBasePlayer
|
|||||||
chain->callNext(getPrivate<CBasePlayer>(_pPlayer), PEV(_pevInflictor), PEV(_pevAttacker), vecSrcCopy, vecSpotCopy, (TraceResult *)_ptr);
|
chain->callNext(getPrivate<CBasePlayer>(_pPlayer), PEV(_pevInflictor), PEV(_pevAttacker), vecSrcCopy, vecSpotCopy, (TraceResult *)_ptr);
|
||||||
};
|
};
|
||||||
|
|
||||||
callVoidForward(RH_RadiusFlash_TraceLine, original, pPlayer->entindex(), indexOfEdict(pevInflictor), indexOfEdict(pevAttacker), g_amxxapi.PrepareCellArrayA(reinterpret_cast<cell *>(&vecSrcCopy), 3, true), g_amxxapi.PrepareCellArrayA(reinterpret_cast<cell *>(&vecSpotCopy), 3, true), int(ptr));
|
callVoidForward(RG_RadiusFlash_TraceLine, original, pPlayer->entindex(), indexOfEdict(pevInflictor), indexOfEdict(pevAttacker), g_amxxapi.PrepareCellArrayA(reinterpret_cast<cell *>(&vecSrcCopy), 3, true), g_amxxapi.PrepareCellArrayA(reinterpret_cast<cell *>(&vecSpotCopy), 3, true), int(ptr));
|
||||||
|
}
|
||||||
|
|
||||||
|
bool RoundEnd(IReGameHook_RoundEnd *chain, int winStatus, ScenarionEventEndRound event, float tmDelay)
|
||||||
|
{
|
||||||
|
auto original = [chain](int _winStatus, ScenarionEventEndRound _event, float _tmDelay)
|
||||||
|
{
|
||||||
|
return chain->callNext(_winStatus, _event, _tmDelay);
|
||||||
|
};
|
||||||
|
|
||||||
|
return callForward<bool>(RG_RoundEnd, original, winStatus, event, tmDelay);
|
||||||
}
|
}
|
||||||
|
@ -3,10 +3,10 @@
|
|||||||
// hookchain return type
|
// hookchain return type
|
||||||
enum HookChainState
|
enum HookChainState
|
||||||
{
|
{
|
||||||
HC_CONTINUE = 0,
|
HC_CONTINUE = 0, // plugin didn't take any action
|
||||||
HC_OVERRIDE,
|
HC_OVERRIDE, // call real function, but use my return value
|
||||||
HC_SUPERCEDE,
|
HC_SUPERCEDE, // skip real function, use my return value
|
||||||
HC_BREAK
|
HC_BREAK // skip all forwards and real function, use my return value
|
||||||
};
|
};
|
||||||
|
|
||||||
// api types
|
// api types
|
||||||
@ -200,6 +200,7 @@ void Cvar_DirectSet(IRehldsHook_Cvar_DirectSet *chain, cvar_t *var, const char *
|
|||||||
int GetForceCamera(IReGameHook_GetForceCamera *chain, CBasePlayer *pObserver);
|
int GetForceCamera(IReGameHook_GetForceCamera *chain, CBasePlayer *pObserver);
|
||||||
void PlayerBlind(IReGameHook_PlayerBlind *chain, CBasePlayer *pPlayer, entvars_t *pevInflictor, entvars_t *pevAttacker, float fadeTime, float fadeHold, int alpha, Vector& color);
|
void PlayerBlind(IReGameHook_PlayerBlind *chain, CBasePlayer *pPlayer, entvars_t *pevInflictor, entvars_t *pevAttacker, float fadeTime, float fadeHold, int alpha, Vector& color);
|
||||||
void RadiusFlash_TraceLine(IReGameHook_RadiusFlash_TraceLine *chain, CBasePlayer *pPlayer, entvars_t *pevInflictor, entvars_t *pevAttacker, Vector& vecSrc, Vector& vecSpot, TraceResult *ptr);
|
void RadiusFlash_TraceLine(IReGameHook_RadiusFlash_TraceLine *chain, CBasePlayer *pPlayer, entvars_t *pevInflictor, entvars_t *pevAttacker, Vector& vecSrc, Vector& vecSpot, TraceResult *ptr);
|
||||||
|
bool RoundEnd(IReGameHook_RoundEnd *chain, int winStatus, ScenarionEventEndRound event, float tmDelay);
|
||||||
|
|
||||||
// regamedll functions - player
|
// regamedll functions - player
|
||||||
void CBasePlayer_Spawn(IReGameHook_CBasePlayer_Spawn *chain, CBasePlayer *pthis);
|
void CBasePlayer_Spawn(IReGameHook_CBasePlayer_Spawn *chain, CBasePlayer *pthis);
|
||||||
|
@ -1,14 +1,16 @@
|
|||||||
#include "precompiled.h"
|
#include "precompiled.h"
|
||||||
|
|
||||||
inline size_t getFwdParamType(void(*)(int)) { return FP_CELL; }
|
inline size_t getFwdParamType(void(*)(int)) { return FP_CELL; }
|
||||||
inline size_t getFwdParamType(void(*)(bool)) { return FP_CELL; }
|
inline size_t getFwdParamType(void(*)(bool)) { return FP_CELL; }
|
||||||
inline size_t getFwdParamType(void(*)(Vector&)) { return FP_CELL; }
|
inline size_t getFwdParamType(void(*)(Vector&)) { return FP_ARRAY; }
|
||||||
inline size_t getFwdParamType(void(*)(PLAYER_ANIM)) { return FP_CELL; }
|
inline size_t getFwdParamType(void(*)(PLAYER_ANIM)) { return FP_CELL; }
|
||||||
inline size_t getFwdParamType(void(*)(float)) { return FP_FLOAT; }
|
inline size_t getFwdParamType(void(*)(ScenarionEventEndRound)) { return FP_CELL; }
|
||||||
inline size_t getFwdParamType(void(*)(const char *)) { return FP_STRING; }
|
inline size_t getFwdParamType(void(*)(float)) { return FP_FLOAT; }
|
||||||
|
inline size_t getFwdParamType(void(*)(const char *)) { return FP_STRING; }
|
||||||
|
inline size_t getFwdParamType(void(*)(char *)) { return FP_STRING; }
|
||||||
|
|
||||||
template<typename T>
|
template<typename T>
|
||||||
inline size_t getFwdParamType(void(*)(T *)) { return FP_CELL; }
|
inline size_t getFwdParamType(void(*)(T *)) { return FP_CELL; }
|
||||||
|
|
||||||
template<size_t current = 0>
|
template<size_t current = 0>
|
||||||
void setupParamTypes(size_t param_types[], void (*)())
|
void setupParamTypes(size_t param_types[], void (*)())
|
||||||
@ -66,11 +68,12 @@ hook_t hooklist_engine[] = {
|
|||||||
ENG(Cvar_DirectSet)
|
ENG(Cvar_DirectSet)
|
||||||
};
|
};
|
||||||
|
|
||||||
#define DLL(h) { {}, {}, #h, "ReGameDLL", [](){ return api_cfg.hasReGameDLL(); }, ((!(RH_##h & (MAX_REGION_RANGE - 1)) ? regfunc::current_cell = 1, true : false) || (RH_##h & (MAX_REGION_RANGE - 1)) == regfunc::current_cell++) ? regfunc(h) : regfunc(#h " doesn't match hook definition"), [](){ g_ReGameHookchains->##h##()->registerHook(&##h); }, [](){ g_ReGameHookchains->##h##()->unregisterHook(&##h); }}
|
#define DLL(h) { {}, {}, #h, "ReGameDLL", [](){ return api_cfg.hasReGameDLL(); }, ((!(RG_##h & (MAX_REGION_RANGE - 1)) ? regfunc::current_cell = 1, true : false) || (RG_##h & (MAX_REGION_RANGE - 1)) == regfunc::current_cell++) ? regfunc(h) : regfunc(#h " doesn't match hook definition"), [](){ g_ReGameHookchains->##h##()->registerHook(&##h); }, [](){ g_ReGameHookchains->##h##()->unregisterHook(&##h); }}
|
||||||
hook_t hooklist_gamedll[] = {
|
hook_t hooklist_gamedll[] = {
|
||||||
DLL(GetForceCamera),
|
DLL(GetForceCamera),
|
||||||
DLL(PlayerBlind),
|
DLL(PlayerBlind),
|
||||||
DLL(RadiusFlash_TraceLine)
|
DLL(RadiusFlash_TraceLine),
|
||||||
|
DLL(RoundEnd)
|
||||||
};
|
};
|
||||||
|
|
||||||
hook_t hooklist_animating[] = {
|
hook_t hooklist_animating[] = {
|
||||||
|
@ -63,42 +63,10 @@ struct hooklist_t
|
|||||||
|
|
||||||
enum EngineFunc
|
enum EngineFunc
|
||||||
{
|
{
|
||||||
//RH_Steam_NotifyClientConnect = 0,
|
|
||||||
//RH_SV_ConnectClient,
|
|
||||||
//RH_SV_GetIDString,
|
|
||||||
//RH_SV_SendServerinfo,
|
|
||||||
//RH_SV_CheckProtocol,
|
|
||||||
//RH_SVC_GetChallenge,
|
|
||||||
//RH_SV_CheckKeyInfo,
|
|
||||||
//RH_SV_CheckIPRestrictions,
|
|
||||||
//RH_SV_FinishCertificateCheck,
|
|
||||||
//RH_Steam_NotifyBotConnect,
|
|
||||||
//RH_SV_SerializeSteamid,
|
|
||||||
//RH_SV_CompareUserID,
|
|
||||||
//RH_Steam_NotifyClientDisconnect,
|
|
||||||
//RH_NET_GetPacketPreprocessor,
|
|
||||||
//RH_ValidateCommand,
|
|
||||||
//RH_ClientConnected,
|
|
||||||
//RH_SV_HandleClientMessage,
|
|
||||||
//RH_Mod_LoadBrushModel,
|
|
||||||
//RH_Mod_LoadStudioModel,
|
|
||||||
//RH_ExecuteServerStringCmd,
|
|
||||||
//RH_SV_EmitEvents,
|
|
||||||
//RH_EV_PlayReliableEvent,
|
|
||||||
RH_SV_StartSound = BEGIN_FUNC_REGION(engine),
|
RH_SV_StartSound = BEGIN_FUNC_REGION(engine),
|
||||||
//RH_PF_Remove_I,
|
|
||||||
//RH_PF_BuildSoundMsg_I,
|
|
||||||
//RH_SV_WriteFullClientUpdate,
|
|
||||||
//RH_SV_CheckConsistencyResponse,
|
|
||||||
RH_SV_DropClient,
|
RH_SV_DropClient,
|
||||||
RH_SV_ActivateServer,
|
RH_SV_ActivateServer,
|
||||||
//RH_SV_WriteVoiceCodec,
|
|
||||||
//RH_Steam_GSGetSteamID,
|
|
||||||
//RH_SV_TransferConsistencyInfo,
|
|
||||||
//RH_Steam_GSBUpdateUserData,
|
|
||||||
RH_Cvar_DirectSet,
|
RH_Cvar_DirectSet,
|
||||||
//RH_SV_EstablishTimeBase,
|
|
||||||
//RH_SV_Spawn_f,
|
|
||||||
|
|
||||||
// [...]
|
// [...]
|
||||||
RH_EngineFunc_End
|
RH_EngineFunc_End
|
||||||
@ -106,55 +74,56 @@ enum EngineFunc
|
|||||||
|
|
||||||
enum GamedllFunc
|
enum GamedllFunc
|
||||||
{
|
{
|
||||||
RH_GetForceCamera = BEGIN_FUNC_REGION(gamedll),
|
RG_GetForceCamera = BEGIN_FUNC_REGION(gamedll),
|
||||||
RH_PlayerBlind,
|
RG_PlayerBlind,
|
||||||
RH_RadiusFlash_TraceLine,
|
RG_RadiusFlash_TraceLine,
|
||||||
|
RG_RoundEnd,
|
||||||
|
|
||||||
// [...]
|
// [...]
|
||||||
RH_GameDLL_End
|
RG_End
|
||||||
};
|
};
|
||||||
|
|
||||||
enum GamedllFunc_CBaseAnimating
|
enum GamedllFunc_CBaseAnimating
|
||||||
{
|
{
|
||||||
RH_CBaseAnimating_ResetSequenceInfo = BEGIN_FUNC_REGION(animating),
|
RG_CBaseAnimating_ResetSequenceInfo = BEGIN_FUNC_REGION(animating),
|
||||||
|
|
||||||
// [...]
|
// [...]
|
||||||
RH_CBaseAnimating_End
|
RG_CBaseAnimating_End
|
||||||
};
|
};
|
||||||
|
|
||||||
enum GamedllFunc_CBasePlayer
|
enum GamedllFunc_CBasePlayer
|
||||||
{
|
{
|
||||||
// CBasePlayer virtual
|
// CBasePlayer virtual
|
||||||
RH_CBasePlayer_Spawn = BEGIN_FUNC_REGION(player),
|
RG_CBasePlayer_Spawn = BEGIN_FUNC_REGION(player),
|
||||||
RH_CBasePlayer_Precache,
|
RG_CBasePlayer_Precache,
|
||||||
RH_CBasePlayer_ObjectCaps,
|
RG_CBasePlayer_ObjectCaps,
|
||||||
RH_CBasePlayer_Classify,
|
RG_CBasePlayer_Classify,
|
||||||
RH_CBasePlayer_TraceAttack,
|
RG_CBasePlayer_TraceAttack,
|
||||||
RH_CBasePlayer_TakeDamage,
|
RG_CBasePlayer_TakeDamage,
|
||||||
RH_CBasePlayer_TakeHealth,
|
RG_CBasePlayer_TakeHealth,
|
||||||
RH_CBasePlayer_Killed,
|
RG_CBasePlayer_Killed,
|
||||||
RH_CBasePlayer_AddPoints,
|
RG_CBasePlayer_AddPoints,
|
||||||
RH_CBasePlayer_AddPointsToTeam,
|
RG_CBasePlayer_AddPointsToTeam,
|
||||||
RH_CBasePlayer_AddPlayerItem,
|
RG_CBasePlayer_AddPlayerItem,
|
||||||
RH_CBasePlayer_RemovePlayerItem,
|
RG_CBasePlayer_RemovePlayerItem,
|
||||||
RH_CBasePlayer_GiveAmmo,
|
RG_CBasePlayer_GiveAmmo,
|
||||||
RH_CBasePlayer_ResetMaxSpeed,
|
RG_CBasePlayer_ResetMaxSpeed,
|
||||||
RH_CBasePlayer_Jump,
|
RG_CBasePlayer_Jump,
|
||||||
RH_CBasePlayer_Duck,
|
RG_CBasePlayer_Duck,
|
||||||
RH_CBasePlayer_PreThink,
|
RG_CBasePlayer_PreThink,
|
||||||
RH_CBasePlayer_PostThink,
|
RG_CBasePlayer_PostThink,
|
||||||
RH_CBasePlayer_UpdateClientData,
|
RG_CBasePlayer_UpdateClientData,
|
||||||
RH_CBasePlayer_ImpulseCommands,
|
RG_CBasePlayer_ImpulseCommands,
|
||||||
RH_CBasePlayer_RoundRespawn,
|
RG_CBasePlayer_RoundRespawn,
|
||||||
RH_CBasePlayer_Blind,
|
RG_CBasePlayer_Blind,
|
||||||
|
|
||||||
RH_CBasePlayer_Observer_IsValidTarget,
|
RG_CBasePlayer_Observer_IsValidTarget,
|
||||||
RH_CBasePlayer_SetAnimation,
|
RG_CBasePlayer_SetAnimation,
|
||||||
RH_CBasePlayer_GiveDefaultItems,
|
RG_CBasePlayer_GiveDefaultItems,
|
||||||
RH_CBasePlayer_GiveNamedItem,
|
RG_CBasePlayer_GiveNamedItem,
|
||||||
RH_CBasePlayer_AddAccount,
|
RG_CBasePlayer_AddAccount,
|
||||||
RH_CBasePlayer_GiveShield,
|
RG_CBasePlayer_GiveShield,
|
||||||
|
|
||||||
// [...]
|
// [...]
|
||||||
RH_CBasePlayer_End
|
RG_CBasePlayer_End
|
||||||
};
|
};
|
||||||
|
@ -41,14 +41,16 @@ void CAmxxHook::SetState(fwdstate st)
|
|||||||
void CHookManager::clearHandlers() const
|
void CHookManager::clearHandlers() const
|
||||||
{
|
{
|
||||||
#define CLEAR_HOOKLIST(__END__, __START__)\
|
#define CLEAR_HOOKLIST(__END__, __START__)\
|
||||||
for (size_t i = BEGIN_FUNC_REGION(__START__); i < RH_##__END__##_End; ++i) {\
|
for (size_t i = BEGIN_FUNC_REGION(__START__); i < ##__END__; ++i) {\
|
||||||
if (m_hooklist[i])\
|
if (m_hooklist[i])\
|
||||||
m_hooklist[i]->clear();\
|
m_hooklist[i]->clear();\
|
||||||
}
|
}
|
||||||
|
|
||||||
CLEAR_HOOKLIST(EngineFunc, engine);
|
CLEAR_HOOKLIST(RH_EngineFunc_End, engine);
|
||||||
CLEAR_HOOKLIST(GameDLL, gamedll);
|
|
||||||
CLEAR_HOOKLIST(CBasePlayer, player);
|
CLEAR_HOOKLIST(RG_End, gamedll);
|
||||||
|
CLEAR_HOOKLIST(RG_CBaseAnimating_End, animating);
|
||||||
|
CLEAR_HOOKLIST(RG_CBasePlayer_End, player);
|
||||||
}
|
}
|
||||||
|
|
||||||
hook_t* CHookManager::getHook(size_t func) const
|
hook_t* CHookManager::getHook(size_t func) const
|
||||||
|
@ -31,7 +31,7 @@ int regmember::current_cell = 1;
|
|||||||
|
|
||||||
#define GM_MEMBERS(mx, mtype) ((!(mx & (MAX_REGION_RANGE - 1)) ? regmember::current_cell = 1, true : false) || (mx & (MAX_REGION_RANGE - 1)) == regmember::current_cell++) ? regmember(((CHalfLifeMultiplay *)&mem_dummy)->##mx, sizeof(((CHalfLifeMultiplay *)&mem_dummy)->##mx), offsetof(CHalfLifeMultiplay, mx), mtype) : regmember(#mx " doesn't match member definition")
|
#define GM_MEMBERS(mx, mtype) ((!(mx & (MAX_REGION_RANGE - 1)) ? regmember::current_cell = 1, true : false) || (mx & (MAX_REGION_RANGE - 1)) == regmember::current_cell++) ? regmember(((CHalfLifeMultiplay *)&mem_dummy)->##mx, sizeof(((CHalfLifeMultiplay *)&mem_dummy)->##mx), offsetof(CHalfLifeMultiplay, mx), mtype) : regmember(#mx " doesn't match member definition")
|
||||||
#define GM_VOICE_MEMBERS(mx, mtype) ((!(mx & (MAX_REGION_RANGE - 1)) ? regmember::current_cell = 1, true : false) || (mx & (MAX_REGION_RANGE - 1)) == regmember::current_cell++) ? regmember(((CVoiceGameMgr *)&mem_dummy)->##mx, sizeof(((CVoiceGameMgr *)&mem_dummy)->##mx), offsetof(CVoiceGameMgr, mx), mtype) : regmember(#mx " doesn't match member definition")
|
#define GM_VOICE_MEMBERS(mx, mtype) ((!(mx & (MAX_REGION_RANGE - 1)) ? regmember::current_cell = 1, true : false) || (mx & (MAX_REGION_RANGE - 1)) == regmember::current_cell++) ? regmember(((CVoiceGameMgr *)&mem_dummy)->##mx, sizeof(((CVoiceGameMgr *)&mem_dummy)->##mx), offsetof(CVoiceGameMgr, mx), mtype) : regmember(#mx " doesn't match member definition")
|
||||||
member_t memberlist_gamerules[] = {
|
member_t memberlist_gamerules[] = {
|
||||||
GM_MEMBERS(m_bFreezePeriod, MEMBER_INTEGER),
|
GM_MEMBERS(m_bFreezePeriod, MEMBER_INTEGER),
|
||||||
GM_MEMBERS(m_bBombDropped, MEMBER_INTEGER),
|
GM_MEMBERS(m_bBombDropped, MEMBER_INTEGER),
|
||||||
// m_VoiceGameMgr ->
|
// m_VoiceGameMgr ->
|
||||||
@ -348,7 +348,7 @@ member_t memberlist_player[] = {
|
|||||||
memberlist_t memberlist;
|
memberlist_t memberlist;
|
||||||
|
|
||||||
member_t *memberlist_t::operator[](size_t members) const
|
member_t *memberlist_t::operator[](size_t members) const
|
||||||
{
|
{
|
||||||
#define CASE(h) case ht_##h: if (index < arraysize(memberlist_##h)) return &memberlist_##h[index]; else break;
|
#define CASE(h) case ht_##h: if (index < arraysize(memberlist_##h)) return &memberlist_##h[index]; else break;
|
||||||
|
|
||||||
const auto table = members_tables_e(members / MAX_REGION_RANGE);
|
const auto table = members_tables_e(members / MAX_REGION_RANGE);
|
||||||
|
@ -4,6 +4,7 @@
|
|||||||
meta_globals_t *gpMetaGlobals;
|
meta_globals_t *gpMetaGlobals;
|
||||||
gamedll_funcs_t *gpGamedllFuncs;
|
gamedll_funcs_t *gpGamedllFuncs;
|
||||||
mutil_funcs_t *gpMetaUtilFuncs;
|
mutil_funcs_t *gpMetaUtilFuncs;
|
||||||
|
enginefuncs_t *g_pengfuncsTable;
|
||||||
|
|
||||||
plugin_info_t Plugin_info =
|
plugin_info_t Plugin_info =
|
||||||
{
|
{
|
||||||
@ -51,6 +52,7 @@ C_DLLEXPORT int Meta_Attach(PLUG_LOADTIME now, META_FUNCTIONS *pFunctionTable, m
|
|||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
GET_HOOK_TABLES(PLID, &g_pengfuncsTable, nullptr, nullptr);
|
||||||
memcpy(pFunctionTable, &gMetaFunctionTable, sizeof(META_FUNCTIONS));
|
memcpy(pFunctionTable, &gMetaFunctionTable, sizeof(META_FUNCTIONS));
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
@ -136,7 +136,7 @@ static cell AMX_NATIVE_CALL SetHookChainReturn(AMX *amx, cell *params)
|
|||||||
case ATYPE_FLOAT:
|
case ATYPE_FLOAT:
|
||||||
retVal._interger = *srcAddr;
|
retVal._interger = *srcAddr;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case ATYPE_STRING:
|
case ATYPE_STRING:
|
||||||
{
|
{
|
||||||
if (retVal._string != nullptr)
|
if (retVal._string != nullptr)
|
||||||
@ -271,7 +271,7 @@ AMX_NATIVE_INFO HookChain_Natives[] =
|
|||||||
|
|
||||||
{ "EnableHookChain", EnableHookChain },
|
{ "EnableHookChain", EnableHookChain },
|
||||||
{ "DisableHookChain", DisableHookChain },
|
{ "DisableHookChain", DisableHookChain },
|
||||||
|
|
||||||
{ "SetHookChainReturn", SetHookChainReturn },
|
{ "SetHookChainReturn", SetHookChainReturn },
|
||||||
{ "GetHookChainReturn", GetHookChainReturn },
|
{ "GetHookChainReturn", GetHookChainReturn },
|
||||||
|
|
||||||
|
@ -164,6 +164,77 @@ static cell AMX_NATIVE_CALL rg_fire_bullets3(AMX *amx, cell *params)
|
|||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
struct {
|
||||||
|
const char *msg;
|
||||||
|
const char *sentence;
|
||||||
|
size_t status;
|
||||||
|
} msg_sentence_list[] = {
|
||||||
|
{ "", "" }, // ROUND_NONE
|
||||||
|
{ "#Target_Bombed", "terwin", WINSTATUS_TERRORISTS }, // ROUND_TARGET_BOMB
|
||||||
|
{ "#VIP_Escaped", "ctwin", WINSTATUS_CTS }, // ROUND_VIP_ESCAPED
|
||||||
|
{ "#VIP_Assassinated", "terwin", WINSTATUS_TERRORISTS }, // ROUND_VIP_ASSASSINATED
|
||||||
|
{ "#Terrorists_Escaped", "terwin", WINSTATUS_TERRORISTS }, // ROUND_TERRORISTS_ESCAPED
|
||||||
|
{ "#CTs_PreventEscape", "ctwin", WINSTATUS_CTS }, // ROUND_CTS_PREVENT_ESCAPE
|
||||||
|
{ "#Escaping_Terrorists_Neutralized", "ctwin", WINSTATUS_CTS }, // ROUND_ESCAPING_TERRORISTS_NEUTRALIZED
|
||||||
|
{ "#Bomb_Defused", "ctwin", WINSTATUS_CTS }, // ROUND_BOMB_DEFUSED
|
||||||
|
{ "#CTs_Win", "ctwin", WINSTATUS_CTS }, // ROUND_CTS_WIN
|
||||||
|
{ "#Terrorists_Win", "terwin", WINSTATUS_TERRORISTS }, // ROUND_TERRORISTS_WIN
|
||||||
|
{ "#Round_Draw", "rounddraw", WINSTATUS_DRAW }, // ROUND_END_DRAW
|
||||||
|
{ "#All_Hostages_Rescued", "ctwin", WINSTATUS_CTS }, // ROUND_ALL_HOSTAGES_RESCUED
|
||||||
|
{ "#Target_Saved", "ctwin", WINSTATUS_CTS }, // ROUND_TARGET_SAVED
|
||||||
|
{ "#Hostages_Not_Rescued", "terwin", WINSTATUS_TERRORISTS }, // ROUND_HOSTAGE_NOT_RESCUED
|
||||||
|
{ "#Terrorists_Not_Escaped", "ctwin", WINSTATUS_CTS }, // ROUND_TERRORISTS_NOT_ESCAPED
|
||||||
|
{ "#VIP_Not_Escaped", "terwin", WINSTATUS_TERRORISTS }, // ROUND_VIP_NOT_ESCAPED
|
||||||
|
{ "#Game_Commencing", "", WINSTATUS_DRAW }, // ROUND_GAME_COMMENCE
|
||||||
|
};
|
||||||
|
|
||||||
|
// native rg_round_end(Float:tmDelay, WinStatus:st, ScenarionEventEndRound:event = ROUND_NONE, const message[] = "default", const sentence[] = "default");
|
||||||
|
static cell AMX_NATIVE_CALL rg_round_end(AMX *amx, cell *params)
|
||||||
|
{
|
||||||
|
enum args_e { arg_count, arg_delay, arg_win, arg_event, arg_message, arg_sentence, arg_silent };
|
||||||
|
|
||||||
|
size_t winstatus = params[arg_win];
|
||||||
|
if (winstatus <= 0) {
|
||||||
|
MF_LogError(amx, AMX_ERR_NATIVE, "rg_round_end: unknown win-status %i", winstatus);
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
const char *_sentence, *_message;
|
||||||
|
ScenarionEventEndRound event = static_cast<ScenarionEventEndRound>(params[arg_event]);
|
||||||
|
|
||||||
|
_sentence = getAmxString(amx, params[arg_sentence]);
|
||||||
|
_message = getAmxString(amx, params[arg_message]);
|
||||||
|
|
||||||
|
if (event != ROUND_NONE) {
|
||||||
|
auto& lst = msg_sentence_list[event];
|
||||||
|
if (strcmp(_sentence, "default") == 0)
|
||||||
|
_sentence = lst.sentence;
|
||||||
|
if (strcmp(_message, "default") == 0)
|
||||||
|
_message = lst.msg;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (_sentence[0])
|
||||||
|
Broadcast(_sentence);
|
||||||
|
|
||||||
|
if (_message[0])
|
||||||
|
g_ReGameFuncs->EndRoundMessage(_message, event);
|
||||||
|
|
||||||
|
(*g_pCSGameRules)->TerminateRound(*(float *)¶ms[arg_delay], winstatus);
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
// native rg_update_teamscores(iCtsWins = 0, iTsWins = 0, bool:bAdd = true);
|
||||||
|
static cell AMX_NATIVE_CALL rg_update_teamscores(AMX *amx, cell *params)
|
||||||
|
{
|
||||||
|
enum args_e { arg_count, arg_cts, arg_ts, arg_add };
|
||||||
|
|
||||||
|
(*g_pCSGameRules)->m_iNumCTWins = ((params[arg_add] != 0) ? (*g_pCSGameRules)->m_iNumCTWins : 0) + params[arg_cts];
|
||||||
|
(*g_pCSGameRules)->m_iNumTerroristWins = ((params[arg_add] != 0) ? (*g_pCSGameRules)->m_iNumTerroristWins : 0) + params[arg_ts];
|
||||||
|
UpdateTeamScores();
|
||||||
|
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
AMX_NATIVE_INFO Misc_Natives[] =
|
AMX_NATIVE_INFO Misc_Natives[] =
|
||||||
{
|
{
|
||||||
{ "rg_set_animation", rg_set_animation },
|
{ "rg_set_animation", rg_set_animation },
|
||||||
@ -180,6 +251,9 @@ AMX_NATIVE_INFO Misc_Natives[] =
|
|||||||
{ "rg_fire_bullets", rg_fire_bullets },
|
{ "rg_fire_bullets", rg_fire_bullets },
|
||||||
{ "rg_fire_bullets3", rg_fire_bullets3 },
|
{ "rg_fire_bullets3", rg_fire_bullets3 },
|
||||||
|
|
||||||
|
{ "rg_round_end", rg_round_end },
|
||||||
|
{ "rg_update_teamscores", rg_update_teamscores },
|
||||||
|
|
||||||
{ nullptr, nullptr }
|
{ nullptr, nullptr }
|
||||||
};
|
};
|
||||||
|
|
||||||
|
36
reapi/src/reapi_utils.cpp
Normal file
36
reapi/src/reapi_utils.cpp
Normal file
@ -0,0 +1,36 @@
|
|||||||
|
#include "precompiled.h"
|
||||||
|
|
||||||
|
void Broadcast(const char *sentence)
|
||||||
|
{
|
||||||
|
char text[32];
|
||||||
|
|
||||||
|
strcpy(text, "%!MRAD_");
|
||||||
|
strcat(text, UTIL_VarArgs("%s", sentence));
|
||||||
|
|
||||||
|
static int gmsgSendAudio = 0;
|
||||||
|
if (gmsgSendAudio == 0 && !(gmsgSendAudio = REG_USER_MSG("SendAudio", -1)))
|
||||||
|
return;
|
||||||
|
|
||||||
|
g_pengfuncsTable->pfnMessageBegin(MSG_BROADCAST, REG_USER_MSG("SendAudio", -1), NULL, NULL);
|
||||||
|
g_pengfuncsTable->pfnWriteByte(0);
|
||||||
|
g_pengfuncsTable->pfnWriteString(text);
|
||||||
|
g_pengfuncsTable->pfnWriteShort(100);
|
||||||
|
g_pengfuncsTable->pfnMessageEnd();
|
||||||
|
}
|
||||||
|
|
||||||
|
void UpdateTeamScores()
|
||||||
|
{
|
||||||
|
static int gmsgTeamScore = 0;
|
||||||
|
if (gmsgTeamScore == 0 && !(gmsgTeamScore = REG_USER_MSG("TeamScore", -1)))
|
||||||
|
return;
|
||||||
|
|
||||||
|
g_pengfuncsTable->pfnMessageBegin(MSG_ALL, gmsgTeamScore, NULL, NULL);
|
||||||
|
g_pengfuncsTable->pfnWriteString("CT");
|
||||||
|
g_pengfuncsTable->pfnWriteShort((*g_pCSGameRules)->m_iNumCTWins);
|
||||||
|
g_pengfuncsTable->pfnMessageEnd();
|
||||||
|
|
||||||
|
g_pengfuncsTable->pfnMessageBegin(MSG_ALL, gmsgTeamScore, NULL, NULL);
|
||||||
|
g_pengfuncsTable->pfnWriteString("TERRORIST");
|
||||||
|
g_pengfuncsTable->pfnWriteShort((*g_pCSGameRules)->m_iNumTerroristWins);
|
||||||
|
g_pengfuncsTable->pfnMessageEnd();
|
||||||
|
}
|
@ -8,6 +8,7 @@ char(&ArraySizeHelper(T(&array)[N]))[N];
|
|||||||
#define ENTINDEX indexOfEdict
|
#define ENTINDEX indexOfEdict
|
||||||
|
|
||||||
extern edict_t* g_pEdicts;
|
extern edict_t* g_pEdicts;
|
||||||
|
extern enginefuncs_t* g_pengfuncsTable;
|
||||||
|
|
||||||
inline size_t indexOfEdict(edict_t* ed)
|
inline size_t indexOfEdict(edict_t* ed)
|
||||||
{
|
{
|
||||||
@ -78,4 +79,7 @@ inline T get_member_direct(edict_t *pEntity, int offset, int element = 0, int si
|
|||||||
return get_member_direct<T>(pEntity->pvPrivateData, offset, element, size);
|
return get_member_direct<T>(pEntity->pvPrivateData, offset, element, size);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void Broadcast(const char *sentence);
|
||||||
|
void UpdateTeamScores();
|
||||||
|
|
||||||
extern void __declspec(noreturn) UTIL_SysError(const char *fmt, ...);
|
extern void __declspec(noreturn) UTIL_SysError(const char *fmt, ...);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user