public void Handle(GameClient session, ClientMessage message)
        {
            if (session != null && session.GetHabbo() != null && session.GetHabbo().GetRoomSession().RequestedRoomID > 0 && session.GetHabbo().GetRoomSession().LoadingRoom)
            {
                Room room = Skylight.GetGame().GetRoomManager().TryGetRoom(session.GetHabbo().GetRoomSession().RequestedRoomID);
                session.GetHabbo().GetRoomSession().ResetRequestedRoom();
                if (room != null)
                {
                    if (room.RoomGamemapManager.Model != null)
                    {
                        session.SendData(room.RoomGamemapManager.Model.GetHeightmap(session.Revision, room.RoomGamemapManager.Tiles));
                        session.SendData(room.RoomGamemapManager.Model.GetRelativeHeightmap(session.Revision));

                        //TODO: Fix public items
                        ServerMessage publicItems = BasicUtilies.GetRevisionServerMessage(Revision.RELEASE63_201211141113_913728051);
                        publicItems.Init(r63bOutgoing.PublicItems);
                        publicItems.AppendInt32(0);
                        session.SendMessage(publicItems);

                        if (room.RoomData.Type == "private")
                        {
                            Dictionary <uint, string> floorItemOwners = new Dictionary <uint, string>();
                            List <byte> tempHolder = new List <byte>();
                            foreach (RoomItem item in room.RoomItemManager.FloorItems.Values)
                            {
                                if (!floorItemOwners.ContainsKey(item.UserID))
                                {
                                    floorItemOwners.Add(item.UserID, Skylight.GetGame().GetGameClientManager().GetUsernameByID(item.UserID));
                                }

                                ServerMessage temp = BasicUtilies.GetRevisionServerMessage(Revision.RELEASE63_201211141113_913728051);
                                temp.Init();
                                item.Serialize(temp);
                                tempHolder.AddRange(temp.GetBytes());
                            }

                            ServerMessage floorItems = BasicUtilies.GetRevisionServerMessage(Revision.RELEASE63_201211141113_913728051);
                            floorItems.Init(r63bOutgoing.FloorItems);
                            floorItems.AppendInt32(floorItemOwners.Count);
                            foreach (KeyValuePair <uint, string> floorItemOwner in floorItemOwners)
                            {
                                floorItems.AppendUInt(floorItemOwner.Key);
                                floorItems.AppendString(floorItemOwner.Value);
                            }
                            floorItems.AppendInt32(room.RoomItemManager.FloorItems.Values.Count);
                            floorItems.AppendBytes(tempHolder);
                            session.SendMessage(floorItems);

                            tempHolder = new List <byte>();
                            Dictionary <uint, string> wallItemOwners = new Dictionary <uint, string>();
                            foreach (RoomItem item in room.RoomItemManager.WallItems.Values)
                            {
                                if (!wallItemOwners.ContainsKey(item.UserID))
                                {
                                    wallItemOwners.Add(item.UserID, Skylight.GetGame().GetGameClientManager().GetUsernameByID(item.UserID));
                                }

                                ServerMessage temp = BasicUtilies.GetRevisionServerMessage(Revision.RELEASE63_201211141113_913728051);
                                temp.Init();
                                item.Serialize(temp);
                                tempHolder.AddRange(temp.GetBytes());
                            }

                            ServerMessage wallItems = BasicUtilies.GetRevisionServerMessage(Revision.RELEASE63_201211141113_913728051);
                            wallItems.Init(r63bOutgoing.WallItems);
                            wallItems.AppendInt32(wallItemOwners.Count);
                            foreach (KeyValuePair <uint, string> wallItemOwner in wallItemOwners)
                            {
                                wallItems.AppendUInt(wallItemOwner.Key);
                                wallItems.AppendString(wallItemOwner.Value);
                            }
                            wallItems.AppendInt32(room.RoomItemManager.WallItems.Values.Count);
                            wallItems.AppendBytes(tempHolder);
                            session.SendMessage(wallItems);
                        }

                        room.RoomUserManager.EnterRoom(session);

                        ICollection <RoomUnit> users        = room.RoomUserManager.GetRoomUsers();
                        ServerMessage          setRoomUsers = BasicUtilies.GetRevisionServerMessage(Revision.RELEASE63_201211141113_913728051);
                        setRoomUsers.Init(r63bOutgoing.SetRoomUser);
                        setRoomUsers.AppendInt32(users.Count);
                        foreach (RoomUnit user in users)
                        {
                            user.Serialize(setRoomUsers);
                        }
                        session.SendMessage(setRoomUsers);

                        ServerMessage roomVIPsetting = BasicUtilies.GetRevisionServerMessage(Revision.RELEASE63_201211141113_913728051);
                        roomVIPsetting.Init(r63bOutgoing.RoomVIPSettings);
                        roomVIPsetting.AppendBoolean(room.RoomData.Hidewalls);
                        roomVIPsetting.AppendInt32(room.RoomData.Wallthick);
                        roomVIPsetting.AppendInt32(room.RoomData.Floorthick);
                        session.SendMessage(roomVIPsetting);

                        if (room.RoomData.Type == "private")
                        {
                            ServerMessage roomOwner = BasicUtilies.GetRevisionServerMessage(Revision.RELEASE63_201211141113_913728051);
                            roomOwner.Init(r63bOutgoing.RoomOwner);
                            roomOwner.AppendBoolean(true);                          //is private room
                            roomOwner.AppendUInt(room.ID);
                            roomOwner.AppendBoolean(room.HaveOwnerRights(session)); //is roomowner
                            session.SendMessage(roomOwner);

                            ServerMessage roomData = BasicUtilies.GetRevisionServerMessage(Revision.RELEASE63_201211141113_913728051);
                            roomData.Init(r63bOutgoing.RoomData);
                            roomData.AppendBoolean(false);                     //entered room
                            room.RoomData.Serialize(roomData, false);
                            roomData.AppendBoolean(false);                     //forward
                            roomData.AppendBoolean(room.RoomData.IsStaffPick); //is staff pick
                            roomData.AppendBoolean(true);
                            session.SendMessage(roomData);
                        }
                        else
                        {
                            ServerMessage roomOwner = BasicUtilies.GetRevisionServerMessage(Revision.RELEASE63_201211141113_913728051);
                            roomOwner.Init(r63bOutgoing.RoomOwner);
                            roomOwner.AppendBoolean(false); //is private room
                            roomOwner.AppendString(room.RoomGamemapManager.Model.ID);
                            roomOwner.AppendInt32(0);       //unknwown
                            session.SendMessage(roomOwner);
                        }

                        MultiRevisionServerMessage usersStatuses = room.RoomUserManager.GetUserStatus(true);
                        if (usersStatuses != null)
                        {
                            session.SendData(usersStatuses.GetBytes(session.Revision));
                        }

                        foreach (RoomUnitUser user in room.RoomUserManager.GetRealUsers())
                        {
                            if (user.Dancing)
                            {
                                ServerMessage danceMessage = BasicUtilies.GetRevisionServerMessage(Revision.RELEASE63_201211141113_913728051);
                                danceMessage.Init(r63bOutgoing.Dance);
                                danceMessage.AppendInt32(user.VirtualID);
                                danceMessage.AppendInt32(user.DanceID);
                                session.SendMessage(danceMessage);
                            }

                            if (user.Sleeps)
                            {
                                ServerMessage sleeps = BasicUtilies.GetRevisionServerMessage(Revision.RELEASE63_201211141113_913728051);
                                sleeps.Init(r63bOutgoing.Sleeps);
                                sleeps.AppendInt32(user.VirtualID);
                                sleeps.AppendBoolean(true);
                                session.SendMessage(sleeps);
                            }

                            if (user.Handitem > 0 && user.HanditemTimer > 0)
                            {
                                ServerMessage message_ = BasicUtilies.GetRevisionServerMessage(Revision.RELEASE63_201211141113_913728051);
                                message_.Init(r63bOutgoing.Handitem);
                                message_.AppendInt32(user.VirtualID);
                                message_.AppendInt32(user.Handitem);
                                session.SendMessage(message_);
                            }

                            if (user.ActiveEffect > 0)
                            {
                                ServerMessage Message = BasicUtilies.GetRevisionServerMessage(Revision.RELEASE63_201211141113_913728051);
                                Message.Init(r63bOutgoing.Effect);
                                Message.AppendInt32(user.VirtualID);
                                Message.AppendInt32(user.ActiveEffect);
                                session.SendMessage(Message);
                            }
                        }

                        room.RoomWiredManager.UserEnterRoom(session.GetHabbo().GetRoomSession().GetRoomUser());

                        if (session.GetHabbo().IsMuted())
                        {
                            ServerMessage flood = BasicUtilies.GetRevisionServerMessage(Revision.RELEASE63_201211141113_913728051);
                            flood.Init(r63bOutgoing.Flood);
                            flood.AppendInt32(session.GetHabbo().MuteTimeLeft());
                            session.SendMessage(flood);
                        }
                    }
                    else
                    {
                        session.SendNotif("Failed load room model!");
                    }
                }
                else
                {
                    session.SendNotif("Room not found!");
                }
            }
        }
