Ejemplo n.º 1
0
        protected override void OnMsgClientSetTeam(BasePlayer player, GameMsg_ClSetTeam message)
        {
            if (!GameController.IsTeamChangeAllowed(player))
            {
                return;
            }

            if (player.Team == message.Team)
            {
                return;
            }

            if (Config["SvSpamprotection"] && player.LastSetTeamTick + Server.TickSpeed * 3 > Server.Tick)
            {
                return;
            }

            if (message.Team != Team.Spectators && LockTeams || player.TeamChangeTick > Server.Tick)
            {
                return;
            }

            player.LastSetTeamTick = Server.Tick;

            if (GameController.CanJoinTeam(player, message.Team) &&
                GameController.CanChangeTeam(player, message.Team))
            {
                player.SetTeam(message.Team);
            }
        }
Ejemplo n.º 2
0
        protected virtual void OnMsgSetTeam(BasePlayer player, GameMsg_ClSetTeam msg)
        {
            if (msg.Team < Team.SPECTATORS || msg.Team > Team.BLUE)
            {
                return;
            }

            if (World.IsPaused || player.Team == msg.Team ||
                Config["SvSpamprotection"] &&
                player.LastSetTeam + Server.TickSpeed * 3 > Server.Tick)
            {
                return;
            }

            if (msg.Team != Team.SPECTATORS && LockTeams)
            {
                player.LastSetTeam = Server.Tick;
                SendBroadcast(player.ClientId, "Teams are locked");
                return;
            }

            if (player.TeamChangeTick > Server.Tick)
            {
                player.LastSetTeam = Server.Tick;
                var timeLeft = (player.TeamChangeTick - Server.Tick) / Server.TickSpeed;
                SendBroadcast(player.ClientId, $"Time to wait before changing team: {timeLeft/60}:{timeLeft%60}");
                return;
            }

            if (GameController.CanJoinTeam(player.ClientId, msg.Team))
            {
                if (!GameController.CanChangeTeam(player, msg.Team))
                {
                    return;
                }

                player.LastSetTeam    = Server.Tick;
                player.TeamChangeTick = Server.Tick;

                player.SetTeam(msg.Team);
                GameController.CheckTeamBalance();

                if (player.Team == Team.SPECTATORS || msg.Team == Team.SPECTATORS)
                {
                    // vote update
                }
            }
            else
            {
                SendBroadcast(player.ClientId, $"Only {Players.Length - Config["SvSpectatorSlots"]}active players are allowed");
            }
        }
Ejemplo n.º 3
0
 protected abstract void OnMsgClientSetTeam(BasePlayer player, GameMsg_ClSetTeam message);