Merge remote-tracking branch 'origin/terencehill/g_changeteam_banned_fix'
[xonotic/xonotic-data.pk3dir.git] / qcsrc / server / clientcommands.qc
index b62f34f23320de68f6e46cf0dbe4ce8b366244f5..7f52f8f8c951fe3161eee840a2fcaf2d1dcab53c 100644 (file)
@@ -278,25 +278,33 @@ void SV_ParseClientCommand(string s) {
                } else if(lockteams) {
                        sprint( self, "^7The game has already begun, you must wait until the next map to be able to join a team.\n");
                } else if( argv(1) == "red" ) {
-                       if(self.team != COLOR_TEAM1 || self.deadflag != DEAD_NO)
-                               ClientKill_TeamChange(COLOR_TEAM1);
-                       else
+                       if(self.team == COLOR_TEAM1 && self.deadflag == DEAD_NO)
                                sprint( self, "^7You already are on that team.\n");
-               } else if( argv(1) == "blue" ) {
-                       if(self.team != COLOR_TEAM2 || self.deadflag != DEAD_NO)
-                               ClientKill_TeamChange(COLOR_TEAM2);
+                       else if (self.wasplayer && autocvar_g_changeteam_banned)
+                               sprint( self, "^1You cannot change team, forbidden by the server.\n");
                        else
+                               ClientKill_TeamChange(COLOR_TEAM1);
+               } else if( argv(1) == "blue" ) {
+                       if(self.team == COLOR_TEAM2 && self.deadflag == DEAD_NO)
                                sprint( self, "^7You already are on that team.\n");
-               } else if( argv(1) == "yellow" ) {
-                       if(self.team != COLOR_TEAM3 || self.deadflag != DEAD_NO)
-                               ClientKill_TeamChange(COLOR_TEAM3);
+                       else if (self.wasplayer && autocvar_g_changeteam_banned)
+                               sprint( self, "^1You cannot change team, forbidden by the server.\n");
                        else
+                               ClientKill_TeamChange(COLOR_TEAM2);
+               } else if( argv(1) == "yellow" ) {
+                       if(self.team == COLOR_TEAM3 && self.deadflag == DEAD_NO)
                                sprint( self, "^7You already are on that team.\n");
-               } else if( argv(1) == "pink" ) {
-                       if(self.team != COLOR_TEAM4 || self.deadflag != DEAD_NO)
-                               ClientKill_TeamChange(COLOR_TEAM4);
+                       else if (self.wasplayer && autocvar_g_changeteam_banned)
+                               sprint( self, "^1You cannot change team, forbidden by the server.\n");
                        else
+                               ClientKill_TeamChange(COLOR_TEAM3);
+               } else if( argv(1) == "pink" ) {
+                       if(self.team == COLOR_TEAM4 && self.deadflag == DEAD_NO)
                                sprint( self, "^7You already are on that team.\n");
+                       else if (self.wasplayer && autocvar_g_changeteam_banned)
+                               sprint( self, "^1You cannot change team, forbidden by the server.\n");
+                       else
+                               ClientKill_TeamChange(COLOR_TEAM4);
                } else if( argv(1) == "auto" ) {
                        ClientKill_TeamChange(-1);
                } else {