]> git.xonotic.org Git - xonotic/darkplaces.git/blobdiff - sv_ccmds.c
sv_user: Use sv.time directly, to limit reported time to current time
[xonotic/darkplaces.git] / sv_ccmds.c
index 78954aa8b37e25d249c76f5eb1b059134869615a..31359d0f144d092c14a38f8c72167bd9225d178c 100644 (file)
@@ -1411,7 +1411,6 @@ static void SV_Ent_Create_f(cmd_state_t *cmd)
        int i;
        qbool haveorigin;
 
-       qbool expectval = false;
        void (*print)(const char *, ...) = (cmd->source == src_client ? SV_ClientPrintf : Con_Printf);
 
        if(!Cmd_Argc(cmd))
@@ -1450,31 +1449,24 @@ static void SV_Ent_Create_f(cmd_state_t *cmd)
        }
 
        // Allow more than one key/value pair by cycling between expecting either one.
-       for(i = 2; i < Cmd_Argc(cmd); i++)
+       for(i = 2; i < Cmd_Argc(cmd); i += 2)
        {
-               if(!expectval)
+               if(!(key = PRVM_ED_FindField(prog, Cmd_Argv(cmd, i))))
                {
-                       if(!(key = PRVM_ED_FindField(prog, Cmd_Argv(cmd, i))))
-                       {
-                               print("Key %s not found!\n", Cmd_Argv(cmd, i));
-                               PRVM_ED_Free(prog, ed);
-                               return;
-                       }
+                       print("Key %s not found!\n", Cmd_Argv(cmd, i));
+                       PRVM_ED_Free(prog, ed);
+                       return;
+               }
 
-                       /*
-                        * This is mostly for dedicated server console, but if the
-                        * player gave a custom origin, we can ignore the traceline.
-                        */
-                       if(!strcmp(Cmd_Argv(cmd, i), "origin"))
-                               haveorigin = true;
+               /*
+                * This is mostly for dedicated server console, but if the
+                * player gave a custom origin, we can ignore the traceline.
+                */
+               if(!strcmp(Cmd_Argv(cmd, i), "origin"))
+                       haveorigin = true;
 
-                       expectval = true;
-               }
-               else
-               {
-                       PRVM_ED_ParseEpair(prog, ed, key, Cmd_Argv(cmd, i), false);
-                       expectval = false;
-               }
+               if (i + 1 < Cmd_Argc(cmd))
+                       PRVM_ED_ParseEpair(prog, ed, key, Cmd_Argv(cmd, i+1), false);
        }
 
        if(!haveorigin)
@@ -1509,7 +1501,7 @@ static void SV_Ent_Remove_f(cmd_state_t *cmd)
 {
        prvm_prog_t *prog = SVVM_prog;
        prvm_edict_t *ed;
-       int i, ednum;
+       int i, ednum = 0;
        void (*print)(const char *, ...) = (cmd->source == src_client ? SV_ClientPrintf : Con_Printf);
 
        if(!Cmd_Argc(cmd))
@@ -1633,7 +1625,7 @@ void SV_InitOperatorCommands(void)
        Cmd_AddCommand(CF_SHARED, "viewnext", SV_Viewnext_f, "change to next animation frame of viewthing entity in current level");
        Cmd_AddCommand(CF_SHARED, "viewprev", SV_Viewprev_f, "change to previous animation frame of viewthing entity in current level");
        Cmd_AddCommand(CF_SHARED, "maxplayers", SV_MaxPlayers_f, "sets limit on how many players (or bots) may be connected to the server at once");
-       Cmd_AddCommand(CF_SERVER, "sendcvar", SV_SendCvar_f, "sends the value of a cvar to the server as a sentcvar command, for use by QuakeC");
+       host.hook.SV_SendCvar = SV_SendCvar_f;
 
        // commands that do not have automatic forwarding from cmd_client, these are internal details of the network protocol and not of interest to users (if they know what they are doing they can still use a generic "cmd prespawn" or similar)
        Cmd_AddCommand(CF_SERVER_FROM_CLIENT, "prespawn", SV_PreSpawn_f, "internal use - signon 1 (client acknowledges that server information has been received)");