From 15b63eef7cfc1cbb9ed051f228e6263d5df56771 Mon Sep 17 00:00:00 2001 From: Robin Appelman Date: Thu, 23 Jul 2026 23:09:18 +0200 Subject: [PATCH] better persist current config --- plugin/autoexec.smx | Bin 8806 -> 9661 bytes plugin/autoexec.sp | 74 +++++++++++++++++++++++++++++++++++++------- 2 files changed, 62 insertions(+), 12 deletions(-) diff --git a/plugin/autoexec.smx b/plugin/autoexec.smx index 0eaac5bccc56eb62f08ff69c4e9cf784c6df1769..4476fec2376e78a3949008ff1be76f6f5140df01 100644 GIT binary patch delta 9523 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 diff --git a/plugin/autoexec.sp b/plugin/autoexec.sp index 1386178..b28202f 100644 --- a/plugin/autoexec.sp +++ b/plugin/autoexec.sp @@ -20,11 +20,12 @@ bool inAutoExec = false; // size 4 so we can use team indexes bool warned[4] = {false, false, false, false}; +bool initialized = false; -new Handle:CvarLeague = INVALID_HANDLE; -new Handle:CvarMode = INVALID_HANDLE; -new Handle:CvarAutoset = INVALID_HANDLE; -new Handle:CvarWhitelist = INVALID_HANDLE; +new ConVar:CvarLeague = null; +new ConVar:CvarMode = null; +new ConVar:CvarAutoset = null; +new ConVar:CvarWhitelist = null; public OnPluginStart() { mapPrefixMap = new StringMap(); @@ -34,7 +35,9 @@ public OnPluginStart() { configOverwriteMap = new StringMap(); CvarLeague = CreateConVar("sm_autoexec_league", "ugc", "league to execute the configs for (ugc or etf2l)", FCVAR_PROTECTED); + CvarLeague.AddChangeHook(PersistLeague); CvarMode = CreateConVar("sm_autoexec_mode", "9v9", "game mode to execute the config for (9v9, 6v6 or 4v4)", FCVAR_PROTECTED); + CvarMode.AddChangeHook(PersistGameMode); CvarAutoset = CreateConVar("sm_autoexec_autoset", "true", "try to set league and mode when a config is manually loaded (true or false)", FCVAR_PROTECTED); CvarWhitelist = FindConVar("mp_tournament_whitelist"); @@ -66,9 +69,14 @@ public OnPluginStart() { } public OnMapStart() { - ExecMapCfg(); + CreateTimer(3.0, RestoreCfg); +} - CreateTimer(10.0, ExecMapCfg); +public RestoreCfg() { + RestoreGameMode(); + RestoreLeague(); + ExecMapCfg(); + initialized = true; } @@ -106,27 +114,27 @@ public Action:HandleExecAction(args) { if ((StrContains(cfg, "9v9_") > 0) || (StrContains(cfg, "hl_") > 0)) { PrintToChatAll("Setting game mode to 9v9"); - SetConVarString(CvarMode, "9v9"); + SetGameMode("9v9"); } if (StrContains(cfg, "6v6_") > 0) { PrintToChatAll("Setting game mode to 6v6"); - SetConVarString(CvarMode, "6v6"); + SetGameMode("6v6"); } if (StrContains(cfg, "6v_") > 0) { PrintToChatAll("Setting game mode to 6v6"); - SetConVarString(CvarMode, "6v6"); + SetGameMode("6v6"); } if (StrContains(cfg, "4v4_") > 0) { PrintToChatAll("Setting game mode to 4v4"); - SetConVarString(CvarMode, "4v4"); + SetGameMode("4v4"); } if (StrContains(cfg, "ultiduo") > 0) { PrintToChatAll("Setting game mode to 2v2"); - SetConVarString(CvarMode, "2v2"); + SetGameMode("2v2"); } return Plugin_Continue; @@ -202,6 +210,48 @@ public GetGameMode(String:leagueGamemode[8], String:league[8]) { leagueGamemode = gamemode; } +public void SetGameMode(String:mode[8]) { + SetConVarString(CvarMode, mode); +} + +public void PersistGameMode(ConVar convar, const char[] oldValue, const char[] newValue) { + if (!initialized) { + return; + } + File file = OpenFile("autoexec_gamemode", "w"); + file.WriteString(newValue, -1); + file.Close(); +} + +public void RestoreGameMode() { + decl String:mode[8]; + File file = OpenFile("autoexec_gamemode", "r"); + if (file) { + file.ReadString(mode, 8, -1); + file.Close(); + SetConVarString(CvarMode, mode); + } +} + +public void PersistLeague(ConVar convar, const char[] oldValue, const char[] newValue) { + if (!initialized) { + return; + } + File file = OpenFile("autoexec_league", "w"); + file.WriteString(newValue, -1); + file.Close(); +} + +public void RestoreLeague() { + decl String:league[8]; + File file = OpenFile("autoexec_league", "r"); + if (file) { + file.ReadString(league, 8, -1); + file.Close(); + SetConVarString(CvarLeague, league); + } +} + public GetLeagueMapType(String:map[128], String:leagueMapType[128], String:league[8]) { decl String:mapType[128]; GetMapType(map, mapType); @@ -272,7 +322,7 @@ public void CheckPlayerCount(int team) { if (gotExpectedMode && strncmp(expectedMode, expectedModeOther, strlen(expectedMode)) == 0) { PrintToChatAll("Switching config to %s", expectedMode); - SetConVarString(CvarMode, expectedMode); + SetGameMode(expectedMode); ExecMapCfg(); CreateTimer(0.5, ReadyTeamTimer, team); return;