// Dumps end-of-match info void G_matchInfoDump(unsigned int dwDumpType) { int i, ref; gentity_t *ent; gclient_t *cl; for (i = 0; i < level.numConnectedClients; i++) { ref = level.sortedClients[i]; ent = &g_entities[ref]; cl = ent->client; if (cl->pers.connected != CON_CONNECTED) { continue; } if (dwDumpType == EOM_WEAPONSTATS) { // If client wants to write stats to a file, don't auto send this stuff if (!(cl->pers.clientFlags & CGF_STATSDUMP)) { if ((cl->pers.autoaction & AA_STATSALL) #ifdef FEATURE_MULTIVIEW || cl->pers.mvCount > 0 #endif ) { G_statsall_cmd(ent, 0, qfalse); } else if (cl->sess.sessionTeam != TEAM_SPECTATOR) { if (cl->pers.autoaction & AA_STATSTEAM) { G_statsall_cmd(ent, cl->sess.sessionTeam, qfalse); // Currently broken.. need to support the overloading of dwCommandID } else { CP(va("ws %s\n", G_createStats(ent))); } } else if (cl->sess.spectatorState != SPECTATOR_FREE) { int pid = cl->sess.spectatorClient; if ((cl->pers.autoaction & AA_STATSTEAM)) { G_statsall_cmd(ent, level.clients[pid].sess.sessionTeam, qfalse); // Currently broken.. need to support the overloading of dwCommandID } else { CP(va("ws %s\n", G_createStats(g_entities + pid))); } } } // Log it if (cl->sess.sessionTeam != TEAM_SPECTATOR) { G_LogPrintf("WeaponStats: %s\n", G_createStats(ent)); } } else if (dwDumpType == EOM_MATCHINFO) { if (!(cl->pers.clientFlags & CGF_STATSDUMP)) { G_printMatchInfo(ent); } if (g_gametype.integer == GT_WOLF_STOPWATCH) { if (g_currentRound.integer == 1) // We've already missed the switch { CP(va("print \">>> ^3Clock set to: %d:%02d\n\n\n\"", g_nextTimeLimit.integer, (int)(60.0 * (float)(g_nextTimeLimit.value - g_nextTimeLimit.integer)))); } else { float val = (float)((level.timeCurrent - (level.startTime + level.time - level.intermissiontime)) / 60000.0); if (val < g_timelimit.value) { CP(va("print \">>> ^3Objective reached at %d:%02d (original: %d:%02d)\n\n\n\"", (int)val, (int)(60.0 * (val - (int)val)), g_timelimit.integer, (int)(60.0 * (float)(g_timelimit.value - g_timelimit.integer)))); } else { CP(va("print \">>> ^3Objective NOT reached in time (%d:%02d)\n\n\n\"", g_timelimit.integer, (int)(60.0 * (float)(g_timelimit.value - g_timelimit.integer)))); } } } } } }
// ************** SCORES // // Shows match stats to the requesting client. void G_scores_cmd(gentity_t *ent, unsigned int dwCommand, qboolean fValue) { G_printMatchInfo(ent); }