Example #2
0
 public void Handle(GameClient session, ClientMessage message)
 {
     session.SendMessage(Skylight.GetGame().GetNavigatorManager().GetPopularRoomTags());
 }
Example #3
0
        public void EnterRoom()
        {
            Room room = Skylight.GetGame().GetRoomManager().TryGetRoom(this.RequestedRoomID);

            if (room != null && this.LoadingRoom)
            {
                this.Habbo.GetSession().SendMessage(BasicUtilies.GetRevisionPacketManager(this.Habbo.GetSession().Revision).GetOutgoing(OutgoingPacketsEnum.LoadingRoomInfo).Handle(new ValueHolder().AddValue("RoomModel", room.RoomData.Model).AddValue("RoomID", room.ID)));

                if (room.RoomData.Type == "private")
                {
                    if (room.RoomData.Wallpaper != "0.0")
                    {
                        this.Habbo.GetSession().SendMessage(BasicUtilies.GetRevisionPacketManager(this.Habbo.GetSession().Revision).GetOutgoing(OutgoingPacketsEnum.ApplyRoomEffect).Handle(new ValueHolder().AddValue("Type", "wallpaper").AddValue("Data", room.RoomData.Wallpaper)));
                    }

                    if (room.RoomData.Floor != "0.0")
                    {
                        this.Habbo.GetSession().SendMessage(BasicUtilies.GetRevisionPacketManager(this.Habbo.GetSession().Revision).GetOutgoing(OutgoingPacketsEnum.ApplyRoomEffect).Handle(new ValueHolder().AddValue("Type", "floor").AddValue("Data", room.RoomData.Floor)));
                    }

                    if (room.RoomData.Landscape != "0.0")
                    {
                        this.Habbo.GetSession().SendMessage(BasicUtilies.GetRevisionPacketManager(this.Habbo.GetSession().Revision).GetOutgoing(OutgoingPacketsEnum.ApplyRoomEffect).Handle(new ValueHolder().AddValue("Type", "landscape").AddValue("Data", room.RoomData.Landscape)));
                    }

                    if (room.GaveRoomRights(this.Habbo.GetSession()))
                    {
                        if (room.HaveOwnerRights(this.Habbo.GetSession()))
                        {
                            this.Habbo.GetSession().SendMessage(BasicUtilies.GetRevisionPacketManager(this.Habbo.GetSession().Revision).GetOutgoing(OutgoingPacketsEnum.GiveRoomRights).Handle(new ValueHolder().AddValue("RightsLevel", 4)));
                            this.Habbo.GetSession().SendMessage(BasicUtilies.GetRevisionPacketManager(this.Habbo.GetSession().Revision).GetOutgoing(OutgoingPacketsEnum.IsRoomOwner).Handle());
                        }
                        else
                        {
                            this.Habbo.GetSession().SendMessage(BasicUtilies.GetRevisionPacketManager(this.Habbo.GetSession().Revision).GetOutgoing(OutgoingPacketsEnum.GiveRoomRights).Handle(new ValueHolder().AddValue("RightsLevel", 1)));
                        }
                    }
                    else
                    {
                        if (this.Habbo.GetSession().Revision >= Revision.RELEASE63_201211141113_913728051) //on r63a this is NOT send if the user DOSEN'T have rights
                        {
                            this.Habbo.GetSession().SendMessage(BasicUtilies.GetRevisionPacketManager(this.Habbo.GetSession().Revision).GetOutgoing(OutgoingPacketsEnum.GiveRoomRights).Handle(new ValueHolder().AddValue("RightsLevel", 0)));
                        }
                    }

                    if (this.Habbo.GetSession().Revision < Revision.RELEASE63_201211141113_913728051)
                    {
                        if (room.HaveOwnerRights(this.Habbo.GetSession()) || this.Habbo.RatedRooms.Contains(room.ID))
                        {
                            this.Habbo.GetSession().SendMessage(BasicUtilies.GetRevisionPacketManager(this.Habbo.GetSession().Revision).GetOutgoing(OutgoingPacketsEnum.RoomRating).Handle(new ValueHolder().AddValue("Score", room.RoomData.Score)));
                        }
                        else
                        {
                            this.Habbo.GetSession().SendMessage(BasicUtilies.GetRevisionPacketManager(this.Habbo.GetSession().Revision).GetOutgoing(OutgoingPacketsEnum.RoomRating).Handle(new ValueHolder().AddValue("Score", -1)));
                        }
                    }
                    else
                    {
                        this.Habbo.GetSession().SendMessage(BasicUtilies.GetRevisionPacketManager(this.Habbo.GetSession().Revision).GetOutgoing(OutgoingPacketsEnum.RoomRating).Handle(new ValueHolder().AddValue("Score", room.RoomData.Score).AddValue("CanVote", !room.HaveOwnerRights(this.Habbo.GetSession()) && !this.Habbo.RatedRooms.Contains(room.ID))));
                    }

                    if (this.Habbo.GetSession().Revision < Revision.RELEASE63_201211141113_913728051)
                    {
                        if (room.RoomEvent != null)
                        {
                            this.Habbo.GetSession().SendMessage(room.RoomEvent.Serialize());
                        }
                        else
                        {
                            if (this.Habbo.GetSession().Revision > Revision.R26_20080915_0408_7984_61ccb5f8b8797a3aba62c1fa2ca80169)
                            {
                                ServerMessage roomEvent = BasicUtilies.GetRevisionServerMessage(this.Habbo.GetSession().Revision);
                                roomEvent.Init(r63aOutgoing.RoomEvent);
                                roomEvent.AppendString("-1"); //no event
                                this.Habbo.GetSession().SendMessage(roomEvent);
                            }
                            else
                            {
                                ServerMessage roomEvent = BasicUtilies.GetRevisionServerMessage(this.Habbo.GetSession().Revision);
                                roomEvent.Init(r63aOutgoing.RoomEvent);
                                roomEvent.AppendString("-1", null); //no event
                                this.Habbo.GetSession().SendMessage(roomEvent);
                            }
                        }
                    }
                }
            }
        }
