From 9ff7b10bd000d71a4eccefc9738950726920962f Mon Sep 17 00:00:00 2001 From: Mario Date: Fri, 22 May 2020 21:00:49 +1000 Subject: [PATCH] Check the player limit when getting player count to ensure forced spectators don't influence size restrictions (optional, enabled by default) --- qcsrc/server/autocvars.qh | 1 + qcsrc/server/g_world.qc | 3 ++- xonotic-server.cfg | 1 + 3 files changed, 4 insertions(+), 1 deletion(-) diff --git a/qcsrc/server/autocvars.qh b/qcsrc/server/autocvars.qh index 6aa798afb9..79989cc176 100644 --- a/qcsrc/server/autocvars.qh +++ b/qcsrc/server/autocvars.qh @@ -159,6 +159,7 @@ bool autocvar_g_maplist_votable_suggestions; bool autocvar_g_maplist_votable_suggestions_override_mostrecent; float autocvar_g_maplist_votable_timeout; bool autocvar_g_maplist_ignore_sizes; +bool autocvar_g_maplist_sizes_count_maxplayers = true; bool autocvar_g_maplist_sizes_count_bots = true; int autocvar_g_maxplayers; float autocvar_g_maxplayers_spectator_blocktime; diff --git a/qcsrc/server/g_world.qc b/qcsrc/server/g_world.qc index 8f131b745c..c626b52f8f 100644 --- a/qcsrc/server/g_world.qc +++ b/qcsrc/server/g_world.qc @@ -1072,7 +1072,8 @@ bool MapHasRightSize(string map) // open map size restriction file string opensize_msg = strcat("opensize ", map); float fh = fopen(strcat("maps/", map, ".sizes"), FILE_READ); - int pcount = player_count; + int player_limit = ((autocvar_g_maplist_sizes_count_maxplayers) ? GetPlayerLimit() : 0); + int pcount = ((player_limit > 0) ? min(player_count, player_limit) : player_count); // bind it to the player limit so that forced spectators don't influence the limits if(!autocvar_g_maplist_sizes_count_bots) pcount -= currentbots; if(fh >= 0) diff --git a/xonotic-server.cfg b/xonotic-server.cfg index 4fd5995670..d4a97d7da5 100644 --- a/xonotic-server.cfg +++ b/xonotic-server.cfg @@ -220,6 +220,7 @@ set g_maplist_selectrandom 0 "if 1, a random map will be chosen as next map - DE set g_maplist_shuffle 1 "new randomization method: like selectrandom, but avoid playing the same maps in short succession. This works by taking out the first element and inserting it into g_maplist with a bias to the end of the list" set g_maplist_check_waypoints 0 "when 1, maps are skipped if there currently are bots, but the map has no waypoints" set g_maplist_ignore_sizes 0 "when 1, all maps are shown in the map list regardless of player count" +set g_maplist_sizes_count_maxplayers 1 "check the player limit when getting the player count so forced spectators don't affect the size restrictions" set g_maplist_sizes_count_bots 1 "include the number of bots currently in the server when counting the number of players for size restrictions" set g_items_mindist 4000 "starting distance for the fading of items" -- 2.39.2