예제 #1
0
        private void OnTeamLeave(NetConnection <NetSession> sender, TeamLeaveRequest request)
        {
            Character character = sender.Session.Character;

            Log.InfoFormat("OnTeamLeav:: charactor:{0} TeamId:{1}", character.Id, request.TeamId);
            sender.Session.Response.teamLeave             = new TeamLeaveResponse();
            sender.Session.Response.teamLeave.Result      = Result.Success;
            sender.Session.Response.teamLeave.characterId = request.characterId;
            sender.SendResponse();
        }
예제 #2
0
        private void OnTeamLeave(NetConnection <NetSession> sender, TeamLeaveRequest message)
        {
            Character character = sender.Session.Character;

            Log.InfoFormat("OnTeamLeave: :character:{0} TeamID:{1}:{2}", character.Id, message.TeamId, message.CharacterId);
            sender.Session.Response.teamLeave             = new TeamLeaveResponse();
            sender.Session.Response.teamLeave.Result      = Result.Success;
            sender.Session.Response.teamLeave.CharacterId = message.CharacterId;
            character.Team.Leave(character);
            sender.SendResponse();
        }
예제 #3
0
        private void OnTeamLeave(NetConnection <NetSession> sender, TeamLeaveRequest message)
        {
            sender.Session.Response.teamLeave = new TeamLeaveResponse();
            Log.Info($"OnTeamLequestRequest ID:{message.characterId}");
            try
            {   //如果没有队伍
                if (sender.Session.Character.team == null)
                {
                    throw new NoTeamException();
                }
                //如果是自己退队
                if (sender.Session.Character.Id == message.characterId)
                {
                    TeamManager.Instance.RemoveTeamMember(sender.Session.Character);
                }
                //如果是队长踢人
                else
                {
                    //如果不是队长
                    if (sender.Session.Character.team.Leader != sender.Session.Character)
                    {
                        throw new NotLeaderException();
                    }
                    //如果没有这个玩家
                    NetConnection <NetSession> session;
                    if (!SessionManager.Instance.GetSession(message.characterId, out session))
                    {
                        throw new NoSessionException();
                    }
                    //如果队里没有这个人
                    if (!sender.Session.Character.team.HasMember(session.Session.Character))
                    {
                        throw new NoMemberException();
                    }
                    TeamManager.Instance.RemoveTeamMember(session.Session.Character);
                    MessageService.Instance.SendUpdate(session);
                }
            }

            catch (Exception e)
            {
                sender.Session.Response.teamLeave.Result   = Result.Failed;
                sender.Session.Response.teamLeave.Errormsg = e.Message;
            }
            sender.SendResponse();
        }