Example #4
0
        public void RequestPrivateRoom(uint id, string password)
        {
            this.ResetRequestedRoom();
            if (Skylight.GetGame().GetRoomManager().TryGetAndLoadRoomData(id) != null)
            {
                if (this.IsInRoom)
                {
                    Room oldRoom = Skylight.GetGame().GetRoomManager().TryGetRoom(this.CurrentRoomID);
                    if (oldRoom != null)
                    {
                        oldRoom.RoomUserManager.LeaveRoom(this.Habbo.GetSession(), false);
                    }
                }

                Room room = Skylight.GetGame().GetRoomManager().TryGetAndLoadRoom(id);
                if (room != null)
                {
                    this.RequestedRoomID = id;

                    if (room.RoomUserManager.UserHaveBan(this.Habbo.ID))
                    {
                        this.Habbo.GetSession().SendMessage(BasicUtilies.GetRevisionPacketManager(this.Habbo.GetSession().Revision).GetOutgoing(OutgoingPacketsEnum.RoomErrorOnEnter).Handle(new ValueHolder().AddValue("ErrorCode", 4)));
                        this.Habbo.GetSession().SendMessage(BasicUtilies.GetRevisionPacketManager(this.Habbo.GetSession().Revision).GetOutgoing(OutgoingPacketsEnum.LeaveRoom).Handle());
                    }
                    else
                    {
                        if (room.RoomData.UsersNow >= room.RoomData.UsersMax && !this.GetHabbo().HasPermission("acc_enter_fullrooms"))
                        {
                            this.Habbo.GetSession().SendMessage(BasicUtilies.GetRevisionPacketManager(this.Habbo.GetSession().Revision).GetOutgoing(OutgoingPacketsEnum.RoomErrorOnEnter).Handle(new ValueHolder().AddValue("ErrorCode", 1)));
                            this.Habbo.GetSession().SendMessage(BasicUtilies.GetRevisionPacketManager(this.Habbo.GetSession().Revision).GetOutgoing(OutgoingPacketsEnum.LeaveRoom).Handle());
                        }
                        else
                        {
                            if (room.RoomData.Type == "public")
                            {
                                this.LoadingRoom = true;
                            }
                            else //private
                            {
                                this.Habbo.GetSession().SendMessage(BasicUtilies.GetRevisionPacketManager(this.Habbo.GetSession().Revision).GetOutgoing(OutgoingPacketsEnum.EnterPrivateRoom).Handle());

                                if (!this.GetHabbo().HasPermission("acc_enter_anyroom"))
                                {
                                    if (this.TargetTeleportID != 0)
                                    {
                                        RoomItem item = room.RoomItemManager.TryGetRoomItem(this.TargetTeleportID);
                                        if (item == null)
                                        {
                                            this.TargetTeleportID = 0;

                                            this.Habbo.GetSession().SendMessage(BasicUtilies.GetRevisionPacketManager(this.Habbo.GetSession().Revision).GetOutgoing(OutgoingPacketsEnum.DoorbellNoAnswer).Handle());
                                        }
                                        else
                                        {
                                            this.LoadingRoom = true;
                                        }
                                    }
                                    else
                                    {
                                        if (room.RoomData.State == RoomStateType.OPEN)
                                        {
                                            this.LoadingRoom = true;
                                        }
                                        else if (room.RoomData.State == RoomStateType.LOCKED)
                                        {
                                            if (!room.HaveOwnerRights(this.Habbo.GetSession()))
                                            {
                                                if (room.RoomData.UsersNow == 0)
                                                {
                                                    this.Habbo.GetSession().SendMessage(BasicUtilies.GetRevisionPacketManager(this.Habbo.GetSession().Revision).GetOutgoing(OutgoingPacketsEnum.DoorbellNoAnswer).Handle());
                                                }
                                                else
                                                {
                                                    this.WaitingForDoorbellAnswer = true;

                                                    this.Habbo.GetSession().SendMessage(BasicUtilies.GetRevisionPacketManager(this.Habbo.GetSession().Revision).GetOutgoing(OutgoingPacketsEnum.Doorbell).Handle());
                                                    room.SendToAllWhoHaveRights(BasicUtilies.GetRevisionPacketManager(this.Habbo.GetSession().Revision).GetOutgoing(OutgoingPacketsEnum.Doorbell).Handle(new ValueHolder().AddValue("Username", this.Habbo.Username)));
                                                }
                                            }
                                            else
                                            {
                                                this.LoadingRoom = true;
                                            }
                                        }
                                        else //its locked ofc now
                                        {
                                            if (!room.HaveOwnerRights(this.Habbo.GetSession()))
                                            {
                                                if (password.ToLower() == room.RoomData.Password.ToLower())
                                                {
                                                    this.LoadingRoom = true;
                                                }
                                                else
                                                {
                                                    this.Habbo.GetSession().SendMessage(BasicUtilies.GetRevisionPacketManager(this.Habbo.GetSession().Revision).GetOutgoing(OutgoingPacketsEnum.RoomError).Handle(new ValueHolder().AddValue("ErrorCode", -100002)));
                                                    this.Habbo.GetSession().SendMessage(BasicUtilies.GetRevisionPacketManager(this.Habbo.GetSession().Revision).GetOutgoing(OutgoingPacketsEnum.LeaveRoom).Handle());
                                                }
                                            }
                                            else
                                            {
                                                this.LoadingRoom = true;
                                            }
                                        }
                                    }
                                }
                                else
                                {
                                    this.LoadingRoom = true;
                                }
                            }

                            this.EnterRoom();
                        }
                    }
                }
            }
        }
