diff --git a/AntiNoob/scripting/knockback_low_pop_modifier.sp b/AntiNoob/scripting/knockback_low_pop_modifier.sp new file mode 100644 index 0000000..0423928 --- /dev/null +++ b/AntiNoob/scripting/knockback_low_pop_modifier.sp @@ -0,0 +1,55 @@ +#include +#include +#include + +public Plugin myinfo = +{ + name = "knockback low pop modifier", + author = "jenz", + description = "balances knockback for low population", + version = "1.0.0", + url = "" +} + +public void OnPluginStart() +{ + HookEvent("round_end", OnRoundEnd); +} + +public void OnPluginEnd() +{ + ServerCommand("zr_class_set_multiplier zombies knockback 1.0"); +} + +public void OnMapEnd() +{ + ServerCommand("zr_class_set_multiplier zombies knockback 1.0"); +} + +public void OnRoundEnd(Event hEvent, const char[] sEvent, bool bDontBroadcast) +{ + int active_player_count = 0; + for (int i = 1; i <= MaxClients; i++) + { + if(IsClientConnected(i) && IsClientInGame(i) && IsClientAuthorized(i) && !IsFakeClient(i) && !IsClientAutismBot(i) && !IsClientSourceTV(i) && GetClientTeam(i) != CS_TEAM_SPECTATOR) + { + active_player_count++; + } + } + + int zombie_ratio = GetConVarInt(FindConVar("zr_infect_mzombie_ratio")) * 2; + if (active_player_count < zombie_ratio) + { + float knockback_increase = float(zombie_ratio) / float(active_player_count); + //random capacity of 3 + if (knockback_increase > 3.0) + { + knockback_increase = 3.0; + } + + PrintToChatAll("LOW POP: increased zombie knockback to X%f to balance gameplay", knockback_increase); + PrintToChatAll("LOW POP: increased zombie knockback to X%f to balance gameplay", knockback_increase); + PrintToChatAll("LOW POP: increased zombie knockback to X%f to balance gameplay", knockback_increase); + ServerCommand("zr_class_set_multiplier zombies knockback %f", knockback_increase); + } +}