]> de.git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/blobdiff - qcsrc/client/main.qc
Implement reliable detection of the Welcome dialog availability
[xonotic/xonotic-data.pk3dir.git] / qcsrc / client / main.qc
index f3f06acd5521aca43b34745b63c73714a1f12cee..42330a36d6102edcfdd737df5d24099bc79c1abf 100644 (file)
@@ -1286,15 +1286,20 @@ NET_HANDLE(TE_CSQC_WEAPONCOMPLAIN, bool isNew)
        }
 }
 
-string welcomedialog_args;
 NET_HANDLE(TE_CSQC_SERVERINFO, bool isNew)
 {
-       if(welcomedialog_args)
-               strunzone(welcomedialog_args);
-       welcomedialog_args = strcat("name \"", ReadString(), "\"");
-       welcomedialog_args = strcat(welcomedialog_args, " motd \"", MakeConsoleSafe(strreplace("\n", "\\n", ReadString())), "\"");
-       localcmd("\nmenu_cmd directmenu Welcome ", welcomedialog_args, "\n");
-       welcomedialog_args = string_null;
+       string hostname = ReadString();
+       string msg = ReadString();
+       if (cvar("_menu_welcome_dialog_available") && autocvar_cl_welcome_in_menu_dialog)
+       {
+               string welcomedialog_args;
+               welcomedialog_args = strcat("name \"", hostname, "\"");
+               msg = MakeConsoleSafe(strreplace("\n", "\\n", msg));
+               welcomedialog_args = strcat(welcomedialog_args, " motd \"", msg, "\"");
+               localcmd("\nmenu_cmd directmenu Welcome ", welcomedialog_args, "\n");
+       }
+       else
+               centerprint_Add(ORDINAL(CPID_MOTD), strcat(hostname, "\n\n\n", msg), -1, 0);
        return true;
 }