Example #5
0
        public void GetRoomState(uint id) //r26
        {
            this.ResetRequestedRoom();
            if (Skylight.GetGame().GetRoomManager().TryGetAndLoadRoomData(id) != null)
            {
                if (this.IsInRoom)
                {
                    Room oldRoom = Skylight.GetGame().GetRoomManager().TryGetRoom(this.CurrentRoomID);
                    if (oldRoom != null)
                    {
                        oldRoom.RoomUserManager.LeaveRoom(this.Habbo.GetSession(), false);
                    }
                }

                Room room = Skylight.GetGame().GetRoomManager().TryGetAndLoadRoom(id);
                if (room != null)
                {
                    this.RequestedRoomID = id;

                    if (room.RoomData.UsersNow >= room.RoomData.UsersMax && !this.GetHabbo().HasPermission("acc_enter_fullrooms"))
                    {
                        this.Habbo.GetSession().SendMessage(BasicUtilies.GetRevisionPacketManager(this.Habbo.GetSession().Revision).GetOutgoing(OutgoingPacketsEnum.RoomErrorOnEnter).Handle(new ValueHolder().AddValue("ErrorCode", 1)));
                        this.Habbo.GetSession().SendMessage(BasicUtilies.GetRevisionPacketManager(this.Habbo.GetSession().Revision).GetOutgoing(OutgoingPacketsEnum.LeaveRoom).Handle());
                    }
                    else
                    {
                        if (room.RoomData.Type == "public")
                        {
                            this.LoadingRoom = true;

                            this.EnterRoom();
                        }
                        else //private
                        {
                            this.Habbo.GetSession().SendMessage(BasicUtilies.GetRevisionPacketManager(this.Habbo.GetSession().Revision).GetOutgoing(OutgoingPacketsEnum.EnterPrivateRoom).Handle());

                            ServerMessage message = BasicUtilies.GetRevisionServerMessage(Revision.R26_20080915_0408_7984_61ccb5f8b8797a3aba62c1fa2ca80169);
                            message.Init(r26Outgoing.Unknown);
                            message.AppendString("skylight", null);
                            this.Habbo.GetSession().SendMessage(message);

                            if (!this.GetHabbo().HasPermission("acc_enter_anyroom"))
                            {
                                if (this.TargetTeleportID != 0)
                                {
                                    RoomItem item = room.RoomItemManager.TryGetRoomItem(this.TargetTeleportID);
                                    if (item == null)
                                    {
                                        this.TargetTeleportID = 0;

                                        this.Habbo.GetSession().SendMessage(BasicUtilies.GetRevisionPacketManager(this.Habbo.GetSession().Revision).GetOutgoing(OutgoingPacketsEnum.DoorbellNoAnswer).Handle());
                                    }
                                    else
                                    {
                                        this.LoadingRoom = true;
                                    }
                                }
                                else
                                {
                                    if (room.RoomData.State == RoomStateType.OPEN)
                                    {
                                        this.LoadingRoom = true;
                                    }
                                }
                            }
                            else
                            {
                                this.LoadingRoom = true;
                            }
                        }
                    }
                }
            }
        }
