#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); } }