From 492a36ec5a0bf0be666629faf1b74401753dc4a4 Mon Sep 17 00:00:00 2001 From: Dogan Date: Thu, 29 Aug 2019 23:10:37 +0200 Subject: [PATCH] FakePopulation: small improvements thx neon --- FakePopulation/scripting/FakePopulation.sp | 40 +++++++++++++++------- 1 file changed, 27 insertions(+), 13 deletions(-) diff --git a/FakePopulation/scripting/FakePopulation.sp b/FakePopulation/scripting/FakePopulation.sp index 78641227..c62d9987 100644 --- a/FakePopulation/scripting/FakePopulation.sp +++ b/FakePopulation/scripting/FakePopulation.sp @@ -6,6 +6,8 @@ #define NUMBEROFNAMES 48 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"}; +bool g_bFakePopulation[MAXPLAYERS+1]; + //---------------------------------------------------------------------------------------------------- // Purpose: //---------------------------------------------------------------------------------------------------- @@ -24,7 +26,7 @@ public Plugin myinfo = public void OnPluginStart() { RegAdminCmd("sm_debugfakes", Command_DebugFakes, ADMFLAG_RCON, ""); - OnClientConnected(0); + CheckPopulation(); } //---------------------------------------------------------------------------------------------------- @@ -34,8 +36,11 @@ public void OnPluginEnd() { for(int i = 1; i <= MaxClients; i++) { - if(IsClientConnected(i) && IsFakeClient(i) && !IsClientSourceTV(i)) - KickClient(i); + if(g_bFakePopulation[i]) + { + g_bFakePopulation[i] = false; + KickClientEx(i); + } } } @@ -47,7 +52,7 @@ public Action Command_DebugFakes(int client, int argc) int iFakes = 0; for(int i = 1; i <= MaxClients; i++) { - if(IsClientConnected(i) && IsFakeClient(i) && !IsClientSourceTV(i)) + if (g_bFakePopulation[i]) iFakes++; } ReplyToCommand(client, "[SM] There are currently %d Fake Players.", iFakes); @@ -59,7 +64,8 @@ public Action Command_DebugFakes(int client, int argc) //---------------------------------------------------------------------------------------------------- public void OnClientConnected(int client) { - CheckPopulation(); + if ((client > 0) && (!IsFakeClient(client))) + CheckPopulation(); } //---------------------------------------------------------------------------------------------------- @@ -67,7 +73,14 @@ public void OnClientConnected(int client) //---------------------------------------------------------------------------------------------------- public void OnClientDisconnect(int client) { - CheckPopulation(); + if (client > 0) + { + if(g_bFakePopulation[client]) + g_bFakePopulation[client] = false; + + if (!IsFakeClient(client)) + CheckPopulation(); + } } //---------------------------------------------------------------------------------------------------- @@ -76,21 +89,20 @@ public void OnClientDisconnect(int client) public void CheckPopulation() { int iPlayers = 0; - int iFakesNeeded = 0; - int iFakes = 0; - for(int i = 1; i <= MaxClients; i++) { if(IsClientConnected(i) && !IsFakeClient(i)) iPlayers++; } + int iFakes = 0; for(int i = 1; i <= MaxClients; i++) { - if(IsClientConnected(i) && IsFakeClient(i) && !IsClientSourceTV(i)) + if (g_bFakePopulation[i]) iFakes++; } + int iFakesNeeded = 0; if (iPlayers >= 61) iFakesNeeded = 0; else if(iPlayers >= 60) @@ -114,7 +126,8 @@ public void CheckPopulation() while (iFakes < iFakesNeeded) { int RandomName = GetRandomInt(0, NUMBEROFNAMES - 1); - CreateFakeClient(g_cName[RandomName]); + int iIndex = CreateFakeClient(g_cName[RandomName]); + g_bFakePopulation[iIndex] = true; iFakes++; } @@ -122,9 +135,10 @@ public void CheckPopulation() { for(int i = 1; i <= MaxClients; i++) { - if(IsClientConnected(i) && IsFakeClient(i) && !IsClientSourceTV(i)) + if(g_bFakePopulation[i]) { - KickClient(i); + g_bFakePopulation[i] = false; + KickClientEx(i); iFakes--; break; }