From 9073c3f59076519bf9a72c3e4bee73bcfae630a9 Mon Sep 17 00:00:00 2001 From: DoganGFL Date: Thu, 25 Jul 2019 00:28:59 +0200 Subject: [PATCH] New Plugins from Secrets AntiNoob + FakePopulation --- AntiNoob/scripting/AntiNoob.sp | 199 +++++++++++++++++++++ FakePopulation/scripting/FakePopulation.sp | 92 ++++++++++ 2 files changed, 291 insertions(+) create mode 100644 AntiNoob/scripting/AntiNoob.sp create mode 100644 FakePopulation/scripting/FakePopulation.sp diff --git a/AntiNoob/scripting/AntiNoob.sp b/AntiNoob/scripting/AntiNoob.sp new file mode 100644 index 00000000..0a7ed51f --- /dev/null +++ b/AntiNoob/scripting/AntiNoob.sp @@ -0,0 +1,199 @@ +#pragma semicolon 1 + +#include +#include +#include +#include + +int g_iHighRatio; +int g_iMediumRatio; +int g_iLowRatio; + +int g_iHighStreak; +int g_iMediumStreak; +int g_iLowStreak; + +int g_iHumanScore; +int g_iZombieScore; +int g_iOldZombieScore; + +int g_iZombieStreak; + +bool g_bLowPopulation; +int g_iMaxPopulation; +float g_fKnockbackBoost; + +ConVar g_cvNapalmScale; +float g_fNapalmScale; + +public Plugin myinfo = +{ + name = "AntiNoob", + author = "Dogan", + description = "Provide help when the server is doing bad on a map", + version = "2.0.0", + url = "" +} + +public void OnPluginStart() +{ + g_iHighRatio = 7; + g_iMediumRatio = 5; + g_iLowRatio = 3; + + g_iHighStreak = 6; + g_iMediumStreak = 4; + g_iLowStreak = 2; + + HookEvent("round_start", OnRoundStart); + + ConVar cvar; + HookConVarChange((cvar = CreateConVar("sm_an_maxplayers", "40", "max active players until the kb should be increased")), g_cvMaxPopulation); + g_iMaxPopulation = cvar.IntValue; + HookConVarChange((cvar = CreateConVar("sm_an_kb", "5.0", "knockback boost during low population in procent")), g_cvKnockbackBoost); + g_fKnockbackBoost = cvar.FloatValue / 100.0; + delete cvar; + + AutoExecConfig(true, "plugin.AntiNoob"); +} + +public void g_cvMaxPopulation(ConVar convar, const char[] oldValue, const char[] newValue) +{ + g_iMaxPopulation = convar.IntValue; +} + +public void g_cvKnockbackBoost(ConVar convar, const char[] oldValue, const char[] newValue) +{ + g_fKnockbackBoost = convar.FloatValue / 100.0; +} + +public void OnAllPluginsLoaded() +{ + g_cvNapalmScale = FindConVar("zr_napalm_time_scale"); +} + +public void OnMapStart() +{ + g_iHumanScore = 1; + g_iZombieScore = 0; + g_iOldZombieScore = 0; + g_iZombieStreak = 0; +} + +public void OnConfigsExecuted() +{ + g_fNapalmScale = g_cvNapalmScale.FloatValue; +} + +public void OnRoundStart(Event hEvent, const char[] sEvent, bool bDontBroadcast) +{ + g_iHumanScore = GetTeamScore(CS_TEAM_CT); + g_iZombieScore = GetTeamScore(CS_TEAM_T); + + if(g_iHumanScore == 0) + { + g_iHumanScore = 1; + } + + if(g_iZombieScore != g_iOldZombieScore) + { + g_iZombieStreak++; + g_iOldZombieScore++; + } + else + { + g_iZombieStreak = 0; + } + + int ActivePlayers; + + for(int i = 1; i <= MaxClients; i++) + { + if(IsClientInGame(i) && !IsFakeClient(i) && GetClientTeam(i) != CS_TEAM_SPECTATOR) + { + ActivePlayers++; + } + } + + if(ActivePlayers <= g_iMaxPopulation) + { + g_bLowPopulation = true; + } + else + { + g_bLowPopulation = false; + } + + if(g_iZombieScore / g_iHumanScore >= g_iHighRatio || g_iZombieStreak >= g_iHighStreak) + { + PerformHighHelp(); + } + else if(g_iZombieScore / g_iHumanScore >= g_iMediumRatio || g_iZombieStreak >= g_iMediumStreak) + { + PerformMediumHelp(); + } + else if(g_iZombieScore / g_iHumanScore >= g_iLowRatio || g_iZombieStreak >= g_iLowStreak) + { + PerformLowHelp(); + } + else + { + PerformReset(); + } +} + +public void PerformHighHelp() +{ + if(g_bLowPopulation) + { + ServerCommand("zr_class_set_multiplier zombies knockback %f", 1.15 + g_fKnockbackBoost); + ServerCommand("zr_napalm_time_scale %f", g_fNapalmScale - 8.0); + } + else + { + ServerCommand("zr_class_set_multiplier zombies knockback 1.15"); + ServerCommand("zr_napalm_time_scale %f", g_fNapalmScale - 6.0); + } +} + +public void PerformMediumHelp() +{ + if(g_bLowPopulation) + { + ServerCommand("zr_class_set_multiplier zombies knockback %f", 1.1 + g_fKnockbackBoost); + ServerCommand("zr_napalm_time_scale %f", g_fNapalmScale - 6.0); + } + else + { + ServerCommand("zr_class_set_multiplier zombies knockback 1.1"); + ServerCommand("zr_napalm_time_scale %f", g_fNapalmScale - 4.0); + } +} + +public void PerformLowHelp() +{ + if(g_bLowPopulation) + { + ServerCommand("zr_class_set_multiplier zombies knockback %f", 1.05 + g_fKnockbackBoost); + ServerCommand("zr_napalm_time_scale %f", g_fNapalmScale - 4.0); + } + else + { + ServerCommand("zr_class_set_multiplier zombies knockback 1.05"); + ServerCommand("zr_napalm_time_scale %f", g_fNapalmScale - 2.0); + } +} + +public void PerformReset() +{ + if(g_bLowPopulation) + { + ServerCommand("zr_class_set_multiplier zombies knockback %f", 1.0 + g_fKnockbackBoost); + ServerCommand("zr_napalm_time_scale %f", g_fNapalmScale - 2.0); + } + else + { + ServerCommand("zr_class_set_multiplier zombies knockback 1.0"); + ServerCommand("zr_napalm_time_scale %f", g_fNapalmScale); + } +} \ No newline at end of file diff --git a/FakePopulation/scripting/FakePopulation.sp b/FakePopulation/scripting/FakePopulation.sp new file mode 100644 index 00000000..a59f74dd --- /dev/null +++ b/FakePopulation/scripting/FakePopulation.sp @@ -0,0 +1,92 @@ +#include +#include + +#pragma semicolon 1 +#pragma newdecls required + +int g_iFakePlayers = 0; + +//---------------------------------------------------------------------------------------------------- +// Purpose: +//---------------------------------------------------------------------------------------------------- +public Plugin myinfo = +{ + name = "ImprovedHitboxes", //camouflage + author = "Neon", + description = "", + version = "1.0", + url = "https://steamcommunity.com/id/n3ontm" +}; + +//---------------------------------------------------------------------------------------------------- +// Purpose: +//---------------------------------------------------------------------------------------------------- +public void OnPluginStart() +{ + RegAdminCmd("sm_debugfakes", Command_DebugFakes, ADMFLAG_RCON, ""); +} + +//---------------------------------------------------------------------------------------------------- +// Purpose: +//---------------------------------------------------------------------------------------------------- +public void OnPluginEnd() +{ + FakePlayers(0); +} + +//---------------------------------------------------------------------------------------------------- +// Purpose: +//---------------------------------------------------------------------------------------------------- +public Action Command_DebugFakes(int client, int argc) +{ + ReplyToCommand(client, "[SM] There are currently %d Fake Players.", g_iFakePlayers); + return Plugin_Handled; +} + +//---------------------------------------------------------------------------------------------------- +// Purpose: +//---------------------------------------------------------------------------------------------------- +public void OnClientConnected(int client) +{ + CheckPopulation(); +} + +//---------------------------------------------------------------------------------------------------- +// Purpose: +//---------------------------------------------------------------------------------------------------- +public void OnClientDisconnect(int client) +{ + CheckPopulation(); +} + +//---------------------------------------------------------------------------------------------------- +// Purpose: +//---------------------------------------------------------------------------------------------------- +public void CheckPopulation() +{ + int iPlayers = 0; + for(int i = 1; i <= MaxClients; i++) + { + if(IsClientConnected(i) && !IsFakeClient(i)) + iPlayers++; + } + + if (iPlayers > 61) + g_iFakePlayers = 0; + else if(iPlayers > 60) + g_iFakePlayers = 1; + else if(iPlayers > 55) + g_iFakePlayers = 3; + else if (iPlayers > 40) + g_iFakePlayers = 4; + else if (iPlayers > 20) + g_iFakePlayers = 3; + else if (iPlayers > 10) + g_iFakePlayers = 2; + else if (iPlayers > 5) + g_iFakePlayers = 1; + else + g_iFakePlayers = 0; + + FakePlayers(g_iFakePlayers); +} \ No newline at end of file