From 39628347b98aa98363f1c0dd6800b428ddd88f95 Mon Sep 17 00:00:00 2001 From: jenz Date: Fri, 20 Sep 2024 13:40:31 +0200 Subject: [PATCH] should safeguard votes from happening when the last vote is done, except of revotes of coruse --- .../mapchooser_extended_avg_mapend.sp | 30 +++++++++++++------ 1 file changed, 21 insertions(+), 9 deletions(-) diff --git a/mapchooser_extended/scripting/mapchooser_extended_avg_mapend.sp b/mapchooser_extended/scripting/mapchooser_extended_avg_mapend.sp index 8c0d1ea..33b264f 100755 --- a/mapchooser_extended/scripting/mapchooser_extended_avg_mapend.sp +++ b/mapchooser_extended/scripting/mapchooser_extended_avg_mapend.sp @@ -144,6 +144,7 @@ bool g_HasIntermissionStarted = false; bool g_SaveCDOnMapEnd = true; bool g_DidNotExtend = false; bool g_DidRoundTerminate = false; +bool g_IniatedLastVote = false; int g_mapFileSerial = -1; int g_iPlayerCount_excludeSpec; int g_iPlayerAFKTime; @@ -490,6 +491,7 @@ public APLRes AskPluginLoad2(Handle myself, bool late, char[] error, int err_max public void OnMapStart() { g_DidRoundTerminate = false; + g_IniatedLastVote = false; g_DidNotExtend = false; ServerCommand("sm_cvar sm_vote_progress_hintbox 1"); //yeah its cheesy but does the job. g_iInterval = 0; @@ -593,6 +595,7 @@ public void OnMapEnd() g_HasVoteStarted = false; g_WaitingForVote = false; g_DidRoundTerminate = false; + g_IniatedLastVote = false; g_ChangeMapAtRoundEnd = false; g_ChangeMapInProgress = false; g_HasIntermissionStarted = false; @@ -785,7 +788,7 @@ void SetupTimeleftTimer() if(time - startTime < 0 && GetConVarBool(g_Cvar_EndOfMapVote) && !g_MapVoteCompleted && !g_HasVoteStarted && !g_WaitingForVote) { - if (!g_DidNotExtend) + if (!g_DidNotExtend && !g_IniatedLastVote) { SetupWarningTimer(WarningType_Vote); //PrintToChatAll("SetupWarningTimer 1"); @@ -819,8 +822,11 @@ public Action Timer_StartWarningTimer(Handle timer) if(!g_WarningInProgress || g_WarningTimer == INVALID_HANDLE) { - SetupWarningTimer(WarningType_Vote); - //PrintToChatAll("SetupWarningTimer 2"); + if (!g_IniatedLastVote) + { + SetupWarningTimer(WarningType_Vote); + //PrintToChatAll("SetupWarningTimer 2"); + } } return Plugin_Stop; } @@ -955,7 +961,11 @@ public Action CS_OnTerminateRound(float &delay, CSRoundEndReason &reason) } if (timeleft <= 0 && !g_ChangeMapAtRoundEnd) { - InitiateVote(MapChange_Instant); //feature so mapvote happens at actual mapend + if (!g_IniatedLastVote) + { + g_IniatedLastVote = true; + InitiateVote(MapChange_Instant); //feature so mapvote happens at actual mapend + } return Plugin_Handled; } g_DidRoundTerminate = false; @@ -978,7 +988,7 @@ public void Event_RoundEnd(Handle event, const char[] name, bool dontBroadcast) if(g_RoundCounting == RoundCounting_ArmsRace) return; - if(g_ChangeMapAtRoundEnd) + if(g_ChangeMapAtRoundEnd && !g_IniatedLastVote) { g_ChangeMapAtRoundEnd = false; CreateTimer(2.0, Timer_ChangeMap, INVALID_HANDLE, TIMER_FLAG_NO_MAPCHANGE); @@ -1086,7 +1096,6 @@ public Action Command_Mapvote(int client, int args) SetupWarningTimer(WarningType_Vote, MapChange_MapEnd, INVALID_HANDLE, true); //PrintToChatAll("SetupWarningTimer 6"); - //LogMessage("Mapchooser_extended_avg SetupWarningTimer call 7"); return Plugin_Handled; } @@ -2342,9 +2351,12 @@ public int Native_InitiateVote(Handle plugin, int numParams) LogAction(-1, -1, "Starting map vote because outside request"); - SetupWarningTimer(WarningType_Vote, when, inputarray); - //PrintToChatAll("SetupWarningTimer 9"); - //LogMessage("Mapchooser_extended_avg SetupWarningTimer call 1"); + if (!g_IniatedLastVote) + { + SetupWarningTimer(WarningType_Vote, when, inputarray); + //PrintToChatAll("SetupWarningTimer 9"); + //LogMessage("Mapchooser_extended_avg SetupWarningTimer call 1"); + } return 0; }