/// <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); }
/// <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); }; }
/// <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(); } }
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(); } }
/// <inheritdoc/> public void HandlePacket(Player player, Span <byte> packet) { GuildJoinRequest request = packet; this.requestAction.RequestGuild(player, request.GuildMasterPlayerId); }
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); }