Example #6
0
        public void EnterCheckRoom(string password) //r26
        {
            Room room = Skylight.GetGame().GetRoomManager().TryGetRoom(this.RequestedRoomID);

            if (room != null)
            {
                if (room.RoomUserManager.UserHaveBan(this.Habbo.ID))
                {
                    this.Habbo.GetSession().SendMessage(BasicUtilies.GetRevisionPacketManager(this.Habbo.GetSession().Revision).GetOutgoing(OutgoingPacketsEnum.RoomErrorOnEnter).Handle(new ValueHolder().AddValue("ErrorCode", 4)));
                    this.Habbo.GetSession().SendMessage(BasicUtilies.GetRevisionPacketManager(this.Habbo.GetSession().Revision).GetOutgoing(OutgoingPacketsEnum.LeaveRoom).Handle());
                }
                else
                {
                    if (!this.LoadingRoom)
                    {
                        if (room.RoomData.State == RoomStateType.LOCKED)
                        {
                            if (!room.HaveOwnerRights(this.Habbo.GetSession()))
                            {
                                if (room.RoomData.UsersNow == 0)
                                {
                                    this.Habbo.GetSession().SendMessage(BasicUtilies.GetRevisionPacketManager(this.Habbo.GetSession().Revision).GetOutgoing(OutgoingPacketsEnum.DoorbellNoAnswer).Handle());
                                }
                                else
                                {
                                    this.WaitingForDoorbellAnswer = true;

                                    this.Habbo.GetSession().SendMessage(BasicUtilies.GetRevisionPacketManager(this.Habbo.GetSession().Revision).GetOutgoing(OutgoingPacketsEnum.Doorbell).Handle());
                                    room.SendToAllWhoHaveRights(BasicUtilies.GetRevisionPacketManager(this.Habbo.GetSession().Revision).GetOutgoing(OutgoingPacketsEnum.Doorbell).Handle(new ValueHolder().AddValue("Username", this.Habbo.Username)));
                                }
                            }
                            else
                            {
                                this.LoadingRoom = true;
                            }
                        }
                        else //its locked ofc now
                        {
                            if (!room.HaveOwnerRights(this.Habbo.GetSession()))
                            {
                                if (password.ToLower() == room.RoomData.Password.ToLower())
                                {
                                    this.LoadingRoom = true;
                                }
                                else
                                {
                                    this.Habbo.GetSession().SendMessage(BasicUtilies.GetRevisionPacketManager(this.Habbo.GetSession().Revision).GetOutgoing(OutgoingPacketsEnum.RoomError).Handle(new ValueHolder().AddValue("ErrorCode", -100002)));
                                    this.Habbo.GetSession().SendMessage(BasicUtilies.GetRevisionPacketManager(this.Habbo.GetSession().Revision).GetOutgoing(OutgoingPacketsEnum.LeaveRoom).Handle());
                                }
                            }
                            else
                            {
                                this.LoadingRoom = true;
                            }
                        }
                    }

                    if (this.LoadingRoom)
                    {
                        ServerMessage message = BasicUtilies.GetRevisionServerMessage(Revision.R26_20080915_0408_7984_61ccb5f8b8797a3aba62c1fa2ca80169);
                        message.Init(r26Outgoing.EnterCheckRoom);
                        this.Habbo.GetSession().SendMessage(message);
                    }
                }
            }
        }
