离开队伍或踢人

客户端:

public const int LEVEA_CREQ = 10;

 TeamDTO teamDto = TeamHandler.Instance.GetTeamDto(_userDto.Id);
            //说明自己离队
 this.Write(Protocol.TYPE_USER,UserProtocol.AREA_TEAM,TeamProtocol.LEVEA_CREQ, teamDto.LeaderId);


 public const int KICK_CREQ = 12;    身为队长 ,有踢人权限

//说明踢别人
this.Write(Protocol.TYPE_USER, UserProtocol.AREA_TEAM, TeamProtocol.KICK_CREQ, _userDto.Id);


服务器:

  case TeamProtocol.LEVEA_CREQ:
                    LeaveTeam(userToken,message.GetMessage<int>());
                    break;   
case TeamProtocol.KICK_CREQ:
           KickTeam(userToken, message.GetMessage<int>());
           break;
private void LeaveTeam(UserToken userToken , int leaderId)
        {
            int teamId = _playerIdToTeamId[leaderId];
            TeamDTO teamDto = _idToTeamModel[teamId];
            int playerId = GetPlayerId(userToken);
            UserDTO userDto = ConvertDTO(_userBiz.GetPlayerModel(playerId));
            if (teamDto.LeaderId == playerId)
            {
                //队长离开队伍
                if (teamDto.TeamMembers.Count > 1)
                {
                    _playerIdToTeamId.Remove(playerId);
                    //房间还有其他人
                    teamDto.TeamMembers.RemoveAt(0);
                    teamDto.LeaderId = teamDto.TeamMembers[0].Id;
                    _playerIdToTeamId.Add(teamDto.TeamMembers[0].Id, teamId);
                    List<int> teamMemberIdlist = new List<int>();
                    foreach (UserDTO dto in teamDto.TeamMembers)
                    {
                        teamMemberIdlist.Add(dto.Id);
                    }
                    this.Write(teamMemberIdlist.ToArray(), Protocol.TYPE_USER, UserProtocol.AREA_TEAM, TeamProtocol.LEVEA_BRO, userDto.Name);
                    this.Write(teamDto.TeamMembers[0].Id, Protocol.TYPE_USER, UserProtocol.AREA_TEAM, TeamProtocol.LEVEA_SRES, "你被提升为队长!");
                    this.Write(userToken, Protocol.TYPE_USER, UserProtocol.AREA_TEAM, TeamProtocol.LEVEA_SRES, "你离开了队伍!");
                }
                else
                {
                    //房间只有自己
                    _playerIdToTeamId.Remove(playerId);
                    _oldTeamList.Add(teamDto.TeamId);
                    teamDto.LeaderId = -1;
                    teamDto.TeamMembers.Clear();
                    teamDto.TeamLevelDown = 0;
                    teamDto.TeamLevelUp = 99;
                }
                this.Write(userToken, Protocol.TYPE_USER, UserProtocol.AREA_TEAM, TeamProtocol.LEVEA_SRES, "你离开了队伍!");
            }
            else
            {
                //队员离开队伍
                for (int i = 0; i < teamDto.TeamMembers.Count; i++)
                {
                    if (teamDto.TeamMembers[i].Id == userDto.Id)
                    {
                        teamDto.TeamMembers.RemoveAt(i);
                        break;
                    }
                }
                this.Write(playerId, Protocol.TYPE_USER, UserProtocol.AREA_TEAM, TeamProtocol.LEVEA_SRES, "你离开了队伍!");
                List<int> teamMemberIdlist = new List<int>();
                foreach (UserDTO dto in teamDto.TeamMembers)
                {
                    teamMemberIdlist.Add(dto.Id);
                }
                this.Write(teamMemberIdlist.ToArray(), Protocol.TYPE_USER, UserProtocol.AREA_TEAM, TeamProtocol.LEVEA_BRO, userDto.Name);
            }

            GetTeamList(userToken);
        }
 private void KickTeam(UserToken userToken, int playerId)
        {
            int leaderId = GetPlayerId(userToken);
            if (!_playerIdToTeamId.ContainsKey(leaderId))
            {
                this.Write(userToken,Protocol.TYPE_USER,UserProtocol.AREA_TEAM,TeamProtocol.KICK_SRES,"你当前没有权限!");
                return;
            }
            TeamDTO teamDto = _idToTeamModel[_playerIdToTeamId[leaderId]];
            UserDTO userDto =ConvertDTO(_userBiz.GetPlayerModel(playerId));
            for (int i = 0; i < teamDto.TeamMembers.Count; i++)
            {
                if (teamDto.TeamMembers[i].Id == userDto.Id)
                {
                    teamDto.TeamMembers.RemoveAt(i);
                    break;
                }
            }
            this.Write(playerId,Protocol.TYPE_USER,UserProtocol.AREA_TEAM,TeamProtocol.KICK_SRES,"你被请离了队伍!");
            List<int> teamMemberIdlist = new List<int>();
            foreach (UserDTO dto in teamDto.TeamMembers)
            {
                teamMemberIdlist.Add(dto.Id);
            }
            this.Write(teamMemberIdlist.ToArray(), Protocol.TYPE_USER, UserProtocol.AREA_TEAM, TeamProtocol.KICK_SRES, string.Format("{0}离开了队伍",userDto.Name));
        }

FR:海涛高软(hunk Xu)  
QQ技术交流群:386476712

猜你喜欢

转载自blog.csdn.net/qq_15267341/article/details/85413658