void Cvar_Set_ex_f (void) { cvar_t *var; char *var_name; char *st = NULL; char text_exp[1024]; if (Cmd_Argc() != 3) { Com_Printf ("usage: set_ex <cvar> <value>\n"); return; } var_name = Cmd_Argv (1); var = Cvar_Find (var_name); if ( !var ) { if (Cmd_Exists(var_name)) { Com_Printf ("\"%s\" is a command\n", var_name); return; } var = Cvar_Create(var_name, "", 0); } Cmd_ExpandString( Cmd_Argv(2), text_exp); st = TP_ParseMacroString( text_exp ); st = TP_ParseFunChars(st, false); Cvar_Set (var, st ); }
/* =============== CL_Say Handles both say and say_team =============== */ void CL_Say (qbool team) { extern cvar_t cl_fakename; char text[1024], sendtext[1024], *s; if (Cmd_Argc() < 2) { if (team) Com_Printf ("say_team <text>: send a team message\n"); else Com_Printf ("say <text>: send a chat message\n"); return; } if (cls.state == ca_disconnected) { Com_Printf ("Can't \"%s\", not connected\n", Cmd_Argv(0)); return; } MSG_WriteByte (&cls.netchan.message, clc_stringcmd); SZ_Print (&cls.netchan.message, team ? "say_team " : "say "); s = TP_ParseMacroString (Cmd_Args()); strlcpy (text, TP_ParseFunChars (s, true), sizeof(text)); sendtext[0] = 0; if (team && !cl.spectator && cl_fakename.string[0] && !strchr(s, '\x0d') /* explicit $\ in message overrides cl_fakename */) { char buf[1024]; Cmd_ExpandString (cl_fakename.string, buf); strcpy (buf, TP_ParseMacroString (buf)); Q_snprintf (sendtext, sizeof(sendtext), "\x0d%s: ", TP_ParseFunChars(buf, true)); } strlcat (sendtext, text, sizeof(sendtext)); if (sendtext[0] < 32) SZ_Print (&cls.netchan.message, "\""); // add quotes so that old servers parse the message correctly SZ_Print (&cls.netchan.message, sendtext); if (sendtext[0] < 32) SZ_Print (&cls.netchan.message, "\""); // add quotes so that old servers parse the message correctly }
void QTV_ForwardToServerEx (qbool skip_if_no_params, qbool use_first_argument) { char data[1024 + 100] = {0}, text[1024], *s; sizebuf_t buf; if ( cls.mvdplayback != QTV_PLAYBACK || !playbackfile /* || cls.qtv_ezquake_ext & QTV_EZQUAKE_EXT_CLC_STRINGCMD ???*/ ) return; if (skip_if_no_params) if (Cmd_Argc() < 2) return; // lowercase command for (s = Cmd_Argv(0); *s; s++) *s = (char) tolower(*s); if (cls.state == ca_disconnected) { Com_Printf ("Can't \"%s\", not connected\n", Cmd_Argv(0)); return; } if (strcmp(Cmd_Argv(0), "say_team") == 0 && !qtv_say_team.integer) { Com_Printf("Cannot send team messages. Use qtv_say_team 1 to override.\n"); return; } SZ_Init(&buf, (byte*) data, sizeof(data)); s = TP_ParseMacroString (Cmd_Args()); s = TP_ParseFunChars (s, true); text[0] = 0; // *cat is dangerous, ensure we empty buffer before use it if (use_first_argument) strlcat(text, Cmd_Argv(0), sizeof(text)); if (s[0]) { strlcat(text, " ", sizeof(text)); strlcat(text, s, sizeof(text)); } MSG_WriteShort (&buf, 2 + 1 + strlen(text) + 1); // short + byte + null terminated string MSG_WriteByte (&buf, qtv_clc_stringcmd); MSG_WriteString (&buf, text); VFS_WRITE(playbackfile, buf.data, buf.cursize); }
/* ================== CL_UserinfoChanged Cvar system calls this when a CVAR_USERINFO cvar changes ================== */ void CL_UserinfoChanged (char *key, char *string) { char *s; s = TP_ParseFunChars (string, false); if (strcmp(s, Info_ValueForKey (cls.userinfo, key))) { Info_SetValueForKey (cls.userinfo, key, s, MAX_INFO_STRING); if (cls.state >= ca_connected) { MSG_WriteByte (&cls.netchan.message, clc_stringcmd); SZ_Print (&cls.netchan.message, va("setinfo \"%s\" \"%s\"\n", key, s)); } } }
void MVD_Status_Announcer(int i, int z){ char *pn; vec3_t *pl; pn=mvd_new_info[i].p_info->name; pl=&mvd_new_info[i].p_state->origin; if (mvd_new_info[i].mvdinfo.itemstats[z].mention==1) { mvd_new_info[i].mvdinfo.itemstats[z].mention = 0; if (!mvd_moreinfo.integer) return; switch (z) { case 2: Com_Printf("%s Took %s @ %s\n",pn, tp_name_ssg.string,TP_ParseFunChars(TP_LocationName(*pl),false));break; case 3: Com_Printf("%s Took %s @ %s\n",pn, tp_name_ng.string,TP_ParseFunChars(TP_LocationName(*pl),false));break; case 4: Com_Printf("%s Took %s @ %s\n",pn, tp_name_sng.string,TP_ParseFunChars(TP_LocationName(*pl),false));break; case 5: Com_Printf("%s Took %s @ %s\n",pn, tp_name_gl.string,TP_ParseFunChars(TP_LocationName(*pl),false));break; case 6: Com_Printf("%s Took %s @ %s\n",pn, tp_name_rl.string,TP_ParseFunChars(TP_LocationName(*pl),false));break; case 7: Com_Printf("%s Took %s @ %s\n",pn, tp_name_lg.string,TP_ParseFunChars(TP_LocationName(*pl),false));break; case 8: Com_Printf("%s Took %s @ %s\n",pn, tp_name_ring.string,TP_ParseFunChars(TP_LocationName(*pl),false));break; case 9: Com_Printf("%s Took %s @ %s\n",pn, tp_name_quad.string,TP_ParseFunChars(TP_LocationName(*pl),false));break; case 10: Com_Printf("%s Took %s @ %s\n",pn, tp_name_pent.string,TP_ParseFunChars(TP_LocationName(*pl),false));break; case 11: Com_Printf("%s Took %s @ %s\n",pn, tp_name_ga.string,TP_ParseFunChars(TP_LocationName(*pl),false));break; case 12: Com_Printf("%s Took %s @ %s\n",pn, tp_name_ya.string,TP_ParseFunChars(TP_LocationName(*pl),false));break; case 13: Com_Printf("%s Took %s @ %s\n",pn, tp_name_ra.string,TP_ParseFunChars(TP_LocationName(*pl),false));break; case 14: Com_Printf("%s Took %s @ %s\n",pn, tp_name_mh.string,TP_ParseFunChars(TP_LocationName(*pl),false));break; } } else if (mvd_new_info[i].mvdinfo.itemstats[z].mention==-1) { mvd_new_info[i].mvdinfo.itemstats[z].mention = 0; if (!mvd_moreinfo.integer) return; switch (z) { case 5: Com_Printf("%s Lost %s @ %s\n",pn, tp_name_gl.string,TP_ParseFunChars(TP_LocationName(*pl),false));break; case 6: Com_Printf("%s Lost %s @ %s\n",pn, tp_name_rl.string,TP_ParseFunChars(TP_LocationName(*pl),false));break; case 7: Com_Printf("%s Lost %s @ %s\n",pn, tp_name_lg.string,TP_ParseFunChars(TP_LocationName(*pl),false));break; case 8: Com_Printf("%s Lost %s @ %s\n",pn, tp_name_ring.string,TP_ParseFunChars(TP_LocationName(*pl),false));break; case 9: Com_Printf("%s Lost %s @ %s\n",pn, tp_name_quad.string,TP_ParseFunChars(TP_LocationName(*pl),false));break; case 10: if (mvd_new_info[i].mvdinfo.itemstats[QUAD_INFO].starttime - cls.demotime < 30) { Com_Printf("%s Lost %s @ %s\n",pn, tp_name_pent.string,TP_ParseFunChars(TP_LocationName(*pl),false));break; } else { Com_Printf("%s's %s ended\n",pn, tp_name_pent.string,TP_ParseFunChars(TP_LocationName(*pl),false));break; } case 11: Com_Printf("%s Lost %s @ %s\n",pn, tp_name_ga.string,TP_ParseFunChars(TP_LocationName(*pl),false));break; case 12: Com_Printf("%s Lost %s @ %s\n",pn, tp_name_ya.string,TP_ParseFunChars(TP_LocationName(*pl),false));break; case 13: Com_Printf("%s Lost %s @ %s\n",pn, tp_name_ra.string,TP_ParseFunChars(TP_LocationName(*pl),false));break; case 14: Com_Printf("%s Lost %s @ %s\n",pn, tp_name_mh.string,TP_ParseFunChars(TP_LocationName(*pl),false));break; } } }