Example #7
0
        public void Handle(GameClient session, ClientMessage message)
        {
            int category = message.PopFixedInt32();

            ServerMessage popularRooms = BasicUtilies.GetRevisionServerMessage(Revision.RELEASE63_201211141113_913728051);

            popularRooms.Init(r63bOutgoing.Navigator);

            List <RoomData> rooms = new List <RoomData>();

            switch (category)
            {
            case -1:
            {
                popularRooms.AppendInt32(1);
                popularRooms.AppendString("-1");

                rooms = Skylight.GetGame().GetRoomManager().GetLoadedRooms().Where(r => r != null && r.RoomData != null && r.RoomData.Type == "private" && r.RoomData.UsersNow > 0).OrderByDescending(r => r.RoomData.UsersNow).Take(50).Select(r => r.RoomData).ToList();
                break;
            }

            case -2:
            {
                popularRooms.AppendInt32(2);
                popularRooms.AppendString("");

                DataTable dataTable = null;
                using (DatabaseClient dbClient = Skylight.GetDatabaseManager().GetClient())
                {
                    dataTable = dbClient.ReadDataTable("SELECT * FROM rooms WHERE score > 0 AND type = 'private' ORDER BY score DESC LIMIT 50");
                }

                if (dataTable != null && dataTable.Rows.Count > 0)
                {
                    foreach (DataRow dataRow in dataTable.Rows)
                    {
                        rooms.Add(Skylight.GetGame().GetRoomManager().TryGetAndLoadRoomData((uint)dataRow["id"], dataRow));
                    }
                }
                break;
            }

            case -4:
            {
                popularRooms.AppendInt32(0);
                popularRooms.AppendString("");

                foreach (Room room in Skylight.GetGame().GetRoomManager().GetLoadedRooms().Where(r => r.RoomData.UsersNow > 0).OrderByDescending(r => r.RoomData.UsersNow))
                {
                    if (session.GetHabbo().GetMessenger().GetFriends().Any(f => f.ID == room.RoomData.OwnerID))
                    {
                        rooms.Add(room.RoomData);

                        if (rooms.Count >= 50)
                        {
                            break;
                        }
                    }
                }
                break;
            }

            case -5:
            {
                popularRooms.AppendInt32(0);
                popularRooms.AppendString("");

                foreach (MessengerFriend friend in session.GetHabbo().GetMessenger().GetFriends())
                {
                    if (friend.InRoom)
                    {
                        GameClient friend_ = Skylight.GetGame().GetGameClientManager().GetGameClientById(friend.ID);
                        rooms.Add(friend_.GetHabbo().GetRoomSession().GetRoom().RoomData);

                        if (rooms.Count >= 50)
                        {
                            break;
                        }
                    }
                }
                break;
            }

            default:
            {
                //category search
                if (category > -1)
                {
                    popularRooms.AppendInt32(1);
                    popularRooms.AppendString(category.ToString());

                    rooms = Skylight.GetGame().GetRoomManager().GetLoadedRooms().Where(r => r.RoomData.Type == "private" && r.RoomData.UsersNow > 0 && r.RoomData.Category == category).OrderByDescending(r => r.RoomData.UsersNow).Take(50).Select(r => r.RoomData).ToList();
                }
                break;
            }
            }

            popularRooms.AppendInt32(rooms.Count);
            foreach (RoomData room in rooms)
            {
                room.Serialize(popularRooms, false);
            }

            List <PublicItem> itemsThatsNotCategory = Skylight.GetGame().GetNavigatorManager().GetPublicRoomItems().Where(i => i.Type != PublicItemType.CATEGORY).ToList();

            if (itemsThatsNotCategory.Count > 0)
            {
                popularRooms.AppendBoolean(true);
                itemsThatsNotCategory.ElementAt(new Random().Next(0, itemsThatsNotCategory.Count)).Serialize(popularRooms);
            }
            else
            {
                popularRooms.AppendBoolean(false);
            }

            session.SendMessage(popularRooms);
        }
