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