]> git.xonotic.org Git - xonotic/darkplaces.git/blobdiff - mvm_cmds.c
rcon: support variable expansion in received commands
[xonotic/darkplaces.git] / mvm_cmds.c
index 337d196bd037d5794d44f06b4c785841b78de60a..6202e8e24044b02c31ba6bfd25b15f156f10321d 100644 (file)
@@ -193,19 +193,10 @@ static void VM_M_getresolution(prvm_prog_t *prog)
        }
        else if(nr == -1)
        {
-               vid_mode_t *m = VID_GetDesktopMode();
-               if (m)
-               {
-                       PRVM_G_VECTOR(OFS_RETURN)[0] = m->width;
-                       PRVM_G_VECTOR(OFS_RETURN)[1] = m->height;
-                       PRVM_G_VECTOR(OFS_RETURN)[2] = m->pixelheight_num / (prvm_vec_t) m->pixelheight_denom;
-               }
-               else
-               {
-                       PRVM_G_VECTOR(OFS_RETURN)[0] = 0;
-                       PRVM_G_VECTOR(OFS_RETURN)[1] = 0;
-                       PRVM_G_VECTOR(OFS_RETURN)[2] = 0;
-               }
+               vid_mode_t m = VID_GetDesktopMode();
+               PRVM_G_VECTOR(OFS_RETURN)[0] = m.width;
+               PRVM_G_VECTOR(OFS_RETURN)[1] = m.height;
+               PRVM_G_VECTOR(OFS_RETURN)[2] = m.pixelheight_num / (prvm_vec_t) m.pixelheight_denom;
        }
        else
        {
@@ -449,7 +440,7 @@ resortserverlist
 static void VM_M_resortserverlist(prvm_prog_t *prog)
 {
        VM_SAFEPARMCOUNT(0, VM_M_resortserverlist);
-       ServerList_RebuildViewList();
+       ServerList_RebuildViewList(NULL);
 }
 
 /*
@@ -476,7 +467,7 @@ static void VM_M_getserverliststring(prvm_prog_t *prog)
        }
        else
        {
-               if(hostnr < 0 || hostnr >= serverlist_viewcount)
+               if(hostnr < 0 || (unsigned)hostnr >= serverlist_viewcount)
                {
                        Con_Print("VM_M_getserverliststring: bad hostnr passed!\n");
                        return;
@@ -541,7 +532,7 @@ static void VM_M_getserverlistnumber(prvm_prog_t *prog)
        }
        else
        {
-               if(hostnr < 0 || hostnr >= serverlist_viewcount)
+               if(hostnr < 0 || (unsigned)hostnr >= serverlist_viewcount)
                {
                        Con_Print("VM_M_getserverliststring: bad hostnr passed!\n");
                        return;
@@ -565,7 +556,8 @@ static void VM_M_getserverlistnumber(prvm_prog_t *prog)
                        PRVM_G_FLOAT( OFS_RETURN ) = cache->info.freeslots;
                        break;
                case SLIF_PING:
-                       PRVM_G_FLOAT( OFS_RETURN ) = cache->info.ping;
+                       // display inf when a listed server times out and net_slist_pause blocks its removal
+                       PRVM_G_FLOAT( OFS_RETURN ) = cache->info.ping ?: INFINITY;
                        break;
                case SLIF_PROTOCOL:
                        PRVM_G_FLOAT( OFS_RETURN ) = cache->info.protocol;
@@ -1058,8 +1050,7 @@ void VM_cin_restart(prvm_prog_t *prog)
 static void VM_M_registercommand(prvm_prog_t *prog)
 {
        VM_SAFEPARMCOUNT(1, VM_M_registercommand);
-       if(!Cmd_Exists(cmd_client, PRVM_G_STRING(OFS_PARM0)))
-               Cmd_AddCommand(CF_CLIENT, PRVM_G_STRING(OFS_PARM0), NULL, "console command created by QuakeC");
+       Cmd_AddCommand(CF_CLIENT, PRVM_G_STRING(OFS_PARM0), NULL, "console command created by QuakeC");
 }
 
 prvm_builtin_t vm_m_builtins[] = {
@@ -1076,7 +1067,7 @@ VM_vlen,                                                          //   #9
 VM_vectoyaw,                                           //  #10
 VM_vectoangles,                                        //  #11
 VM_random,                                                     //  #12
-VM_localcmd_client,                                            //  #13
+VM_localcmd_local,                                             //  #13
 VM_cvar,                                                               //  #14
 VM_cvar_set,                                           //  #15
 VM_dprint,                                                     //  #16