From: Mircea Kitsune Date: Wed, 15 Sep 2010 13:19:13 +0000 (+0300) Subject: Allow forcing the player to a given team in campaign mode. Useful for story based... X-Git-Tag: xonotic-v0.1.0preview~311^2~5^2~1 X-Git-Url: https://git.rm.cloudns.org/?a=commitdiff_plain;h=8db1ea65ccbb6a2e6232359f51de5e5b35297659;p=xonotic%2Fxonotic-data.pk3dir.git Allow forcing the player to a given team in campaign mode. Useful for story based campaigns where you might want the player to play only in team X. No, bot_vs_human can't replace this iirc. For one thing, bot_vs_human is useless if you have more than 2 teams. Also, bot_vs_human can only force the player in team X while forcing bots in the other team (so you can't put the player to the team you want without braking bot balance). --- diff --git a/defaultXonotic.cfg b/defaultXonotic.cfg index 8e29eb492..acc84b013 100644 --- a/defaultXonotic.cfg +++ b/defaultXonotic.cfg @@ -1118,6 +1118,7 @@ set quit_and_redirect "" "set to an IP to redirect all players at the end of the // singleplayer campaign set g_campaign 0 +set g_campaign_forceteam 0 "Forces the player to a given team in campaign mode, 1 = red, 2 = blue, 3 = yellow, 4 = pink" seta g_campaign_name "xonotic25" set g_campaign_skill 0 set g_campaignxonotic20_index 0 diff --git a/qcsrc/server/teamplay.qc b/qcsrc/server/teamplay.qc index 0798b29b2..a37acb8af 100644 --- a/qcsrc/server/teamplay.qc +++ b/qcsrc/server/teamplay.qc @@ -879,6 +879,29 @@ float JoinBestTeam(entity pl, float only_return_best, float forcebestteam) // find out what teams are available CheckAllowedTeams(pl); + // if we want the player in a certain team for campaign, force him there + if(cvar("g_campaign")) + if(clienttype(pl) == CLIENTTYPE_REAL) // only players, not bots + { + switch(cvar("g_campaign_forceteam")) + { + case 1: + SetPlayerColors(pl, COLOR_TEAM1 - 1); + return COLOR_TEAM1; + case 2: + SetPlayerColors(pl, COLOR_TEAM2 - 1); + return COLOR_TEAM2; + case 3: + SetPlayerColors(pl, COLOR_TEAM3 - 1); + return COLOR_TEAM3; + case 4: + SetPlayerColors(pl, COLOR_TEAM4 - 1); + return COLOR_TEAM4; + default: + break; + } + } + // if we don't care what team he ends up on, put him on whatever team he entered as. // if he's not on a valid team, then let other code put him on the smallest team if(!forcebestteam)