From e3d70d2b14f044ad0a87ac65adce6e88b53c118b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Federico=20Mat=C3=ADas?= <41979395+FEDERICOMB96@users.noreply.github.com> Date: Sun, 26 Nov 2023 01:13:29 -0300 Subject: [PATCH] New CVars: `mp_freezetime_duck` and `mp_freezetime_jump` (#886) * new cvars: prevent duck/jump during freezetime * use CSGameRules() instead of g_pGameRules * changed name of cvars and default value * improved cvars description --- README.md | 2 ++ dist/game.cfg | 14 ++++++++++++++ regamedll/dlls/game.cpp | 5 +++++ regamedll/dlls/game.h | 2 ++ regamedll/pm_shared/pm_shared.cpp | 8 ++++---- 5 files changed, 27 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 2785c08e..ee928a92 100644 --- a/README.md +++ b/README.md @@ -113,6 +113,8 @@ This means that plugins that do binary code analysis (Orpheu for example) probab | mp_dying_time | 3.0 | 0.0 | - | Time for switch to free observing after death.
`0` - disable spectating around death.
`>0.00001` - time delay to start spectate.
`NOTE`: The countdown starts when the player’s death animation is finished. | | mp_deathmsg_flags | abc | 0 | - | Sets a flags for extra information in the player's death message.
`0` disabled
`a` position where the victim died
`b` index of the assistant who helped the attacker kill the victim
`c` rarity classification bits, e.g., `blinkill`, `noscope`, `penetrated`, etc. | | mp_assist_damage_threshold | 40 | 0 | 100 | Sets the percentage of damage needed to score an assist. | +| mp_freezetime_duck | 1 | 0 | 1 | Allow players to duck during freezetime.
`0` disabled
`1` enabled | +| mp_freezetime_jump | 1 | 0 | 1 | Allow players to jump during freezetime.
`0` disabled
`1` enabled | ## How to install zBot for CS 1.6? diff --git a/dist/game.cfg b/dist/game.cfg index 8f0b9d47..a1d77c20 100644 --- a/dist/game.cfg +++ b/dist/game.cfg @@ -553,3 +553,17 @@ mp_deathmsg_flags "abc" // // Default value: "40" mp_assist_damage_threshold "40" + +// Allow players to duck during freezetime +// 0 - disabled +// 1 - enabled (default behaviour) +// +// Default value: "1" +mp_freezetime_duck "1" + +// Allow players to jump during freezetime +// 0 - disabled +// 1 - enabled (default behaviour) +// +// Default value: "1" +mp_freezetime_jump "1" \ No newline at end of file diff --git a/regamedll/dlls/game.cpp b/regamedll/dlls/game.cpp index 0e792e09..5d923819 100644 --- a/regamedll/dlls/game.cpp +++ b/regamedll/dlls/game.cpp @@ -168,6 +168,8 @@ cvar_t plant_c4_anywhere = { "mp_plant_c4_anywhere", "0", 0, 0.0 cvar_t give_c4_frags = { "mp_give_c4_frags", "3", 0, 3.0f, nullptr }; cvar_t deathmsg_flags = { "mp_deathmsg_flags", "abc", 0, 0.0f, nullptr }; cvar_t assist_damage_threshold = { "mp_assist_damage_threshold", "40", 0, 40.0f, nullptr }; +cvar_t freezetime_duck = { "mp_freezetime_duck", "1", 0, 1.0f, nullptr }; +cvar_t freezetime_jump = { "mp_freezetime_jump", "1", 0, 1.0f, nullptr }; cvar_t hostages_rescued_ratio = { "mp_hostages_rescued_ratio", "1.0", 0, 1.0f, nullptr }; @@ -428,6 +430,9 @@ void EXT_FUNC GameDLLInit() CVAR_REGISTER(&deathmsg_flags); CVAR_REGISTER(&assist_damage_threshold); + CVAR_REGISTER(&freezetime_duck); + CVAR_REGISTER(&freezetime_jump); + // print version CONSOLE_ECHO("ReGameDLL version: " APP_VERSION "\n"); diff --git a/regamedll/dlls/game.h b/regamedll/dlls/game.h index b9b9253b..3791a3c1 100644 --- a/regamedll/dlls/game.h +++ b/regamedll/dlls/game.h @@ -197,6 +197,8 @@ extern cvar_t legacy_vehicle_block; extern cvar_t dying_time; extern cvar_t deathmsg_flags; extern cvar_t assist_damage_threshold; +extern cvar_t freezetime_duck; +extern cvar_t freezetime_jump; #endif diff --git a/regamedll/pm_shared/pm_shared.cpp b/regamedll/pm_shared/pm_shared.cpp index afc528ea..c452e406 100644 --- a/regamedll/pm_shared/pm_shared.cpp +++ b/regamedll/pm_shared/pm_shared.cpp @@ -1893,8 +1893,8 @@ void EXT_FUNC __API_HOOK(PM_Duck)() } #ifdef REGAMEDLL_ADD - // Prevent ducking if the iuser3 variable is contain PLAYER_PREVENT_DUCK - if ((pmove->iuser3 & PLAYER_PREVENT_DUCK) == PLAYER_PREVENT_DUCK) + if ((pmove->iuser3 & PLAYER_PREVENT_DUCK) == PLAYER_PREVENT_DUCK // Prevent ducking if the iuser3 variable is contain PLAYER_PREVENT_DUCK + || freezetime_duck.value == 0.0f && CSGameRules()->IsFreezePeriod()) // Prevent ducking during freezetime if the freezetime_duck cvar is 0 { // Try to unduck if (pmove->flags & FL_DUCKING) @@ -2449,8 +2449,8 @@ void EXT_FUNC __API_HOOK(PM_Jump)() } #ifdef REGAMEDLL_ADD - // Prevent jumping if the iuser3 variable is contain PLAYER_PREVENT_JUMP - if ((pmove->iuser3 & PLAYER_PREVENT_JUMP) == PLAYER_PREVENT_JUMP) + if ((pmove->iuser3 & PLAYER_PREVENT_JUMP) == PLAYER_PREVENT_JUMP // Prevent jumping if the iuser3 variable is contain PLAYER_PREVENT_JUMP + || freezetime_jump.value == 0.0f && CSGameRules()->IsFreezePeriod()) // Prevent jumping during freezetime if the freezetime_jump cvar is 0 { return; }