X-Git-Url: http://git.xonotic.org/?a=blobdiff_plain;f=qcsrc%2Fserver%2Fcommand%2Fsv_cmd.qc;h=81ef50aeda4a3120c08b71c2c80e77f09ead2c63;hb=1ba558d5de54105a1df52f0be896b53663862df6;hp=034bd6cb92cc37004d364ff67334f355855c287d;hpb=19c09c8cfc6a4cb71c07e63bf739b7720ec6b0a0;p=xonotic%2Fxonotic-data.pk3dir.git diff --git a/qcsrc/server/command/sv_cmd.qc b/qcsrc/server/command/sv_cmd.qc index 034bd6cb9..81ef50aed 100644 --- a/qcsrc/server/command/sv_cmd.qc +++ b/qcsrc/server/command/sv_cmd.qc @@ -1,35 +1,30 @@ #include "sv_cmd.qh" -#include "_mod.qh" +#include #include - -#include "banning.qh" -#include "cmd.qh" -#include "common.qh" -#include "getreplies.qh" -#include "radarmap.qh" - -#include "../anticheat.qh" -#include "../campaign.qh" -#include "../client.qh" -#include "../player.qh" -#include "../g_world.qh" -#include "../ipban.qh" -#include "../teamplay.qh" - -#include "../bot/api.qh" - -#include #include - -#include -#include #include +#include +#include #include #include #include - -#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include // used by GameCommand_make_mapinfo() void make_mapinfo_Think(entity this) @@ -133,8 +128,8 @@ void GameCommand_adminmsg(int request, int argc) sprint(client, strcat("\{1}\{13}^3", GetCallerName(NULL), "^7: ", admin_message, "\n")); } - successful = strcat(successful, (successful ? ", " : ""), playername(client, false)); - LOG_TRACE("Message sent to ", playername(client, false)); + successful = strcat(successful, (successful ? ", " : ""), playername(client.netname, client.team, false)); + LOG_TRACE("Message sent to ", playername(client.netname, client.team, false)); continue; } @@ -149,9 +144,9 @@ void GameCommand_adminmsg(int request, int argc) LOG_INFOF("Incorrect parameters for ^2%s^7", argv(0)); case CMD_REQUEST_USAGE: { - LOG_HELP("Usage:^3 sv_cmd adminmsg clients \"message\" [infobartime]"); - LOG_HELP(" 'clients' is a list (separated by commas) of player entity ID's or nicknames"); - LOG_HELP(" If infobartime is provided, the message will be sent to infobar."); + LOG_HELP("Usage:^3 sv_cmd adminmsg \"\" []"); + LOG_HELP(" is a list (separated by commas) of player entity ID's or nicknames"); + LOG_HELP(" If is provided, the message will be sent to infobar."); LOG_HELP(" Otherwise, it will just be sent as a centerprint message."); LOG_HELP("Examples: adminmsg 2,4 \"this infomessage will last for ten seconds\" 10"); LOG_HELP(" adminmsg 2,5 \"this message will be a centerprint\""); @@ -201,8 +196,8 @@ void GameCommand_allspec(int request, int argc) default: case CMD_REQUEST_USAGE: { - LOG_HELP("Usage:^3 sv_cmd allspec [reason]"); - LOG_HELP(" Where 'reason' is an optional argument for explanation of allspec command."); + LOG_HELP("Usage:^3 sv_cmd allspec []"); + LOG_HELP(" Where is an optional argument for explanation of allspec command."); LOG_HELP("See also: ^2moveplayer, shuffleteams^7"); return; } @@ -233,8 +228,8 @@ void GameCommand_anticheat(int request, int argc) LOG_INFOF("Incorrect parameters for ^2%s^7", argv(0)); case CMD_REQUEST_USAGE: { - LOG_HELP("Usage:^3 sv_cmd anticheat client"); - LOG_HELP(" 'client' is the entity number or name of the player."); + LOG_HELP("Usage:^3 sv_cmd anticheat "); + LOG_HELP(" is the entity number or name of the player."); return; } } @@ -435,10 +430,10 @@ void GameCommand_bot_cmd(int request, int argc, string command) LOG_INFOF("Incorrect parameters for ^2%s^7", argv(0)); case CMD_REQUEST_USAGE: { - LOG_HELP("Usage:^3 sv_cmd bot_cmd client command [argument]"); - LOG_HELP(" 'client' can be either the name of the bot or a progressive number (not the entity number!)"); + LOG_HELP("Usage:^3 sv_cmd bot_cmd []"); + LOG_HELP(" can be either the name of the bot or a progressive number (not the entity number!)"); LOG_HELP(" can also be '*' or 'all' to allow sending the command to all the bots"); - LOG_HELP(" For full list of commands, see bot_cmd help [command]."); + LOG_HELP(" For full list of commands, see bot_cmd help []."); LOG_HELP("Examples: sv_cmd bot_cmd 1 cc \"say something\""); LOG_HELP(" sv_cmd bot_cmd 1 presskey jump"); LOG_HELP(" sv_cmd bot_cmd * pause"); @@ -464,8 +459,8 @@ void GameCommand_cointoss(int request, int argc) default: case CMD_REQUEST_USAGE: { - LOG_HELP("Usage:^3 sv_cmd cointoss [result1 result2]"); - LOG_HELP(" Where 'result1' and 'result2' are user created options."); + LOG_HELP("Usage:^3 sv_cmd cointoss [ ]"); + LOG_HELP(" Where and are user created options."); return; } } @@ -505,10 +500,10 @@ void GameCommand_database(int request, int argc) LOG_INFOF("Incorrect parameters for ^2%s^7", argv(0)); case CMD_REQUEST_USAGE: { - LOG_HELP("Usage:^3 sv_cmd database action filename"); - LOG_HELP(" Where 'action' is the command to complete,"); - LOG_HELP(" and 'filename' is what it acts upon."); - LOG_HELP(" Full list of commands here: \"save, dump, load.\""); + LOG_HELP("Usage:^3 sv_cmd database "); + LOG_HELP(" Where is the command to complete,"); + LOG_HELP(" and is what it acts upon."); + LOG_HELP(" Full list of commands here: save, dump, load."); return; } } @@ -531,7 +526,7 @@ void GameCommand_defer_clear(int request, int argc) if (accepted > 0) { stuffcmd(client, "defer clear\n"); - LOG_INFO("defer clear stuffed to ", playername(client, false)); + LOG_INFO("defer clear stuffed to ", playername(client.netname, client.team, false)); } else { LOG_INFO("defer_clear: ", GetClientErrorString(accepted, argv(1)), "."); } @@ -543,8 +538,8 @@ void GameCommand_defer_clear(int request, int argc) LOG_INFOF("Incorrect parameters for ^2%s^7", argv(0)); case CMD_REQUEST_USAGE: { - LOG_HELP("Usage:^3 sv_cmd defer_clear client"); - LOG_HELP(" 'client' is the entity number or name of the player."); + LOG_HELP("Usage:^3 sv_cmd defer_clear "); + LOG_HELP(" is the entity number or name of the player."); LOG_HELP("See also: ^2defer_clear_all^7"); return; } @@ -598,10 +593,10 @@ void GameCommand_delrec(int request, int argc) // perhaps merge later with reco LOG_INFOF("Incorrect parameters for ^2%s^7", argv(0)); case CMD_REQUEST_USAGE: { - LOG_HELP("Usage:^3 sv_cmd delrec ranking [map]"); - LOG_HELP(" 'ranking' is which ranking level to clear up to, "); + LOG_HELP("Usage:^3 sv_cmd delrec []"); + LOG_HELP(" is which ranking level to clear up to, "); LOG_HELP(" it will clear all records up to nth place."); - LOG_HELP(" if 'map' is not provided it will use current map."); + LOG_HELP(" if is not provided it will use current map."); return; } } @@ -720,6 +715,11 @@ void GameCommand_gametype(int request, int argc) { case CMD_REQUEST_COMMAND: { + if (!world_initialized) + { + LOG_INFOF("This command works only when the server is running."); + return; + } if (argv(1) != "") { string s = argv(1); @@ -756,8 +756,8 @@ void GameCommand_gametype(int request, int argc) LOG_INFOF("Incorrect parameters for ^2%s^7", argv(0)); case CMD_REQUEST_USAGE: { - LOG_HELP("Usage:^3 sv_cmd gametype mode"); - LOG_HELP(" Where 'mode' is the gametype mode to switch to."); + LOG_HELP("Usage:^3 sv_cmd gametype "); + LOG_HELP(" Where is the gametype mode to switch to."); LOG_HELP("See also: ^2gotomap^7"); return; } @@ -793,15 +793,14 @@ void GameCommand_gettaginfo(int request, int argc) if (i) { v = gettaginfo(tmp_entity, i); - LOG_INFOF( - "model %s frame %s tag %s index %s parent %s", + LOG_HELPF("model %s frame %s tag %s index %s parent %s", tmp_entity.model, ftos(tmp_entity.frame), gettaginfo_name, ftos(i), ftos(gettaginfo_parent) ); - LOG_INFOF(" vector = %s %s %s", ftos(v.x), ftos(v.y), ftos(v.z)); - LOG_INFOF(" offset = %s %s %s", ftos(gettaginfo_offset.x), ftos(gettaginfo_offset.y), ftos(gettaginfo_offset.z)); - LOG_INFOF(" forward = %s %s %s", ftos(gettaginfo_forward.x), ftos(gettaginfo_forward.y), ftos(gettaginfo_forward.z)); - LOG_INFOF(" right = %s %s %s", ftos(gettaginfo_right.x), ftos(gettaginfo_right.y), ftos(gettaginfo_right.z)); - LOG_INFOF(" up = %s %s %s", ftos(gettaginfo_up.x), ftos(gettaginfo_up.y), ftos(gettaginfo_up.z)); + LOG_HELPF(" vector = %s %s %s", ftos(v.x), ftos(v.y), ftos(v.z)); + LOG_HELPF(" offset = %s %s %s", ftos(gettaginfo_offset.x), ftos(gettaginfo_offset.y), ftos(gettaginfo_offset.z)); + LOG_HELPF(" forward = %s %s %s", ftos(gettaginfo_forward.x), ftos(gettaginfo_forward.y), ftos(gettaginfo_forward.z)); + LOG_HELPF(" right = %s %s %s", ftos(gettaginfo_right.x), ftos(gettaginfo_right.y), ftos(gettaginfo_right.z)); + LOG_HELPF(" up = %s %s %s", ftos(gettaginfo_up.x), ftos(gettaginfo_up.y), ftos(gettaginfo_up.z)); if (argc >= 6) { v.y = -v.y; @@ -822,7 +821,7 @@ void GameCommand_gettaginfo(int request, int argc) LOG_INFOF("Incorrect parameters for ^2%s^7", argv(0)); case CMD_REQUEST_USAGE: { - LOG_HELP("Usage:^3 sv_cmd gettaginfo model frame index [command one] [command two]"); + LOG_HELP("Usage:^3 sv_cmd gettaginfo [] []"); LOG_HELP("See also: ^2bbox, trace^7"); return; } @@ -881,7 +880,7 @@ void GameCommand_animbench(int request, int argc) LOG_INFOF("Incorrect parameters for ^2%s^7", argv(0)); case CMD_REQUEST_USAGE: { - LOG_HELP("Usage:^3 sv_cmd gettaginfo model frame index [command one] [command two]"); + LOG_HELP("Usage:^3 sv_cmd animbench "); LOG_HELP("See also: ^2bbox, trace^7"); return; } @@ -894,6 +893,11 @@ void GameCommand_gotomap(int request, int argc) { case CMD_REQUEST_COMMAND: { + if (!world_initialized) + { + LOG_INFOF("This command works only when the server is running."); + return; + } if (argv(1)) { LOG_INFO(GotoMap(argv(1))); @@ -905,8 +909,8 @@ void GameCommand_gotomap(int request, int argc) LOG_INFOF("Incorrect parameters for ^2%s^7", argv(0)); case CMD_REQUEST_USAGE: { - LOG_HELP("Usage:^3 sv_cmd gotomap map"); - LOG_HELP(" Where 'map' is the *.bsp file to change to."); + LOG_HELP("Usage:^3 sv_cmd gotomap "); + LOG_HELP(" Where is the *.bsp file to change to."); LOG_HELP("See also: ^2gametype^7"); return; } @@ -980,13 +984,13 @@ void GameCommand_moveplayer(int request, int argc) string targets = strreplace(",", " ", argv(1)); string original_targets = strreplace(" ", ", ", targets); string destination = argv(2); + if (destination == "spec") + destination = "spectator"; - string successful, t; - successful = string_null; - - // lets see if the target(s) even actually exist. if ((targets) && (destination)) { + string successful = string_null; + string t; for ( ; targets; ) { t = car(targets); @@ -1003,18 +1007,18 @@ void GameCommand_moveplayer(int request, int argc) } // Where are we putting this player? - if (destination == "spec" || destination == "spectator") + if (destination == "spectator") { if (!IS_SPEC(client) && !IS_OBSERVER(client)) { if (client.caplayer) client.caplayer = 0; PutObserverInServer(client); - successful = strcat(successful, (successful ? ", " : ""), playername(client, false)); + successful = strcat(successful, (successful ? ", " : ""), playername(client.netname, client.team, false)); } else { - LOG_INFO("Player ", ftos(GetFilteredNumber(t)), " (", playername(client, false), ") is already spectating."); + LOG_INFO("Player ", ftos(GetFilteredNumber(t)), " (", playername(client.netname, client.team, false), ") is already spectating."); } continue; } @@ -1025,6 +1029,7 @@ void GameCommand_moveplayer(int request, int argc) if (teamplay) { // set up + string pl_name = playername(client.netname, client.team, false); int save = Player_GetForcedTeamIndex(client); Player_SetForcedTeamIndex(client, TEAM_FORCE_DEFAULT); @@ -1034,7 +1039,7 @@ void GameCommand_moveplayer(int request, int argc) if (team_num == client.team) // already on the destination team { // keep the forcing undone - LOG_INFO("Player ", ftos(GetFilteredNumber(t)), " (", playername(client, false), ") is already on the ", Team_ColoredFullName(client.team), (targets ? "^7, skipping to next player.\n" : "^7.")); + LOG_INFO("Player ", ftos(GetFilteredNumber(t)), " (", pl_name, ") is already on the ", Team_ColoredFullName(team_num), (targets ? "^7, skipping to next player.\n" : "^7.")); continue; } else if (team_num == 0) // auto team @@ -1068,12 +1073,12 @@ void GameCommand_moveplayer(int request, int argc) Player_SetForcedTeamIndex(client, TEAM_FORCE_DEFAULT); if (MoveToTeam(client, team_id, 6)) { - successful = strcat(successful, (successful ? ", " : ""), playername(client, false)); - LOG_INFO("Player ", ftos(GetFilteredNumber(t)), " (", playername(client, false), ") has been moved to the ", Team_ColoredFullName(team_id), "^7."); + successful = strcat(successful, (successful ? ", " : ""), pl_name); + LOG_INFO("Player ", ftos(GetFilteredNumber(t)), " (", pl_name, ") has been moved to the ", Team_ColoredFullName(team_num), "^7."); } else { - LOG_INFO("Unable to move player ", ftos(GetFilteredNumber(t)), " (", playername(client, false), ")"); + LOG_INFO("Unable to move player ", ftos(GetFilteredNumber(t)), " (", pl_name, ")"); } continue; } @@ -1102,10 +1107,10 @@ void GameCommand_moveplayer(int request, int argc) LOG_INFOF("Incorrect parameters for ^2%s^7", argv(0)); case CMD_REQUEST_USAGE: { - LOG_HELP("Usage:^3 sv_cmd moveplayer clients destination"); - LOG_HELP(" 'clients' is a list (separated by commas) of player entity ID's or nicknames"); - LOG_HELP(" 'destination' is what to send the player to, be it team or spectating"); - LOG_HELP(" Full list of destinations here: \"spec, spectator, red, blue, yellow, pink, auto.\""); + LOG_HELP("Usage:^3 sv_cmd moveplayer "); + LOG_HELP(" is a list (separated by commas) of player entity ID's or nicknames"); + LOG_HELP(" is what to send the player to, be it team or spectating"); + LOG_HELP(" Full list of destinations here: spec, spectator, red, blue, yellow, pink, auto."); LOG_HELP("Examples: sv_cmd moveplayer 1,3,5 red"); LOG_HELP(" sv_cmd moveplayer 2 spec"); LOG_HELP("See also: ^2allspec, shuffleteams^7"); @@ -1227,8 +1232,8 @@ void GameCommand_setbots(int request, int argc) LOG_INFOF("Incorrect parameters for ^2%s^7", argv(0)); case CMD_REQUEST_USAGE: { - LOG_HELP("Usage:^3 sv_cmd setbots botnumber"); - LOG_HELP(" Where 'botnumber' is the amount of bots to set bot_number cvar to."); + LOG_HELP("Usage:^3 sv_cmd setbots "); + LOG_HELP(" Where is the amount of bots to set bot_number cvar to."); LOG_HELP("See also: ^2bot_cmd^7"); return; } @@ -1338,9 +1343,9 @@ void GameCommand_stuffto(int request, int argc) LOG_INFOF("Incorrect parameters for ^2%s^7", argv(0)); case CMD_REQUEST_USAGE: { - LOG_HELP("Usage:^3 sv_cmd stuffto client \"command\""); - LOG_HELP(" 'client' is the entity number or name of the player,"); - LOG_HELP(" and 'command' is the command to be sent to that player."); + LOG_HELP("Usage:^3 sv_cmd stuffto \"\""); + LOG_HELP(" is the entity number or name of the player,"); + LOG_HELP(" and is the command to be sent to that player."); return; } } @@ -1511,7 +1516,7 @@ void GameCommand_trace(int request, int argc) } } - // no default case, just go straight to invalid + // no default case, just go straight to invalid } } @@ -1519,10 +1524,10 @@ void GameCommand_trace(int request, int argc) LOG_INFOF("Incorrect parameters for ^2%s^7", argv(0)); case CMD_REQUEST_USAGE: { - LOG_HELP("Usage:^3 sv_cmd trace command [startpos endpos] [endpos_height]"); - LOG_HELP(" Where startpos and endpos are parameters for 'walk' and 'showline' commands,"); - LOG_HELP(" 'endpos_height' is an optional parameter for 'walk' command,"); - LOG_HELP(" Full list of commands here: \"debug, debug2, walk, showline.\""); + LOG_HELP("Usage:^3 sv_cmd trace [ ] []"); + LOG_HELP(" Where and are parameters for the 'walk' and 'showline' commands,"); + LOG_HELP(" is an optional parameter for the 'walk' command,"); + LOG_HELP(" Full list of commands here: debug, debug2, walk, showline."); LOG_HELP("See also: ^2bbox, gettaginfo^7"); return; } @@ -1587,9 +1592,9 @@ void GameCommand_warp(int request, int argc) default: case CMD_REQUEST_USAGE: { - LOG_HELP("Usage:^3 sv_cmd warp [level]"); - LOG_HELP(" 'level' is the level to change campaign mode to."); - LOG_HELP(" if 'level' is not provided it will change to the next level."); + LOG_HELP("Usage:^3 sv_cmd warp []"); + LOG_HELP(" is the level to change campaign mode to."); + LOG_HELP(" if is not provided it will change to the next level."); return; } } @@ -1716,8 +1721,8 @@ void GameCommand(string command) LOG_HELP("\nGeneric commands shared by all programs:"); GenericCommand_macro_help(); - LOG_HELP("\nUsage:^3 sv_cmd COMMAND...^7, where possible commands are listed above.\n" - "For help about a specific command, type sv_cmd help COMMAND"); + LOG_HELP("\nUsage:^3 sv_cmd ^7, where possible commands are listed above.\n" + "For help about a specific command, type sv_cmd help "); return; }