X-Git-Url: http://git.xonotic.org/?a=blobdiff_plain;f=qcsrc%2Fserver%2Fcommand%2Fcmd.qc;h=88be9ee5b10d2db07f67c3af0b755515a89bfed5;hb=153e558088db2813f7f7dd5367244b5470f4d425;hp=4a8b59eba651d8b8b1c3099858854ce7cbfca127;hpb=4dd3c23aa51dd6fe855d8c5d97126a12a372eb3b;p=xonotic%2Fxonotic-data.pk3dir.git diff --git a/qcsrc/server/command/cmd.qc b/qcsrc/server/command/cmd.qc index 4a8b59eba..88be9ee5b 100644 --- a/qcsrc/server/command/cmd.qc +++ b/qcsrc/server/command/cmd.qc @@ -1,32 +1,39 @@ -#if defined(CSQC) -#elif defined(MENUQC) -#elif defined(SVQC) - #include "../../dpdefs/progsdefs.qh" - #include "../../dpdefs/dpextensions.qh" - #include "../../warpzonelib/common.qh" - #include "../../common/constants.qh" - #include "../../common/teams.qh" - #include "../../common/util.qh" - #include "../../common/command/shared_defs.qh" - #include "../../common/monsters/monsters.qh" - #include "../../common/monsters/sv_monsters.qh" - #include "../../common/monsters/spawn.qh" - #include "../autocvars.qh" - #include "../defs.qh" - #include "../../common/notifications.qh" - #include "../../common/deathtypes.qh" - #include "../mutators/mutators_include.qh" - #include "../vehicles/vehicles_def.qh" - #include "../campaign.qh" - #include "../../common/mapinfo.qh" - #include "common.qh" - #include "vote.qh" - #include "cmd.qh" - #include "../cheats.qh" - #include "../scores.qh" - #include "../ipban.qh" +#include "../../common/command/command.qh" +#include "cmd.qh" +#include "../_all.qh" + +#include "common.qh" +#include "vote.qh" + +#include "../campaign.qh" +#include "../cheats.qh" +#include "../cl_player.qh" +#include "../ipban.qh" +#include "../mapvoting.qh" +#include "../scores.qh" +#include "../teamplay.qh" + +#include "../mutators/mutators_include.qh" + +#ifdef SVQC + #include "../../common/vehicles/sv_vehicles.qh" #endif +#include "../../common/constants.qh" +#include "../../common/deathtypes.qh" +#include "../../common/mapinfo.qh" +#include "../../common/notifications.qh" +#include "../../common/teams.qh" +#include "../../common/util.qh" + +#include "../../common/monsters/all.qh" +#include "../../common/monsters/spawn.qh" +#include "../../common/monsters/sv_monsters.qh" + +#include "../../warpzonelib/common.qh" + +void ClientKill_TeamChange (float targetteam); // 0 = don't change, -1 = auto, -2 = spec + // ========================================================= // Server side networked commands code, reworked by Samual // Last updated: December 28th, 2011 @@ -370,6 +377,46 @@ void ClientCommand_mobspawn(float request, float argc) } } +void ClientCommand_physics(float request, float argc) +{ + switch(request) + { + case CMD_REQUEST_COMMAND: + { + string command = strtolower(argv(1)); + + if(!autocvar_g_physics_clientselect) + { + sprint(self, "Client physics selection is currently disabled.\n"); + return; + } + + if(command == "list" || command == "help") + { + sprint(self, strcat("Available physics sets: \n\n", autocvar_g_physics_clientselect_options, " default\n")); + return; + } + + if(Physics_Valid(command) || command == "default") + { + stuffcmd(self, strcat("\nseta cl_physics ", command, "\nsendcvar cl_physics\n")); + sprint(self, strcat("^2Physics set successfully changed to ^3", command, "\n")); + return; + } + } + + default: + sprint(self, strcat("Current physics set: ^3", self.cvar_cl_physics, "\n")); + case CMD_REQUEST_USAGE: + { + sprint(self, "\nUsage:^3 cmd physics \n"); + sprint(self, " See 'cmd physics list' for available physics sets.\n"); + sprint(self, " Argument 'default' resets to standard physics.\n"); + return; + } + } +} + void ClientCommand_ready(float request) // todo: anti-spam for toggling readyness { switch(request) @@ -762,6 +809,7 @@ void ClientCommand_(float request) CLIENT_COMMAND("mobedit", ClientCommand_mobedit(request, arguments), "Edit your monster's properties") \ CLIENT_COMMAND("mobkill", ClientCommand_mobkill(request), "Kills your monster") \ CLIENT_COMMAND("mobspawn", ClientCommand_mobspawn(request, arguments), "Spawn monsters infront of yourself") \ + CLIENT_COMMAND("physics", ClientCommand_physics(request, arguments), "Change physics set") \ CLIENT_COMMAND("ready", ClientCommand_ready(request), "Qualify as ready to end warmup stage (or restart server if allowed)") \ CLIENT_COMMAND("say", ClientCommand_say(request, arguments, command), "Print a message to chat to all players") \ CLIENT_COMMAND("say_team", ClientCommand_say_team(request, arguments, command), "Print a message to chat to all team mates") \ @@ -825,6 +873,15 @@ void ClientCommand_macro_write_aliases(float fh) void SV_ParseClientCommand(string command) { + // If invalid UTF-8, don't even parse it + string command2 = ""; + float len = strlen(command); + float i; + for (i = 0; i < len; ++i) + command2 = strcat(command2, chr2str(str2chr(command, i))); + if (command != command2) + return; + // if we're banned, don't even parse the command if(Ban_MaybeEnforceBanOnce(self)) return;