From 3935cefa88cebcea4d77727d72ec63331e446d10 Mon Sep 17 00:00:00 2001 From: tmp64 Date: Sun, 6 Oct 2024 12:25:09 +0700 Subject: [PATCH] Server: Call PM_SetBHopCapEnabled from CGameRules --- src/game/server/gamerules.cpp | 7 +++++++ src/game/server/gamerules.h | 2 +- src/game/server/multiplay_gamerules.cpp | 3 +-- src/game/server/singleplay_gamerules.cpp | 4 +++- src/game/server/teamplay_gamerules.cpp | 4 ++-- 5 files changed, 14 insertions(+), 6 deletions(-) diff --git a/src/game/server/gamerules.cpp b/src/game/server/gamerules.cpp index 779762fa..7c0171c6 100644 --- a/src/game/server/gamerules.cpp +++ b/src/game/server/gamerules.cpp @@ -36,6 +36,13 @@ extern int gmsgMOTD; int g_teamplay = 0; extern cvar_t sv_busters; +//========================================================= +//========================================================= +void CGameRules::Think(void) +{ + PM_SetBHopCapEnabled(!bunnyhop.value); +} + //========================================================= //========================================================= BOOL CGameRules::CanHaveAmmo(CBasePlayer *pPlayer, const char *pszAmmoName, int iMaxCarry) diff --git a/src/game/server/gamerules.h b/src/game/server/gamerules.h index ea911ee8..095818f3 100644 --- a/src/game/server/gamerules.h +++ b/src/game/server/gamerules.h @@ -60,7 +60,7 @@ class CGameRules { public: virtual void RefreshSkillData(void); // fill skill data struct with proper values - virtual void Think(void) = 0; // GR_Think - runs every server frame, should handle any timer tasks, periodic events, etc. + virtual void Think(void); // GR_Think - runs every server frame, should handle any timer tasks, periodic events, etc. virtual BOOL IsAllowedToSpawn(CBaseEntity *pEntity) = 0; // Can this item spawn (eg monsters don't spawn in deathmatch). virtual BOOL FAllowFlashlight(void) = 0; // Are players allowed to switch on their flashlight? diff --git a/src/game/server/multiplay_gamerules.cpp b/src/game/server/multiplay_gamerules.cpp index 599aa6a8..f80997b1 100644 --- a/src/game/server/multiplay_gamerules.cpp +++ b/src/game/server/multiplay_gamerules.cpp @@ -204,10 +204,9 @@ void CHalfLifeMultiplay::RefreshSkillData(void) //========================================================= void CHalfLifeMultiplay ::Think(void) { + CGameRules::Think(); g_VoiceGameMgr.Update(gpGlobals->frametime); - PM_SetBHopCapEnabled(!bunnyhop.value); - ///// Check game rules ///// static int last_frags; static int last_time; diff --git a/src/game/server/singleplay_gamerules.cpp b/src/game/server/singleplay_gamerules.cpp index 632a714f..8149aa86 100644 --- a/src/game/server/singleplay_gamerules.cpp +++ b/src/game/server/singleplay_gamerules.cpp @@ -44,7 +44,9 @@ CHalfLifeRules::CHalfLifeRules(void) //========================================================= void CHalfLifeRules::Think(void) { - PM_SetBHopCapEnabled(!bunnyhop.value); + // Leaving this method just in case plugins hook it + // Originally CGameRules::Think was pure-virtual + CGameRules::Think(); } //========================================================= diff --git a/src/game/server/teamplay_gamerules.cpp b/src/game/server/teamplay_gamerules.cpp index 02b5ddf3..fcd953a3 100644 --- a/src/game/server/teamplay_gamerules.cpp +++ b/src/game/server/teamplay_gamerules.cpp @@ -92,6 +92,8 @@ extern CVoiceGameMgr g_VoiceGameMgr; void CHalfLifeTeamplay ::Think(void) { + CGameRules::Think(); + ///// Check game rules ///// static int last_frags; static int last_time; @@ -101,8 +103,6 @@ void CHalfLifeTeamplay ::Think(void) g_VoiceGameMgr.Update(gpGlobals->frametime); - PM_SetBHopCapEnabled(!bunnyhop.value); - if (g_fGameOver) // someone else quit the game already { CHalfLifeMultiplay::Think();