From dbabc3e3463e5e4621dcb5cbe62682e016cd89e3 Mon Sep 17 00:00:00 2001 From: Greyscale Date: Tue, 23 Jun 2009 16:55:58 -0700 Subject: [PATCH] Simplied BHop protection. Updated configs. --- .../zombiereloaded/zombiereloaded.cfg | 5 +-- src/zr/cvars.inc | 11 +++-- src/zr/jumpboost.inc | 45 +++++++++---------- 3 files changed, 28 insertions(+), 33 deletions(-) diff --git a/cstrike/cfg/sourcemod/zombiereloaded/zombiereloaded.cfg b/cstrike/cfg/sourcemod/zombiereloaded/zombiereloaded.cfg index 0d559ae..94d1f2d 100644 --- a/cstrike/cfg/sourcemod/zombiereloaded/zombiereloaded.cfg +++ b/cstrike/cfg/sourcemod/zombiereloaded/zombiereloaded.cfg @@ -571,10 +571,6 @@ zr_jumpboost_bhop_protect "1" // Default: "300" zr_jumpboost_bhop_max "300" -// This is the horizontal jump multiplier for when the max limit is exceeded. ['0.9' = 90% of the jumps original magnitude | '>1.0' = Redundant | Dependency: zr_jumpboost_bhop_protect&zr_jumpboost_bhop_max] -// Default: "0.75" -zr_jumpboost_bhop_scale "0.75" - // ---------------------------------------------------------------------------- // Volumetric Features (module) @@ -622,6 +618,7 @@ zr_zspawn_timelimit_time "120.0" zr_zspawn_timelimit_zombie "1" + // ---------------------------------------------------------------------------- // ZTele (module) // ---------------------------------------------------------------------------- diff --git a/src/zr/cvars.inc b/src/zr/cvars.inc index 6681f24..99b14de 100644 --- a/src/zr/cvars.inc +++ b/src/zr/cvars.inc @@ -137,7 +137,6 @@ enum CvarsList Handle:CVAR_NAPALM_IGNITE, Handle:CVAR_JUMPBOOST_BHOP_PROTECT, Handle:CVAR_JUMPBOOST_BHOP_MAX, - Handle:CVAR_JUMPBOOST_BHOP_SCALE, Handle:CVAR_VOL, Handle:CVAR_VOL_UPDATE_INTERVAL, Handle:CVAR_VOL_TRIGGER_INTERVAL, @@ -216,6 +215,7 @@ CvarsCreate() g_hCvarsList[CVAR_LOG_PRINT_ADMINS] = CreateConVar("zr_log_print_admins", "0", "Print log events to admin chat in addition to the log file."); g_hCvarsList[CVAR_LOG_PRINT_CHAT] = CreateConVar("zr_log_print_chat", "0", "Print log events to public chat in addition to the log file."); + // =========================== // Config (core) // =========================== @@ -225,6 +225,7 @@ CvarsCreate() g_hCvarsList[CVAR_CONFIG_PATH_WEAPONS] = CreateConVar("zr_config_path_weapons", "configs/zr/weapons.txt", "Path, relative to root sourcemod directory, to weapons config file."); g_hCvarsList[CVAR_CONFIG_PATH_HITGROUPS] = CreateConVar("zr_config_path_hitgroups", "configs/zr/hitgroups.txt", "Path, relative to root sourcemod directory, to hitgroups config file."); + // =========================== // Classes (core) // =========================== @@ -268,6 +269,7 @@ CvarsCreate() // =========================== g_hCvarsList[CVAR_HITGROUPS] = CreateConVar("zr_hitgroups", "1", "Enable hitgroups module, disabling this will disable hitgroup-related features. (hitgroup knockback multipliers, hitgroup damage control)"); + // =========================== // Infect (core) // =========================== @@ -309,6 +311,7 @@ CvarsCreate() g_hCvarsList[CVAR_DAMAGE_SUICIDE_HUMAN] = CreateConVar("zr_damage_suicide_human", "1", "Intercept suicide commands attempted by humans."); g_hCvarsList[CVAR_DAMAGE_SUICIDE_CMDS] = CreateConVar("zr_damage_suicide_cmds", "kill, spectate, jointeam", "List of client commands to intercept as suicide attempts. [Delimiter: \", \"]"); + // =========================== // Overlays (core) // =========================== @@ -356,12 +359,13 @@ CvarsCreate() g_hCvarsList[CVAR_VEFFECTS_FOG_ENDDIST] = CreateConVar("zr_veffects_fog_enddist", "400", "(UNSUPPORTED) Distance from player to stop rendering fog. [Dependency: zr_veffects_fog]"); g_hCvarsList[CVAR_VEFFECTS_FOG_FARZ] = CreateConVar("zr_veffects_fog_farz", "2000", "(UNSUPPORTED) Vertical clipping plane."); - // Ragdoll + // Ragdoll g_hCvarsList[CVAR_VEFFECTS_RAGDOLL_REMOVE] = CreateConVar("zr_veffects_ragdoll_remove", "1", "Remove players' ragdolls from the game after a delay."); g_hCvarsList[CVAR_VEFFECTS_RAGDOLL_DISSOLVE] = CreateConVar("zr_veffects_ragdoll_dissolve", "-1", "The ragdoll removal effect. ['-2' = Effectless removal | '-1' = Random effect | '0' = Energy dissolve | '1' = Heavy electrical dissolve | '2' = Light electrical dissolve | '3' = Core dissolve | Dependency: zr_veffects_ragdoll_remove]"); g_hCvarsList[CVAR_VEFFECTS_RAGDOLL_DELAY] = CreateConVar("zr_veffects_ragdoll_delay", "0.5", "Time to wait before removing the ragdoll. [Dependency: zr_veffects_ragdoll_remove]"); + // =========================== // Sound Effects (module) // =========================== @@ -405,15 +409,14 @@ CvarsCreate() // =========================== // Napalm (module) // =========================== - g_hCvarsList[CVAR_NAPALM_IGNITE] = CreateConVar("zr_napalm_ignite", "1", "Ignite grenade in mid-air after player throws it. [Dependency: Human Attribute 'has_napalm']"); + // =========================== // Jump Boost (module) // =========================== g_hCvarsList[CVAR_JUMPBOOST_BHOP_PROTECT] = CreateConVar("zr_jumpboost_bhop_protect", "1", "Prevent players from using forward jump boost multipliers to bunny hop."); g_hCvarsList[CVAR_JUMPBOOST_BHOP_MAX] = CreateConVar("zr_jumpboost_bhop_max", "300", "The maximum horizontal velocity a player can achieve before bunnyhop protection kicks in. [Dependency: zr_jumpboost_bhop_protect]"); - g_hCvarsList[CVAR_JUMPBOOST_BHOP_SCALE] = CreateConVar("zr_jumpboost_bhop_scale", "0.75", "This is the horizontal jump multiplier for when the max limit is exceeded. ['0.75' = 75% of the jumps original magnitude | '>1.0' = Redundant | Dependency: zr_jumpboost_bhop_protect&zr_jumpboost_bhop_max]"); // =========================== diff --git a/src/zr/jumpboost.inc b/src/zr/jumpboost.inc index b792c57..99b779f 100644 --- a/src/zr/jumpboost.inc +++ b/src/zr/jumpboost.inc @@ -41,48 +41,43 @@ JumpBoostOnClientJumpPost(client) // Get client's current velocity. ToolsClientVelocity(client, vecVelocity, false); - // Apply multipliers to jump vector. - vecVelocity[0] *= distancemultiplier; - vecVelocity[1] *= distancemultiplier; - vecVelocity[2] *= heightmultiplier; + // If they have exceeded the max jump speed, then stop. + if (!JumpBoostIsBHop(vecVelocity)) + { + // Apply horizontal multipliers to jump vector. + vecVelocity[0] *= distancemultiplier; + vecVelocity[1] *= distancemultiplier; + } - // Protect against bunnyhop. - JumpBoostBHopProtect(vecVelocity); + // Apply height multiplier to jump vector. + vecVelocity[2] *= heightmultiplier; // Set new velocity. ToolsClientVelocity(client, vecVelocity, true, false); } /** - * This function protects against excessive bunnyhopping. - * Note: This ONLY stops bunnyhopping from being worse than CS:S already allows. + * This function detects excessive bunnyhopping. + * Note: This ONLY catches bunnyhopping that is worse than CS:S already allows. * - * @param vecVelocity The velocity of the client jumping. - * @param distancemultiplier The distance multiplier used on this jump. + * @param vecVelocity The velocity of the client jumping. + * @return True if the client is bunnyhopping, false if not. */ -stock JumpBoostBHopProtect(Float:vecVelocity[]) +stock bool:JumpBoostIsBHop(const Float:vecVelocity[]) { + return false; + // If bunnyhop protection is disabled, then stop. new bool:bunnyhopprotect = GetConVarBool(g_hCvarsList[CVAR_JUMPBOOST_BHOP_PROTECT]); if (!bunnyhopprotect) { - return; + return false; } // Calculate the magnitude of jump on the xy plane. new Float:magnitude = SquareRoot(Pow(vecVelocity[0], 2.0) + Pow(vecVelocity[1], 2.0)); - // If the magnitude doesn't exceed the limit, then stop. + // Return true if the magnitude exceeds the max. new Float:bunnyhopmax = GetConVarFloat(g_hCvarsList[CVAR_JUMPBOOST_BHOP_MAX]); - if (magnitude <= bunnyhopmax) - { - return; - } - - // Now we must scale the jump. - new Float:bunnyhopscale = GetConVarFloat(g_hCvarsList[CVAR_JUMPBOOST_BHOP_SCALE]); - - // Scale with cvar value. - vecVelocity[0] *= (magnitude * bunnyhopscale) / magnitude; - vecVelocity[1] *= (magnitude * bunnyhopscale) / magnitude; -} + return (magnitude > bunnyhopmax); +} \ No newline at end of file