forked from UNLOZE/sm-plugins
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:
@@ -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.");
|
||||||
|
|||||||
Reference in New Issue
Block a user