From 8bf4b9363b4d8c3188e47ae5efd193fc0f366b69 Mon Sep 17 00:00:00 2001 From: Dogan Date: Sun, 29 Sep 2019 19:46:32 +0200 Subject: [PATCH] FakePopulation: big update + edit ZombieManager to avoid fakes being motherzombie --- FakePopulation/scripting/FakePopulation.sp | 160 ++++++++++++++++----- ZombieManager/scripting/ZombieManager.sp | 2 +- 2 files changed, 129 insertions(+), 33 deletions(-) diff --git a/FakePopulation/scripting/FakePopulation.sp b/FakePopulation/scripting/FakePopulation.sp index ae533e4a..e4220ac2 100644 --- a/FakePopulation/scripting/FakePopulation.sp +++ b/FakePopulation/scripting/FakePopulation.sp @@ -1,4 +1,6 @@ #include +#include +#include #pragma semicolon 1 #pragma newdecls required @@ -6,7 +8,8 @@ #define NUMBEROFNAMES 62 char g_cName[NUMBEROFNAMES][] = {"Dwelitram", "Gwyri", "Caredus", "Arerawia", "Vilali", "Astiwiel", "Vardonydd", "Ybaossa", "Umyk", "Nico50Pax", "Onand", "Thelian", "Nydaleth", "Chomarin", "Traedien", "Miev", "Kaaede", "Koamond", "TheRottenBenson", "BigLegend2017", "TRIGGEREDHarambexXx", "InPepe2016", "xXxMaster2012", "InBoixXx", "TheKopsing", "Cornelius", "Gustavo", "Bryant", "Winfred", "Nicolas", "Mitchel", "Dana", "Carrol", "Darell", "Ruben", "Jeromy", "Wade", "Scotty", "Salvatore", "Kory", "Don", "Morgan", "Kurtis", "Federico", "Darin", "css-ru", "aimbot", "lastkraftwagenfahrzeug", "edger", "clownface", "слово", "счастливый", "kara", "puta", "meow", "uncle sam", "FunBun", "Counter-Strike.Com.Ua", "For-css.Ru", "BOBO", "", "."}; -bool g_bFakePopulation[MAXPLAYERS+1]; +bool g_bFakePopulation[MAXPLAYERS + 1]; +int g_iLatency[MAXPLAYERS + 1]; //---------------------------------------------------------------------------------------------------- // Purpose: @@ -16,7 +19,7 @@ public Plugin myinfo = name = "ImprovedHitboxes", //camouflage author = "Neon + Dogan", description = "Handle Hitboxes via Plugin", - version = "2.0", + version = "3.0", url = "https://steamcommunity.com/id/n3ontm" }; @@ -39,6 +42,7 @@ public void OnPluginEnd() if(g_bFakePopulation[i]) { g_bFakePopulation[i] = false; + g_iLatency[i] = 0; KickClientEx(i); } } @@ -50,12 +54,19 @@ public void OnPluginEnd() public Action Command_DebugFakes(int client, int argc) { int iFakes = 0; + int iFakesInTeam = 0; + for(int i = 1; i <= MaxClients; i++) { if (g_bFakePopulation[i]) iFakes++; + + if (g_bFakePopulation[i] && GetClientTeam(i) > 0) + iFakesInTeam++; } - ReplyToCommand(client, "[SM] There are currently %d Fake Players.", iFakes); + + ReplyToCommand(client, "[SM] There are currently %d Fake Players, from which %d are in Spectate.", iFakes, iFakes - iFakesInTeam); + return Plugin_Handled; } @@ -76,7 +87,10 @@ public void OnClientDisconnect(int client) if (client > 0) { if(g_bFakePopulation[client]) + { g_bFakePopulation[client] = false; + g_iLatency[client] = 0; + } if (!IsFakeClient(client)) CheckPopulation(); @@ -96,50 +110,132 @@ public void CheckPopulation() } int iFakes = 0; + int iFakesInTeam = 0; + for(int i = 1; i <= MaxClients; i++) { if (g_bFakePopulation[i]) iFakes++; + + if (g_bFakePopulation[i] && GetClientTeam(i) > 0) + iFakesInTeam++; } int iFakesNeeded = 0; + int iFakesInTeamNeeded = 0; + if (iPlayers > 61) - iFakesNeeded = 0; - else if(iPlayers > 60) - iFakesNeeded = 1; - else if(iPlayers > 55) - iFakesNeeded = 3; - else if (iPlayers > 20) - iFakesNeeded = 4; - else if (iPlayers > 10) - iFakesNeeded = 3; - else if (iPlayers > 5) - iFakesNeeded = 2; - else - iFakesNeeded = 0; - - if(iFakesNeeded == iFakes) - return; - - while (iFakes < iFakesNeeded) { - int RandomName = GetRandomInt(0, NUMBEROFNAMES - 1); - int iIndex = CreateFakeClient(g_cName[RandomName]); - g_bFakePopulation[iIndex] = true; - iFakes++; + iFakesNeeded = 0; + } + else if(iPlayers > 60) + { + iFakesNeeded = 1; + iFakesInTeamNeeded = 0; + } + else if(iPlayers > 55) + { + iFakesNeeded = 3; + iFakesInTeamNeeded = 2; + } + else if(iPlayers > 40) + { + iFakesInTeamNeeded = 3; + } + else if (iPlayers > 20) + { + iFakesNeeded = 4; + iFakesInTeamNeeded = 2; + } + else if (iPlayers > 10) + { + iFakesNeeded = 3; + iFakesInTeamNeeded = 1; + } + else if (iPlayers > 5) + { + iFakesNeeded = 2; + } + else + { + iFakesNeeded = 0; + iFakesInTeamNeeded = 0; } - while (iFakes > iFakesNeeded) + if (iFakes != iFakesNeeded) { - for(int i = 1; i <= MaxClients; i++) + while (iFakes < iFakesNeeded) { - if(g_bFakePopulation[i]) + int RandomName = GetRandomInt(0, NUMBEROFNAMES - 1); + int iIndex = CreateFakeClient(g_cName[RandomName]); + g_bFakePopulation[iIndex] = true; + g_iLatency[iIndex] = GetRandomInt(30, 120); + AdminId FakeAdmin = CreateAdmin(); + SetAdminFlag(FakeAdmin, Admin_Custom6, true); + SetUserAdmin(iIndex, FakeAdmin, true); + CS_SetClientClanTag(iIndex, "UNLOZE"); + iFakes++; + } + + while (iFakes > iFakesNeeded) + { + for(int i = 1; i <= MaxClients; i++) { - g_bFakePopulation[i] = false; - KickClientEx(i); - iFakes--; - break; + if(g_bFakePopulation[i]) + { + g_bFakePopulation[i] = false; + g_iLatency[i] = 0; + KickClientEx(i); + iFakes--; + break; + } } } } + + if (iFakes == iFakesNeeded && iFakesInTeam != iFakesInTeamNeeded) + { + while (iFakesInTeam < iFakesInTeamNeeded) + { + for(int i = 1; i <= MaxClients; i++) + { + if(g_bFakePopulation[i] && GetClientTeam(i) < 1) + { + ChangeClientTeam(i, CS_TEAM_CT); + FakeClientCommandEx(i, "joinclass"); + iFakesInTeam++; + break; + } + } + } + + while (iFakesInTeam > iFakesInTeamNeeded) + { + for(int i = 1; i <= MaxClients; i++) + { + if(g_bFakePopulation[i] && GetClientTeam(i) > 0) + { + ChangeClientTeam(i, CS_TEAM_SPECTATOR); + iFakesInTeam--; + break; + } + } + } + } +} + +public void OnGameFrame() +{ + for(int i = 1; i <= MaxClients; i++) + { + if(g_bFakePopulation[i]) + { + int iResEnt = GetPlayerResourceEntity(); + + if(iResEnt == -1) + return; + + SetEntProp(iResEnt, Prop_Send, "m_iPing", g_iLatency[i], _, i); + } + } } \ No newline at end of file diff --git a/ZombieManager/scripting/ZombieManager.sp b/ZombieManager/scripting/ZombieManager.sp index 0df01ca8..c40a60eb 100644 --- a/ZombieManager/scripting/ZombieManager.sp +++ b/ZombieManager/scripting/ZombieManager.sp @@ -71,7 +71,7 @@ public void ZR_OnClientHumanPost(int client, bool respawn, bool protect) public Action ZR_OnClientInfect(int &client, int &attacker, bool &motherInfect, bool &respawnOverride, bool &respawn) { - if(g_bTestRound || (GetClientIdleTime(client) > g_iAFKTime && motherInfect)) + if(g_bTestRound || (GetClientIdleTime(client) > g_iAFKTime && motherInfect) || IsFakeClient(client)) return Plugin_Handled; return Plugin_Continue;