]> de.git.xonotic.org Git - xonotic/darkplaces.git/blobdiff - host_cmd.c
fixed problems with playing on QW server caused by the use of _cl_name and similar...
[xonotic/darkplaces.git] / host_cmd.c
index 88e6354ca548ea59ce80ff96ede9dd68bd226f8a..2c466d1f24063e146f68bab4c221debcf676c6b8 100644 (file)
@@ -371,36 +371,38 @@ This is sent just before a server changes levels
 */
 void Host_Reconnect_f (void)
 {
+       char temp[128];
+       // if not connected, reconnect to the most recent server
+       if (!cls.netcon)
+       {
+               // if we have connected to a server recently, the userinfo
+               // will still contain its IP address, so get the address...
+               InfoString_GetValue(cls.userinfo, "*ip", temp, sizeof(temp));
+               if (temp[0])
+                       CL_EstablishConnection(temp);
+               else
+                       Con_Printf("Reconnect to what server?  (you have not connected to a server yet)\n");
+               return;
+       }
+       // if connected, do something based on protocol
        if (cls.protocol == PROTOCOL_QUAKEWORLD)
        {
+               // quakeworld can just re-login
                if (cls.qw_downloadmemory)  // don't change when downloading
                        return;
 
                S_StopAllSounds();
 
-               if (cls.netcon)
+               if (cls.state == ca_connected && cls.signon < SIGNONS)
                {
-                       if (cls.state == ca_connected && cls.signon < SIGNONS)
-                       {
-                               Con_Printf("reconnecting...\n");
-                               MSG_WriteChar(&cls.netcon->message, qw_clc_stringcmd);
-                               MSG_WriteString(&cls.netcon->message, "new");
-                       }
-                       else
-                       {
-                               char temp[128];
-                               // if we have connected to a server recently, the userinfo
-                               // will still contain its IP address, so get the address...
-                               InfoString_GetValue(cls.userinfo, "*ip", temp, sizeof(temp));
-                               if (temp[0])
-                                       CL_EstablishConnection(temp);
-                               else
-                                       Con_Printf("Reconnect to what server?  (you have not connected to a server yet)\n");
-                       }
+                       Con_Printf("reconnecting...\n");
+                       MSG_WriteChar(&cls.netcon->message, qw_clc_stringcmd);
+                       MSG_WriteString(&cls.netcon->message, "new");
                }
        }
        else
        {
+               // netquake uses reconnect on level changes (silly)
                if (Cmd_Argc() != 1)
                {
                        Con_Print("reconnect : wait for signon messages again\n");
@@ -754,7 +756,7 @@ void Host_Loadgame_f (void)
 Host_Name_f
 ======================
 */
-cvar_t cl_name = {CVAR_SAVE, "_cl_name", "player", "internal storage cvar for current player name (changed by name command)"};
+cvar_t cl_name = {CVAR_SAVE | CVAR_NQUSERINFOHACK, "_cl_name", "player", "internal storage cvar for current player name (changed by name command)"};
 void Host_Name_f (void)
 {
        int i, j;
@@ -811,7 +813,7 @@ void Host_Name_f (void)
 Host_Playermodel_f
 ======================
 */
-cvar_t cl_playermodel = {CVAR_SAVE, "_cl_playermodel", "", "internal storage cvar for current player model in Nexuiz (changed by playermodel command)"};
+cvar_t cl_playermodel = {CVAR_SAVE | CVAR_NQUSERINFOHACK, "_cl_playermodel", "", "internal storage cvar for current player model in Nexuiz (changed by playermodel command)"};
 // the old cl_playermodel in cl_main has been renamed to __cl_playermodel
 void Host_Playermodel_f (void)
 {
@@ -870,7 +872,7 @@ void Host_Playermodel_f (void)
 Host_Playerskin_f
 ======================
 */
-cvar_t cl_playerskin = {CVAR_SAVE, "_cl_playerskin", "", "internal storage cvar for current player skin in Nexuiz (changed by playerskin command)"};
+cvar_t cl_playerskin = {CVAR_SAVE | CVAR_NQUSERINFOHACK, "_cl_playerskin", "", "internal storage cvar for current player skin in Nexuiz (changed by playerskin command)"};
 void Host_Playerskin_f (void)
 {
        int i, j;
@@ -1142,7 +1144,7 @@ void Host_Tell_f(void)
 Host_Color_f
 ==================
 */
-cvar_t cl_color = {CVAR_SAVE, "_cl_color", "0", "internal storage cvar for current player colors (changed by color command)"};
+cvar_t cl_color = {CVAR_SAVE | CVAR_NQUSERINFOHACK, "_cl_color", "0", "internal storage cvar for current player colors (changed by color command)"};
 void Host_Color(int changetop, int changebottom)
 {
        int top, bottom, playercolor;
@@ -1254,7 +1256,7 @@ void Host_BottomColor_f(void)
        Host_Color(-1, atoi(Cmd_Argv(1)));
 }
 
-cvar_t cl_rate = {CVAR_SAVE, "_cl_rate", "10000", "internal storage cvar for current rate (changed by rate command)"};
+cvar_t cl_rate = {CVAR_SAVE | CVAR_NQUSERINFOHACK, "_cl_rate", "10000", "internal storage cvar for current rate (changed by rate command)"};
 void Host_Rate_f(void)
 {
        int rate;
@@ -1323,7 +1325,7 @@ LordHavoc: only supported for Nehahra, I personally think this is dumb, but Mind
 LordHavoc: correction, Mindcrime will be removing pmodel in the future, but it's still stuck here for compatibility.
 ======================
 */
-cvar_t cl_pmodel = {CVAR_SAVE, "_cl_pmodel", "0", "internal storage cvar for current player model number in nehahra (changed by pmodel command)"};
+cvar_t cl_pmodel = {CVAR_SAVE | CVAR_NQUSERINFOHACK, "_cl_pmodel", "0", "internal storage cvar for current player model number in nehahra (changed by pmodel command)"};
 static void Host_PModel_f (void)
 {
        int i;
@@ -2416,7 +2418,7 @@ void Host_InitCommands (void)
        Cmd_AddCommand ("restart", Host_Restart_f, "restart current level");
        Cmd_AddCommand ("changelevel", Host_Changelevel_f, "change to another level, bringing along all connected clients");
        Cmd_AddCommand ("connect", Host_Connect_f, "connect to a server by IP address or hostname");
-       Cmd_AddCommand ("reconnect", Host_Reconnect_f, "reset signon level in preparation for a new level (do not use)");
+       Cmd_AddCommand ("reconnect", Host_Reconnect_f, "reconnect to the last server you were on, or resets a quakeworld connection (do not use if currently playing on a netquake server)");
        Cmd_AddCommand ("version", Host_Version_f, "print engine version");
        Cmd_AddCommand_WithClientCommand ("say", Host_Say_f, Host_Say_f, "send a chat message to everyone on the server");
        Cmd_AddCommand_WithClientCommand ("say_team", Host_Say_Team_f, Host_Say_Team_f, "send a chat message to your team on the server");