diff --git a/regamedll/dlls/API/CAPI_Impl.cpp b/regamedll/dlls/API/CAPI_Impl.cpp index 398c8a136..63bfac7de 100644 --- a/regamedll/dlls/API/CAPI_Impl.cpp +++ b/regamedll/dlls/API/CAPI_Impl.cpp @@ -338,6 +338,7 @@ GAMEHOOK_REGISTRY(CBasePlayer_Observer_Think); GAMEHOOK_REGISTRY(CBasePlayer_RemoveAllItems); GAMEHOOK_REGISTRY(CBasePlayer_UpdateStatusBar); GAMEHOOK_REGISTRY(CBasePlayer_TakeDamageImpulse); +GAMEHOOK_REGISTRY(CBasePlayer_HandleSignals); GAMEHOOK_REGISTRY(SendSayMessage); diff --git a/regamedll/dlls/API/CAPI_Impl.h b/regamedll/dlls/API/CAPI_Impl.h index 4bb154a9a..d8556feb9 100644 --- a/regamedll/dlls/API/CAPI_Impl.h +++ b/regamedll/dlls/API/CAPI_Impl.h @@ -761,6 +761,10 @@ typedef IHookChainRegistryClassImpl CReGameHook_SendSayMessage; typedef IHookChainRegistryImpl CReGameHookRegistry_SendSayMessage; +// CBasePlayer::HandleSignals hook +typedef IHookChainClassImpl CReGameHook_CBasePlayer_HandleSignals; +typedef IHookChainRegistryClassImpl CReGameHookRegistry_CBasePlayer_HandleSignals; + class CReGameHookchains: public IReGameHookchains { public: // CBasePlayer virtual @@ -924,6 +928,7 @@ class CReGameHookchains: public IReGameHookchains { CReGameHookRegistry_CBasePlayer_RemoveAllItems m_CBasePlayer_RemoveAllItems; CReGameHookRegistry_CBasePlayer_UpdateStatusBar m_CBasePlayer_UpdateStatusBar; CReGameHookRegistry_CBasePlayer_TakeDamageImpulse m_CBasePlayer_TakeDamageImpulse; + CReGameHookRegistry_CBasePlayer_HandleSignals m_CBasePlayer_HandleSignals; CReGameHookRegistry_SendSayMessage m_SendSayMessage; @@ -1089,6 +1094,7 @@ class CReGameHookchains: public IReGameHookchains { virtual IReGameHookRegistry_CBasePlayer_UpdateStatusBar *CBasePlayer_UpdateStatusBar(); virtual IReGameHookRegistry_CBasePlayer_TakeDamageImpulse *CBasePlayer_TakeDamageImpulse(); + virtual IReGameHookRegistry_CBasePlayer_HandleSignals *CBasePlayer_HandleSignals(); virtual IReGameHookRegistry_SendSayMessage *SendSayMessage(); }; diff --git a/regamedll/dlls/player.cpp b/regamedll/dlls/player.cpp index 90572ada2..91f9e6678 100644 --- a/regamedll/dlls/player.cpp +++ b/regamedll/dlls/player.cpp @@ -7071,7 +7071,9 @@ void OLD_CheckRescueZone(CBasePlayer *pPlayer) } } -void CBasePlayer::HandleSignals() +LINK_HOOK_CLASS_VOID_CHAIN2(CBasePlayer, HandleSignals) + +void EXT_FUNC CBasePlayer::__API_HOOK(HandleSignals)() { if (CSGameRules()->IsMultiplayer()) { diff --git a/regamedll/dlls/player.h b/regamedll/dlls/player.h index 78098344f..c65ab54a7 100644 --- a/regamedll/dlls/player.h +++ b/regamedll/dlls/player.h @@ -452,6 +452,7 @@ class CBasePlayer: public CBaseMonster { void RemoveAllItems_OrigFunc(BOOL removeSuit); void UpdateStatusBar_OrigFunc(); void TakeDamageImpulse_OrigFunc(CBasePlayer *pAttacker, float flKnockbackForce, float flVelModifier); + void HandleSignals_OrigFunc(); CCSPlayer *CSPlayer() const; #endif // REGAMEDLL_API diff --git a/regamedll/public/regamedll/regamedll_api.h b/regamedll/public/regamedll/regamedll_api.h index 466ec4b42..283337f80 100644 --- a/regamedll/public/regamedll/regamedll_api.h +++ b/regamedll/public/regamedll/regamedll_api.h @@ -636,6 +636,10 @@ typedef IHookChainRegistryClass IReGameHookRegistry_CBa typedef IHookChainClass IReGameHook_CBasePlayer_TakeDamageImpulse; typedef IHookChainRegistryClass IReGameHookRegistry_CBasePlayer_TakeDamageImpulse; +// CBasePlayer::HandleSignals hook +typedef IHookChainClass IReGameHook_CBasePlayer_HandleSignals; +typedef IHookChainRegistryClass IReGameHookRegistry_CBasePlayer_HandleSignals; + // SendSayMessage hook typedef IHookChain IReGameHook_SendSayMessage; typedef IHookChainRegistry IReGameHookRegistry_SendSayMessage; @@ -805,6 +809,7 @@ class IReGameHookchains { virtual IReGameHookRegistry_CBasePlayer_UpdateStatusBar *CBasePlayer_UpdateStatusBar() = 0; virtual IReGameHookRegistry_CBasePlayer_TakeDamageImpulse *CBasePlayer_TakeDamageImpulse() = 0; + virtual IReGameHookRegistry_CBasePlayer_HandleSignals *CBasePlayer_HandleSignals() = 0; virtual IReGameHookRegistry_SendSayMessage *SendSayMessage() = 0; };