From 1d1825b3bbd500dde34b2abc122f978090d68672 Mon Sep 17 00:00:00 2001 From: TechHex Date: Sat, 11 Nov 2023 11:51:40 -0400 Subject: [PATCH 1/6] Observer Think Hook --- regamedll/dlls/API/CAPI_Impl.cpp | 1 + regamedll/dlls/API/CAPI_Impl.h | 6 ++++++ regamedll/dlls/observer.cpp | 6 ++++-- regamedll/dlls/player.h | 1 + regamedll/public/regamedll/regamedll_api.h | 5 +++++ 5 files changed, 17 insertions(+), 2 deletions(-) diff --git a/regamedll/dlls/API/CAPI_Impl.cpp b/regamedll/dlls/API/CAPI_Impl.cpp index 55a56e317..c2aaabd86 100644 --- a/regamedll/dlls/API/CAPI_Impl.cpp +++ b/regamedll/dlls/API/CAPI_Impl.cpp @@ -303,6 +303,7 @@ GAMEHOOK_REGISTRY(CBaseEntity_FireBullets3); GAMEHOOK_REGISTRY(CBasePlayer_Observer_SetMode); GAMEHOOK_REGISTRY(CBasePlayer_Observer_FindNextPlayer); +GAMEHOOK_REGISTRY(CBasePlayer_Observer_Think); GAMEHOOK_REGISTRY(CBasePlayer_Pain); GAMEHOOK_REGISTRY(CBasePlayer_DeathSound); diff --git a/regamedll/dlls/API/CAPI_Impl.h b/regamedll/dlls/API/CAPI_Impl.h index b64f6d817..e2836d6a3 100644 --- a/regamedll/dlls/API/CAPI_Impl.h +++ b/regamedll/dlls/API/CAPI_Impl.h @@ -629,6 +629,10 @@ typedef IHookChainRegistryClassImpl CReGameHookRegistry_ typedef IHookChainClassImpl CReGameHook_CBasePlayer_Observer_FindNextPlayer; typedef IHookChainRegistryClassImpl CReGameHookRegistry_CBasePlayer_Observer_FindNextPlayer; +// CBasePlayer::Observer_Think hook +typedef IHookChainClassImpl CReGameHook_CBasePlayer_Observer_Think; +typedef IHookChainRegistryClassImpl CReGameHookRegistry_CBasePlayer_Observer_Think; + // CBasePlayer::Pain hook typedef IHookChainClassImpl CReGameHook_CBasePlayer_Pain; typedef IHookChainRegistryClassImpl CReGameHookRegistry_CBasePlayer_Pain; @@ -869,6 +873,7 @@ class CReGameHookchains: public IReGameHookchains { CReGameHookRegistry_CBasePlayer_Observer_SetMode m_CBasePlayer_Observer_SetMode; CReGameHookRegistry_CBasePlayer_Observer_FindNextPlayer m_CBasePlayer_Observer_FindNextPlayer; + CReGameHookRegistry_CBasePlayer_Observer_Think m_CBasePlayer_Observer_Think; CReGameHookRegistry_CBasePlayer_Pain m_CBasePlayer_Pain; CReGameHookRegistry_CBasePlayer_DeathSound m_CBasePlayer_DeathSound; @@ -1027,6 +1032,7 @@ class CReGameHookchains: public IReGameHookchains { virtual IReGameHookRegistry_CBasePlayer_Observer_SetMode *CBasePlayer_Observer_SetMode(); virtual IReGameHookRegistry_CBasePlayer_Observer_FindNextPlayer *CBasePlayer_Observer_FindNextPlayer(); + virtual IReGameHookRegistry_CBasePlayer_Observer_Think *CBasePlayer_Observer_Think(); virtual IReGameHookRegistry_CBasePlayer_Pain *CBasePlayer_Pain(); virtual IReGameHookRegistry_CBasePlayer_DeathSound *CBasePlayer_DeathSound(); diff --git a/regamedll/dlls/observer.cpp b/regamedll/dlls/observer.cpp index e0bdc6441..4b3521a6c 100644 --- a/regamedll/dlls/observer.cpp +++ b/regamedll/dlls/observer.cpp @@ -541,9 +541,11 @@ void EXT_FUNC CBasePlayer::__API_HOOK(Observer_SetMode)(int iMode) m_bWasFollowing = false; } -void CBasePlayer::Observer_Think() +LINK_HOOK_CLASS_VOID_CHAIN2(CBasePlayer, Observer_Think) + +void EXT_FUNC CBasePlayer::__API_HOOK(Observer_Think)() { Observer_HandleButtons(); Observer_CheckTarget(); Observer_CheckProperties(); -} +} \ No newline at end of file diff --git a/regamedll/dlls/player.h b/regamedll/dlls/player.h index d3b8e6236..0e795f30d 100644 --- a/regamedll/dlls/player.h +++ b/regamedll/dlls/player.h @@ -441,6 +441,7 @@ class CBasePlayer: public CBaseMonster { void DropIdlePlayer_OrigFunc(const char *reason); void Observer_SetMode_OrigFunc(int iMode); EXT_FUNC void Observer_FindNextPlayer_OrigFunc(bool bReverse, const char* name = nullptr); + void Observer_Think_OrigFunc(); void Pain_OrigFunc(int iLastHitGroup, bool bHasArmour); void DeathSound_OrigFunc(); void JoiningThink_OrigFunc(); diff --git a/regamedll/public/regamedll/regamedll_api.h b/regamedll/public/regamedll/regamedll_api.h index e11914944..ef63ce4ab 100644 --- a/regamedll/public/regamedll/regamedll_api.h +++ b/regamedll/public/regamedll/regamedll_api.h @@ -508,6 +508,10 @@ typedef IHookChainRegistryClass IReGameHookRegistr typedef IHookChainClass IReGameHook_CBasePlayer_Observer_FindNextPlayer; typedef IHookChainRegistryClass IReGameHookRegistry_CBasePlayer_Observer_FindNextPlayer; +// CBasePlayer::Observer_Think hook +typedef IHookChainClass IReGameHook_CBasePlayer_Observer_Think; +typedef IHookChainRegistryClass IReGameHookRegistry_CBasePlayer_Observer_Think; + // CBasePlayer::Pain hook typedef IHookChainClass IReGameHook_CBasePlayer_Pain; typedef IHookChainRegistryClass IReGameHookRegistry_CBasePlayer_Pain; @@ -749,6 +753,7 @@ class IReGameHookchains { virtual IReGameHookRegistry_CBasePlayer_Observer_SetMode *CBasePlayer_Observer_SetMode() = 0; virtual IReGameHookRegistry_CBasePlayer_Observer_FindNextPlayer *CBasePlayer_Observer_FindNextPlayer() = 0; + virtual IReGameHookRegistry_CBasePlayer_Observer_Think *CBasePlayer_Observer_Think() = 0; virtual IReGameHookRegistry_CBasePlayer_Pain *CBasePlayer_Pain() = 0; virtual IReGameHookRegistry_CBasePlayer_DeathSound *CBasePlayer_DeathSound() = 0; From d2598777e20dcca8d656769ee3e3aea71e370ab2 Mon Sep 17 00:00:00 2001 From: Ecnologia <52111952+Mythlogic@users.noreply.github.com> Date: Sat, 11 Nov 2023 17:53:26 +0000 Subject: [PATCH 2/6] Update CAPI_Impl.cpp --- regamedll/dlls/API/CAPI_Impl.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/regamedll/dlls/API/CAPI_Impl.cpp b/regamedll/dlls/API/CAPI_Impl.cpp index c2aaabd86..5bb6b3940 100644 --- a/regamedll/dlls/API/CAPI_Impl.cpp +++ b/regamedll/dlls/API/CAPI_Impl.cpp @@ -303,7 +303,6 @@ GAMEHOOK_REGISTRY(CBaseEntity_FireBullets3); GAMEHOOK_REGISTRY(CBasePlayer_Observer_SetMode); GAMEHOOK_REGISTRY(CBasePlayer_Observer_FindNextPlayer); -GAMEHOOK_REGISTRY(CBasePlayer_Observer_Think); GAMEHOOK_REGISTRY(CBasePlayer_Pain); GAMEHOOK_REGISTRY(CBasePlayer_DeathSound); @@ -335,6 +334,7 @@ GAMEHOOK_REGISTRY(CBasePlayerWeapon_SendWeaponAnim); GAMEHOOK_REGISTRY(CSGameRules_SendDeathMessage); GAMEHOOK_REGISTRY(CBasePlayer_PlayerDeathThink); +GAMEHOOK_REGISTRY(CBasePlayer_Observer_Think); int CReGameApi::GetMajorVersion() { return REGAMEDLL_API_VERSION_MAJOR; From b88110204951ef7ba810386c482692b2bbdd6587 Mon Sep 17 00:00:00 2001 From: Ecnologia <52111952+Mythlogic@users.noreply.github.com> Date: Sat, 11 Nov 2023 17:54:58 +0000 Subject: [PATCH 3/6] Update CAPI_Impl.h --- regamedll/dlls/API/CAPI_Impl.h | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/regamedll/dlls/API/CAPI_Impl.h b/regamedll/dlls/API/CAPI_Impl.h index e2836d6a3..0548a841f 100644 --- a/regamedll/dlls/API/CAPI_Impl.h +++ b/regamedll/dlls/API/CAPI_Impl.h @@ -629,10 +629,6 @@ typedef IHookChainRegistryClassImpl CReGameHookRegistry_ typedef IHookChainClassImpl CReGameHook_CBasePlayer_Observer_FindNextPlayer; typedef IHookChainRegistryClassImpl CReGameHookRegistry_CBasePlayer_Observer_FindNextPlayer; -// CBasePlayer::Observer_Think hook -typedef IHookChainClassImpl CReGameHook_CBasePlayer_Observer_Think; -typedef IHookChainRegistryClassImpl CReGameHookRegistry_CBasePlayer_Observer_Think; - // CBasePlayer::Pain hook typedef IHookChainClassImpl CReGameHook_CBasePlayer_Pain; typedef IHookChainRegistryClassImpl CReGameHookRegistry_CBasePlayer_Pain; @@ -745,6 +741,10 @@ typedef IHookChainRegistryClassImpl CReGameHo typedef IHookChainClassImpl CReGameHook_CBasePlayer_PlayerDeathThink; typedef IHookChainRegistryClassImpl CReGameHookRegistry_CBasePlayer_PlayerDeathThink; +// CBasePlayer::Observer_Think hook +typedef IHookChainClassImpl CReGameHook_CBasePlayer_Observer_Think; +typedef IHookChainRegistryClassImpl CReGameHookRegistry_CBasePlayer_Observer_Think; + class CReGameHookchains: public IReGameHookchains { public: // CBasePlayer virtual @@ -873,7 +873,6 @@ class CReGameHookchains: public IReGameHookchains { CReGameHookRegistry_CBasePlayer_Observer_SetMode m_CBasePlayer_Observer_SetMode; CReGameHookRegistry_CBasePlayer_Observer_FindNextPlayer m_CBasePlayer_Observer_FindNextPlayer; - CReGameHookRegistry_CBasePlayer_Observer_Think m_CBasePlayer_Observer_Think; CReGameHookRegistry_CBasePlayer_Pain m_CBasePlayer_Pain; CReGameHookRegistry_CBasePlayer_DeathSound m_CBasePlayer_DeathSound; @@ -905,6 +904,7 @@ class CReGameHookchains: public IReGameHookchains { CReGameHookRegistry_CSGameRules_SendDeathMessage m_CSGameRules_SendDeathMessage; CReGameHookRegistry_CBasePlayer_PlayerDeathThink m_CBasePlayer_PlayerDeathThink; + CReGameHookRegistry_CBasePlayer_Observer_Think m_CBasePlayer_Observer_Think; public: virtual IReGameHookRegistry_CBasePlayer_Spawn *CBasePlayer_Spawn(); @@ -1032,7 +1032,6 @@ class CReGameHookchains: public IReGameHookchains { virtual IReGameHookRegistry_CBasePlayer_Observer_SetMode *CBasePlayer_Observer_SetMode(); virtual IReGameHookRegistry_CBasePlayer_Observer_FindNextPlayer *CBasePlayer_Observer_FindNextPlayer(); - virtual IReGameHookRegistry_CBasePlayer_Observer_Think *CBasePlayer_Observer_Think(); virtual IReGameHookRegistry_CBasePlayer_Pain *CBasePlayer_Pain(); virtual IReGameHookRegistry_CBasePlayer_DeathSound *CBasePlayer_DeathSound(); @@ -1064,6 +1063,7 @@ class CReGameHookchains: public IReGameHookchains { virtual IReGameHookRegistry_CSGameRules_SendDeathMessage *CSGameRules_SendDeathMessage(); virtual IReGameHookRegistry_CBasePlayer_PlayerDeathThink *CBasePlayer_PlayerDeathThink(); + virtual IReGameHookRegistry_CBasePlayer_Observer_Think *CBasePlayer_Observer_Think(); }; extern CReGameHookchains g_ReGameHookchains; From a0b826becc747f816e39ff8539cc520e76fbfad1 Mon Sep 17 00:00:00 2001 From: Ecnologia <52111952+Mythlogic@users.noreply.github.com> Date: Sat, 11 Nov 2023 17:56:15 +0000 Subject: [PATCH 4/6] Update player.h --- regamedll/dlls/player.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/regamedll/dlls/player.h b/regamedll/dlls/player.h index 0e795f30d..e96300a3b 100644 --- a/regamedll/dlls/player.h +++ b/regamedll/dlls/player.h @@ -441,13 +441,13 @@ class CBasePlayer: public CBaseMonster { void DropIdlePlayer_OrigFunc(const char *reason); void Observer_SetMode_OrigFunc(int iMode); EXT_FUNC void Observer_FindNextPlayer_OrigFunc(bool bReverse, const char* name = nullptr); - void Observer_Think_OrigFunc(); void Pain_OrigFunc(int iLastHitGroup, bool bHasArmour); void DeathSound_OrigFunc(); void JoiningThink_OrigFunc(); void CheckTimeBasedDamage_OrigFunc(); edict_t *EntSelectSpawnPoint_OrigFunc(); void PlayerDeathThink_OrigFunc(); + void Observer_Think_OrigFunc(); CCSPlayer *CSPlayer() const; #endif // REGAMEDLL_API From a070ec8ec073d7e90132c3ada8d72321c69a0043 Mon Sep 17 00:00:00 2001 From: Ecnologia <52111952+Mythlogic@users.noreply.github.com> Date: Sat, 11 Nov 2023 17:57:02 +0000 Subject: [PATCH 5/6] Update regamedll_api.h --- regamedll/public/regamedll/regamedll_api.h | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/regamedll/public/regamedll/regamedll_api.h b/regamedll/public/regamedll/regamedll_api.h index ef63ce4ab..0d8fd4f10 100644 --- a/regamedll/public/regamedll/regamedll_api.h +++ b/regamedll/public/regamedll/regamedll_api.h @@ -508,10 +508,6 @@ typedef IHookChainRegistryClass IReGameHookRegistr typedef IHookChainClass IReGameHook_CBasePlayer_Observer_FindNextPlayer; typedef IHookChainRegistryClass IReGameHookRegistry_CBasePlayer_Observer_FindNextPlayer; -// CBasePlayer::Observer_Think hook -typedef IHookChainClass IReGameHook_CBasePlayer_Observer_Think; -typedef IHookChainRegistryClass IReGameHookRegistry_CBasePlayer_Observer_Think; - // CBasePlayer::Pain hook typedef IHookChainClass IReGameHook_CBasePlayer_Pain; typedef IHookChainRegistryClass IReGameHookRegistry_CBasePlayer_Pain; @@ -624,6 +620,10 @@ typedef IHookChainRegistryClass IReGameHookRe typedef IHookChainClass IReGameHook_CBasePlayer_PlayerDeathThink; typedef IHookChainRegistryClass IReGameHookRegistry_CBasePlayer_PlayerDeathThink; +// CBasePlayer::Observer_Think hook +typedef IHookChainClass IReGameHook_CBasePlayer_Observer_Think; +typedef IHookChainRegistryClass IReGameHookRegistry_CBasePlayer_Observer_Think; + class IReGameHookchains { public: virtual ~IReGameHookchains() {} @@ -753,7 +753,6 @@ class IReGameHookchains { virtual IReGameHookRegistry_CBasePlayer_Observer_SetMode *CBasePlayer_Observer_SetMode() = 0; virtual IReGameHookRegistry_CBasePlayer_Observer_FindNextPlayer *CBasePlayer_Observer_FindNextPlayer() = 0; - virtual IReGameHookRegistry_CBasePlayer_Observer_Think *CBasePlayer_Observer_Think() = 0; virtual IReGameHookRegistry_CBasePlayer_Pain *CBasePlayer_Pain() = 0; virtual IReGameHookRegistry_CBasePlayer_DeathSound *CBasePlayer_DeathSound() = 0; @@ -785,6 +784,7 @@ class IReGameHookchains { virtual IReGameHookRegistry_CSGameRules_SendDeathMessage *CSGameRules_SendDeathMessage() = 0; virtual IReGameHookRegistry_CBasePlayer_PlayerDeathThink *CBasePlayer_PlayerDeathThink() = 0; + virtual IReGameHookRegistry_CBasePlayer_Observer_Think *CBasePlayer_Observer_Think() = 0; }; struct ReGameFuncs_t { From b57076da2e59d7869db67dd9a5b957cb1c45752c Mon Sep 17 00:00:00 2001 From: TechHex Date: Sat, 11 Nov 2023 13:58:15 -0400 Subject: [PATCH 6/6] Update --- regamedll/dlls/player.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/regamedll/dlls/player.h b/regamedll/dlls/player.h index e96300a3b..5adb702fb 100644 --- a/regamedll/dlls/player.h +++ b/regamedll/dlls/player.h @@ -448,7 +448,7 @@ class CBasePlayer: public CBaseMonster { edict_t *EntSelectSpawnPoint_OrigFunc(); void PlayerDeathThink_OrigFunc(); void Observer_Think_OrigFunc(); - + CCSPlayer *CSPlayer() const; #endif // REGAMEDLL_API