Index: code/client/cl_cgame.c
===================================================================
--- code/client/cl_cgame.c (revision 263)
+++ code/client/cl_cgame.c (working copy)
@@ -456,11 +456,52 @@
====================
*/
intptr_t CL_CgameSystemCalls( intptr_t *args ) {
+ char timestamp[MAX_OSPATH]; //Required for auto Screenshot&ConsoleDump stuff
switch( args[0] ) {
case CG_PRINT:
#ifndef SMOKINGUNS
Com_Printf( "%s", (const char*)VMA(1) );
#else
+ if (cl_autoScreenshotJPEG->integer || cl_autoScreenshot->integer || cl_autoConsoleDump->integer) {
+ if (Q_strncmp(VMA(1),Cvar_VariableString("g_blueteamname"),strlen(Cvar_VariableString("g_blueteamname"))) == 0) {
+ if (Q_strncmp((const char*)VMA(1)+strlen(Cvar_VariableString("g_blueteamname"))," hit the scorelimit.",20) == 0) {
+ CL_CurrentTimestamp(timestamp);
+ if (cl_autoConsoleDump->integer) {
+ Cbuf_ExecuteText( EXEC_INSERT, va( "wait %d; condump \"%s.txt\"",cl_autoScreenshotTime->integer, timestamp) );
+ }
+ if (cl_autoScreenshotJPEG->integer) {
+ Cbuf_ExecuteText( EXEC_INSERT, va( "wait %d; screenshotJPEG \"%s\"",cl_autoScreenshotTime->integer, timestamp ) );
+ }
+ if (cl_autoScreenshot->integer) {
+ Cbuf_ExecuteText( EXEC_INSERT, va( "wait %d; screenshot \"%s\"",cl_autoScreenshotTime->integer+1, timestamp ) );
+ }
+ }
+ } else if (Q_strncmp(VMA(1),Cvar_VariableString("g_redteamname"),strlen(Cvar_VariableString("g_redteamname"))) == 0) {
+ if (Q_strncmp((const char*)VMA(1)+strlen(Cvar_VariableString("g_redteamname"))," hit the scorelimit.",20) == 0) {
+ CL_CurrentTimestamp(timestamp);
+ if (cl_autoConsoleDump->integer) {
+ Cbuf_ExecuteText( EXEC_INSERT, va( "wait %d; condump \"%s.txt\"",cl_autoScreenshotTime->integer, timestamp) );
+ }
+ if (cl_autoScreenshotJPEG->integer) {
+ Cbuf_ExecuteText( EXEC_INSERT, va( "wait %d; screenshotJPEG \"%s\"",cl_autoScreenshotTime->integer, timestamp ) );
+ }
+ if (cl_autoScreenshot->integer) {
+ Cbuf_ExecuteText( EXEC_INSERT, va( "wait %d; screenshot \"%s\"",cl_autoScreenshotTime->integer+1, timestamp ) );
+ }
+ }
+ } else if (Q_strncmp(VMA(1),"Timelimit hit.",14) == 0) {
+ CL_CurrentTimestamp(timestamp);
+ if (cl_autoConsoleDump->integer) {
+ Cbuf_ExecuteText( EXEC_INSERT, va( "wait %d; condump \"%s.txt\"",cl_autoScreenshotTime->integer, timestamp) );
+ }
+ if (cl_autoScreenshotJPEG->integer) {
+ Cbuf_ExecuteText( EXEC_INSERT, va( "wait %d; screenshotJPEG \"%s\"",cl_autoScreenshotTime->integer, timestamp ) );
+ }
+ if (cl_autoScreenshot->integer) {
+ Cbuf_ExecuteText( EXEC_INSERT, va( "wait %d; screenshot \"%s\"",cl_autoScreenshotTime->integer+1, timestamp ) );
+ }
+ }
+ }
Com_Printf( "%s", (const char*)fixBadWords( VMA(1) ) );
#endif
return 0;
Index: code/client/cl_main.c
===================================================================
--- code/client/cl_main.c (revision 263)
+++ code/client/cl_main.c (working copy)
@@ -66,6 +66,12 @@
cvar_t *cl_timedemo;
cvar_t *cl_timedemoLog;
cvar_t *cl_autoRecordDemo;
+cvar_t *cl_autoDemoName;
+cvar_t *cl_hideDemoMessage;
+cvar_t *cl_autoScreenshot;
+cvar_t *cl_autoScreenshotJPEG;
+cvar_t *cl_autoConsoleDump;
+cvar_t *cl_autoScreenshotTime;
cvar_t *cl_aviFrameRate;
cvar_t *cl_aviMotionJpeg;
cvar_t *cl_forceavidemo;
@@ -531,6 +537,37 @@
Com_Printf ("Stopped demo.\n");
}
+void CL_CurrentTimestamp(char *fileName) {
+ //Build the name:
+ qtime_t now;
+ char *nowString;
+ char *p;
+ char mapName[ MAX_QPATH ];
+ char serverName[ MAX_OSPATH ];
+
+ Com_RealTime( &now );
+ nowString = va( "%04d%02d%02d-%02d%02d%02d",
+ 1900 + now.tm_year,
+ 1 + now.tm_mon,
+ now.tm_mday,
+ now.tm_hour,
+ now.tm_min,
+ now.tm_sec );
+
+ Q_strncpyz( serverName, cls.servername, MAX_OSPATH );
+ // Replace the ":" in the address as it is not a valid
+ // file name character
+ p = strstr( serverName, ":" );
+ if( p ) {
+ *p = '.';
+ }
+
+ Q_strncpyz( mapName, COM_SkipPath( cl.mapname ), sizeof( cl.mapname ) );
+ COM_StripExtension(mapName, mapName, sizeof(mapName));
+
+ Com_sprintf (fileName, MAX_OSPATH, "%s-%s-%s-%s",Cvar_VariableString("name"),nowString, serverName, mapName);
+}
+
/*
==================
CL_DemoFilename
@@ -601,15 +638,21 @@
Q_strncpyz( demoName, s, sizeof( demoName ) );
Com_sprintf (name, sizeof(name), "demos/%s.dm_%d", demoName, PROTOCOL_VERSION );
} else {
- int number;
-
- // scan for a free demo name
- for ( number = 0 ; number <= 9999 ; number++ ) {
- CL_DemoFilename( number, demoName );
+ if (cl_autoDemoName->integer) {
+ CL_CurrentTimestamp(demoName);
Com_sprintf (name, sizeof(name), "demos/%s.dm_%d", demoName, PROTOCOL_VERSION );
+ } else {
+ int number;
+ // scan for a free demo name
+ for ( number = 0 ; number <= 9999 ; number++ ) {
+ CL_DemoFilename( number, demoName );
+ Com_sprintf (name, sizeof(name), "demos/%s.dm_%d", demoName, PROTOCOL_VERSION );
- if (!FS_FileExists(name))
- break; // file doesn't exist
+ len = FS_ReadFile( name, NULL );
+ if ( len <= 0 ) {
+ break; // file doesn't exist
+ }
+ }
}
}
@@ -2665,34 +2708,10 @@
if( cl_autoRecordDemo->integer ) {
if( cls.state == CA_ACTIVE && !clc.demorecording && !clc.demoplaying ) {
// If not recording a demo, and we should be, start one
- qtime_t now;
- char *nowString;
- char *p;
- char mapName[ MAX_QPATH ];
- char serverName[ MAX_OSPATH ];
+ char timestamp[MAX_OSPATH];
+ CL_CurrentTimestamp(timestamp);
- Com_RealTime( &now );
- nowString = va( "%04d%02d%02d%02d%02d%02d",
- 1900 + now.tm_year,
- 1 + now.tm_mon,
- now.tm_mday,
- now.tm_hour,
- now.tm_min,
- now.tm_sec );
-
- Q_strncpyz( serverName, cls.servername, MAX_OSPATH );
- // Replace the ":" in the address as it is not a valid
- // file name character
- p = strstr( serverName, ":" );
- if( p ) {
- *p = '.';
- }
-
- Q_strncpyz( mapName, COM_SkipPath( cl.mapname ), sizeof( cl.mapname ) );
- COM_StripExtension(mapName, mapName, sizeof(mapName));
-
- Cbuf_ExecuteText( EXEC_NOW,
- va( "record %s-%s-%s", nowString, serverName, mapName ) );
+ Cbuf_ExecuteText( EXEC_NOW, va( "record %s", timestamp) );
}
else if( cls.state != CA_ACTIVE && clc.demorecording ) {
// Recording, but not CA_ACTIVE, so stop recording
@@ -3105,6 +3124,12 @@
cl_timedemo = Cvar_Get ("timedemo", "0", 0);
cl_timedemoLog = Cvar_Get ("cl_timedemoLog", "", CVAR_ARCHIVE);
cl_autoRecordDemo = Cvar_Get ("cl_autoRecordDemo", "0", CVAR_ARCHIVE);
+ cl_autoDemoName = Cvar_Get ("cl_autoDemoName", "0", CVAR_ARCHIVE);
+ cl_hideDemoMessage = Cvar_Get ("cl_hideDemoMessage", "0", CVAR_ARCHIVE);
+ cl_autoScreenshot = Cvar_Get ("cl_autoScreenshot", "0", CVAR_ARCHIVE);
+ cl_autoScreenshotJPEG = Cvar_Get ("cl_autoScreenshotJPEG", "0", CVAR_ARCHIVE);
+ cl_autoScreenshotTime = Cvar_Get ("cl_autoScreenshotTime", "260", CVAR_ARCHIVE);
+ cl_autoConsoleDump = Cvar_Get ("cl_autoConsoleDump", "0", CVAR_ARCHIVE);
cl_aviFrameRate = Cvar_Get ("cl_aviFrameRate", "25", CVAR_ARCHIVE);
cl_aviMotionJpeg = Cvar_Get ("cl_aviMotionJpeg", "1", CVAR_ARCHIVE);
cl_forceavidemo = Cvar_Get ("cl_forceavidemo", "0", 0);
Index: code/client/cl_scrn.c
===================================================================
--- code/client/cl_scrn.c (revision 263)
+++ code/client/cl_scrn.c (working copy)
@@ -530,7 +530,7 @@
case CA_ACTIVE:
// always supply STEREO_CENTER as vieworg offset is now done by the engine.
CL_CGameRendering(stereoFrame);
- SCR_DrawDemoRecording();
+ if (!cl_hideDemoMessage->integer)SCR_DrawDemoRecording();
#ifdef USE_VOIP
SCR_DrawVoipMeter();
#endif
Index: code/client/client.h
===================================================================
--- code/client/client.h (revision 263)
+++ code/client/client.h (working copy)
@@ -405,6 +405,12 @@
extern cvar_t *cl_lanForcePackets;
extern cvar_t *cl_autoRecordDemo;
+extern cvar_t *cl_autoDemoName;
+extern cvar_t *cl_hideDemoMessage;
+extern cvar_t *cl_autoScreenshot;
+extern cvar_t *cl_autoScreenshotJPEG;
+extern cvar_t *cl_autoScreenshotTime;
+extern cvar_t *cl_autoConsoleDump;
extern cvar_t *cl_consoleKeys;
@@ -449,6 +455,8 @@
void CL_ReadDemoMessage( void );
void CL_StopRecord_f(void);
+void CL_CurrentTimestamp(char *fileName);
+
void CL_InitDownloads(void);
void CL_NextDownload(void);