fix sm_rtv_autodisable

This commit is contained in:
BotoX 2019-10-01 12:36:27 +02:00
parent c07d2b5539
commit 488d6251a1

View File

@ -67,7 +67,6 @@ int g_Voters = 0; // Total voters connected. Doesn't include fake clients.
int g_Votes = 0; // Total number of "say rtv" votes int g_Votes = 0; // Total number of "say rtv" votes
int g_VotesNeeded = 0; // Necessary votes before map vote begins. (voters * percent_needed) int g_VotesNeeded = 0; // Necessary votes before map vote begins. (voters * percent_needed)
bool g_Voted[MAXPLAYERS+1] = {false, ...}; bool g_Voted[MAXPLAYERS+1] = {false, ...};
Handle g_TimeOverTimer = INVALID_HANDLE;
bool g_InChange = false; bool g_InChange = false;
@ -118,7 +117,6 @@ public void OnMapEnd()
{ {
g_CanRTV = false; g_CanRTV = false;
g_RTVAllowed = false; g_RTVAllowed = false;
g_TimeOverTimer = INVALID_HANDLE;
} }
public void OnConfigsExecuted() public void OnConfigsExecuted()
@ -126,12 +124,6 @@ public void OnConfigsExecuted()
g_CanRTV = true; g_CanRTV = true;
g_RTVAllowed = false; g_RTVAllowed = false;
CreateTimer(g_Cvar_InitialDelay.FloatValue, Timer_DelayRTV, _, TIMER_FLAG_NO_MAPCHANGE); CreateTimer(g_Cvar_InitialDelay.FloatValue, Timer_DelayRTV, _, TIMER_FLAG_NO_MAPCHANGE);
SetupTimeOverTimer();
}
public void OnMapTimeLeftChanged()
{
SetupTimeOverTimer();
} }
public void OnClientPutInServer(int client) public void OnClientPutInServer(int client)
@ -181,7 +173,7 @@ void UpdateRTV()
if (g_Votes && if (g_Votes &&
g_Voters && g_Voters &&
g_Votes >= g_VotesNeeded && g_Votes >= g_VotesNeeded &&
g_RTVAllowed ) RTVAllowed())
{ {
if (g_Cvar_RTVPostVoteAction.IntValue == 1 && HasEndOfMapVoteFinished()) if (g_Cvar_RTVPostVoteAction.IntValue == 1 && HasEndOfMapVoteFinished())
{ {
@ -223,7 +215,7 @@ public Action Command_RTV(int client, int args)
void AttemptRTV(int client) void AttemptRTV(int client)
{ {
if (!g_RTVAllowed || (g_Cvar_RTVPostVoteAction.IntValue == 1 && HasEndOfMapVoteFinished())) if (!RTVAllowed() || (g_Cvar_RTVPostVoteAction.IntValue == 1 && HasEndOfMapVoteFinished()))
{ {
ReplyToCommand(client, "[RTVE] %t", "RTV Not Allowed"); ReplyToCommand(client, "[RTVE] %t", "RTV Not Allowed");
return; return;
@ -365,25 +357,14 @@ public Action Command_EnableRTV(int client, int args)
return Plugin_Handled; return Plugin_Handled;
} }
void SetupTimeOverTimer() bool RTVAllowed()
{ {
if(!g_RTVAllowed)
return false;
int time; int time;
if(GetMapTimeLeft(time) && time > 0) if(g_Cvar_RTVAutoDisable.BoolValue && GetMapTimeLeft(time) && time == 0)
{ return false;
if(g_TimeOverTimer != INVALID_HANDLE)
{
KillTimer(g_TimeOverTimer);
g_TimeOverTimer = INVALID_HANDLE;
}
g_TimeOverTimer = CreateTimer(float(time), Timer_MapOver, _, TIMER_FLAG_NO_MAPCHANGE); return true;
}
}
public Action Timer_MapOver(Handle timer)
{
g_TimeOverTimer = INVALID_HANDLE;
if(g_Cvar_RTVAutoDisable.BoolValue)
g_RTVAllowed = false;
} }