mirror of
https://github.com/s1lentq/ReGameDLL_CS.git
synced 2025-05-02 09:59:30 +03:00
Implement Check* Hooks
- CheckGameOver - CheckTimeLimit - CheckFragLimit - CheckMaxRounds - CheckWinLimit
This commit is contained in:
parent
c08e6d0180
commit
190ceece1f
@ -337,6 +337,12 @@ GAMEHOOK_REGISTRY(CBasePlayer_PlayerDeathThink);
|
||||
GAMEHOOK_REGISTRY(CBasePlayer_Observer_Think);
|
||||
GAMEHOOK_REGISTRY(CBasePlayer_RemoveAllItems);
|
||||
|
||||
GAMEHOOK_REGISTRY(CSGameRules_CheckGameOver);
|
||||
GAMEHOOK_REGISTRY(CSGameRules_CheckTimeLimit);
|
||||
GAMEHOOK_REGISTRY(CSGameRules_CheckFragLimit);
|
||||
GAMEHOOK_REGISTRY(CSGameRules_CheckMaxRounds);
|
||||
GAMEHOOK_REGISTRY(CSGameRules_CheckWinLimit);
|
||||
|
||||
int CReGameApi::GetMajorVersion() {
|
||||
return REGAMEDLL_API_VERSION_MAJOR;
|
||||
}
|
||||
|
@ -749,6 +749,26 @@ typedef IHookChainRegistryClassImpl<void, CBasePlayer> CReGameHookRegistry_CBase
|
||||
typedef IHookChainClassImpl<void, CBasePlayer, BOOL> CReGameHook_CBasePlayer_RemoveAllItems;
|
||||
typedef IHookChainRegistryClassImpl<void, CBasePlayer, BOOL> CReGameHookRegistry_CBasePlayer_RemoveAllItems;
|
||||
|
||||
// CHalfLifeMultiplay::CheckGameOver hook
|
||||
typedef IHookChainClassImpl<BOOL, class CHalfLifeMultiplay> CReGameHook_CSGameRules_CheckGameOver;
|
||||
typedef IHookChainRegistryClassEmptyImpl<BOOL, class CHalfLifeMultiplay> CReGameHookRegistry_CSGameRules_CheckGameOver;
|
||||
|
||||
// CHalfLifeMultiplay::CheckTimeLimit hook
|
||||
typedef IHookChainClassImpl<BOOL, class CHalfLifeMultiplay> CReGameHook_CSGameRules_CheckTimeLimit;
|
||||
typedef IHookChainRegistryClassEmptyImpl<BOOL, class CHalfLifeMultiplay> CReGameHookRegistry_CSGameRules_CheckTimeLimit;
|
||||
|
||||
// CHalfLifeMultiplay::CheckFragLimit hook
|
||||
typedef IHookChainClassImpl<BOOL, class CHalfLifeMultiplay> CReGameHook_CSGameRules_CheckFragLimit;
|
||||
typedef IHookChainRegistryClassEmptyImpl<BOOL, class CHalfLifeMultiplay> CReGameHookRegistry_CSGameRules_CheckFragLimit;
|
||||
|
||||
// CHalfLifeMultiplay::CheckMaxRounds hook
|
||||
typedef IHookChainClassImpl<BOOL, class CHalfLifeMultiplay> CReGameHook_CSGameRules_CheckMaxRounds;
|
||||
typedef IHookChainRegistryClassEmptyImpl<BOOL, class CHalfLifeMultiplay> CReGameHookRegistry_CSGameRules_CheckMaxRounds;
|
||||
|
||||
// CHalfLifeMultiplay::CheckWinLimit hook
|
||||
typedef IHookChainClassImpl<BOOL, class CHalfLifeMultiplay> CReGameHook_CSGameRules_CheckWinLimit;
|
||||
typedef IHookChainRegistryClassEmptyImpl<BOOL, class CHalfLifeMultiplay> CReGameHookRegistry_CSGameRules_CheckWinLimit;
|
||||
|
||||
class CReGameHookchains: public IReGameHookchains {
|
||||
public:
|
||||
// CBasePlayer virtual
|
||||
@ -911,6 +931,12 @@ public:
|
||||
CReGameHookRegistry_CBasePlayer_Observer_Think m_CBasePlayer_Observer_Think;
|
||||
CReGameHookRegistry_CBasePlayer_RemoveAllItems m_CBasePlayer_RemoveAllItems;
|
||||
|
||||
CReGameHookRegistry_CSGameRules_CheckGameOver m_CSGameRules_CheckGameOver;
|
||||
CReGameHookRegistry_CSGameRules_CheckTimeLimit m_CSGameRules_CheckTimeLimit;
|
||||
CReGameHookRegistry_CSGameRules_CheckFragLimit m_CSGameRules_CheckFragLimit;
|
||||
CReGameHookRegistry_CSGameRules_CheckMaxRounds m_CSGameRules_CheckMaxRounds;
|
||||
CReGameHookRegistry_CSGameRules_CheckWinLimit m_CSGameRules_CheckWinLimit;
|
||||
|
||||
public:
|
||||
virtual IReGameHookRegistry_CBasePlayer_Spawn *CBasePlayer_Spawn();
|
||||
virtual IReGameHookRegistry_CBasePlayer_Precache *CBasePlayer_Precache();
|
||||
@ -1070,6 +1096,12 @@ public:
|
||||
virtual IReGameHookRegistry_CBasePlayer_PlayerDeathThink *CBasePlayer_PlayerDeathThink();
|
||||
virtual IReGameHookRegistry_CBasePlayer_Observer_Think *CBasePlayer_Observer_Think();
|
||||
virtual IReGameHookRegistry_CBasePlayer_RemoveAllItems *CBasePlayer_RemoveAllItems();
|
||||
|
||||
virtual IReGameHookRegistry_CSGameRules_CheckGameOver *CSGameRules_CheckGameOver();
|
||||
virtual IReGameHookRegistry_CSGameRules_CheckTimeLimit *CSGameRules_CheckTimeLimit();
|
||||
virtual IReGameHookRegistry_CSGameRules_CheckFragLimit *CSGameRules_CheckFragLimit();
|
||||
virtual IReGameHookRegistry_CSGameRules_CheckMaxRounds *CSGameRules_CheckMaxRounds();
|
||||
virtual IReGameHookRegistry_CSGameRules_CheckWinLimit *CSGameRules_CheckWinLimit();
|
||||
};
|
||||
|
||||
extern CReGameHookchains g_ReGameHookchains;
|
||||
|
@ -618,6 +618,11 @@ public:
|
||||
BOOL TeamStacked_OrigFunc(int newTeam_id, int curTeam_id);
|
||||
void PlayerGotWeapon_OrigFunc(CBasePlayer *pPlayer, CBasePlayerItem *pWeapon);
|
||||
void SendDeathMessage_OrigFunc(CBaseEntity *pKiller, CBasePlayer *pVictim, CBasePlayer *pAssister, entvars_t *pevInflictor, const char *killerWeaponName, int iDeathMessageFlags, int iRarityOfKill);
|
||||
BOOL CheckGameOver_OrigFunc();
|
||||
BOOL CheckTimeLimit_OrigFunc();
|
||||
BOOL CheckFragLimit_OrigFunc();
|
||||
BOOL CheckMaxRounds_OrigFunc();
|
||||
BOOL CheckWinLimit_OrigFunc();
|
||||
#endif
|
||||
|
||||
public:
|
||||
@ -672,11 +677,11 @@ public:
|
||||
bool Hostage_NotRescued(float tmDelay);
|
||||
|
||||
// Check various conditions to end the map.
|
||||
bool CheckGameOver();
|
||||
bool CheckTimeLimit();
|
||||
bool CheckFragLimit();
|
||||
bool CheckMaxRounds();
|
||||
bool CheckWinLimit();
|
||||
VFUNC BOOL CheckGameOver();
|
||||
VFUNC BOOL CheckTimeLimit();
|
||||
VFUNC BOOL CheckFragLimit();
|
||||
VFUNC BOOL CheckMaxRounds();
|
||||
VFUNC BOOL CheckWinLimit();
|
||||
|
||||
void CheckFreezePeriodExpired();
|
||||
void CheckRoundTimeExpired();
|
||||
|
@ -2612,7 +2612,9 @@ void EXT_FUNC CHalfLifeMultiplay::__API_HOOK(Think)()
|
||||
}
|
||||
}
|
||||
|
||||
bool CHalfLifeMultiplay::CheckGameOver()
|
||||
LINK_HOOK_CLASS_CUSTOM_CHAIN2(BOOL, CHalfLifeMultiplay, CSGameRules, CheckGameOver)
|
||||
|
||||
BOOL EXT_FUNC CHalfLifeMultiplay::__API_HOOK(CheckGameOver)()
|
||||
{
|
||||
// someone else quit the game already
|
||||
if (m_bGameOver)
|
||||
@ -2649,7 +2651,9 @@ bool CHalfLifeMultiplay::CheckGameOver()
|
||||
return false;
|
||||
}
|
||||
|
||||
bool CHalfLifeMultiplay::CheckTimeLimit()
|
||||
LINK_HOOK_CLASS_CUSTOM_CHAIN2(BOOL, CHalfLifeMultiplay, CSGameRules, CheckTimeLimit)
|
||||
|
||||
BOOL EXT_FUNC CHalfLifeMultiplay::__API_HOOK(CheckTimeLimit)()
|
||||
{
|
||||
if (timelimit.value < 0)
|
||||
{
|
||||
@ -2687,7 +2691,9 @@ bool CHalfLifeMultiplay::CheckTimeLimit()
|
||||
return false;
|
||||
}
|
||||
|
||||
bool CHalfLifeMultiplay::CheckMaxRounds()
|
||||
LINK_HOOK_CLASS_CUSTOM_CHAIN2(BOOL, CHalfLifeMultiplay, CSGameRules, CheckMaxRounds)
|
||||
|
||||
BOOL EXT_FUNC CHalfLifeMultiplay::__API_HOOK(CheckMaxRounds)()
|
||||
{
|
||||
if (m_iMaxRounds != 0 && m_iTotalRoundsPlayed >= m_iMaxRounds)
|
||||
{
|
||||
@ -2699,7 +2705,9 @@ bool CHalfLifeMultiplay::CheckMaxRounds()
|
||||
return false;
|
||||
}
|
||||
|
||||
bool CHalfLifeMultiplay::CheckWinLimit()
|
||||
LINK_HOOK_CLASS_CUSTOM_CHAIN2(BOOL, CHalfLifeMultiplay, CSGameRules, CheckWinLimit)
|
||||
|
||||
BOOL EXT_FUNC CHalfLifeMultiplay::__API_HOOK(CheckWinLimit)()
|
||||
{
|
||||
// has one team won the specified number of rounds?
|
||||
if (m_iMaxRoundsWon != 0 && (m_iNumCTWins >= m_iMaxRoundsWon || m_iNumTerroristWins >= m_iMaxRoundsWon))
|
||||
@ -2715,7 +2723,9 @@ bool CHalfLifeMultiplay::CheckWinLimit()
|
||||
return false;
|
||||
}
|
||||
|
||||
bool CHalfLifeMultiplay::CheckFragLimit()
|
||||
LINK_HOOK_CLASS_CUSTOM_CHAIN2(BOOL, CHalfLifeMultiplay, CSGameRules, CheckFragLimit)
|
||||
|
||||
BOOL EXT_FUNC CHalfLifeMultiplay::__API_HOOK(CheckFragLimit)()
|
||||
{
|
||||
#ifdef REGAMEDLL_ADD
|
||||
int fragsRemaining = 0;
|
||||
|
@ -628,6 +628,26 @@ typedef IHookChainRegistryClass<void, class CBasePlayer> IReGameHookRegistry_CBa
|
||||
typedef IHookChainClass<void, class CBasePlayer, BOOL> IReGameHook_CBasePlayer_RemoveAllItems;
|
||||
typedef IHookChainRegistryClass<void, class CBasePlayer, BOOL> IReGameHookRegistry_CBasePlayer_RemoveAllItems;
|
||||
|
||||
// CHalfLifeMultiplay::CheckGameOver hook
|
||||
typedef IHookChain<BOOL> IReGameHook_CSGameRules_CheckGameOver;
|
||||
typedef IHookChainRegistry<BOOL> IReGameHookRegistry_CSGameRules_CheckGameOver;
|
||||
|
||||
// CHalfLifeMultiplay::CheckTimeLimit hook
|
||||
typedef IHookChain<BOOL> IReGameHook_CSGameRules_CheckTimeLimit;
|
||||
typedef IHookChainRegistry<BOOL> IReGameHookRegistry_CSGameRules_CheckTimeLimit;
|
||||
|
||||
// CHalfLifeMultiplay::CheckFragLimit hook
|
||||
typedef IHookChain<BOOL> IReGameHook_CSGameRules_CheckFragLimit;
|
||||
typedef IHookChainRegistry<BOOL> IReGameHookRegistry_CSGameRules_CheckFragLimit;
|
||||
|
||||
// CHalfLifeMultiplay::CheckMaxRounds hook
|
||||
typedef IHookChain<BOOL> IReGameHook_CSGameRules_CheckMaxRounds;
|
||||
typedef IHookChainRegistry<BOOL> IReGameHookRegistry_CSGameRules_CheckMaxRounds;
|
||||
|
||||
// CHalfLifeMultiplay::CheckWinLimit hook
|
||||
typedef IHookChain<BOOL> IReGameHook_CSGameRules_CheckWinLimit;
|
||||
typedef IHookChainRegistry<BOOL> IReGameHookRegistry_CSGameRules_CheckWinLimit;
|
||||
|
||||
class IReGameHookchains {
|
||||
public:
|
||||
virtual ~IReGameHookchains() {}
|
||||
@ -790,6 +810,12 @@ public:
|
||||
virtual IReGameHookRegistry_CBasePlayer_PlayerDeathThink *CBasePlayer_PlayerDeathThink() = 0;
|
||||
virtual IReGameHookRegistry_CBasePlayer_Observer_Think *CBasePlayer_Observer_Think() = 0;
|
||||
virtual IReGameHookRegistry_CBasePlayer_RemoveAllItems *CBasePlayer_RemoveAllItems() = 0;
|
||||
|
||||
virtual IReGameHookRegistry_CSGameRules_CheckGameOver *CSGameRules_CheckGameOver() = 0;
|
||||
virtual IReGameHookRegistry_CSGameRules_CheckTimeLimit *CSGameRules_CheckTimeLimit() = 0;
|
||||
virtual IReGameHookRegistry_CSGameRules_CheckFragLimit *CSGameRules_CheckFragLimit() = 0;
|
||||
virtual IReGameHookRegistry_CSGameRules_CheckMaxRounds *CSGameRules_CheckMaxRounds() = 0;
|
||||
virtual IReGameHookRegistry_CSGameRules_CheckWinLimit *CSGameRules_CheckWinLimit() = 0;
|
||||
};
|
||||
|
||||
struct ReGameFuncs_t {
|
||||
|
Loading…
x
Reference in New Issue
Block a user