示例#1
0
 public void Invoke(Session Session, Messages.PacketEvent Packet)
 {
     if (System.Configuration.PopBoolean("MOTD.Notifitation.Enabled"))
     {
         Session.WriteComposer(new MOTDNotificationComposer(System.Configuration.PopString("MOTD.Notifitation.Message")));
     }
 }
示例#2
0
        public void Invoke(Session Session, Messages.PacketEvent Packet)
        {
            int A = Packet.PopInt32();
            int B = Packet.PopInt32();

            Session.UpdateLatencyPing(((A + B) / 2));
        }
示例#3
0
        public void Invoke(Session Session, Messages.PacketEvent Packet)
        {
            string Name = Packet.PopString();
            string Model = Packet.PopString();

            System.IOStreamer.AppendLine("Caption: {0}, Model: {1}", Name, Model);
        }
示例#4
0
 public void Invoke(Session Session, Messages.PacketEvent Packet)
 {
     switch (Packet.PopString())
     {
         case "Performance":
             switch (Packet.PopString())
             {
                 case "fps":
                     Session.UpdateFramesPerSecond(int.Parse(Packet.PopString()));
                     break;
             }
             break;
     }
 }
示例#5
0
文件: Rooms.cs 项目: devMextur/Tazqon
        public void Invoke(Session Session, Messages.PacketEvent Packet)
        {
            RoomAdapter Adapter;

            if (System.HabboSystem.CharacterManager.GetCurrentRoom(Session.Character.Id, out Adapter))
            {
                RoomUnit Unit;

                if (Adapter.GetUnit(Session.Character.Id, out Unit))
                {
                    Adapter.WriteComposer(new ChatMessageComposer(Unit.Id, Packet.PopString()));
                }
            }
        }
示例#6
0
        public void Invoke(Session Session, Messages.PacketEvent Packet)
        {
            Session.WriteComposer(new HabboActivityPointNotificationMessageComposer(Session.Character.ActivityPoints));

            Session.Character.UpdateAchievements(System.HabboSystem.AchievementManager.GetCharacterAchievement(Session.Character.Id));
            Session.WriteComposer(new AchievementsScoreComposer(System.HabboSystem.AchievementManager.GetAchievementScore(Session.Character)));
            Session.WriteComposer(new NavigatorSettingsComposer(Session.Character.HomeRoom));
            Session.WriteComposer(new UserRightsMessageComposer(Habbo.Characters.Membership.Vip, Session.Character.Id));

            Session.Character.UpdateLogs(System.HabboSystem.CharacterManager.GetCharacterLogs(Session.Character.Id));

            Session.Character.CheckAchievement(2);
            Session.Character.CheckAchievement(3); // RegistrationDuration
            Session.Character.CheckAchievement(10); // HappyHour
            // TODO serialize ach at login etc
        }
示例#7
0
        public void Invoke(Session Session, Messages.PacketEvent Packet)
        {
            string Ticket = Packet.PopString();

            Character CharObj = System.HabboSystem.CharacterManager.Authenticate(Ticket);

            if (CharObj == null)
            {
                System.IOStreamer.AppendColor(ConsoleColor.Red);
                System.IOStreamer.AppendLine("Failed to Authenticate: {0}", Ticket);
                System.NetworkSocket.CloseSession(Session);
            }
            else
            {
                Session.UpdateCharacter(CharObj);
                Session.WriteComposer(new AuthenticationOKMessageComposer());
            }
        }
示例#8
0
文件: Rooms.cs 项目: devMextur/Tazqon
        public void Invoke(Session Session, Messages.PacketEvent Packet)
        {
            RoomAdapter Adapter;

            if (System.HabboSystem.CharacterManager.GetCurrentRoom(Session.Character.Id, out Adapter))
            {
                RoomUnit Unit;

                if (Adapter.GetUnit(Session.Character.Id, out Unit))
                {
                    var DanceId = Packet.PopInt32();

                    Unit.Dance(DanceId);
                    Unit.Activate();

                    Adapter.WriteComposer(new DanceMessageComposer(Unit.Id, DanceId));
                }
            }
        }
