/** * Handle the printing of text entered into the console or redirected there * by any other means. Uses printf() style format, for more information look * at IConsolePrint() */ void CDECL IConsolePrintF(TextColour colour_code, const char *format, ...) { assert(IsValidConsoleColour(colour_code)); va_list va; char buf[ICON_MAX_STREAMSIZE]; va_start(va, format); vseprintf(buf, lastof(buf), format, va); va_end(va); IConsolePrint(colour_code, buf); }
DEF_GAME_RECEIVE_COMMAND(Client, PACKET_SERVER_RCON) { if (this->status < STATUS_AUTHORIZED) return NETWORK_RECV_STATUS_MALFORMED_PACKET; TextColour colour_code = (TextColour)p->Recv_uint16(); if (!IsValidConsoleColour(colour_code)) return NETWORK_RECV_STATUS_MALFORMED_PACKET; char rcon_out[NETWORK_RCONCOMMAND_LENGTH]; p->Recv_string(rcon_out, sizeof(rcon_out)); IConsolePrint(colour_code, rcon_out); return NETWORK_RECV_STATUS_OKAY; }
/** * Handle the printing of text entered into the console or redirected there * by any other means. Text can be redirected to other clients in a network game * as well as to a logfile. If the network server is a dedicated server, all activities * are also logged. All lines to print are added to a temporary buffer which can be * used as a history to print them onscreen * @param colour_code the colour of the command. Red in case of errors, etc. * @param string the message entered or output on the console (notice, error, etc.) */ void IConsolePrint(TextColour colour_code, const char *string) { assert(IsValidConsoleColour(colour_code)); char *str; #ifdef ENABLE_NETWORK if (_redirect_console_to_client != INVALID_CLIENT_ID) { /* Redirect the string to the client */ NetworkServerSendRcon(_redirect_console_to_client, colour_code, string); return; } if (_redirect_console_to_admin != INVALID_ADMIN_ID) { NetworkServerSendAdminRcon(_redirect_console_to_admin, colour_code, string); return; } #endif /* Create a copy of the string, strip if of colours and invalid * characters and (when applicable) assign it to the console buffer */ str = stredup(string); str_strip_colours(str); str_validate(str, str + strlen(str)); if (_network_dedicated) { #ifdef ENABLE_NETWORK NetworkAdminConsole("console", str); #endif /* ENABLE_NETWORK */ fprintf(stdout, "%s%s\n", GetLogPrefix(), str); fflush(stdout); IConsoleWriteToLogFile(str); free(str); // free duplicated string since it's not used anymore return; } IConsoleWriteToLogFile(str); IConsoleGUIPrint(colour_code, str); }