AutoRecorder: Record in batches of 30 minutes.

Restarts recording at roundstarts, if recording for longer then 30
minutes.
This commit is contained in:
zaCade 2018-05-26 17:42:09 +02:00
parent 8b8d9abd4c
commit a592567ca7

View File

@ -10,9 +10,12 @@ ConVar g_hTimeStop;
ConVar g_hFinishMap;
ConVar g_hDemoPath;
bool g_bRestartRecording = false;
bool g_bIsRecording = false;
bool g_bIsManual = false;
int g_iRestartRecording;
// Default: o=rx,g=rx,u=rwx | 755
#define DIRECTORY_PERMISSIONS (FPERM_O_READ|FPERM_O_EXEC | FPERM_G_READ|FPERM_G_EXEC | FPERM_U_READ|FPERM_U_WRITE|FPERM_U_EXEC)
@ -40,6 +43,8 @@ public void OnPluginStart()
RegAdminCmd("sm_record", Command_Record, ADMFLAG_KICK, "Starts a SourceTV demo");
RegAdminCmd("sm_stoprecord", Command_StopRecord, ADMFLAG_KICK, "Stops the current SourceTV demo");
HookEvent("round_start", OnRoundStart);
g_hTvEnabled = FindConVar("tv_enable");
static char sPath[PLATFORM_MAX_PATH];
@ -60,6 +65,15 @@ public void OnPluginStart()
CheckStatus();
}
public void OnRoundStart(Event hEvent, const char[] sEvent, bool bDontBroadcast)
{
if(g_bRestartRecording && g_iRestartRecording <= GetTime())
{
StopRecord();
CheckStatus();
}
}
public void OnConVarChanged(ConVar convar, const char[] oldValue, const char[] newValue)
{
if(convar == g_hDemoPath)
@ -77,6 +91,9 @@ public void OnMapEnd()
{
StopRecord();
g_bIsManual = false;
g_bRestartRecording = false;
g_iRestartRecording = -1;
}
}
@ -191,6 +208,9 @@ void StartRecord()
g_bIsRecording = true;
LogMessage("Recording to auto-%s-%s.dem", sTime, sMap);
g_bRestartRecording = true;
g_iRestartRecording = GetTime() + 1800;
}
}
@ -200,5 +220,8 @@ void StopRecord()
{
ServerCommand("tv_stoprecord");
g_bIsRecording = false;
g_bRestartRecording = false;
g_iRestartRecording = -1;
}
}