示例#9
0
        public void Invoke(Session Session, Messages.PacketEvent Packet)
        {
            RoomAdapter Adapter;

            if (System.HabboSystem.CharacterManager.GetCurrentRoom(Session.Character.ConnectedRoom, out Adapter))
            {
                RoomUnit Unit;

                Point Point = new Point(Adapter.Information.Model.LocationDoorX, Adapter.Information.Model.LocationDoorY);

                if (Adapter.GetUnit(Session.Character.ConnectedRoom, out Unit))
                {
                    Unit.StopWalk();

                    if (Unit.Point == Point)
                    {
                        Unit.Remove();
                        return;
                    }

                    var Path = System.HabboSystem.RoomManager.BlockCalculator.Generate(Unit.Point, Point, Adapter.BlockNodes);

                    if (Path.Count > 0)
                    {
                        if (Path.Count <= 20)
                        {
                            Unit.GivePath(Path);
                        }
                        else
                        {
                            Unit.SetLocation(Point);
                        }
                    }
                    else
                    {
                        Unit.Remove();
                        return;
                    }
                }
            }
        }
示例#10
0
        /// <summary>
        /// Returns the status of an character.
        /// </summary>
        /// <param name="Username"></param>
        /// <returns></returns>
        public CharacterStatus GetStatus(string Username, out Session Session)
        {
            Session = System.NetworkSocket.GetSession(Username);

            return Session != null ? CharacterStatus.Online : CharacterStatus.Offline;
        }
示例#11
0
        public bool EnterRoom(Session Session,int RoomId, string Password, out Room Room)
        {
            Room = System.HabboSystem.RoomManager.GetRoom(RoomId);

            if (Room == null)
            {
                return false;
            }

            if (Room.GetRoomRight(Session.Character.Id) != RoomRight.Owner)
            {
                if (Room.DoorState == DoorState.Password)
                {
                    if (Room.Password != Password)
                    {
                        Session.WriteComposer(new GenericErrorComposer(-100002));
                        Session.WriteComposer(new CloseConnectionMessageComposer());
                        return false;
                    }
                }
            }

            RoomAdapter Adapter = System.HabboSystem.RoomManager.CastAdapter(RoomId);

            if (System.HabboSystem.RoomManager.HasAdapter(RoomId))
            {
                if (Room.GetRoomRight(Session.Character.Id) != RoomRight.Owner)
                {
                    if (Adapter.PlayersAmount >= Adapter.Information.Model.MaximalUnits)
                    {
                        Session.WriteComposer(new CantConnectMessageComposer(1));
                        Session.WriteComposer(new CloseConnectionMessageComposer());
                        return false;
                    }
                }
            }

            Session.WriteComposer(new OpenConnectionMessageComposer());

            return true;
        }
示例#12
0
 public void Invoke(Session Session, Messages.PacketEvent Packet)
 {
     Session.WriteComposer(new LatencyPingResponseMessageComposer(Packet.PopInt32()));
 }
示例#13
0
 public void Invoke(Session Session, Messages.PacketEvent Packet)
 {
     Session.WriteComposer(new GuestRoomSearchResultComposer(System.HabboSystem.RoomManager.GetRooms(Session.Character.Id)));
 }
示例#14
0
文件: Rooms.cs 项目: devMextur/Tazqon
        public void Invoke(Session Session, Messages.PacketEvent Packet)
        {
            Room Room;

            if (System.HabboSystem.RoomManager.GetRoom(Session.Character.LoadingRoom, out Room))
            {
                Session.WriteComposer(new PublicRoomObjectsMessageComposer());
                Session.WriteComposer(new ObjectsMessageComposer());
                Session.WriteComposer(new ItemsMessageComposer());

                RoomUnit Unit;

                if (Room.Adapter.CastPlayer(Session.Character.Id, out Unit))
                {
                    Room.Adapter.WriteComposer(new UsersMessageComposer(new List<RoomUnit> { Unit }));
                    Room.Adapter.WriteComposer(new UserUpdateMessageComposer(new List<RoomUnit> { Unit }));

                    Session.WriteComposer(new UsersMessageComposer(Room.Adapter.Units.Values));
                    // TODO: HideWalls, WallThick, FloorThick
                    Session.WriteComposer(new RoomEntryInfoMessageComposer(Room.Id, Room.GetRoomRight(Session.Character.Id)));
                    Session.WriteComposer(new UserUpdateMessageComposer(Room.Adapter.Units.Values));
                    Session.WriteComposer(new GlobalDanceMessageComposer(Room.Adapter.GetDancingUnits()));

                    // TODO: Rights Composers

                    Unit.Authenticate();
                    Session.Character.UpdateLoadingRoom(0);

                    System.HabboSystem.MessengerManager.UpdateRequest(Session.Character.Id, Habbo.Messenger.MessengerUpdateType.RoomChange);
                }
                else
                {
                    Session.WriteComposer(new CloseConnectionMessageComposer());
                }
            }
        }
