From 7753c52b6896e467a6d6b379e4689dd926bec922 Mon Sep 17 00:00:00 2001 From: jenz Date: Wed, 26 Jun 2024 16:59:26 +0200 Subject: [PATCH] adding clantags from hlstats, names from the racetimer and just generally changed fakeclients amount. fakeclients amount is a dumb thing to change tbh --- FakeClients/scripting/FakeClients.sp | 195 +++++++++++++++++++++++++-- 1 file changed, 187 insertions(+), 8 deletions(-) diff --git a/FakeClients/scripting/FakeClients.sp b/FakeClients/scripting/FakeClients.sp index 07857ba8..e71f4f73 100755 --- a/FakeClients/scripting/FakeClients.sp +++ b/FakeClients/scripting/FakeClients.sp @@ -8,6 +8,7 @@ #define MAXNAMES 500 ArrayList g_hNames; +ArrayList g_hClanNames; bool g_bFakePopulation[MAXPLAYERS + 1]; bool g_bMapEnded; @@ -22,6 +23,9 @@ bool g_bCheckRequested; bool g_bBlockInstantFakeConnects; +Database g_hDatabase; +Database g_hDatabase_hlstats; + //---------------------------------------------------------------------------------------------------- // Purpose: //---------------------------------------------------------------------------------------------------- @@ -30,7 +34,7 @@ public Plugin myinfo = name = "ImprovedHitboxes", //camouflage author = "Neon + Dogan + Botox", description = "Handle Hitboxes via Plugin", - version = "5.3.0", + version = "5.3.1", url = "https://steamcommunity.com/id/n3ontm" }; @@ -45,6 +49,7 @@ public void OnPluginStart() int arraySize = ByteCountToCells(MAX_NAME_LENGTH); g_hNames = CreateArray(arraySize); + g_hClanNames = CreateArray(arraySize); g_iAdminFakes = -1; g_iPopulation = GetClientCount(false); @@ -55,13 +60,94 @@ public void OnPluginStart() } g_bMapEnded = false; g_bBlockInstantFakeConnects = false; - CreateTimer(5.0, BlockInstantFakeConnects, _, TIMER_REPEAT); + CreateTimer(40.0, BlockInstantFakeConnects, _, TIMER_REPEAT); CreateTimer(3.0, RandomizePing, _, TIMER_REPEAT); CreateTimer(150.0, RandomizeNames, _, TIMER_REPEAT); HookUserMessage(GetUserMessageId("SayText2"), UserMessage_SayText2, true); RequestFrame(CheckPopulation); + + if (!g_hDatabase) + { + Database.Connect(SQL_OnDatabaseConnect, "racetimercss"); + } + if (!g_hDatabase_hlstats) + { + Database.Connect(SQL_OnDatabaseConnect_hlstats, "hlstatsx"); + } +} + +public void SQL_OnDatabaseConnect_hlstats(Database db, const char[] error, any data) +{ + if(!db || strlen(error)) + { + LogError("Database error: %s", error); + return; + } + g_hDatabase_hlstats = db; + randomize_clantags(); +} + +public void randomize_clantags() +{ + char sQuery[512]; + Format(sQuery, sizeof(sQuery), "select DISTINCT tag from unloze_stats.hlstats_Clans ORDER BY RAND() limit 500"); + g_hDatabase_hlstats.Query(SQL_OnQueryCompleted_hlstats, sQuery, DBPrio_Low); +} + +public void SQL_OnDatabaseConnect(Database db, const char[] error, any data) +{ + if(!db || strlen(error)) + { + LogError("Database error: %s", error); + return; + } + g_hDatabase = db; + randomize_names(); +} + +public void randomize_names() +{ + char sQuery[512]; + Format(sQuery, sizeof(sQuery), "select name from unloze_racetimer_css.zetimer_table_new ORDER BY RAND() limit 500"); + g_hDatabase.Query(SQL_OnQueryCompleted, sQuery, DBPrio_Low); +} + +public void SQL_OnQueryCompleted_hlstats(Database db, DBResultSet results, const char[] error, int iSerial) +{ + if (!db || strlen(error)) + { + delete results; + LogError("Query error 3: %s", error); + return; + } + + while (results.RowCount && results.FetchRow()) + { + char sName[MAX_NAME_LENGTH]; + results.FetchString(0, sName, sizeof(sName)); + g_hClanNames.PushString(sName); + } + delete results; +} + +public void SQL_OnQueryCompleted(Database db, DBResultSet results, const char[] error, int iSerial) +{ + if (!db || strlen(error)) + { + delete results; + LogError("Query error 3: %s", error); + return; + } + + while (results.RowCount && results.FetchRow()) + { + char sName[MAX_NAME_LENGTH]; + results.FetchString(0, sName, sizeof(sName)); + g_hNames.PushString(sName); + } + delete results; } //---------------------------------------------------------------------------------------------------- @@ -85,6 +171,28 @@ public void OnPluginEnd() //---------------------------------------------------------------------------------------------------- public void OnMapStart() { + g_hNames.Clear(); + g_hClanNames.Clear(); + if (!g_hDatabase) + { + Database.Connect(SQL_OnDatabaseConnect, "racetimercss"); + } + else + { + randomize_names(); + } + + if (!g_hDatabase_hlstats) + { + Database.Connect(SQL_OnDatabaseConnect_hlstats, "hlstatsx"); + } + else + { + randomize_clantags(); + } + + + /* char sFile[PLATFORM_MAX_PATH]; char sLine[MAX_NAME_LENGTH]; BuildPath(Path_SM, sFile, sizeof(sFile), "configs/fakeclients_names.txt"); @@ -107,7 +215,7 @@ public void OnMapStart() } else SetFailState("Could not open file: configs/fakeclients_names.txt"); - + */ g_bMapEnded = false; @@ -159,6 +267,7 @@ public Action RandomizePing(Handle timer) public Action RandomizeNames(Handle timer) { ArrayList hNames = g_hNames.Clone(); + ArrayList hClanNames = g_hClanNames.Clone(); for(int i = 1; i <= MaxClients; i++) { if(g_bFakePopulation[i]) @@ -168,9 +277,23 @@ public Action RandomizeNames(Handle timer) hNames.GetString(iRand, sName, sizeof(sName)); hNames.Erase(iRand); SetClientName(i, sName); + + if (GetRandomInt(0, 5) >= 3) + { + int iRandClans = GetRandomInt(0, hClanNames.Length - 1); + hClanNames.GetString(iRandClans, sName, sizeof(sName)); + hClanNames.Erase(iRandClans); + CS_SetClientClanTag(i, sName); + } + else + { + CS_SetClientClanTag(i, ""); + } + } } delete hNames; + delete hClanNames; return Plugin_Continue; } @@ -328,11 +451,22 @@ public void OnClientDisconnect(int client) } } +public Action repeatCheckPopulation(Handle timer) +{ + CheckPopulation(); + return Plugin_Continue; +} + //---------------------------------------------------------------------------------------------------- // Purpose: //---------------------------------------------------------------------------------------------------- public void CheckPopulation() { + if (g_hNames.Length == 0 || g_hClanNames.Length == 0) + { + CreateTimer(5.0, repeatCheckPopulation); + return; + } g_bCheckRequested = false; if(g_bMapEnded) @@ -358,17 +492,50 @@ public void CheckPopulation() int iFakesNeeded = 0; int iFakesInTeamNeeded = 0; - //24 to account for 4 autismbots. - iFakesNeeded = 24 - RoundToFloor(iPlayers / 1.5); - if (iFakesNeeded < 0) + int max = 2; + int min = 1; + + if (iPlayers == 1) + { + max = iPlayers * 5; + min = 3; + } + else if (iPlayers < 6) + { + max = iPlayers * 5; + min = iPlayers * 2; + } + else if (iPlayers < 11) + { + max = iPlayers * 2; + min = iPlayers * 1; + } + else if (iPlayers < 20) + { + max = iPlayers * 1; + min = RoundToFloor(iPlayers * 0.5); + } + else + { + max = RoundToFloor(iPlayers * 0.5); + min = RoundToFloor(iPlayers * 0.1); + } + + int randomAmount = GetRandomInt(min, max); + iFakesNeeded = randomAmount - iPlayers; + if (iFakesNeeded < 0 || iPlayers > 25) { iFakesNeeded = 0; iFakesInTeamNeeded = 0; } else { - iFakesInTeamNeeded = iFakesNeeded / 3; + iFakesInTeamNeeded = iFakesNeeded / 2; } + if (iFakesInTeamNeeded < 0) + { + iFakesInTeamNeeded = 0; + } if(g_iAdminFakes != -1) iFakesNeeded = g_iAdminFakes; @@ -410,7 +577,19 @@ public void CheckPopulation() AdminId FakeAdmin = CreateAdmin(); SetAdminFlag(FakeAdmin, Admin_Custom6, true); SetUserAdmin(iIndex, FakeAdmin, true); - //CS_SetClientClanTag(iIndex, "UNLOZE"); + + if (GetRandomInt(0, 5) >= 3) + { + ArrayList hClanNames = g_hClanNames.Clone(); + iRand = GetRandomInt(0, hClanNames.Length - 1); + hClanNames.GetString(iRand, sName, sizeof(sName)); + delete hClanNames; + CS_SetClientClanTag(iIndex, sName); + } + else + { + CS_SetClientClanTag(iIndex, ""); + } iFakes++; g_bBlockInstantFakeConnects = true;