r6014 - trunk/data/qcsrc/server
DONOTREPLY at icculus.org
DONOTREPLY at icculus.org
Fri Feb 27 13:41:18 EST 2009
Author: div0
Date: 2009-02-27 13:41:17 -0500 (Fri, 27 Feb 2009)
New Revision: 6014
Modified:
trunk/data/qcsrc/server/cl_client.qc
trunk/data/qcsrc/server/defs.qh
trunk/data/qcsrc/server/teamplay.qc
Log:
more teamplay fixes
Modified: trunk/data/qcsrc/server/cl_client.qc
===================================================================
--- trunk/data/qcsrc/server/cl_client.qc 2009-02-27 18:32:06 UTC (rev 6013)
+++ trunk/data/qcsrc/server/cl_client.qc 2009-02-27 18:41:17 UTC (rev 6014)
@@ -722,6 +722,7 @@
self.campingrifle_bulletcounter = 0;
self.classname = "player";
+ self.wasplayer = TRUE;
self.iscreature = TRUE;
self.movetype = MOVETYPE_WALK;
self.solid = SOLID_SLIDEBOX;
@@ -1913,7 +1914,7 @@
void LeaveSpectatorMode()
{
if(isJoinAllowed()) {
- if(!teams_matter || cvar("g_campaign") || cvar("g_balance_teams")) {
+ if(!teams_matter || cvar("g_campaign") || cvar("g_balance_teams") || (self.wasplayer && cvar("g_changeteam_banned"))) {
self.classname = "player";
if(cvar("g_campaign") || cvar("g_balance_teams") || cvar("g_balance_teams_force"))
JoinBestTeam(self, FALSE, TRUE);
Modified: trunk/data/qcsrc/server/defs.qh
===================================================================
--- trunk/data/qcsrc/server/defs.qh 2009-02-27 18:32:06 UTC (rev 6013)
+++ trunk/data/qcsrc/server/defs.qh 2009-02-27 18:41:17 UTC (rev 6014)
@@ -541,3 +541,5 @@
// the QC VM sucks
#define BITXOR(v,b) ((v) + (b) - 2 * ((v) & (b)))
#define BITXOR_ASSIGN(v,b) ((v) += ((b) - 2 * ((v) & (b))))
+
+.float wasplayer;
Modified: trunk/data/qcsrc/server/teamplay.qc
===================================================================
--- trunk/data/qcsrc/server/teamplay.qc 2009-02-27 18:32:06 UTC (rev 6013)
+++ trunk/data/qcsrc/server/teamplay.qc 2009-02-27 18:41:17 UTC (rev 6014)
@@ -945,76 +945,79 @@
return;
}
- if(teams_matter)
+ if(cvar("g_campaign"))
{
- if(cvar("g_campaign") || cvar("g_changeteam_banned"))
+ sprint(self, "Team changes not allowed\n");
+ return; // changing teams is not allowed
+ }
+
+ if(cvar("g_changeteam_banned") && self.wasplayer)
+ {
+ sprint(self, "Team changes not allowed\n");
+ return;
+ }
+
+ if(cvar("g_balance_teams_prevent_imbalance"))
+ {
+ // only allow changing to a smaller or equal size team
+
+ // find out what teams are available
+ //CheckAllowedTeams();
+ // count how many players on each team
+ GetTeamCounts(world);
+
+ // get desired team
+ if(dteam == 1 && c1 >= 0)//dcolor == COLOR_TEAM1 - 1)
{
- sprint(self, "Team changes not allowed\n");
- return; // changing teams is not allowed
+ dcount = c1;
+ dbotcount = cb1;
}
-
- if(!cvar("g_campaign") && cvar("g_balance_teams_prevent_imbalance"))
+ else if(dteam == 2 && c2 >= 0)//dcolor == COLOR_TEAM2 - 1)
{
- // only allow changing to a smaller or equal size team
+ dcount = c2;
+ dbotcount = cb2;
+ }
+ else if(dteam == 3 && c3 >= 0)//dcolor == COLOR_TEAM3 - 1)
+ {
+ dcount = c3;
+ dbotcount = cb3;
+ }
+ else if(dteam == 4 && c4 >= 0)//dcolor == COLOR_TEAM4 - 1)
+ {
+ dcount = c4;
+ dbotcount = cb4;
+ }
+ else
+ {
+ sprint(self, "Cannot change to an invalid team\n");
- // find out what teams are available
- //CheckAllowedTeams();
- // count how many players on each team
- GetTeamCounts(world);
+ return;
+ }
- // get desired team
- if(dteam == 1 && c1 >= 0)//dcolor == COLOR_TEAM1 - 1)
- {
- dcount = c1;
- dbotcount = cb1;
- }
- else if(dteam == 2 && c2 >= 0)//dcolor == COLOR_TEAM2 - 1)
- {
- dcount = c2;
- dbotcount = cb2;
- }
- else if(dteam == 3 && c3 >= 0)//dcolor == COLOR_TEAM3 - 1)
- {
- dcount = c3;
- dbotcount = cb3;
- }
- else if(dteam == 4 && c4 >= 0)//dcolor == COLOR_TEAM4 - 1)
- {
- dcount = c4;
- dbotcount = cb4;
- }
- else
- {
- sprint(self, "Cannot change to an invalid team\n");
+ // get starting team
+ if(steam == 1)//scolor == COLOR_TEAM1 - 1)
+ scount = c1;
+ else if(steam == 2)//scolor == COLOR_TEAM2 - 1)
+ scount = c2;
+ else if(steam == 3)//scolor == COLOR_TEAM3 - 1)
+ scount = c3;
+ else if(steam == 4)//scolor == COLOR_TEAM4 - 1)
+ scount = c4;
- return;
- }
-
- // get starting team
- if(steam == 1)//scolor == COLOR_TEAM1 - 1)
- scount = c1;
- else if(steam == 2)//scolor == COLOR_TEAM2 - 1)
- scount = c2;
- else if(steam == 3)//scolor == COLOR_TEAM3 - 1)
- scount = c3;
- else if(steam == 4)//scolor == COLOR_TEAM4 - 1)
- scount = c4;
-
- if(scount) // started at a valid, nonempty team
+ if(scount) // started at a valid, nonempty team
+ {
+ // check if we're trying to change to a larger team that doens't have bots to swap with
+ if(dcount >= scount && dbotcount <= 0)
{
- // check if we're trying to change to a larger team that doens't have bots to swap with
- if(dcount >= scount && dbotcount <= 0)
- {
- sprint(self, "Cannot change to a larger team\n");
- return; // can't change to a larger team
- }
+ sprint(self, "Cannot change to a larger team\n");
+ return; // can't change to a larger team
}
}
}
// bprint("allow change teams from ", ftos(steam), " to ", ftos(dteam), "\n");
- if(teams_matter && self.classname == "player" && steam != dteam)
+ if(self.classname == "player" && steam != dteam)
{
// reduce frags during a team change
TeamchangeFrags(self);
@@ -1022,7 +1025,7 @@
SetPlayerTeam(self, dteam, steam, FALSE);
- if(teams_matter && self.classname == "player" && steam != dteam)
+ if(self.classname == "player" && steam != dteam)
{
// kill player when changing teams
if(self.deadflag == DEAD_NO)
More information about the nexuiz-commits
mailing list