Example #8
0
        public void AddFriendToBoth(uint userId)
        {
            this.AddFriend(userId);

            Skylight.GetGame().GetGameClientManager().GetGameClientById(userId)?.GetHabbo()?.GetMessenger()?.AddFriend(new MessengerFriend(this.Habbo.ID, 0, this.Habbo.Look, this.Habbo.Motto, this.Habbo.LastOnline, MessengerFriendRelation.None));
        }
Example #9
0
        /// <summary>
        /// Removes the friend from this user and from the partner
        /// </summary>
        /// <param name="userId">Friend user id</param>
        public void RemoveFriendFromBoth(uint userId)
        {
            this.RemoveFriend(userId);

            Skylight.GetGame().GetGameClientManager().GetGameClientById(userId)?.GetHabbo()?.GetMessenger()?.RemoveFriend(this.ID);
        }
Example #10
0
        public void Handle(GameClient session, ClientMessage message)
        {
            Room room = session.GetHabbo().GetRoomSession().GetRoom();

            if (room != null)
            {
                if (!session.GetHabbo().GetRoomSession().GetRoom().RoomMute || session.GetHabbo().HasPermission("acc_ignore_roommute"))
                {
                    if (!session.GetHabbo().IsMuted())
                    {
                        session.GetHabbo().GetRoomSession().GetRoomUser().Unidle();

                        if (session.GetHabbo().GetRoomSession().GetRoomUser().CheckForFloor())
                        {
                            session.GetHabbo().GetRoomSession().GetRoomUser().FloodUser();
                        }
                        else
                        {
                            session.GetHabbo().LastRoomMessage = DateTime.Now;
                            session.GetHabbo().FloodCounter++;

                            string[] data     = message.PopFixedString().Split(new char[] { ' ' }, 2);
                            string   username = data[0];
                            string   message_ = data[1];
                            if (message_.Length > 300)
                            {
                                message_ = message_.Substring(0, 300);
                            }
                            message_ = TextUtilies.FilterString(message_);

                            RoomUnitUser user = room.RoomUserManager.GetUserByName(username);
                            if (user != null)
                            {
                                if (!session.GetHabbo().HasPermission("acc_nochatlog_whisper"))
                                {
                                    Skylight.GetGame().GetChatlogManager().LogRoomMessage(session, "Whisper" + (char)9 + user.Session.GetHabbo().ID + (char)9 + message_);
                                }

                                message_ = TextUtilies.CheckBlacklistedWords(message_);

                                ServerMessage message_2 = BasicUtilies.GetRevisionServerMessage(Revision.RELEASE63_35255_34886_201108111108);
                                message_2.Init(r63aOutgoing.Whisper);
                                message_2.AppendInt32(session.GetHabbo().GetRoomSession().GetRoomUser().VirtualID);

                                Dictionary <int, string> links = new Dictionary <int, string>();
                                if (message_.Contains("http://") || message_.Contains("www.") || message_.Contains("https://"))
                                {
                                    string[] words = message_.Split(' ');
                                    message_ = "";

                                    foreach (string word in words)
                                    {
                                        if (TextUtilies.ValidURL(word))
                                        {
                                            int index = links.Count;
                                            links.Add(index, word);

                                            message_ += " {" + index + "}";
                                        }
                                        else
                                        {
                                            message_ += " " + word;
                                        }
                                    }
                                }
                                message_2.AppendString(message_);
                                message_2.AppendInt32(RoomUnit.GetGesture(message_.ToLower())); //gesture
                                message_2.AppendInt32(links.Count);                             //links count
                                foreach (KeyValuePair <int, string> link in links)
                                {
                                    message_2.AppendString("/redirect.php?url=" + link.Value);
                                    message_2.AppendString(link.Value);
                                    message_2.AppendBoolean(true); //trushed, can link be opened
                                }
                                user.Session.SendMessage(message_2);
                                session.SendMessage(message_2);
                            }
                        }
                    }
                }
            }
        }
