]> de.git.xonotic.org Git - xonotic/darkplaces.git/blobdiff - host_cmd.c
q3 shader parser was not supporting alphatest (promoted to alphablend) without trans...
[xonotic/darkplaces.git] / host_cmd.c
index 355ad472a0968a1cea0aef33ccd25b94eb2ca7d3..79665d2e3193205899450516071c7fcfa364229f 100644 (file)
@@ -209,8 +209,7 @@ Host_Ping_f
 */
 void Host_Ping_f (void)
 {
-       int             i, j;
-       float   total;
+       int             i;
        client_t        *client;
 
        if (cmd_source == src_command)
@@ -224,11 +223,7 @@ void Host_Ping_f (void)
        {
                if (!client->active)
                        continue;
-               total = 0;
-               for (j=0 ; j<NUM_PING_TIMES ; j++)
-                       total+=client->ping_times[j];
-               total /= NUM_PING_TIMES;
-               SV_ClientPrintf("%4i %s\n", (int)(total*1000), client->name);
+               SV_ClientPrintf("%4i %s\n", (int)floor(client->ping*1000+0.5), client->name);
        }
 }
 
@@ -356,7 +351,7 @@ void Host_Restart_f (void)
        allowcheats = sv_cheats.integer != 0;
        strcpy(mapname, sv.name);
        SV_SpawnServer(mapname);
-       if (sv.active && cls.state == ca_disconnected) 
+       if (sv.active && cls.state == ca_disconnected)
        {
                SV_VM_Begin();
                CL_EstablishConnection("local:1");
@@ -374,6 +369,11 @@ This is sent just before a server changes levels
 */
 void Host_Reconnect_f (void)
 {
+       if (cmd_source == src_command)
+       {
+               Con_Print("reconnect is not valid from the console\n");
+               return;
+       }
        if (Cmd_Argc() != 1)
        {
                Con_Print("reconnect : wait for signon messages again\n");
@@ -435,12 +435,14 @@ void Host_SavegameComment (char *text)
 
        for (i=0 ; i<SAVEGAME_COMMENT_LENGTH ; i++)
                text[i] = ' ';
-       memcpy (text, cl.levelname, strlen(cl.levelname));
+       // LordHavoc: added min() to prevent overflow
+       memcpy (text, cl.levelname, min(strlen(cl.levelname), SAVEGAME_COMMENT_LENGTH));
        sprintf (kills,"kills:%3i/%3i", cl.stats[STAT_MONSTERS], cl.stats[STAT_TOTALMONSTERS]);
        memcpy (text+22, kills, strlen(kills));
-// convert space to _ to make stdio happy
+       // convert space to _ to make stdio happy
+       // LordHavoc: convert control characters to _ as well
        for (i=0 ; i<SAVEGAME_COMMENT_LENGTH ; i++)
-               if (text[i] == ' ')
+               if (text[i] <= ' ')
                        text[i] = '_';
        text[SAVEGAME_COMMENT_LENGTH] = '\0';
 }
@@ -951,7 +953,8 @@ void Host_Say(qboolean teamonly)
                        SV_ClientPrint(text);
        host_client = save;
 
-       //Con_Print(&text[1]);
+       if (cls.state == ca_dedicated)
+               Con_Print(&text[1]);
 }
 
 
@@ -1416,6 +1419,7 @@ void Host_Kick_f (void)
        if (cmd_source != src_command || !sv.active)
                return;
 
+       SV_VM_Begin();
        save = host_client;
 
        if (Cmd_Argc() > 2 && strcmp(Cmd_Argv(1), "#") == 0)
@@ -1474,6 +1478,7 @@ void Host_Kick_f (void)
        }
 
        host_client = save;
+       SV_VM_End();
 }
 
 /*
@@ -1666,14 +1671,19 @@ void Host_Viewmodel_f (void)
        prvm_edict_t    *e;
        model_t *m;
 
+       if (!sv.active)
+               return;
+
+       SV_VM_Begin();
        e = FindViewthing ();
+       SV_VM_End();
        if (!e)
                return;
 
        m = Mod_ForName (Cmd_Argv(1), false, true, false);
-       if (!m)
+       if (!m || !m->loaded || !m->Draw)
        {
-               Con_Printf("Can't load %s\n", Cmd_Argv(1));
+               Con_Printf("viewmodel: can't load %s\n", Cmd_Argv(1));
                return;
        }
 
@@ -1692,7 +1702,12 @@ void Host_Viewframe_f (void)
        int             f;
        model_t *m;
 
+       if (!sv.active)
+               return;
+
+       SV_VM_Begin();
        e = FindViewthing ();
+       SV_VM_End();
        if (!e)
                return;
        m = cl.model_precache[(int)e->fields.server->modelindex];
@@ -1723,7 +1738,12 @@ void Host_Viewnext_f (void)
        prvm_edict_t    *e;
        model_t *m;
 
+       if (!sv.active)
+               return;
+
+       SV_VM_Begin();
        e = FindViewthing ();
+       SV_VM_End();
        if (!e)
                return;
        m = cl.model_precache[(int)e->fields.server->modelindex];
@@ -1745,7 +1765,12 @@ void Host_Viewprev_f (void)
        prvm_edict_t    *e;
        model_t *m;
 
+       if (!sv.active)
+               return;
+
+       SV_VM_Begin();
        e = FindViewthing ();
+       SV_VM_End();
        if (!e)
                return;
 
@@ -1776,7 +1801,7 @@ void Host_Startdemos_f (void)
 {
        int             i, c;
 
-       if (cls.state == ca_dedicated || COM_CheckParm("-listen"))
+       if (cls.state == ca_dedicated || COM_CheckParm("-listen") || COM_CheckParm("-benchmark") || COM_CheckParm("-demo") || COM_CheckParm("-demolooponly"))
                return;
 
        c = Cmd_Argc() - 1;