RestartManager: re-add restart during night if empty
This commit is contained in:
parent
26a23ae643
commit
1a2374cb20
@ -43,7 +43,6 @@ public void OnPluginStart()
|
|||||||
|
|
||||||
RegServerCmd("changelevel", BlockMapSwitch);
|
RegServerCmd("changelevel", BlockMapSwitch);
|
||||||
|
|
||||||
IsItTimeToRestart();
|
|
||||||
CreateTimer(60.0, CheckForRestart, _, TIMER_REPEAT);
|
CreateTimer(60.0, CheckForRestart, _, TIMER_REPEAT);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -91,7 +90,7 @@ public Action Command_Uptime(int client, int args)
|
|||||||
|
|
||||||
ReplyToCommand(client, "[SM] Cumulative Server Uptime: %s", sUptime);
|
ReplyToCommand(client, "[SM] Cumulative Server Uptime: %s", sUptime);
|
||||||
|
|
||||||
IsItTimeToRestart();
|
IsItTimeToRestartForced();
|
||||||
if (g_bRestart)
|
if (g_bRestart)
|
||||||
ReplyToCommand(client, "[SM] Server is going to restart on next mapswitch");
|
ReplyToCommand(client, "[SM] Server is going to restart on next mapswitch");
|
||||||
else
|
else
|
||||||
@ -105,16 +104,51 @@ public Action Command_Uptime(int client, int args)
|
|||||||
//----------------------------------------------------------------------------------------------------
|
//----------------------------------------------------------------------------------------------------
|
||||||
public Action CheckForRestart(Handle timer)
|
public Action CheckForRestart(Handle timer)
|
||||||
{
|
{
|
||||||
if(!IsItTimeToRestart())
|
int iPlayers = GetClientCount(false);
|
||||||
return Plugin_Continue;
|
for(int i = 1; i <= MaxClients; i++)
|
||||||
|
{
|
||||||
|
if(IsClientConnected(i) && IsFakeClient(i))
|
||||||
|
iPlayers--;
|
||||||
|
}
|
||||||
|
|
||||||
return Plugin_Stop;
|
if((iPlayers <= 1) && IsItTimeToRestartNight())
|
||||||
|
{
|
||||||
|
PrepareRestartNight();
|
||||||
|
return Plugin_Stop;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(IsItTimeToRestartForced())
|
||||||
|
return Plugin_Stop;
|
||||||
|
|
||||||
|
return Plugin_Continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
//----------------------------------------------------------------------------------------------------
|
//----------------------------------------------------------------------------------------------------
|
||||||
// Purpose:
|
// Purpose:
|
||||||
//----------------------------------------------------------------------------------------------------
|
//----------------------------------------------------------------------------------------------------
|
||||||
public bool IsItTimeToRestart()
|
stock bool IsItTimeToRestartNight()
|
||||||
|
{
|
||||||
|
if (GetEngineTime() < (3600 * 12))
|
||||||
|
return false;
|
||||||
|
|
||||||
|
int iTime = GetTime();
|
||||||
|
int iHour;
|
||||||
|
char sTime[32];
|
||||||
|
|
||||||
|
FormatTime(sTime, sizeof(sTime), "%H", iTime);
|
||||||
|
|
||||||
|
iHour = StringToInt(sTime[0]);
|
||||||
|
|
||||||
|
if (iHour >= 3 && iHour < 8)
|
||||||
|
return true;
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------------------------------------
|
||||||
|
// Purpose:
|
||||||
|
//----------------------------------------------------------------------------------------------------
|
||||||
|
public bool IsItTimeToRestartForced()
|
||||||
{
|
{
|
||||||
if(g_bRestart)
|
if(g_bRestart)
|
||||||
return true;
|
return true;
|
||||||
@ -127,20 +161,6 @@ public bool IsItTimeToRestart()
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
//----------------------------------------------------------------------------------------------------
|
|
||||||
// Purpose:
|
|
||||||
//----------------------------------------------------------------------------------------------------
|
|
||||||
public Action BlockMapSwitch(int args)
|
|
||||||
{
|
|
||||||
if (!g_bRestart)
|
|
||||||
return Plugin_Continue;
|
|
||||||
|
|
||||||
char sMap[64];
|
|
||||||
GetCmdArg(1, sMap, sizeof(sMap));
|
|
||||||
PrepareRestart(sMap);
|
|
||||||
return Plugin_Handled;
|
|
||||||
}
|
|
||||||
|
|
||||||
//----------------------------------------------------------------------------------------------------
|
//----------------------------------------------------------------------------------------------------
|
||||||
// Purpose:
|
// Purpose:
|
||||||
//----------------------------------------------------------------------------------------------------
|
//----------------------------------------------------------------------------------------------------
|
||||||
@ -176,6 +196,40 @@ public void PrepareRestart(char[] sMap)
|
|||||||
RequestFrame(Restart);
|
RequestFrame(Restart);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------------------------------------
|
||||||
|
// Purpose:
|
||||||
|
//----------------------------------------------------------------------------------------------------
|
||||||
|
public void PrepareRestartNight()
|
||||||
|
{
|
||||||
|
NotifyAdmins();
|
||||||
|
|
||||||
|
g_fCumulativeUptime += GetEngineTime();
|
||||||
|
|
||||||
|
char sUptime[64];
|
||||||
|
FloatToString(g_fCumulativeUptime, sUptime, sizeof(sUptime));
|
||||||
|
File UptimeFile = OpenFile("uptime.txt", "w");
|
||||||
|
UptimeFile.WriteLine(sUptime);
|
||||||
|
delete UptimeFile;
|
||||||
|
|
||||||
|
char sMap[64];
|
||||||
|
GetCurrentMap(sMap, sizeof(sMap));
|
||||||
|
char sMapFile[68];
|
||||||
|
Format(sMapFile, sizeof(sMapFile), "map %s", sMap);
|
||||||
|
DeleteFile("cfg/defaultmap.cfg");
|
||||||
|
File NextmapFile = OpenFile("cfg/defaultmap.cfg", "w");
|
||||||
|
NextmapFile.WriteLine(sMapFile);
|
||||||
|
delete NextmapFile;
|
||||||
|
|
||||||
|
SimulateMapEnd();
|
||||||
|
for(int i = 1; i <= MaxClients; i++)
|
||||||
|
{
|
||||||
|
if(IsClientConnected(i) && !IsFakeClient(i))
|
||||||
|
ClientCommand(i, "retry");
|
||||||
|
}
|
||||||
|
LogToFile("addons/sourcemod/logs/restarts.log", "Successfully night-restarted the Server.");
|
||||||
|
RequestFrame(Restart);
|
||||||
|
}
|
||||||
|
|
||||||
//----------------------------------------------------------------------------------------------------
|
//----------------------------------------------------------------------------------------------------
|
||||||
// Purpose:
|
// Purpose:
|
||||||
//----------------------------------------------------------------------------------------------------
|
//----------------------------------------------------------------------------------------------------
|
||||||
@ -184,6 +238,20 @@ public void Restart()
|
|||||||
ServerCommand("_restart");
|
ServerCommand("_restart");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------------------------------------
|
||||||
|
// Purpose:
|
||||||
|
//----------------------------------------------------------------------------------------------------
|
||||||
|
public Action BlockMapSwitch(int args)
|
||||||
|
{
|
||||||
|
if (!g_bRestart)
|
||||||
|
return Plugin_Continue;
|
||||||
|
|
||||||
|
char sMap[64];
|
||||||
|
GetCmdArg(1, sMap, sizeof(sMap));
|
||||||
|
PrepareRestart(sMap);
|
||||||
|
return Plugin_Handled;
|
||||||
|
}
|
||||||
|
|
||||||
//----------------------------------------------------------------------------------------------------
|
//----------------------------------------------------------------------------------------------------
|
||||||
// Purpose:
|
// Purpose:
|
||||||
//----------------------------------------------------------------------------------------------------
|
//----------------------------------------------------------------------------------------------------
|
||||||
|
Loading…
Reference in New Issue
Block a user