From f1c2c19c32b6be8fd597c15cb570b308c1502c3a Mon Sep 17 00:00:00 2001 From: kadaverjack Date: Mon, 27 Feb 2006 07:19:48 +0000 Subject: [PATCH] new cvar "minplayers" (fills the server with bots if there are less minplayers clients) git-svn-id: svn://svn.icculus.org/nexuiz/trunk@1127 f962a42d-fe04-0410-a3ab-8c8b0445ebaa --- data/default.cfg | 1 + data/qcsrc/server/gamec/cl_player.c | 2 +- data/qcsrc/server/gamec/defs.h | 2 ++ data/qcsrc/server/gamec/g_world.c | 19 +++++++++++++++++++ 4 files changed, 23 insertions(+), 1 deletion(-) diff --git a/data/default.cfg b/data/default.cfg index 39fa9f328..5ae2159c7 100644 --- a/data/default.cfg +++ b/data/default.cfg @@ -65,6 +65,7 @@ v_deathtilt 0 // needed for spectators (who are dead to avoid prediction) hostname "Nexuiz Server" sv_maxrate 10000 set sv_mapchange_delay 5 +set minplayers 0 // disable rcon-like clientcommands to avoid server being open with default password seta sv_clientcommands 0 diff --git a/data/qcsrc/server/gamec/cl_player.c b/data/qcsrc/server/gamec/cl_player.c index 2fd2df2fd..8b648acdf 100644 --- a/data/qcsrc/server/gamec/cl_player.c +++ b/data/qcsrc/server/gamec/cl_player.c @@ -355,7 +355,7 @@ void PlayerDamage (entity inflictor, entity attacker, float damage, float deatht // set up to fade out later SUB_SetFade (self, time + 12 + random () * 4, 1); - if(clienttype(self) != CLIENTTYPE_BOT) + if(clienttype(self) == CLIENTTYPE_REAL) { msg_entity = self; WriteByte (MSG_ONE, SVC_SETANGLE); diff --git a/data/qcsrc/server/gamec/defs.h b/data/qcsrc/server/gamec/defs.h index d4877a4f7..397009a56 100644 --- a/data/qcsrc/server/gamec/defs.h +++ b/data/qcsrc/server/gamec/defs.h @@ -10,6 +10,8 @@ float lms_lowest_lives; float team1_score, team2_score, team3_score, team4_score; +float maxclients; + //entity casing; entity dest; diff --git a/data/qcsrc/server/gamec/g_world.c b/data/qcsrc/server/gamec/g_world.c index 8c0e6b6e7..38b08d87f 100644 --- a/data/qcsrc/server/gamec/g_world.c +++ b/data/qcsrc/server/gamec/g_world.c @@ -261,6 +261,15 @@ void worldspawn (void) // Urrebot setting urrebots_navopt = cvar("urrebots_navopt"); + + local entity head; + head = nextent(world); + maxclients = 0; + while(head) + { + maxclients++; + head = nextent(head); + } } void light (void) @@ -676,6 +685,7 @@ void() CheckRules_World = local float timelimit; local float fraglimit; local float checkrules_oldleaderfrags; + local float f; local entity checkrules_oldleader; local entity head; @@ -792,4 +802,13 @@ void() CheckRules_World = } // if (checkrules_leader != checkrules_oldleader)// && checkrules_leaderfrags > checkrules_oldleaderfrags) // bprint("^1",checkrules_leader.netname, " has taken the lead with ", ftos(checkrules_leaderfrags), " frags\n"); + + if(cvar("minplayers") >= maxclients) + cvar_set("minplayers", ftos(maxclients - 1)); + + f = cvar("minplayers") - (player_count - bot_number); + + if(cvar("minplayers")) + if(cvar("bot_number") != f) + cvar_set("bot_number", ftos(f)); }; -- 2.39.2