From e0499a4b6fd525836efff71f33f5f9d317ef8f19 Mon Sep 17 00:00:00 2001 From: div0 Date: Sun, 30 Apr 2006 21:45:33 +0000 Subject: [PATCH] workaround for "team balance does not work" bug in singleplayer: bots now join after player git-svn-id: svn://svn.icculus.org/nexuiz/trunk@1354 f962a42d-fe04-0410-a3ab-8c8b0445ebaa --- data/qcsrc/server/gamec/bots.c | 18 ++++++++++++++++++ data/qcsrc/server/gamec/cl_client.c | 5 +++++ 2 files changed, 23 insertions(+) diff --git a/data/qcsrc/server/gamec/bots.c b/data/qcsrc/server/gamec/bots.c index 9283ff5cd..1a6f03425 100644 --- a/data/qcsrc/server/gamec/bots.c +++ b/data/qcsrc/server/gamec/bots.c @@ -1642,6 +1642,7 @@ void() bot_think = entity bot_strategytoken; entity player_list; .entity nextplayer; +.float was_playing; void() bot_relinkplayerlist = { local entity e; @@ -1654,6 +1655,23 @@ void() bot_relinkplayerlist = while (e) { player_count = player_count + 1; + if(cvar("g_campaign")) + { + // only count real players, no observers unless they have already + // played (for LMS!) + if(clienttype(e) == CLIENTTYPE_REAL) + { + if(e.classname == "player") + { + e.was_playing = 1; + } + else if(!e.was_playing) + { + // do not count him! + player_count = player_count - 1; + } + } + } e.nextplayer = e.chain; if (clienttype(e) == CLIENTTYPE_BOT) { diff --git a/data/qcsrc/server/gamec/cl_client.c b/data/qcsrc/server/gamec/cl_client.c index e5d1097ef..48c46fed7 100644 --- a/data/qcsrc/server/gamec/cl_client.c +++ b/data/qcsrc/server/gamec/cl_client.c @@ -522,6 +522,11 @@ void PutClientInServer (void) } else if(self.classname == "observer") { PutObserverInServer (); } + + // in campaign mode, players are only counted once they are active. So + // update the counts NOW. + if(cvar("g_campaign")) + bot_relinkplayerlist(); } /* -- 2.39.2