56 lines
1.6 KiB
SourcePawn
56 lines
1.6 KiB
SourcePawn
#include <sourcemod>
|
|
#include <BotTargeting>
|
|
#include <cstrike>
|
|
|
|
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);
|
|
}
|
|
}
|