示例#15
0
 public void Invoke(Session Session, Messages.PacketEvent Packet)
 {
     Session.WriteComposer(new SoundSettingsComposer(Session.Character.SoundSettings));
 }
示例#16
0
 public void Invoke(Session Session, Messages.PacketEvent Packet)
 {
     Session.WriteComposer(new CreditBalanceComposer(Session.Character.Credits));
 }
示例#17
0
 public void Invoke(Session Session, Messages.PacketEvent Packet)
 {
     Session.WriteComposer(new UserObjectComposer(Session.Character));
 }
示例#18
0
文件: Rooms.cs 项目: devMextur/Tazqon
 public void Invoke(Session Session, Messages.PacketEvent Packet)
 {
     Session.WriteComposer(new RoomAdMessageComposer());
 }
示例#19
0
文件: Rooms.cs 项目: devMextur/Tazqon
        public void Invoke(Session Session, Messages.PacketEvent Packet)
        {
            Room Room;

            if (System.HabboSystem.RoomManager.EnterRoom(Session, Packet.PopInt32(), Packet.PopString(), out Room))
            {
                Session.WriteComposer(new RoomUrlMessageComposer(Room.Id));
                Session.WriteComposer(new RoomReadyMessageComposer(Room.Model.Caption, Room.Id));

                /*
                 * Wallpaper
                 * Floor
                 * Landscape
                 * Rating
                 * Event
                 * */
                Session.Character.UpdateLoadingRoom(Room.Id);
                Session.Character.UpdateConnectedRoom(0);
            }
            else
            {
                Session.WriteComposer(new CloseConnectionMessageComposer());
            }
        }
示例#20
0
文件: Rooms.cs 项目: devMextur/Tazqon
        public void Invoke(Session Session, Messages.PacketEvent Packet)
        {
            var Point = new Point(Packet.PopInt32(), Packet.PopInt32());

            RoomAdapter Adapter;

            if (System.HabboSystem.CharacterManager.GetCurrentRoom(Session.Character.Id, out Adapter))
            {
                RoomUnit Unit;

                if (Adapter.GetUnit(Session.Character.Id, out Unit))
                {
                    if (Unit.Point == Point)
                    {
                        return;
                    }

                    Unit.StopWalk();

                    var Path = System.HabboSystem.RoomManager.BlockCalculator.Generate(Unit.Point, Point, Adapter.BlockNodes);

                    if (Path.Count > 0)
                    {
                        Unit.GivePath(Path);
                    }
                }
            }
        }
示例#21
0
文件: Rooms.cs 项目: devMextur/Tazqon
        public void Invoke(Session Session, Messages.PacketEvent Packet)
        {
            var Point = new Point(Packet.PopInt32(), Packet.PopInt32());

            RoomAdapter Adapter;

            if (System.HabboSystem.CharacterManager.GetCurrentRoom(Session.Character.Id, out Adapter))
            {
                RoomUnit Unit;

                if (Adapter.GetUnit(Session.Character.Id, out Unit))
                {
                    if (Unit.Point == Point)
                    {
                        return;
                    }

                    Unit.StopWalk();

                    Unit.LookAt(Point);
                }
            }
        }
示例#22
0
        /// <summary>
        /// Returns the status of an character.
        /// </summary>
        /// <param name="Username"></param>
        /// <returns></returns>
        public CharacterStatus GetStatus(int Id, out Session Session)
        {
            Session = System.NetworkSocket.GetSession(Id);

            return Session != null ? CharacterStatus.Online : CharacterStatus.Offline;
        }
