From a592567ca741147d07b5e9efa786b1be74b41b3b Mon Sep 17 00:00:00 2001 From: zaCade Date: Sat, 26 May 2018 17:42:09 +0200 Subject: [PATCH] AutoRecorder: Record in batches of 30 minutes. Restarts recording at roundstarts, if recording for longer then 30 minutes. --- AutoRecorder/scripting/AutoRecorder.sp | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/AutoRecorder/scripting/AutoRecorder.sp b/AutoRecorder/scripting/AutoRecorder.sp index b2f2f284..3b9feb86 100644 --- a/AutoRecorder/scripting/AutoRecorder.sp +++ b/AutoRecorder/scripting/AutoRecorder.sp @@ -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; } }