Skip to content

Commit 2d0ac93

Browse files
authored
Implement PlayerDeathThink hook (#885)
1 parent c87761e commit 2d0ac93

6 files changed

Lines changed: 22 additions & 3 deletions

File tree

regamedll/dlls/API/CAPI_Impl.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -333,6 +333,8 @@ GAMEHOOK_REGISTRY(CBasePlayerWeapon_KickBack);
333333
GAMEHOOK_REGISTRY(CBasePlayerWeapon_SendWeaponAnim);
334334
GAMEHOOK_REGISTRY(CSGameRules_SendDeathMessage);
335335

336+
GAMEHOOK_REGISTRY(CBasePlayer_PlayerDeathThink);
337+
336338
int CReGameApi::GetMajorVersion() {
337339
return REGAMEDLL_API_VERSION_MAJOR;
338340
}

regamedll/dlls/API/CAPI_Impl.h

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -737,6 +737,10 @@ typedef IHookChainRegistryClassImpl<void, CBasePlayerWeapon, float, float, float
737737
typedef IHookChainClassImpl<void, CBasePlayerWeapon, int, int> CReGameHook_CBasePlayerWeapon_SendWeaponAnim;
738738
typedef IHookChainRegistryClassImpl<void, CBasePlayerWeapon, int, int> CReGameHookRegistry_CBasePlayerWeapon_SendWeaponAnim;
739739

740+
// CBasePlayer::PlayerDeathThink hook
741+
typedef IHookChainClassImpl<void, CBasePlayer> CReGameHook_CBasePlayer_PlayerDeathThink;
742+
typedef IHookChainRegistryClassImpl<void, CBasePlayer> CReGameHookRegistry_CBasePlayer_PlayerDeathThink;
743+
740744
class CReGameHookchains: public IReGameHookchains {
741745
public:
742746
// CBasePlayer virtual
@@ -895,6 +899,8 @@ class CReGameHookchains: public IReGameHookchains {
895899
CReGameHookRegistry_CBasePlayerWeapon_SendWeaponAnim m_CBasePlayerWeapon_SendWeaponAnim;
896900
CReGameHookRegistry_CSGameRules_SendDeathMessage m_CSGameRules_SendDeathMessage;
897901

902+
CReGameHookRegistry_CBasePlayer_PlayerDeathThink m_CBasePlayer_PlayerDeathThink;
903+
898904
public:
899905
virtual IReGameHookRegistry_CBasePlayer_Spawn *CBasePlayer_Spawn();
900906
virtual IReGameHookRegistry_CBasePlayer_Precache *CBasePlayer_Precache();
@@ -1050,6 +1056,8 @@ class CReGameHookchains: public IReGameHookchains {
10501056
virtual IReGameHookRegistry_CBasePlayerWeapon_KickBack *CBasePlayerWeapon_KickBack();
10511057
virtual IReGameHookRegistry_CBasePlayerWeapon_SendWeaponAnim *CBasePlayerWeapon_SendWeaponAnim();
10521058
virtual IReGameHookRegistry_CSGameRules_SendDeathMessage *CSGameRules_SendDeathMessage();
1059+
1060+
virtual IReGameHookRegistry_CBasePlayer_PlayerDeathThink *CBasePlayer_PlayerDeathThink();
10531061
};
10541062

10551063
extern CReGameHookchains g_ReGameHookchains;

regamedll/dlls/player.cpp

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3784,7 +3784,9 @@ void EXT_FUNC CBasePlayer::__API_HOOK(Disappear)()
37843784
pev->angles.z = 0;
37853785
}
37863786

3787-
void CBasePlayer::PlayerDeathThink()
3787+
LINK_HOOK_CLASS_VOID_CHAIN2(CBasePlayer, PlayerDeathThink)
3788+
3789+
void EXT_FUNC CBasePlayer::__API_HOOK(PlayerDeathThink)()
37883790
{
37893791
if (m_iJoiningState != JOINED)
37903792
return;

regamedll/dlls/player.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -446,6 +446,7 @@ class CBasePlayer: public CBaseMonster {
446446
void JoiningThink_OrigFunc();
447447
void CheckTimeBasedDamage_OrigFunc();
448448
edict_t *EntSelectSpawnPoint_OrigFunc();
449+
void PlayerDeathThink_OrigFunc();
449450

450451
CCSPlayer *CSPlayer() const;
451452
#endif // REGAMEDLL_API

regamedll/public/regamedll/regamedll_api.h

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@
3838
#include <API/CSInterfaces.h>
3939

4040
#define REGAMEDLL_API_VERSION_MAJOR 5
41-
#define REGAMEDLL_API_VERSION_MINOR 25
41+
#define REGAMEDLL_API_VERSION_MINOR 26
4242

4343
// CBasePlayer::Spawn hook
4444
typedef IHookChainClass<void, class CBasePlayer> IReGameHook_CBasePlayer_Spawn;
@@ -616,6 +616,10 @@ typedef IHookChainRegistryClass<void, CBasePlayerWeapon, float, float, float, fl
616616
typedef IHookChainClass<void, CBasePlayerWeapon, int, int> IReGameHook_CBasePlayerWeapon_SendWeaponAnim;
617617
typedef IHookChainRegistryClass<void, CBasePlayerWeapon, int, int> IReGameHookRegistry_CBasePlayerWeapon_SendWeaponAnim;
618618

619+
// CBasePlayer::PlayerDeathThink hook
620+
typedef IHookChainClass<void, class CBasePlayer> IReGameHook_CBasePlayer_PlayerDeathThink;
621+
typedef IHookChainRegistryClass<void, class CBasePlayer> IReGameHookRegistry_CBasePlayer_PlayerDeathThink;
622+
619623
class IReGameHookchains {
620624
public:
621625
virtual ~IReGameHookchains() {}
@@ -774,6 +778,8 @@ class IReGameHookchains {
774778
virtual IReGameHookRegistry_CBasePlayerWeapon_KickBack *CBasePlayerWeapon_KickBack() = 0;
775779
virtual IReGameHookRegistry_CBasePlayerWeapon_SendWeaponAnim *CBasePlayerWeapon_SendWeaponAnim() = 0;
776780
virtual IReGameHookRegistry_CSGameRules_SendDeathMessage *CSGameRules_SendDeathMessage() = 0;
781+
782+
virtual IReGameHookRegistry_CBasePlayer_PlayerDeathThink *CBasePlayer_PlayerDeathThink() = 0;
777783
};
778784

779785
struct ReGameFuncs_t {

regamedll/version/version.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,5 +6,5 @@
66
#pragma once
77

88
#define VERSION_MAJOR 5
9-
#define VERSION_MINOR 25
9+
#define VERSION_MINOR 26
1010
#define VERSION_MAINTENANCE 0

0 commit comments

Comments
 (0)