added check so if rtv happens while the last round ended that the map switches instantly. added novote option to the extend vote. added that the extend vote cant have a revote.
This commit is contained in:
parent
c25a3e203e
commit
dc7cdd5e10
@ -143,6 +143,7 @@ bool g_ChangeMapInProgress;
|
|||||||
bool g_HasIntermissionStarted = false;
|
bool g_HasIntermissionStarted = false;
|
||||||
bool g_SaveCDOnMapEnd = true;
|
bool g_SaveCDOnMapEnd = true;
|
||||||
bool g_DidNotExtend = false;
|
bool g_DidNotExtend = false;
|
||||||
|
bool g_DidRoundTerminate = false;
|
||||||
int g_mapFileSerial = -1;
|
int g_mapFileSerial = -1;
|
||||||
int g_iPlayerCount_excludeSpec;
|
int g_iPlayerCount_excludeSpec;
|
||||||
int g_iPlayerAFKTime;
|
int g_iPlayerAFKTime;
|
||||||
@ -488,6 +489,7 @@ public APLRes AskPluginLoad2(Handle myself, bool late, char[] error, int err_max
|
|||||||
|
|
||||||
public void OnMapStart()
|
public void OnMapStart()
|
||||||
{
|
{
|
||||||
|
g_DidRoundTerminate = false;
|
||||||
g_DidNotExtend = false;
|
g_DidNotExtend = false;
|
||||||
ServerCommand("sm_cvar sm_vote_progress_hintbox 1"); //yeah its cheesy but does the job.
|
ServerCommand("sm_cvar sm_vote_progress_hintbox 1"); //yeah its cheesy but does the job.
|
||||||
g_iInterval = 0;
|
g_iInterval = 0;
|
||||||
@ -590,6 +592,7 @@ public void OnMapEnd()
|
|||||||
g_iInterval = 0;
|
g_iInterval = 0;
|
||||||
g_HasVoteStarted = false;
|
g_HasVoteStarted = false;
|
||||||
g_WaitingForVote = false;
|
g_WaitingForVote = false;
|
||||||
|
g_DidRoundTerminate = false;
|
||||||
g_ChangeMapAtRoundEnd = false;
|
g_ChangeMapAtRoundEnd = false;
|
||||||
g_ChangeMapInProgress = false;
|
g_ChangeMapInProgress = false;
|
||||||
g_HasIntermissionStarted = false;
|
g_HasIntermissionStarted = false;
|
||||||
@ -945,8 +948,9 @@ public Action CS_OnTerminateRound(float &delay, CSRoundEndReason &reason)
|
|||||||
{
|
{
|
||||||
int timeleft;
|
int timeleft;
|
||||||
GetMapTimeLeft(timeleft);
|
GetMapTimeLeft(timeleft);
|
||||||
if (g_WaitingForVote)
|
if (g_WaitingForVote && timeleft <= 0)
|
||||||
{
|
{
|
||||||
|
g_DidRoundTerminate = true;
|
||||||
return Plugin_Handled; //it keeps retriggering this Action.
|
return Plugin_Handled; //it keeps retriggering this Action.
|
||||||
}
|
}
|
||||||
if (timeleft <= 0 && !g_ChangeMapAtRoundEnd)
|
if (timeleft <= 0 && !g_ChangeMapAtRoundEnd)
|
||||||
@ -954,12 +958,14 @@ public Action CS_OnTerminateRound(float &delay, CSRoundEndReason &reason)
|
|||||||
InitiateVote(MapChange_Instant); //feature so mapvote happens at actual mapend
|
InitiateVote(MapChange_Instant); //feature so mapvote happens at actual mapend
|
||||||
return Plugin_Handled;
|
return Plugin_Handled;
|
||||||
}
|
}
|
||||||
|
g_DidRoundTerminate = false;
|
||||||
return Plugin_Continue;
|
return Plugin_Continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* You ask, why don't you just use team_score event? And I answer... Because CSS doesn't. */
|
/* You ask, why don't you just use team_score event? And I answer... Because CSS doesn't. */
|
||||||
public void Event_RoundEnd(Handle event, const char[] name, bool dontBroadcast)
|
public void Event_RoundEnd(Handle event, const char[] name, bool dontBroadcast)
|
||||||
{
|
{
|
||||||
|
g_DidRoundTerminate = false;
|
||||||
if(g_ChangeMapAtRoundEnd)
|
if(g_ChangeMapAtRoundEnd)
|
||||||
{
|
{
|
||||||
char map[32];
|
char map[32];
|
||||||
@ -1320,7 +1326,7 @@ void InitiateVote(MapChange when, Handle inputlist=INVALID_HANDLE)
|
|||||||
AddExtendToMenu(g_VoteMenu, when);
|
AddExtendToMenu(g_VoteMenu, when);
|
||||||
//AddMenuItem(g_VoteMenu, LINE_ONE, "Choose something...", ITEMDRAW_DISABLED);
|
//AddMenuItem(g_VoteMenu, LINE_ONE, "Choose something...", ITEMDRAW_DISABLED);
|
||||||
AddMapItem("Dont extend");
|
AddMapItem("Dont extend");
|
||||||
|
SetMenuOptionFlags(g_VoteMenu, MENUFLAG_BUTTON_NOVOTE); //should add no vote option for the extend vote?
|
||||||
}
|
}
|
||||||
/* No input given - User our internal nominations and maplist */
|
/* No input given - User our internal nominations and maplist */
|
||||||
else if(inputlist == INVALID_HANDLE)
|
else if(inputlist == INVALID_HANDLE)
|
||||||
@ -1646,7 +1652,8 @@ public void Handler_VoteFinishedGeneric(char[] map,
|
|||||||
//SetNextMap(map); //feature edit where MapChange_MapEnd is only used to decide if extend or not extend
|
//SetNextMap(map); //feature edit where MapChange_MapEnd is only used to decide if extend or not extend
|
||||||
g_DidNotExtend = true; //just so warningtimer wont start running again if an admin removes or adds time when players voted to not extend.
|
g_DidNotExtend = true; //just so warningtimer wont start running again if an admin removes or adds time when players voted to not extend.
|
||||||
}
|
}
|
||||||
else if(g_ChangeTime == MapChange_Instant)
|
else if(g_ChangeTime == MapChange_Instant || g_DidRoundTerminate) //g_DidRoundTerminate implies that rtv vote is running while the last round already ended.
|
||||||
|
//therefore rtv vote has to switch map right now instead of roundend.
|
||||||
{
|
{
|
||||||
PrintToChatAll("[MCE] Next Map: %s", map);
|
PrintToChatAll("[MCE] Next Map: %s", map);
|
||||||
PrintToChatAll("[MCE] Next Map: %s", map);
|
PrintToChatAll("[MCE] Next Map: %s", map);
|
||||||
@ -1767,7 +1774,7 @@ public void Handler_MapVoteFinished(Handle menu,
|
|||||||
//LogMessage("Mapchooser_extended_avg Handler_MapVoteFinished.");
|
//LogMessage("Mapchooser_extended_avg Handler_MapVoteFinished.");
|
||||||
int required_percent = GetConVarInt(g_Cvar_RunOffPercent);
|
int required_percent = GetConVarInt(g_Cvar_RunOffPercent);
|
||||||
int most_voted_map_percentage = RoundToFloor((weighted_votes[0] / total_votes) * 100);
|
int most_voted_map_percentage = RoundToFloor((weighted_votes[0] / total_votes) * 100);
|
||||||
if(GetConVarBool(g_Cvar_RunOff) && g_RunoffCount < GetConVarInt(g_Cvar_MaxRunOffs) && num_items > 1 &&
|
if(GetConVarBool(g_Cvar_RunOff) && g_RunoffCount < GetConVarInt(g_Cvar_MaxRunOffs) && num_items > 1 && g_ChangeTime != MapChange_MapEnd &&
|
||||||
(weighted_votes[0] == weighted_votes[1] || most_voted_map_percentage < required_percent))
|
(weighted_votes[0] == weighted_votes[1] || most_voted_map_percentage < required_percent))
|
||||||
{
|
{
|
||||||
//LogMessage("Mapchooser_extended_avg Handler_MapVoteFinished passed check1.");
|
//LogMessage("Mapchooser_extended_avg Handler_MapVoteFinished passed check1.");
|
||||||
|
Loading…
Reference in New Issue
Block a user