客户端:
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