From ce3e9de09012a98335a68dfe8992ab2e50dba261 Mon Sep 17 00:00:00 2001 From: Forgetest <33988868+jensewe@users.noreply.github.com> Date: Mon, 14 Jul 2025 20:38:53 +0800 Subject: [PATCH] autopause: Fix not working on second half Thanks to @theletterjwithadot for reporting. Fix: - Fixed team player storage becomes empty after team swap. Change: - Replaced arrays with string maps for better ID lookups. --- .../sourcemod/plugins/optional/autopause.smx | Bin 12023 -> 12016 bytes addons/sourcemod/scripting/autopause.sp | 93 ++++++++---------- 2 files changed, 41 insertions(+), 52 deletions(-) diff --git a/addons/sourcemod/plugins/optional/autopause.smx b/addons/sourcemod/plugins/optional/autopause.smx index 9df0036d44ce10e3ea48a73720bb9ec6879ee357..23a7aaff660dd09687035524f0f91090771da0eb 100644 GIT binary patch literal 12016 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 diff --git a/addons/sourcemod/scripting/autopause.sp b/addons/sourcemod/scripting/autopause.sp index 78d90d383..442396c51 100644 --- a/addons/sourcemod/scripting/autopause.sp +++ b/addons/sourcemod/scripting/autopause.sp @@ -37,9 +37,9 @@ char sDebugMessage[256]; public Plugin myinfo = { name = "L4D2 Auto-pause", - author = "Darkid, Griffin, StarterX4", + author = "Darkid, Griffin, StarterX4, Forgetest, J.", description = "When a player disconnects due to crash, automatically pause the game. When they rejoin, give them a correct spawn timer.", - version = "2.2", + version = "2.3", url = "https://github.com/SirPlease/L4D2-Competitive-Rework" } @@ -49,11 +49,10 @@ ConVar convarForceUnpause, convarDebug; -Handle +StringMap crashedPlayers, generalCrashers, - infectedPlayers, - survivorPlayers; + teamPlayers; bool bReadyUpIsAvailable, @@ -67,10 +66,9 @@ public void OnPluginStart() convarForceUnpause = CreateConVar("autopause_forceunpause", "0", "Whether or not we force unpause when the crashed players have loaded back in"); convarDebug = CreateConVar("autopause_apdebug", "0", "0: No Debugging - 1: Sourcemod Logs - 2: PrintToChat - 3: Both", _, true, 0.0, true, 3.0); - crashedPlayers = CreateTrie(); - generalCrashers = CreateArray(64); - infectedPlayers = CreateArray(64); - survivorPlayers = CreateArray(64); + crashedPlayers = new StringMap(); + generalCrashers = new StringMap(); + teamPlayers = new StringMap(); HookEvent("round_start", Event_RoundStart); HookEvent("round_end", Event_RoundEnd); @@ -112,13 +110,11 @@ public void OnClientPutInServer(int client) if (strcmp(sAuthId, "BOT") == 0) return; - int crasherIndex = FindStringInArray(generalCrashers, sAuthId); - - if (crasherIndex == -1) + if (!generalCrashers.ContainsKey(sAuthId)) return; - RemoveFromArray(generalCrashers, crasherIndex); - int remainingCrashers = GetArraySize(generalCrashers); + generalCrashers.Remove(sAuthId); + int remainingCrashers = generalCrashers.Size; if (convarDebug.BoolValue) { @@ -148,12 +144,19 @@ public void OnClientPutInServer(int client) } } +public void OnMapEnd() +{ + teamPlayers.Clear(); +} + void Event_RoundStart(Event hEvent, char[] sEventName, bool dontBroadcast) { - ClearTrie(crashedPlayers); - ClearArray(generalCrashers); - ClearArray(infectedPlayers); - ClearArray(survivorPlayers); + crashedPlayers.Clear(); + generalCrashers.Clear(); + + // @Forgetest: "player_team" happens before "round_start" + // teamPlayers.Clear(); + bRoundEnd = false; } @@ -175,36 +178,11 @@ void Event_PlayerTeam(Event hEvent, char[] sEventName, bool dontBroadcast) if (strcmp(sAuthId, "BOT") == 0) return; - int survivorIndex = FindStringInArray(survivorPlayers, sAuthId); - int infectedIndex = FindStringInArray(infectedPlayers, sAuthId); - - if (survivorIndex != -1) - { - RemoveFromArray(survivorPlayers, survivorIndex); - - if (convarDebug.BoolValue) - { - Format(sDebugMessage, sizeof(sDebugMessage), "[AutoPause (%s)] Removed player %s from the survivor team.", sEventName, sAuthId); - DebugLog(sDebugMessage); - } - } - - if (infectedIndex != -1) - { - RemoveFromArray(infectedPlayers, infectedIndex); - - if (convarDebug.BoolValue) - { - Format(sDebugMessage, sizeof(sDebugMessage), "[AutoPause (%s)] Removed player %s from the infected team.", sEventName, sAuthId); - DebugLog(sDebugMessage); - } - } - int newTeam = hEvent.GetInt("team"); if (newTeam == L4D_TEAM_SURVIVOR) { - PushArrayString(survivorPlayers, sAuthId); + teamPlayers.SetValue(sAuthId, newTeam); if (convarDebug.BoolValue) { @@ -216,11 +194,11 @@ void Event_PlayerTeam(Event hEvent, char[] sEventName, bool dontBroadcast) { float fSpawnTime; - if (GetTrieValue(crashedPlayers, sAuthId, fSpawnTime)) + if (crashedPlayers.GetValue(sAuthId, fSpawnTime)) { CountdownTimer CTimer_SpawnTimer = L4D2Direct_GetSpawnTimer(client); CTimer_Start(CTimer_SpawnTimer, fSpawnTime); - RemoveFromTrie(crashedPlayers, sAuthId); + crashedPlayers.Remove(sAuthId); if (convarDebug.BoolValue) { @@ -229,7 +207,7 @@ void Event_PlayerTeam(Event hEvent, char[] sEventName, bool dontBroadcast) } } - PushArrayString(infectedPlayers, sAuthId); + teamPlayers.SetValue(sAuthId, newTeam); if (convarDebug.BoolValue) { @@ -237,6 +215,16 @@ void Event_PlayerTeam(Event hEvent, char[] sEventName, bool dontBroadcast) DebugLog(sDebugMessage); } } + else if (teamPlayers.GetValue(sAuthId, newTeam)) + { + teamPlayers.Remove(sAuthId); + + if (convarDebug.BoolValue) + { + Format(sDebugMessage, sizeof(sDebugMessage), "[AutoPause (%s)] Removed player %s from the %s team.", sEventName, sAuthId, newTeam == L4D_TEAM_SURVIVOR ? "survivor" : "infected"); + DebugLog(sDebugMessage); + } + } } void Event_PlayerDisconnect(Event hEvent, char[] sEventName, bool dontBroadcast) @@ -252,7 +240,7 @@ void Event_PlayerDisconnect(Event hEvent, char[] sEventName, bool dontBroadcast) if (strcmp(sAuthId, "BOT") == 0) return; - if (FindStringInArray(infectedPlayers, sAuthId) == -1 && FindStringInArray(survivorPlayers, sAuthId) == -1) + if (!teamPlayers.ContainsKey(sAuthId)) return; if (GetClientTeam(client) == L4D_TEAM_SURVIVOR && !IsPlayerAlive(client)) @@ -286,14 +274,15 @@ void Event_PlayerDisconnect(Event hEvent, char[] sEventName, bool dontBroadcast) else FakeClientCommand(client, "sm_pause"); - if (FindStringInArray(generalCrashers, sAuthId) == -1) - PushArrayString(generalCrashers, sAuthId); + if (!generalCrashers.ContainsKey(sAuthId)) + generalCrashers.SetValue(sAuthId, true); CPrintToChatAll("%t", "Crashed", client); } } - if (FindStringInArray(infectedPlayers, sAuthId) != -1) + int team; + if (teamPlayers.GetValue(sAuthId, team) && team == L4D_TEAM_INFECTED) { CountdownTimer CTimer_SpawnTimer = L4D2Direct_GetSpawnTimer(client); if (CTimer_SpawnTimer != CTimer_Null) @@ -306,7 +295,7 @@ void Event_PlayerDisconnect(Event hEvent, char[] sEventName, bool dontBroadcast) DebugLog(sDebugMessage); } - SetTrieValue(crashedPlayers, sAuthId, fTimeLeft); + crashedPlayers.SetValue(sAuthId, fTimeLeft); } } }