summaryrefslogtreecommitdiff
path: root/src/server/commands.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/server/commands.c')
-rw-r--r--src/server/commands.c42
1 files changed, 39 insertions, 3 deletions
diff --git a/src/server/commands.c b/src/server/commands.c
index 1f374b0..8cacd79 100644
--- a/src/server/commands.c
+++ b/src/server/commands.c
@@ -849,12 +849,12 @@ static void SV_Stuff_f(void)
/*
==================
-SV_Stuff_f
+SV_StuffAll_f
Stuff raw command string to all clients.
==================
*/
-static void SV_Stuffall_f(void)
+static void SV_StuffAll_f(void)
{
client_t *client;
@@ -879,6 +879,41 @@ static void SV_Stuffall_f(void)
}
+/*
+==================
+SV_StuffCvar_f
+
+Stuff one or more cvar queries to the client.
+==================
+*/
+static void SV_StuffCvar_f(void)
+{
+ int i, argc = Cmd_Argc();
+ char *c;
+
+ if (!svs.initialized) {
+ Com_Printf("No server running.\n");
+ return;
+ }
+
+ if (argc < 3) {
+ Com_Printf("Usage: %s <userid> <variable> [...]\n", Cmd_Argv(0));
+ return;
+ }
+
+ if (!SV_SetPlayer())
+ return;
+
+ for (i = 2; i < argc; i++) {
+ c = Cmd_Argv(i);
+ SV_ClientCommand(sv_client, "cmd \177c console %s $%s\n", c, c);
+ sv_client->console_queries++;
+ }
+
+ sv_client = NULL;
+ sv_player = NULL;
+}
+
static void SV_PickClient_f(void)
{
char *s;
@@ -1469,7 +1504,8 @@ static const cmdreg_t c_server[] = {
{ "serverinfo", SV_Serverinfo_f },
{ "dumpuser", SV_DumpUser_f, SV_SetPlayer_c },
{ "stuff", SV_Stuff_f, SV_SetPlayer_c },
- { "stuffall", SV_Stuffall_f },
+ { "stuffall", SV_StuffAll_f },
+ { "stuffcvar", SV_StuffCvar_f, SV_SetPlayer_c },
{ "map", SV_Map_f, SV_Map_c },
{ "demomap", SV_DemoMap_f },
{ "gamemap", SV_GameMap_f, SV_Map_c },