示例#23
0
        /// <summary>
        /// Handles the bytes from an Session.
        /// </summary>
        /// <param name="Session"></param>
        /// <param name="Bytes"></param>
        public void ProcessBytes(Session Session, ref byte[] Bytes)
        {
            try
            {
                if (Bytes[0] == 64)
                {
                    using (BinaryReader ReaderStream = new BinaryReader(new MemoryStream(Bytes)))
                    {
                        for (int i = 0; i < Bytes.Length; )
                        {
                            PacketEvent Stream = new PacketEvent();
                            int Length;

                            if (Stream.TryGetInfo(ref Bytes, ReaderStream, out Length))
                            {
                                i += Length;

                                if (MessageEvents.ContainsKey(Stream.Id))
                                {
                                    IMessageEvent Event = MessageEvents[Stream.Id];

                                    if (Session != null)
                                    {
                                        Event.Invoke(Session, Stream);

                                        if (System.Configuration.PopBoolean("Packets.Events.Logging"))
                                        {
                                            System.IOStreamer.AppendColor(ConsoleColor.Green);
                                            System.IOStreamer.AppendLine("({2}) ({0}) {1}", Stream.Id,
                                                                         GetName(Stream.Id), Session.Id);
                                        }
                                    }
                                }
                                else if (System.Configuration.PopBoolean("Packets.Events.Logging") && Session != null)
                                {
                                    System.IOStreamer.AppendColor(ConsoleColor.Red);
                                    System.IOStreamer.AppendLine("({2}) ({0}) {1}", Stream.Id, GetName(Stream.Id), Session.Id);
                                }
                            }
                        }
                    }
                }
                else if (Bytes[0] == 60)
                {
                    Session.WriteComposer(new PolicyFileRequestComposer("<?xml version=\"1.0\"?>\r\n" +
                       "<!DOCTYPE cross-domain-policy SYSTEM \"/xml/dtds/cross-domain-policy.dtd\">\r\n" +
                       "<cross-domain-policy>\r\n" +
                       "<allow-access-from domain=\"*\" to-ports=\"1-31111\" />\r\n" +
                       "</cross-domain-policy>\x0"));
                }
            }
            catch (Exception e)
            {
                System.IOStreamer.AppendColor(ConsoleColor.Red);
                System.IOStreamer.AppendLine("[ProcessBytes] {0}", e.ToString());
            }
        }
示例#24
0
 public void Invoke(Session Session, Messages.PacketEvent Packet)
 {
     Session.WriteComposer(new CanCreateRoomComposer(false, 10)); // todo
 }
示例#25
0
 public void Invoke(Session Session, Messages.PacketEvent Packet)
 {
     Session.Character.UpdateIgnores(System.HabboSystem.CharacterManager.GetIgnores(Session.Character.Id));
     Session.WriteComposer(new IgnoredUsersMessageComposer(Session.Character.Ignores));
 }
示例#26
0
文件: Rooms.cs 项目: devMextur/Tazqon
 public void Invoke(Session Session, Messages.PacketEvent Packet)
 {
     Session.WriteComposer(new HabboGroupBadgesMessageComposer());
 }
示例#27
0
文件: Rooms.cs 项目: devMextur/Tazqon
 public void Invoke(Session Session, Messages.PacketEvent Packet)
 {
     Session.WriteComposer(new FurnitureAliasesMessageComposer());
 }
示例#28
0
文件: Rooms.cs 项目: devMextur/Tazqon
        public void Invoke(Session Session, Messages.PacketEvent Packet)
        {
            Room Room;

            if (System.HabboSystem.RoomManager.GetRoom(Session.Character.LoadingRoom, out Room))
            {
                Session.WriteComposer(new HeightMapMessageComposer(Room.Model));
                Session.WriteComposer(new FloorHeightMapMessageComposer(Room.Model));
                Session.Character.UpdateConnectedRoom(Room.Id);
            }
            else
            {
                Session.WriteComposer(new CloseConnectionMessageComposer());
            }
        }
示例#29
0
 public void Invoke(Session Session, Messages.PacketEvent Packet)
 {
     Session.Character.UpdateSoundSettings(Packet.PopInt32());
 }
示例#30
0
文件: Rooms.cs 项目: devMextur/Tazqon
        public void Invoke(Session Session, Messages.PacketEvent Packet)
        {
            Room Room;

            if (System.HabboSystem.RoomManager.GetRoom(Packet.PopInt32(), out Room))
            {
                Session.WriteComposer(new GetGuestRoomResultComposer(Room, Packet.PopBoolean(), Packet.PopBoolean()));
            }
        }