/// <summary> /// 消息回复响应 /// </summary> /// <param name="sender"></param> /// <param name="message"></param> private void OnMessageReply(NetConnection <NetSession> sender, MessageReplyRequest message) { sender.Session.Response.messageReplyResponse = new MessageReplyResponse(); MessageManager messageManager = sender.Session.Character.messageManager; NMessageInfo nMessageInfo; if (!messageManager.HasManager(message.Id, out nMessageInfo, message.Type)) { sender.Session.Response.messageReplyResponse.Errormsg = "找不到消息"; sender.Session.Response.messageReplyResponse.Result = Result.Failed; sender.SendResponse(); return; } int accept = sender.Session.Character.Id; //message的接收者 int send = nMessageInfo.FromInfo.Id; NMessageCharInfo acceptInfo = MessageManager.GetMessageCharInfo(accept); NMessageCharInfo sendInfo = MessageManager.GetMessageCharInfo(send); if (nMessageInfo.Type == MessageType.Friend) { if (message.Reply == MessageReply.Accept) { if (FriendManager.HasFriend(accept, send) || FriendManager.HasFriend(send, accept)) { sender.Session.Response.messageReplyResponse.Errormsg = "已存在的好友"; sender.Session.Response.messageReplyResponse.Result = Result.Failed; sender.SendResponse(); return; } FriendManager.AddFriend(accept, send, acceptInfo, sendInfo); messageManager.SetMessageState(message.Id, nMessageInfo.Type, 2); sender.Session.Response.messageReplyResponse.Result = Result.Success; sender.SendResponse(); FriendManager.FriendAddNoisy(send, acceptInfo, Result.Success, true);//添加好友成功 FriendManager.FriendAddNoisy(accept, sendInfo, Result.Success, false); return; } else if (message.Reply == MessageReply.Refuse) { messageManager.SetMessageState(message.Id, nMessageInfo.Type, 2); sender.Session.Response.messageReplyResponse.Result = Result.Success; sender.SendResponse(); FriendManager.FriendAddNoisy(send, acceptInfo, Result.Failed, true); FriendManager.FriendAddNoisy(accept, sendInfo, Result.Failed, false); return; } } else if (nMessageInfo.Type == MessageType.Mail) { //TODO:邮件接受 } else if (nMessageInfo.Type == MessageType.Global) { if (message.Reply == MessageReply.Accept && nMessageInfo.Status == 0) { foreach (var item in nMessageInfo.Items) { sender.Session.Character.itemManager.AddItem(item.Id, item.Count); } if (nMessageInfo.Gold > 0) { sender.Session.Character.Gold += nMessageInfo.Gold; } messageManager.SetMessageState(message.Id, nMessageInfo.Type, 1); DBService.Instance.Save(false); sender.Session.Response.messageReplyResponse.Result = Result.Success; sender.SendResponse(); } else if (message.Reply == MessageReply.Delete && nMessageInfo.Status == 1) { messageManager.SetMessageState(message.Id, nMessageInfo.Type, 2); DBService.Instance.Save(false); sender.Session.Response.messageReplyResponse.Result = Result.Success; sender.SendResponse(); } } }