Пример #1
0
        internal static void AddFriend(int id1, int id2, NMessageCharInfo info1, NMessageCharInfo info2)
        {

            TFriend friend1 = DBService.Instance.Entities.Friends.Where(x => x.FriendID == id2 && x.TCharacterID == id1).FirstOrDefault();
            if (friend1 == null)
            {
                friend1 = GetTFriend(id1, info2);
                DBService.Instance.Entities.Friends.Add(friend1);
            }
            else
            {
                friend1.IsDelete = false;
            }
            TFriend friend2 = DBService.Instance.Entities.Friends.Where(x => x.FriendID == id1 && x.TCharacterID == id2).FirstOrDefault();
            if (friend2 == null)
            {
                friend2 = GetTFriend(id2, info1);
                DBService.Instance.Entities.Friends.Add(friend2);
            }
            else
            {
                friend2.IsDelete = false;
            }


        }
Пример #2
0
        public static void FriendAddNoisy(int owner, NMessageCharInfo info, Result result, bool isSender)
        {
            NetConnection<NetSession> session;
            if (SessionManager.Instance.GetSession(owner, out session))
            {
                Log.Info($@"OwnerID:{owner} FriendID{info.Id} Reuslt:{result} IsSender:{isSender}");
                session.Session.Character.friendManager.SetDirty();
                string msg;
                if (isSender && result == Result.Success)
                {
                    msg = $"玩家[{info.Name}](UID:{info.Id})接受了你的好友请求";
                }
                else if (isSender && result == Result.Failed)
                {
                    msg = $"玩家[{info.Name}](UID:{info.Id})拒绝了你的好友请求";
                }
                else if (!isSender && result == Result.Success)
                {
                    msg = $"已玩家[{info.Name}](UID:{info.Id})成为好友";
                }
                else
                {
                    msg = $"已拒绝玩家[{info.Name}](UID:{info.Id})的好友请求";
                }
                MessageService.Instance.SendAddFriendResponse(session, result, msg);

            }
        }
Пример #3
0
 public static TFriend GetTFriend(int ownerID, NMessageCharInfo friendInfo)
 {
     TFriend friend = new TFriend()
     {
         FriendID = friendInfo.Id,
         TCharacterID = ownerID,
         FriendClass = friendInfo.Class,
         FriendLevel = friendInfo.Level,
         FriendName = friendInfo.Name,
     };
     return friend;
 }
Пример #4
0
        /// <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();
                }
            }
        }