maxclients = i;
}
- ReplicateVars(REPLICATEVARS_SEND_ALL);
-
// needs to be done so early because of the constants they create
static_init();
static_init_late();
spectatee_status = newspectatee_status;
// we could get rid of spectatee_status, and derive it from player_localentnum and player_localnum
+
+ // this can't be called in CSQC_Init as it'd send cvars too early
+ ReplicateVars_Start();
}
NET_HANDLE(ENT_CLIENT_NAGGER, bool isnew)
return true;
}
- bool force_centerprint = ReadByte();
- string hostname = ReadString();
+ welcome_msg_force_centerprint = ReadByte();
+ strcpy(hostname, ReadString());
string hostversion = ReadString();
bool version_mismatch = ReadByte();
if (motd != "")
msg = strcat(msg, "\n\n^8", _("MOTD:"), " ^7", motd);
- if (!force_centerprint && !isdemo() && cvar("_menu_welcome_dialog_available") && autocvar_cl_welcome_in_menu_dialog)
+ strcpy(welcome_msg, msg);
+ welcome_msg_menu_check_maxtime = time + 1; // wait for menu to load before showing the welcome dialog
+ return true;
+}
+
+void Welcome_Message_Show_Try()
+{
+ if (!welcome_msg_menu_check_maxtime)
+ return;
+
+ bool want_dialog = (!welcome_msg_force_centerprint && !isdemo() && autocvar_cl_welcome_in_menu_dialog);
+ // if want dialog check if menu is initialized but for a short time
+ if (!want_dialog || cvar("_menu_initialized") == 2 || time > welcome_msg_menu_check_maxtime)
{
- string welcomedialog_args;
- welcomedialog_args = strcat("HOSTNAME \"", hostname, "\"");
- msg = MakeConsoleSafe(strreplace("\n", "\\n", msg));
- welcomedialog_args = strcat(welcomedialog_args, " WELCOME \"", msg, "\"");
- localcmd("\nmenu_cmd directmenu Welcome ", welcomedialog_args, "\n");
+ if (want_dialog && cvar("_menu_welcome_dialog_available"))
+ {
+ string welcomedialog_args = strcat("HOSTNAME \"", hostname, "\"");
+ string msg = MakeConsoleSafe(strreplace("\n", "\\n", welcome_msg));
+ welcomedialog_args = strcat(welcomedialog_args, " WELCOME \"", msg, "\"");
+ localcmd("\nmenu_cmd directmenu Welcome ", welcomedialog_args, "\n");
+ }
+ else
+ centerprint_Add(ORDINAL(CPID_MOTD), strcat(hostname, "\n\n\n", welcome_msg), -1, 0);
+
+ strfree(welcome_msg);
+ welcome_msg_menu_check_maxtime = 0;
}
- else
- centerprint_Add(ORDINAL(CPID_MOTD), strcat(hostname, "\n\n\n", msg), -1, 0);
- return true;
}
NET_HANDLE(TE_CSQC_SERVERWELCOME, bool isNew)