// will return short version of player's nick for teamplay messages LOCAL char *TP_ShortNick(void) { static char buf[64]; if (*(cl_fakename.string)) return ""; else { if (*(Cvar_String("nick"))) { // isn't cl_fakename and name enough? snprintf(buf, sizeof(buf), "$\\%s%s", Cvar_String("nick"), Cvar_String("cl_fakename_suffix")); } else { snprintf(buf, sizeof(buf), "$\\%.3s%s", TP_PlayerName(), Cvar_String("cl_fakename_suffix")); } return buf; } }
/* ==================== CL_EasyRecord_f easyrecord [demoname] ==================== */ void CL_EasyRecord_f (void) { int c; char name[1024]; char name2[MAX_OSPATH*2]; int i; char *p; FILE *f; c = Cmd_Argc(); if (c > 2) { Com_Printf ("easyrecord <demoname>\n"); return; } if (cls.state != ca_active) { Com_Printf ("You must be connected to record.\n"); return; } if (cls.demorecording) CL_Stop_f(); /// FIXME: check buffer sizes!!! if (c == 2) Q_snprintfz (name, sizeof(name), "%s", Cmd_Argv(1)); else if (cl.spectator) { // FIXME: if tracking a player, use his name Q_snprintfz (name, sizeof(name), "spec_%s_%s", TP_PlayerName(), TP_MapName()); } else { // guess game type and write demo name i = TP_CountPlayers(); if (cl.teamplay && i >= 3) { // Teamplay Q_snprintfz (name, sizeof(name), "%s_%s_vs_%s_%s", TP_PlayerName(), TP_PlayerTeam(), TP_EnemyTeam(), TP_MapName()); } else { if (i == 2) { // Duel Q_snprintfz (name, sizeof(name), "%s_vs_%s_%s", TP_PlayerName(), TP_EnemyName(), TP_MapName()); } else if (i > 2) { // FFA Q_snprintfz (name, sizeof(name), "%s_ffa_%s", TP_PlayerName(), TP_MapName()); } else { // one player Q_snprintfz (name, sizeof(name), "%s_%s", TP_PlayerName(), TP_MapName()); } } } // Make sure the filename doesn't contain illegal characters for (p = name; *p; p++) { char c; *p &= 0x7F; // strip high bit c = *p; if (c <= ' ' || c == '?' || c == '*' || c == '\\' || c == '/' || c == ':' || c == '<' || c == '>' || c == '"') *p = '_'; } strlcpy (name, va("%s/%s", cls.gamedir, name), MAX_OSPATH); // find a filename that doesn't exist yet strcpy (name2, name); COM_ForceExtension (name2, ".qwd"); f = fopen (name2, "rb"); if (f) { i = 0; do { fclose (f); strcpy (name2, va("%s_%02i", name, i)); COM_ForceExtension (name2, ".qwd"); f = fopen (name2, "rb"); i++; } while (f); } // // open the demo file // cls.demofile = fopen (name2, "wb"); if (!cls.demofile) { Com_Printf ("ERROR: couldn't open.\n"); return; } Com_Printf ("recording to %s.\n", name2); CL_Record (); }