#include #include #include #pragma semicolon 1 #pragma newdecls required #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]; int g_iLatency[MAXPLAYERS + 1]; //---------------------------------------------------------------------------------------------------- // Purpose: //---------------------------------------------------------------------------------------------------- public Plugin myinfo = { name = "ImprovedHitboxes", //camouflage author = "Neon + Dogan", description = "Handle Hitboxes via Plugin", version = "3.0", url = "https://steamcommunity.com/id/n3ontm" }; //---------------------------------------------------------------------------------------------------- // Purpose: //---------------------------------------------------------------------------------------------------- public void OnPluginStart() { RegAdminCmd("sm_debugfakes", Command_DebugFakes, ADMFLAG_RCON, ""); CheckPopulation(); } //---------------------------------------------------------------------------------------------------- // Purpose: //---------------------------------------------------------------------------------------------------- public void OnPluginEnd() { for(int i = 1; i <= MaxClients; i++) { if(g_bFakePopulation[i]) { g_bFakePopulation[i] = false; g_iLatency[i] = 0; KickClientEx(i); } } } //---------------------------------------------------------------------------------------------------- // Purpose: //---------------------------------------------------------------------------------------------------- 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, from which %d are in Spectate.", iFakes, iFakes - iFakesInTeam); return Plugin_Handled; } //---------------------------------------------------------------------------------------------------- // Purpose: //---------------------------------------------------------------------------------------------------- public void OnClientConnected(int client) { if ((client > 0) && (!IsFakeClient(client))) CheckPopulation(); } //---------------------------------------------------------------------------------------------------- // Purpose: //---------------------------------------------------------------------------------------------------- public void OnClientDisconnect(int client) { if (client > 0) { if(g_bFakePopulation[client]) { g_bFakePopulation[client] = false; g_iLatency[client] = 0; } if (!IsFakeClient(client)) CheckPopulation(); } } //---------------------------------------------------------------------------------------------------- // Purpose: //---------------------------------------------------------------------------------------------------- public void CheckPopulation() { int iPlayers = 0; for(int i = 1; i <= MaxClients; i++) { if(IsClientConnected(i) && !IsFakeClient(i)) iPlayers++; } 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; 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; } if (iFakes != iFakesNeeded) { while (iFakes < iFakesNeeded) { 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++) { 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); } } }