From d275f94b0d9697a5424426ebf04e463f159ce3a0 Mon Sep 17 00:00:00 2001 From: h0mev Date: Sun, 28 Jul 2024 13:48:22 +0800 Subject: [PATCH] Add new `Cvar` to control whether `scoreboard_bug` is enabled --- README.md | 1 + dist/game.cfg | 9 +++++++++ regamedll/dlls/game.cpp | 4 ++++ regamedll/dlls/game.h | 2 ++ regamedll/dlls/player.cpp | 18 ++++++++++++++---- 5 files changed, 30 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index e5b55c0c..b6157755 100644 --- a/README.md +++ b/README.md @@ -117,6 +117,7 @@ This means that plugins that do binary code analysis (Orpheu for example) probab | mp_freezetime_jump | 1 | 0 | 1 | Allow players to jump during freezetime.
`0` disabled
`1` enabled | | mp_defuser_allocation | 0 | 0 | 2 | Give defuser on player spawn.
`0` disabled
`1` Random players.
`2` All players. | | mp_location_area_info | 0 | 0 | 3 | Enable location area info.
`0` disabled
`1` show location below HUD radar.
`2` show location in HUD chat. `NOT RECOMMENDED!` [:speech_balloon:](## "Not all client builds are compatible")
`3` both displayed. `NOT RECOMMENDED!` [:speech_balloon:](## "Not all client builds are compatible")

`NOTE`: Navigation `maps/.nav` file required and should contain place names
`NOTE`: If option `2` or `3` is enabled, be sure to enable `mp_chat_loc_fallback 1` | +| mp_scoreboard_fix | 0 | 0 | 1 | Enable ReGameDLL scoreboard bug fix(Dead players could see the bomb or defuse kit).
`0` disabled
`1` enabled
`NOTE`: Absolutely cannot fix it in "CNCS😂" | ## How to install zBot for CS 1.6? diff --git a/dist/game.cfg b/dist/game.cfg index e6510f34..468bc669 100644 --- a/dist/game.cfg +++ b/dist/game.cfg @@ -587,3 +587,12 @@ mp_defuser_allocation "0" // // Default value: "0" mp_location_area_info "0" + +// Enable ReGameDLL scoreboard bug fix(Dead players could see the bomb or defuse kit) +// 0 - disable +// 1 - enabled +// +// NOTE: Absolutely cannot fix it in "CNCS😂" +// +// Default value "0" +mp_scoreboard_fix "0" diff --git a/regamedll/dlls/game.cpp b/regamedll/dlls/game.cpp index 8d781724..6d09e3bc 100644 --- a/regamedll/dlls/game.cpp +++ b/regamedll/dlls/game.cpp @@ -181,6 +181,8 @@ cvar_t defuser_allocation = { "mp_defuser_allocation", "0", 0, 0.0f, nullpt cvar_t location_area_info = { "mp_location_area_info", "0", 0, 0.0f, nullptr }; cvar_t chat_loc_fallback = { "mp_chat_loc_fallback", "1", 1, 0.0f, nullptr }; +cvar_t scoreboard_fix = { "mp_scoreboard_fix", "0", FCVAR_SERVER, 0.0f, nullptr }; + void GameDLL_Version_f() { if (Q_stricmp(CMD_ARGV(1), "version") != 0) @@ -446,6 +448,8 @@ void EXT_FUNC GameDLLInit() CVAR_REGISTER(&location_area_info); CVAR_REGISTER(&chat_loc_fallback); + CVAR_REGISTER(&scoreboard_fix); + // print version CONSOLE_ECHO("ReGameDLL version: " APP_VERSION "\n"); diff --git a/regamedll/dlls/game.h b/regamedll/dlls/game.h index dcd712f5..92d8eb1d 100644 --- a/regamedll/dlls/game.h +++ b/regamedll/dlls/game.h @@ -204,6 +204,8 @@ extern cvar_t defuser_allocation; extern cvar_t location_area_info; extern cvar_t chat_loc_fallback; +extern cvar_t scoreboard_fix; + #endif extern cvar_t scoreboard_showmoney; diff --git a/regamedll/dlls/player.cpp b/regamedll/dlls/player.cpp index 38605eba..d56f0254 100644 --- a/regamedll/dlls/player.cpp +++ b/regamedll/dlls/player.cpp @@ -5548,11 +5548,21 @@ void CBasePlayer::SetScoreAttrib(CBasePlayer *dest) #endif #ifdef REGAMEDLL_FIXES - // TODO: Remove these fixes when they are implemented on the client side - if (state & (SCORE_STATUS_BOMB | SCORE_STATUS_DEFKIT) && GetForceCamera(dest) != CAMERA_MODE_SPEC_ANYONE) + + if ( +#ifdef REGAMEDLL_ADD + scoreboard_fix.value +#else + false +#endif + ) { - if (CSGameRules()->PlayerRelationship(this, dest) != GR_TEAMMATE) - state &= ~(SCORE_STATUS_BOMB | SCORE_STATUS_DEFKIT); + // TODO: Remove these fixes when they are implemented on the client side + if (state & (SCORE_STATUS_BOMB | SCORE_STATUS_DEFKIT) && GetForceCamera(dest) != CAMERA_MODE_SPEC_ANYONE) + { + if (CSGameRules()->PlayerRelationship(this, dest) != GR_TEAMMATE) + state &= ~(SCORE_STATUS_BOMB | SCORE_STATUS_DEFKIT); + } } #endif