Exemplo n.º 1
0
        public void Invoke(Network.Session Session, Messages.PacketEvent Packet)
        {
            foreach (int TargetId in Packet.PopCollection())
            {
                if (TargetId < 1 || TargetId == Session.Character.Id)
                {
                    continue;
                }

                if (Session.Character.MessengerFriends.Contains(TargetId))
                {
                    continue;
                }

                if (!Session.Character.MessengerRequests.Contains(TargetId))
                {
                    continue;
                }

                if (Session.Character.MessengerFriends.Count >= System.HabboSystem.MessengerManager.GetLimitFriends(Session.Character.Id))
                {
                    Session.WriteComposer(new MessengerErrorComposer(39, 2));
                    return;
                }

                Session.Character.MessengerFriends.Add(TargetId);
                Session.Character.MessengerRequests.Remove(TargetId);

                CharacterStatus Status = System.HabboSystem.CharacterManager.GetStatus(TargetId);

                Session.WriteComposer(new FriendListUpdateComposer(Session.Character, new Dictionary<int, int>
                {
                    {
                        TargetId, (int)MessengerUpdateType.NewFriendship
                    }
                }));

                if (Status == CharacterStatus.Online)
                {
                    var TargetSession = System.NetworkSocket.GetSession(TargetId);

                    if (TargetSession != null)
                    {
                        TargetSession.WriteComposer(new FriendListUpdateComposer(TargetSession.Character, new Dictionary<int, int>
                        {
                            {
                                Session.Character.Id, (int)MessengerUpdateType.NewFriendship
                            }
                        }));

                        TargetSession.Character.MessengerFriends.Add(Session.Character.Id);
                    }
                }

                System.MySQLManager.InvokeQuery(new MessengerAcceptFriendQuery(TargetId, Session.Character.Id));
            }
        }
Exemplo n.º 2
0
        public void Invoke(Network.Session Session, Messages.PacketEvent Packet)
        {
            bool RemoveAll = Packet.PopBoolean();

            if (RemoveAll)
            {
                Session.Character.MessengerRequests.Clear();
                System.MySQLManager.InvokeQuery(new MessengerDeclineAllFriendQuery(Session.Character.Id));
            }
            else
            {
                foreach (int TargetId in Packet.PopCollection())
                {
                    if (TargetId < 1 || TargetId == Session.Character.Id)
                    {
                        continue;
                    }

                    if (!Session.Character.MessengerRequests.Contains(TargetId))
                    {
                        continue;
                    }

                    Session.Character.MessengerRequests.Remove(TargetId);
                    System.MySQLManager.InvokeQuery(new MessengerDeclineFriendQuery(TargetId, Session.Character.Id));
                }
            }
        }
Exemplo n.º 3
0
        public void Invoke(Network.Session Session, Messages.PacketEvent Packet)
        {
            // TODO ? IF(!INROOM)

            if (Session.Character.Muted)
            {
                Session.WriteComposer(new ModMessageComposer("You are muted, only someone with an higher rank can unmute you."));
                return;
            }

            ICollection<int> Targets = Packet.PopCollection();

            string Message = Packet.PopString();

            foreach (int TargetId in Targets)
            {
                if (TargetId < 1 || TargetId == Session.Character.Id)
                {
                    continue;
                }

                if (System.HabboSystem.CharacterManager.GetStatus(TargetId) == CharacterStatus.Offline)
                {
                    continue;
                }

                if (!Session.Character.MessengerFriends.Contains(TargetId))
                {
                    Session.WriteComposer(new RoomInviteErrorComposer());
                    continue;
                }

                var TargetSession = System.NetworkSocket.GetSession(TargetId);

                if (TargetSession == null)
                {
                    Session.WriteComposer(new RoomInviteErrorComposer());
                    continue;
                }

                if (TargetSession.Character.Muted)
                {
                    Session.WriteComposer(new ModMessageComposer(string.Format("{0} is muted.", Session.Character.Username)));
                    continue;
                }

                TargetSession.WriteComposer(new RoomInviteComposer(Session.Character.Id, Message));
            }
        }
Exemplo n.º 4
0
        public void Invoke(Network.Session Session, Messages.PacketEvent Packet)
        {
            foreach (int TargetId in Packet.PopCollection())
            {
                if (TargetId < 1 || TargetId == Session.Character.Id)
                {
                    continue;
                }

                if (!Session.Character.MessengerFriends.Contains(TargetId))
                {
                    continue;
                }

                CharacterStatus Status = System.HabboSystem.CharacterManager.GetStatus(TargetId);

                Session.WriteComposer(new FriendListUpdateComposer(Session.Character, new Dictionary<int, int>
                                                                                          {
                    {
                        TargetId, (int)MessengerUpdateType.RemoveBuddy
                    }
                }));

                if (Status == CharacterStatus.Online)
                {
                    var TargetSession = System.NetworkSocket.GetSession(TargetId);

                    if (TargetSession != null)
                    {
                        TargetSession.WriteComposer(new FriendListUpdateComposer(TargetSession.Character, new Dictionary<int, int>
                        {
                            {
                                Session.Character.Id, (int)MessengerUpdateType.RemoveBuddy
                            }
                        }));

                        TargetSession.Character.MessengerFriends.Remove(Session.Character.Id);
                    }
                }

                Session.Character.MessengerFriends.Remove(TargetId);

                System.MySQLManager.InvokeQuery(new MessengerFriendRemoveQuery(Session.Character.Id, TargetId));
            }
        }