Ejemplo n.º 1
0
        /// <summary>
        /// 会长收到加入公会响应
        /// </summary>
        /// <param name="accept"></param>
        /// <param name="request"></param>
        public void SendGuildJoinResponse(bool accept, GuildJoinRequest request)
        {
            Debug.Log("SendGuildJoinResponse");
            NetMessage message = new NetMessage();

            message.Request = new NetMessageRequest();
            message.Request.guildJoinRes              = new GuildJoinResponse();
            message.Request.guildJoinRes.Result       = Result.Success;
            message.Request.guildJoinRes.Apply        = request.Apply;
            message.Request.guildJoinRes.Apply.Result = accept ? ApplyResult.Accept : ApplyResult.Reject;
            NetClient.Instance.SendMessage(message);
        }
Ejemplo n.º 2
0
        /// <summary>
        /// 收到加入公会请求
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="message"></param>
        private void OnGuildJoinRequest(object sender, GuildJoinRequest request)
        {
            var confirm = MessageBox.Show(string.Format("{0} 申请加入公会", request.Apply.Name), "公会申请", MessageBoxType.Confirm, "同意", "拒绝");

            confirm.OnYes = () =>
            {
                this.SendGuildJoinResponse(true, request);
            };
            confirm.OnNo = () =>
            {
                this.SendGuildJoinResponse(false, request);
            };
        }
Ejemplo n.º 3
0
        /// <summary>
        /// 收到成员加入公会请求
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="message"></param>
        private void OnGuildJoinRequest(NetConnection <NetSession> sender, GuildJoinRequest request)
        {
            Character character = sender.Session.Character;

            Log.InfoFormat("OnGuildJoinRequest::GuilfId:{0} ", request.Apply.GuildId, character.Id, character.Name);
            var guild = GuildManager.Instance.GetGuild(request.Apply.GuildId);

            if (guild == null)
            {
                sender.Session.Response.guildJoinRes          = new GuildJoinResponse();
                sender.Session.Response.guildJoinRes.Result   = Result.Failed;
                sender.Session.Response.guildJoinRes.Errormsg = "公会不存在";
                sender.SendResponse();
                return;
            }
            request.Apply.characterID = character.Data.ID;
            request.Apply.Name        = character.Data.Name;
            request.Apply.Class       = character.Data.Class;
            request.Apply.Level       = character.Data.Level;
            if (guild.JoinApply(request.Apply))
            {
                var leader = SessionManager.Instance.GetSession(guild.Date.LeaderID);
                if (leader != null)//会长在线
                {
                    //给会长发送请求加入申请
                    leader.Session.Response.guildJoinReq = request;
                    leader.SendResponse();
                }
            }
            else
            {
                sender.Session.Response.guildJoinRes          = new GuildJoinResponse();
                sender.Session.Response.guildJoinRes.Result   = Result.Failed;
                sender.Session.Response.guildJoinRes.Errormsg = "请勿重复申请";
                sender.SendResponse();
            }
        }
Ejemplo n.º 4
0
        private void OnGuildJoinRequest(NetConnection <NetSession> sender, GuildJoinRequest request)
        {
            Character character = sender.Session.Character;

            Log.InfoFormat("OnGuildJoinRequest:: GuildID:{0} character:[{1}]{2}", request.Apply.GuildId, request.Apply.characterId, request.Apply.Name);
            var guild = GuildManager.Instance.GetGuild(request.Apply.GuildId);

            if (guild == null)
            {
                sender.Session.Response.guildJoinRes          = new GuildJoinResponse();
                sender.Session.Response.guildJoinRes.Result   = Result.Success;
                sender.Session.Response.guildJoinRes.Errormsg = "工会不存在";
                sender.SendResponse();
                return;
            }
            request.Apply.characterId = character.Data.ID;
            request.Apply.Name        = character.Data.Name;
            request.Apply.Class       = character.Data.Class;
            request.Apply.Level       = character.Data.Level;
            if (guild.JoinApply(request.Apply))
            {
                var leader = SessionManager.Instance.GetSession(guild.Data.LeaderID);
                if (leader != null)
                {//给队长发送申请加入请求
                    leader.Session.Response.guildJoinReq = request;
                    leader.SendResponse();
                }
            }
            else
            {
                sender.Session.Response.guildJoinRes          = new GuildJoinResponse();
                sender.Session.Response.guildJoinRes.Result   = Result.Failed;
                sender.Session.Response.guildJoinRes.Errormsg = "请勿重复请求";
                sender.SendResponse();
            }
        }
Ejemplo n.º 5
0
        /// <inheritdoc/>
        public void HandlePacket(Player player, Span <byte> packet)
        {
            GuildJoinRequest request = packet;

            this.requestAction.RequestGuild(player, request.GuildMasterPlayerId);
        }
Ejemplo n.º 6
0
        private static void ProcessGuildJoinRequest(WorldClient Client, string Packet)
        {
            if (!Client.GetCharacter().HasGuild())
            {
                Client.Send(new BasicNoOperationMessage());
                return;
            }

            string TargetName = Packet.Substring(3);


            //var Target = Client.GetCharacter().GetMap().GetCharacter(TargetName);
            var Target = WorldServer.Network.WorldServer.Clients.FirstOrDefault(x => x.Character != null && x.Character.Name.Trim().ToLower() == TargetName.Trim().ToLower()).Character;

            if (Target == null)
            {
                Client.Send(new BasicNoOperationMessage());
                return;
            }

            var TargetClient = Target.GetClient();

            if (TargetClient == null)
            {
                Client.Send(new BasicNoOperationMessage());
                return;
            }

            if (!Client.CanGameAction(GameActionTypeEnum.BASIC_REQUEST))
            {
                Client.Send(new BasicNoOperationMessage());
                return;
            }

            if (!TargetClient.CanGameAction(GameActionTypeEnum.BASIC_REQUEST))
            {
                Client.Send(new GuildJoinMessage('E', GuildJoinReason.REASON_AWAY));
                return;
            }

            if (TargetClient.GetCharacter().HasGuild())
            {
                Client.Send(new GuildJoinMessage('E', GuildJoinReason.REASON_IN_GUILD));
                return;
            }

            // pas les droits necessaires
            if (!Client.GetCharacter().getCharacterGuild().Can(GuildRightEnum.RIGHT_INVIT))
            {
                Client.Send(new GuildJoinMessage('E', GuildJoinReason.REASON_NO_RIGHT));
                return;
            }

            // Ajout de la requete et action
            var Request       = new GuildJoinRequest(Client, TargetClient);
            var RequestAction = new GameRequest(Client.GetCharacter(), Request);

            Client.SetBaseRequest(Request);
            TargetClient.SetBaseRequest(Request);

            Client.AddGameAction(RequestAction);
            TargetClient.AddGameAction(RequestAction);

            var RequesterMessage = new GuildJoinMessage('R', Args: TargetName);
            var RequestedMessage = new GuildJoinMessage('r', Args: Client.GetCharacter().ActorId.ToString() + "|" + Client.GetCharacter().Name + "|" + Client.GetCharacter().GetGuild().Name);

            Client.Send(RequesterMessage);
            Target.Send(RequestedMessage);
        }