From: z411 Date: Mon, 5 Jun 2023 22:24:06 +0000 (-0400) Subject: Add cvar for remove warning wait X-Git-Url: https://git.xonotic.org/?a=commitdiff_plain;ds=sidebyside;h=944e289630307758f07f643d0f1a8512009e71b9;p=xonotic%2Fxonotic-data.pk3dir.git Add cvar for remove warning wait --- diff --git a/qcsrc/server/teamplay.qc b/qcsrc/server/teamplay.qc index 148c51461..6e78c26be 100644 --- a/qcsrc/server/teamplay.qc +++ b/qcsrc/server/teamplay.qc @@ -719,15 +719,15 @@ bool TeamBalance_AreEqual(entity ignore) entity remove_countdown; entity remove_player; -int remove_time; +int remove_timeleft; void Remove_Countdown(entity this) { - if(remove_time <= 0 || TeamBalance_AreEqual(NULL)) + if(remove_timeleft <= 0 || TeamBalance_AreEqual(NULL)) { - if(remove_time <= 0) + if(remove_timeleft <= 0) { - Send_Notification(NOTIF_ALL, NULL, MSG_INFO, INFO_MOVETOSPEC_REMOVE, remove_player.netname); + Send_Notification(NOTIF_ALL, NULL, MSG_INFO, INFO_MOVETOSPEC_REMOVE, playername(remove_player.netname, remove_player.team, true)); PutObserverInServer(remove_player, true, true); } @@ -742,8 +742,8 @@ void Remove_Countdown(entity this) return; } - Send_Notification(NOTIF_ALL, NULL, MSG_CENTER, CENTER_MOVETOSPEC_REMOVE, remove_player.netname, remove_time); - --remove_time; + Send_Notification(NOTIF_ALL, NULL, MSG_CENTER, CENTER_MOVETOSPEC_REMOVE, remove_player.netname, remove_timeleft); + --remove_timeleft; this.nextthink = time + 1; } @@ -784,17 +784,25 @@ void TeamBalance_RemoveExcessPlayers(entity ignore) if(latest_join_pl) { // Send player to spectate - remove_player = latest_join_pl; - remove_time = 10; - - if (!remove_countdown) + if(autocvar_g_balance_teams_remove_wait) + { + // Give a warning before moving to spect + remove_player = latest_join_pl; + remove_timeleft = autocvar_g_balance_teams_remove_wait; + + if (!remove_countdown) + { + remove_countdown = new_pure(remove_countdown); + setthink(remove_countdown, Remove_Countdown); + remove_countdown.nextthink = time; + } + } + else { - remove_countdown = new_pure(remove_countdown); - setthink(remove_countdown, Remove_Countdown); - remove_countdown.nextthink = time; + // Move to spects immediately + Send_Notification(NOTIF_ALL, NULL, MSG_INFO, INFO_MOVETOSPEC_REMOVE, latest_join_pl.netname); + PutObserverInServer(latest_join_pl, true, true); } - //Send_Notification(NOTIF_ALL, NULL, MSG_INFO, INFO_MOVETOSPEC_REMOVE, latest_join_pl.netname); - //PutObserverInServer(latest_join_pl, true, true); } } } diff --git a/qcsrc/server/world.qc b/qcsrc/server/world.qc index 21bd4139f..d416b6144 100644 --- a/qcsrc/server/world.qc +++ b/qcsrc/server/world.qc @@ -452,6 +452,7 @@ void cvar_changes_init() BADCVAR("g_balance_teams"); BADCVAR("g_balance_teams_queue"); BADCVAR("g_balance_teams_remove"); + BADCVAR("g_balance_teams_remove_wait"); BADCVAR("g_balance_teams_prevent_imbalance"); BADCVAR("g_balance_teams_scorefactor"); BADCVAR("g_ban_sync_trusted_servers"); diff --git a/xonotic-server.cfg b/xonotic-server.cfg index bc81ec6ed..91103ec33 100644 --- a/xonotic-server.cfg +++ b/xonotic-server.cfg @@ -279,6 +279,7 @@ set g_balance_teams 1 "automatically balance out players entering instead of ask set g_balance_teams_prevent_imbalance 1 "prevent players from changing to larger teams" set g_balance_teams_queue 0 "queue players before joining" set g_balance_teams_remove 0 "remove excess players from teams" +set g_balance_teams_remove_wait 10 "seconds to warn everyone before removing an excess player (0 = immediately)" set g_changeteam_banned 0 "not allowed to change team" set sv_teamnagger 1 "enable a nag message when the teams are unbalanced"