Example #11
0
        public override bool OnUse(GameClients.GameClient session, string[] args)
        {
            if (args.Length >= 2)
            {
                if (session.GetHabbo().HasPermission("cmd_ban"))
                {
                    GameClient target = Skylight.GetGame().GetGameClientManager().GetGameClientByUsername(args[1]);
                    if (target != null)
                    {
                        if (target.GetHabbo().Rank < session.GetHabbo().Rank)
                        {
                            string banLenghtString = "P";
                            if (args.Length >= 3)
                            {
                                banLenghtString = args[2];

                                if (banLenghtString != "P")
                                {
                                    if (!Char.IsNumber(banLenghtString.Substring(banLenghtString.Length - 1)[0]))
                                    {
                                        int lenght;
                                        if (!int.TryParse(banLenghtString.Substring(0, banLenghtString.Length - 1), out lenght))
                                        {
                                            return(false);
                                        }
                                    }
                                    else
                                    {
                                        int lenght;
                                        if (!int.TryParse(banLenghtString, out lenght))
                                        {
                                            return(false);
                                        }
                                    }
                                }
                            }

                            string banReason = "No reason";
                            if (args.Length >= 4)
                            {
                                banReason = TextUtilies.MergeArrayToString(args, 3);
                            }

                            return(Skylight.GetGame().GetBanManager().BanUser(session, target, BanType.User, target.GetHabbo().ID.ToString(), banReason, banLenghtString));
                        }
                        else
                        {
                            session.SendNotif("You are not allowed to ban that user.");
                        }
                    }
                    else
                    {
                        session.SendNotif("User not found.");
                    }

                    return(true);
                }
            }

            return(false);
        }