void SV_StopDemoRecording(client_t *client) { prvm_prog_t *prog = SVVM_prog; sizebuf_t buf; unsigned char bufdata[64]; if(client->sv_demo_file == NULL) return; buf.data = bufdata; buf.maxsize = sizeof(bufdata); SZ_Clear(&buf); MSG_WriteByte(&buf, svc_disconnect); SV_WriteDemoMessage(client, &buf, false); if (sv_autodemo_perclient_discardable.integer && PRVM_serveredictfloat(client->edict, discardabledemo)) { FS_RemoveOnClose(client->sv_demo_file); Con_Printf("Stopped recording discardable demo for # %d (%s)\n", PRVM_NUM_FOR_EDICT(client->edict), client->netaddress); } else Con_Printf("Stopped recording demo for # %d (%s)\n", PRVM_NUM_FOR_EDICT(client->edict), client->netaddress); FS_Close(client->sv_demo_file); client->sv_demo_file = NULL; }
void SV_WriteNetnameIntoDemo(client_t *client) { // This "pseudo packet" is written so a program can easily find out whose demo this is sizebuf_t buf; unsigned char bufdata[MAX_SCOREBOARDNAME + 64]; if(client->sv_demo_file == NULL) return; buf.data = bufdata; buf.maxsize = sizeof(bufdata); SZ_Clear(&buf); MSG_WriteByte(&buf, svc_stufftext); MSG_WriteUnterminatedString(&buf, "\n// this demo contains the point of view of: "); MSG_WriteUnterminatedString(&buf, client->name); MSG_WriteString(&buf, "\n"); SV_WriteDemoMessage(client, &buf, false); }
void SV_StopDemoRecording(client_t *client) { sizebuf_t buf; unsigned char bufdata[64]; if(client->sv_demo_file == NULL) return; buf.data = bufdata; buf.maxsize = sizeof(bufdata); SZ_Clear(&buf); MSG_WriteByte(&buf, svc_disconnect); SV_WriteDemoMessage(client, &buf, false); FS_Close(client->sv_demo_file); client->sv_demo_file = NULL; Con_Printf("Stopped recording demo for # %d (%s)\n", PRVM_NUM_FOR_EDICT(client->edict), client->netaddress); }