Beispiel #1
0
        private void CreateRoom(Client Client, Request Request)
        {
            int Limit = BrickEngine.GetConfigureFile().CallIntKey("max.rooms.amount");
            int RoomAmount = BrickEngine.GetRoomReactor().GetMe(Client.GetUser().HabboId).Count;

            if (RoomAmount >= Limit)
            {
                Client.Notif("You're over the rooms limit, first delete a room before you create a new one.", false);
                return;
            }

            string RawName = Request.PopFixedString();
            string RawModel = Request.PopFixedString();

            int RoomId = -1;

            if ((RoomId = BrickEngine.GetRoomReactor().CreateRoom(Client, RawName, RawModel)) > 0)
            {
                Response Response = new Response(59);
                Response.AppendInt32(RoomId);
                Response.AppendStringWithBreak(BrickEngine.CleanString(RawName));
                Client.SendResponse(Response);
            }
            else
            {
                CheckRoomCreate(Client, null);
            }
        }
Beispiel #2
0
        public void OpenFeacturedRoom(Client Client, Request Request)
        {
            int RoomId = Request.PopWiredInt32();
            string Password = Request.PopFixedString();

            if (Client.GetUser().RoomId == RoomId)
            {
                return;
            }

            BeginLoadRoom(Client, RoomId, Password);
        }
Beispiel #3
0
        private void ChatWithFriend(Client Client, Request Request)
        {
            int FriendId = Request.PopWiredInt32();

            if (!BrickEngine.GetMessengerHandler().HasFriend(Client.GetUser().HabboId, FriendId))
            {
                return;
            }

            BrickEmulator.HabboHotel.Users.Handlers.Messenger.Friend Friend = BrickEngine.GetMessengerHandler().GetFriend(Client.GetUser().HabboId, FriendId);

            if (Friend == null)
            {
                Response Respose = new Response(261);
                Respose.AppendInt32(6);
                Respose.AppendInt32(FriendId);
                Client.SendResponse(Respose);
                return;
            }

            if (Client.GetUser().Muted)
            {
                Response Respose = new Response(261);
                Respose.AppendInt32(4);
                Respose.AppendInt32(FriendId);
                Client.SendResponse(Respose);
                return;
            }

            if (Friend.IsAlive)
            {
                if (Friend.GetClient().GetUser().Muted)
                {
                    Response Respose = new Response(261);
                    Respose.AppendInt32(3);
                    Respose.AppendInt32(FriendId);
                    Client.SendResponse(Respose);
                }

                Response Response = new Response(134);
                Response.AppendInt32(Client.GetUser().HabboId);
                Response.AppendStringWithBreak(BrickEngine.CleanString(Request.PopFixedString()));

                Friend.GetClient().SendResponse(Response);
            }
            else
            {
                Response Respose = new Response(261);
                Respose.AppendInt32(5);
                Respose.AppendInt32(FriendId);
                Client.SendResponse(Respose);
            }
        }
Beispiel #4
0
        private void AlertSelectedUser(Client Client, Request Request)
        {
            int UserId = Request.PopWiredInt32();

            string Message = BrickEngine.CleanString(Request.PopFixedString());

            if (UserId <= 0)
            {
                return;
            }

            BrickEngine.GetToolReactor().AlertUser(Client, UserId, Message, false, false, false);
        }
Beispiel #5
0
        private void BanSelectedUser(Client Client, Request Request)
        {
            int UserId = Request.PopWiredInt32();

            string Reason = BrickEngine.CleanString(Request.PopFixedString());

            int DurationHours = Request.PopWiredInt32();

            if (UserId <= 0)
            {
                return;
            }

            BrickEngine.GetToolReactor().BanUser(Client, UserId, Reason, DurationHours, false);
        }
Beispiel #6
0
        private void AlertSelectedRoom(Client Client, Request Request)
        {
            if (!Client.GetUser().IsInRoom)
            {
                return;
            }

            // Avoid Junk
            Request.PopWiredInt32();

            Boolean Warning = !Request.PopWiredInt32().Equals(3);

            string Message = BrickEngine.CleanString(Request.PopFixedString());

            BrickEngine.GetToolReactor().AlertRoom(Client, Client.GetUser().RoomId, Message, Warning);
        }
Beispiel #7
0
        private void HandleTicket(Client Client, Request Request)
        {
            string Ticket = Request.PopFixedString();

            Client.ParseUser(BrickEngine.GetUserReactor().HandleTicket(Ticket));

            if (Client.IsValidUser)
            {
                if (BrickEngine.GetToolReactor().IsBanned(Client.GetUser().HabboId, Client.IPAddress))
                {
                    Client.Dispose();
                    return;
                }

                Response Userhash = new Response(439);
                Userhash.AppendStringWithBreak(Client.GetUser().Hash);
                Client.SendResponse(Userhash);

                Client.SendResponse(new Response(3));

                if (BrickEngine.GetConfigureFile().CallBooleanKey("welcomemessage.enabled"))
                {
                    Client.LongNotif(string.Empty);
                }

                Client.SendResponse(Client.GetUser().GetLoginResponse());

                Client.Authenticated = true;

                Client.SendResponse(BrickEngine.GetToolReactor().GetResponse(Client));
            }
            else
            {
                Client.Notif("Invalid Ticket, try again!", false);
                Client.Dispose();
            }
        }
Beispiel #8
0
        private void ChangeName(Client Client, Request Request)
        {
            string Username = BrickEngine.CleanString(Request.PopFixedString());

            Boolean UpdatedName = false;

            if (!Client.GetUser().Username.ToLower().Equals(Username.ToLower()))
            {
                foreach (VirtualRoom Room in BrickEngine.GetRoomReactor().GetMe(Client.GetUser().HabboId))
                {
                    if (Room.InternalState.Equals(RoomRunningState.Alive))
                    {
                        Boolean IsMatch = false;

                        if (Regex.IsMatch(Room.Name.ToLower(), Client.GetUser().Username.ToLower()))
                        {
                            Room.Name = Room.Name.Replace(Client.GetUser().Username, Username);
                            IsMatch = true;
                        }

                        if (Regex.IsMatch(Room.Description.ToLower(), Client.GetUser().Username.ToLower()))
                        {
                            Room.Description = Room.Description.Replace(Client.GetUser().Username, Username);
                            IsMatch = true;
                        }

                        if (IsMatch)
                        {
                            using (QueryReactor Reactor = BrickEngine.GetQueryReactor())
                            {
                                Reactor.SetQuery("UPDATE private_rooms SET name = @name, description = @desc WHERE id = @roomid LIMIT 1");
                                Reactor.AddParam("name", Room.Name);
                                Reactor.AddParam("desc", Room.Description);
                                Reactor.AddParam("roomid", Room.Id);
                                Reactor.ExcuteQuery();
                            }

                            Response Data = new Response(454);
                            Data.AppendBoolean(true);
                            Room.GetNavigatorResponse(Data, false);
                            Client.SendRoomResponse(Data);
                        }
                    }
                }

                Client.GetUser().Username = Username;
                Client.GetUser().RefreshUser();

                Client.Notif("Successfully changed name, reload your room to see changes.", false);

                if (Client.GetUser().EnableShowOnline)
                {
                    lock (Client.GetUser().MessengerLocker)
                    {
                        BrickEngine.GetMessengerHandler().AlertStatusFriends(Client.GetUser(), true);
                    }
                }

                UpdatedName = true;
            }

            Client.GetUser().ProgressedNewbie = true;

            Response Response = new Response();
            Response.Initialize(571);
            Response.AppendBoolean(false);
            Response.AppendStringWithBreak(Username);
            Response.AppendBoolean(false);
            Response.Initialize(570);
            Response.AppendBoolean(false);
            Response.AppendStringWithBreak(Username);
            Response.AppendBoolean(false);
            Client.SendResponse(Response);

            BrickEngine.GetAchievementReactor().UpdateUsersAchievement(Client, 4);

            using (QueryReactor Reactor = BrickEngine.GetQueryReactor())
            {
                Reactor.SetQuery("UPDATE users SET changed_name = '1' WHERE id = @habboid");
                Reactor.AddParam("habboid", Client.GetUser().HabboId);
                Reactor.ExcuteQuery();
            }

            if (UpdatedName)
            {
                using (QueryReactor Reactor = BrickEngine.GetQueryReactor())
                {
                    Reactor.SetQuery("UPDATE users SET username = @username WHERE id = @habboid");
                    Reactor.AddParam("habboid", Client.GetUser().HabboId);
                    Reactor.AddParam("username", Username);
                    Reactor.ExcuteQuery();
                }
            }
        }
Beispiel #9
0
        private void UpdateLook(Client Client, Request Request)
        {
            string Gender = Request.PopFixedString();
            string Look = Request.PopFixedString();

            Client.GetUser().Gender = Gender;
            Client.GetUser().Look = Look;

            Client.GetUser().RefreshUser();

            using (QueryReactor Reactor = BrickEngine.GetQueryReactor())
            {
                Reactor.SetQuery("UPDATE users SET look = @look, gender = @gender WHERE id = @habboid LIMIT 1");
                Reactor.AddParam("look", Look);
                Reactor.AddParam("gender", Gender.ToUpper());
                Reactor.AddParam("habboid", Client.GetUser().HabboId);
                Reactor.ExcuteQuery();
            }
        }
Beispiel #10
0
        private void PurchaseShopItem(Client Client, Request Request)
        {
            int PageId = Request.PopWiredInt32();
            int ItemId = Request.PopWiredInt32();

            string ExtraData = Request.PopFixedString();

            BrickEngine.GetShopReactor().PurchaseItem(ItemId, Client, ExtraData, -1);
        }
Beispiel #11
0
        private void SerializePetRaces(Client Client, Request Request)
        {
            string PetType = Request.PopFixedString();

            int Type = Convert.ToInt32(PetType.Substring(6));

            if (Type < 0)
            {
                return;
            }

            Response Response = new Response(827);

            PetRace PetRace = BrickEngine.GetShopReactor().SelectPetRace(Type);

            if (PetRace == null)
            {
                System.Data.DataRow Row = new DataTable().Rows[0];

                Row[0] = 1;
                Row[1] = Type;
                Row[2] = 0;
                Row[3] = 0;

                PetRace = new PetRace(Row);
            }

            Response.AppendStringWithBreak("a0 pet" + Type);
            Response.AppendInt32(PetRace.RaceAmount);

            for (int i = PetRace.StartIndexer; i < PetRace.RaceAmount; i++)
            {
                Response.AppendInt32(Type);
                Response.AppendInt32(i);
                Response.AppendBoolean(true);
                Response.AppendBoolean(false);
            }

            Client.SendResponse(Response);
        }
Beispiel #12
0
        private void CheckNewName(Client Client, Request Request)
        {
            string Username = BrickEngine.CleanString(Request.PopFixedString());

            if (Username.ToLower().Equals(Client.GetUser().Username))
            {
                return;
            }

            int ErrorMessage = 0;

            if (Username.Length < 3)
            {
                ErrorMessage = 2;
            }
            else if (Username.Length > 15)
            {
                ErrorMessage = 3;
            }
            else if (string.IsNullOrWhiteSpace(Username) || string.IsNullOrEmpty(Username))
            {
                ErrorMessage = 4;
            }
            else if (!BrickEngine.GetUserReactor().GetId(Username).Equals(0))
            {
                ErrorMessage = 5;
            }
            else if (!BrickEngine.GetConfigureFile().CallBooleanKey("welcome.changename"))
            {
                ErrorMessage = 6;
            }

            Response Response = new Response(571);
            Response.AppendInt32(ErrorMessage);
            Response.AppendStringWithBreak(Username);

            if (ErrorMessage.Equals(5))
            {
                char[] RandomChars = new char[] { 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', '1', '2', '3', '4', 'x', 'y', 'z', '?', '!' };

                Response.AppendInt32(5);

                for (int i = 0; i < 6; i++)
                {
                    Response.AppendStringWithBreak(
                        string.Format("{0}{1}", Username,
                            string.Format("{0}{1}{2}",
                                RandomChars[BrickEngine.Random.Next(0, RandomChars.Length - 1)],
                                RandomChars[BrickEngine.Random.Next(0, RandomChars.Length - 1)],
                                RandomChars[BrickEngine.Random.Next(0, RandomChars.Length - 1)])));
                }
            }
            else
            {
                Response.AppendInt32(0);
            }

            Client.SendResponse(Response);
        }
Beispiel #13
0
        private void SearchUsers(Client Client, Request Request)
        {
            string Query = BrickEngine.CleanString(Request.PopFixedString());

            Client.SendResponse(BrickEngine.GetMessengerHandler().SearchUsers(Client.GetUser().HabboId, Query));
        }
Beispiel #14
0
        private void IgnoreUser(Client Client, Request Request)
        {
            if (!Client.GetUser().IsInRoom)
            {
                return;
            }

            string TriggeredUsername = Request.PopFixedString();

            int HabboId = BrickEngine.GetUserReactor().GetId(TriggeredUsername);

            VirtualRoomUser TriggeredUser = Client.GetUser().GetRoom().GetRoomEngine().GetUserByHabboId(HabboId);

            if (TriggeredUser == null)
            {
                return;
            }

            if (TriggeredUser.GetClient().GetUser().Rank > 1)
            {
                Client.Notif("You can't ignore staff.", false);
                return;
            }

            if (Client.GetUser().HasIgnoredUser(HabboId))
            {
                return;
            }

            Client.GetUser().IgnoredUsers.Add(HabboId);

            Response Response = new Response(419);
            Response.AppendBoolean(true);
            Client.SendResponse(Response);

            using (QueryReactor Reactor = BrickEngine.GetQueryReactor())
            {
                Reactor.SetQuery("INSERT INTO user_ignores (user_id, ignore_id) VALUES (@userid, @ignoreid)");
                Reactor.AddParam("userid", Client.GetUser().HabboId);
                Reactor.AddParam("ignoreid", HabboId);
                Reactor.ExcuteQuery();
            }
        }
Beispiel #15
0
        public void OpenPrivateRoom(Client Client, Request Request)
        {
            int RoomId = Request.PopWiredInt32();
            string Password = Request.PopFixedString();

            BeginLoadRoom(Client, RoomId, Password);
        }
Beispiel #16
0
        private void UpdateWallItem(Client Client, Request Request)
        {
            if (!Client.GetUser().IsInRoom)
            {
                // Outside room placing FTW.
                return;
            }

            if (!Client.GetUser().GetRoom().GetRoomEngine().HasRights(Client.GetUser().HabboId, Rooms.RightsType.Rights))
            {
                // Only Update with rights.
                return;
            }

            int ItemId = Request.PopWiredInt32();

            if (ItemId <= 0)
            {
                return;
            }

            // Gain Item & Verify
            Item Item = null;

            if ((Item = BrickEngine.GetItemReactor().GetItem(ItemId)) == null)
            {
                return;
            }

            // Still in inventory!?
            if (Item.Place.Equals(ItemPlace.Inventory))
            {
                return;
            }

            string WallPos = Request.PopFixedString();

            VirtualRoomEngine RoomEngine = Client.GetUser().GetRoom().GetRoomEngine();

            if (RoomEngine == null)
            {
                return;
            }

            string Verify = RoomEngine.VerifyWallPosition(WallPos);

            if (string.IsNullOrEmpty(Verify) || !Verify.StartsWith(":"))
            {
                return;
            }

            Item.WallPoint = Verify;

            RoomEngine.HandleIncomingItemUpdate(Item, Verify, Client.GetUser().GetRoomUser());
        }
Beispiel #17
0
        private void Talk(Client Client, Request Request)
        {
            if (!Client.GetUser().IsInRoom)
            {
                return;
            }

            if (Client.GetUser().Muted)
            {
                Client.Notif("You're muted.", false);
                return;
            }

            string Message = Request.PopFixedString();

            Message = BrickEngine.CleanString(Message);

            int Emoticon = Client.GetUser().GetRoomUser().GetEmoticon(Message);

            Client.GetUser().GetRoomUser().Talk(Message, Rooms.Virtual.Units.SpeechType.Talk, Emoticon, "");
        }
Beispiel #18
0
        private void UpdateClothe(Client Client, Request Request)
        {
            Membership Membership = Client.GetUser().GetMembership();

            if (Membership == null)
            {
                return;
            }

            int SlotId = Request.PopWiredInt32();
            string Look = BrickEngine.CleanString(Request.PopFixedString());
            string Gender = BrickEngine.CleanString(Request.PopFixedString());

            var LeakedRow = new Dictionary<int, Object>();

            SecurityCounter Counter = new Security.SecurityCounter(-1);

            LeakedRow[Counter.Next] = Client.GetUser().HabboId;
            LeakedRow[Counter.Next] = SlotId;
            LeakedRow[Counter.Next] = Look;
            LeakedRow[Counter.Next] = Gender;

            Clothe LeakedClothe = new Clothe(LeakedRow);

            BrickEngine.GetClothesHandler().UpdateClothe(LeakedClothe.HabboId, LeakedClothe);
        }
Beispiel #19
0
        private void UpdateBadge(Client Client, Request Request)
        {
            var Badges = BrickEngine.GetBadgeHandler().GetBadgesForUser(Client.GetUser().HabboId);;

            // Null every badge ready for update
            foreach (Badge Badge in Badges)
            {
                Badge.SlotId = 0;
            }

            // Check new badge updates
            while (Request.RemainingLength > 0)
            {
                int SlotId = Request.PopWiredInt32();
                string Badge = Request.PopFixedString();

                Badge SelectedBadge = BrickEngine.GetBadgeHandler().GetBadge(Badge, Client.GetUser().HabboId);

                if (SelectedBadge != null)
                {
                    SelectedBadge.SlotId = SlotId;
                }
            }

            // Cache Equiped Badges Again for Update
            var Equiped = BrickEngine.GetBadgeHandler().GetEquipedBadges(Client.GetUser().HabboId);

            // Send update response
            Response Response = new Response(228);
            Response.AppendInt32(Client.GetUser().HabboId);
            Response.AppendInt32(Equiped.Count);

            foreach (Badge Badge in Equiped)
            {
                Response.AppendInt32(Badge.SlotId);
                Response.AppendStringWithBreak(Badge.BadgeCode);
            }

            if (Client.GetUser().IsInRoom)
            {
                Client.SendRoomResponse(Response);
            }
            else
            {
                Client.SendResponse(Response);
            }

            foreach (Badge Badge in Badges)
            {
                using (QueryReactor Reactor = BrickEngine.GetQueryReactor())
                {
                    Reactor.SetQuery("UPDATE user_badges SET slot_id = @slotid WHERE badge = @badge AND user_id = @habboid LIMIT 1");
                    Reactor.AddParam("slotid", Badge.SlotId);
                    Reactor.AddParam("badge", Badge.BadgeCode);
                    Reactor.AddParam("habboid", Client.GetUser().HabboId);
                    Reactor.ExcuteQuery();
                }
            }
        }
Beispiel #20
0
        private void UnIgnoreUser(Client Client, Request Request)
        {
            if (!Client.GetUser().IsInRoom)
            {
                return;
            }

            string TriggeredUsername = Request.PopFixedString();

            int HabboId = BrickEngine.GetUserReactor().GetId(TriggeredUsername);

            VirtualRoomUser TriggeredUser = Client.GetUser().GetRoom().GetRoomEngine().GetUserByHabboId(HabboId);

            if (TriggeredUser == null)
            {
                return;
            }

            if (!Client.GetUser().HasIgnoredUser(HabboId))
            {
                return;
            }

            Client.GetUser().IgnoredUsers.Remove(HabboId);

            Response Response = new Response(419);
            Response.AppendInt32(3);
            Client.SendResponse(Response);

            using (QueryReactor Reactor = BrickEngine.GetQueryReactor())
            {
                Reactor.SetQuery("DELETE FROM user_ignores WHERE user_id = @userid AND ignore_id = @ignoreid LIMIT 1");
                Reactor.AddParam("userid", Client.GetUser().HabboId);
                Reactor.AddParam("ignoreid", HabboId);
                Reactor.ExcuteQuery();
            }
        }
Beispiel #21
0
        private void UpdateEvent(Client Client, Request Request)
        {
            if (!Client.GetUser().IsInRoom)
            {
                return;
            }

            if (!Client.GetUser().GetRoom().GetRoomEngine().HasRights(Client.GetUser().HabboId, Rooms.RightsType.Founder))
            {
                return;
            }

            int CategoryId = Request.PopWiredInt32();
            string Name = BrickEngine.CleanString(Request.PopFixedString());
            string Description = BrickEngine.CleanString(Request.PopFixedString());
            int TagCount = Request.PopWiredInt32();

            List<string> Tags = new List<string>();

            for (int i = 0; i < TagCount; i++)
            {
                Tags.Add(BrickEngine.CleanString(Request.PopFixedString()));
            }

            RoomEvent Event = null;

            if (Client.GetUser().GetRoom().Event == null)
            {
                Event = new RoomEvent(Client.GetUser().RoomId, Name, Description, CategoryId, Tags);

                Client.GetUser().GetRoom().Event = Event;

                // Friends alert
                BrickEngine.GetMessengerHandler().AlertFriends(Client.GetUser().HabboId, BrickEngine.GetMessengerHandler().GetAchievedResponse(Client.GetUser().HabboId, false, Name));
            }
            else
            {
                Event = Client.GetUser().GetRoom().Event;

                Event.Name = Name;
                Event.Description = Description;
                Event.Tags = Tags;
            }

            Response Response = new Response(370);
            Event.GetResponse(Response);

            Client.SendRoomResponse(Response);
        }
Beispiel #22
0
        private void UpdateMotto(Client Client, Request Request)
        {
            string Motto = BrickEngine.CleanString(Request.PopFixedString());

            Client.GetUser().Motto = Motto;

            Client.GetUser().RefreshUser();

            using (QueryReactor Reactor = BrickEngine.GetQueryReactor())
            {
                Reactor.SetQuery("UPDATE users SET motto = @motto WHERE id = @habboid LIMIT 1");
                Reactor.AddParam("motto", Motto);
                Reactor.AddParam("habboid", Client.GetUser().HabboId);
                Reactor.ExcuteQuery();
            }

            BrickEngine.GetStreamHandler().AddStream(Client.GetUser().HabboId, Users.Handlers.Messenger.Streaming.StreamType.EditedMotto, Motto);
        }
Beispiel #23
0
        private void EndEditRoom(Client Client, Request Request)
        {
            if (!Client.GetUser().IsInRoom)
            {
                return;
            }

            int RoomId = Request.PopWiredInt32();

            VirtualRoom Room = BrickEngine.GetRoomReactor().GetVirtualRoom(RoomId, RoomRunningState.Alive);

            if (Room == null)
            {
                return;
            }

            if (!Room.GetRoomEngine().HasRights(Client.GetUser().HabboId, Rooms.RightsType.Founder))
            {
                return;
            }

            string Name = BrickEngine.CleanString(Request.PopFixedString());
            string Description = BrickEngine.CleanString(Request.PopFixedString());
            int DoorState = Request.PopWiredInt32();
            string Password = BrickEngine.CleanString(Request.PopFixedString());
            int LimitUsers = Request.PopWiredInt32();

            int CategoryId = Request.PopWiredInt32();

            PrivateCategory Category = BrickEngine.GetNavigatorManager().GetPrivateCategory(CategoryId);

            if (Category == null)
            {
                CategoryId = 0;
            }

            if (Client.GetUser().Rank < Category.RankAllowed)
            {
                Client.Notif("You're not allowed to use this category.", false);
                CategoryId = 0;
            }

            int TagAmount = Request.PopWiredInt32();

            List<string> Tags = new List<string>();

            for (int i = 0; i < TagAmount; i++)
            {
                string Tag = BrickEngine.CleanString(Request.PopFixedString()).Trim().ToLower();

                if (Tag.Length > 32)
                {
                    Tag = Tag.Substring(0, 32);
                }

                if (Tag.Length > 0 && !Tags.Contains(Tag))
                {
                    Tags.Add(Tag);
                }
            }

            Boolean AllowPets = (Request.PlainReadBytes(1)[0].ToString() == "65");
            Request.AdvancePointer(1);

            Boolean AllowPetsEat = (Request.PlainReadBytes(1)[0].ToString() == "65");
            Request.AdvancePointer(1);

            Boolean AllowWalkthough = (Request.PlainReadBytes(1)[0].ToString() == "65");
            Request.AdvancePointer(1);

            Boolean AllowHideWall = (Request.PlainReadBytes(1)[0].ToString() == "65");
            Request.AdvancePointer(1);

            int WallThick = Request.PopWiredInt32();

            if (WallThick < -2 || WallThick > 1)
            {
                WallThick = 0;
            }

            int FloorThick = Request.PopWiredInt32();

            if (FloorThick < -2 || FloorThick > 1)
            {
                FloorThick = 0;
            }

            if (Name.Length > 60)
            {
                Name = Name.Substring(0, 60);
            }

            if (Description.Length > 128)
            {
                Description = Description.Substring(0, 128);
            }

            if (Password.Length > 64)
            {
                Password = Password.Substring(0, 64);
            }

            if (LimitUsers > Client.GetUser().GetRoom().GetRoomModel().LimitUsers)
            {
                LimitUsers = Client.GetUser().GetRoom().GetRoomModel().LimitUsers;
            }

            if (DoorState == 2 && Password.Length <= 0)
            {
                DoorState = 0;
            }

            Dictionary<string, Object> Params = new Dictionary<string, object>();

            List<string> Commands = new List<string>();

            if (!Room.Name.Equals(Name))
            {
                Commands.Add("name = @name");
                Params.Add("name", Name);
                Room.Name = Name;
            }

            if (!Room.Description.Equals(Description))
            {
                Commands.Add("description = @desc");
                Params.Add("desc", Description);
                Room.Description = Description;
            }

            if (!Room.DoorState.Equals(DoorState))
            {
                Commands.Add("door_state = @door");
                Params.Add("door", DoorState);
                Room.DoorState = DoorState;
            }

            if (!Room.Password.Equals(Password))
            {
                Commands.Add("password = @pw");
                Params.Add("pw", Password);
                Room.Password = Password;
            }

            if (!Room.LimitUsers.Equals(LimitUsers))
            {
                Commands.Add("limit_users = @limit");
                Params.Add("limit", LimitUsers);
                Room.LimitUsers = LimitUsers;
            }

            if (!Room.CategoryId.Equals(CategoryId))
            {
                Commands.Add("category_id = @catid");
                Params.Add("catid", CategoryId);
                Room.CategoryId = CategoryId;
            }

            if (!Room.Tags.Equals(Tags))
            {
                string SplittedTags = string.Empty;

                int x = 0;

                foreach (string Tag in Tags)
                {
                    if (x > 0)
                    {
                        SplittedTags += ',';
                    }

                    SplittedTags += Tag.ToLower();

                    x++;
                }

                Commands.Add("tags = @tags");
                Params.Add("tags", SplittedTags.ToString());
                Room.Tags = Tags;
            }

            if (!Room.AllowPets.Equals(AllowPets))
            {
                Commands.Add("allow_pets = @allow_pets");
                Params.Add("allow_pets", AllowPets ? 1 : 0);
                Room.AllowPets = AllowPets;
            }

            if (!Room.AllowPetsEat.Equals(AllowPetsEat))
            {
                Commands.Add("allow_pets_eat = @allow_pets_eat");
                Params.Add("allow_pets_eat", AllowPetsEat ? 1 : 0);
                Room.AllowPetsEat = AllowPetsEat;
            }

            if (!Room.AllowWalkthough.Equals(AllowWalkthough))
            {
                Commands.Add("allow_walkthough = @allow_walkthough");
                Params.Add("allow_walkthough", AllowWalkthough ? 1 : 0);
                Room.AllowWalkthough = AllowWalkthough;
            }

            if (!Room.AllowHideWall.Equals(AllowHideWall))
            {
                Commands.Add("allow_hidewall = @allow_hidewall");
                Params.Add("allow_hidewall", AllowHideWall ? 1 : 0);
                Room.AllowHideWall = AllowHideWall;
            }

            if (!Room.WallThick.Equals(WallThick))
            {
                Commands.Add("walls_thick = @walls_thick");
                Params.Add("walls_thick", WallThick);
                Room.WallThick = WallThick;
            }

            if (!Room.FloorThick.Equals(FloorThick))
            {
                Commands.Add("floors_thick = @floors_thick");
                Params.Add("floors_thick", FloorThick);
                Room.FloorThick = FloorThick;
            }

            Response Data = new Response(454);
            Data.AppendBoolean(true);
            Room.GetNavigatorResponse(Data, false);
            Client.SendRoomResponse(Data);

            Response Response = new Response();
            Response.Initialize(467);
            Response.AppendInt32(Client.GetUser().RoomId);
            Response.Initialize(456);
            Response.AppendInt32(Client.GetUser().RoomId);
            Client.SendResponse(Response);

            Response RoomStruct = new Response(472);
            RoomStruct.AppendBoolean(AllowHideWall);
            RoomStruct.AppendInt32(WallThick);
            RoomStruct.AppendInt32(FloorThick);
            Client.SendRoomResponse(RoomStruct);

            if (Commands.Count > 0)
            {
                using (QueryReactor Reactor = BrickEngine.GetQueryReactor())
                {
                    StringBuilder Builder = new StringBuilder();
                    Builder.Append("UPDATE private_rooms SET ");

                    int i = 0;

                    foreach (string Command in Commands)
                    {
                        i++;
                        Builder.Append(Command);

                        if (i < Commands.Count)
                        {
                            Builder.Append(", ");
                        }
                    }

                    Builder.Append(" WHERE id = @roomid LIMIT 1");

                    Reactor.SetQuery(Builder.ToString());

                    foreach (KeyValuePair<string, Object> kvp in Params)
                    {
                        Reactor.AddParam(kvp.Key, kvp.Value);
                    }

                    Reactor.AddParam("roomid", Room.Id);

                    Reactor.ExcuteQuery();
                }
            }
        }
Beispiel #24
0
        private void Whisper(Client Client, Request Request)
        {
            if (!Client.GetUser().IsInRoom)
            {
                return;
            }

            if (Client.GetUser().Muted)
            {
                Client.Notif("You're muted.", false);
                return;
            }

            string Params = Request.PopFixedString();

            string TriggerdUserName = Params.Split(' ')[0];
            string Message = Params.Replace(TriggerdUserName + ' ',"");

            int Emoticon = Client.GetUser().GetRoomUser().GetEmoticon(Message);

            Client.GetUser().GetRoomUser().Talk(Message, Rooms.Virtual.Units.SpeechType.Whisper, Emoticon, TriggerdUserName);
        }
Beispiel #25
0
        private void MoveItemToRoom(Client Client, Request Request)
        {
            if (!Client.GetUser().IsInRoom)
            {
                // Outside room placing FTW.
                return;
            }

            if (!Client.GetUser().GetRoom().GetRoomEngine().HasRights(Client.GetUser().HabboId, Rooms.RightsType.Founder))
            {
                // Only Place in your own room.
                return;
            }

            int LimitX = Client.GetUser().GetRoom().GetRoomModel().XLength;
            int LimitY = Client.GetUser().GetRoom().GetRoomModel().YLength;

            int RoomId = Client.GetUser().RoomId;

            if (RoomId <= 0)
            {
                return;
            }

            // Get Point + Item Info.
            string PointInfo = Request.PopFixedString();

            // Split them in a array.
            string[] InfoSplit = PointInfo.Split(' ');

            // Gain ItemId & Verify
            int ItemId = BrickEngine.GetConvertor().ObjectToInt32(InfoSplit[0]);

            if (ItemId <= 0)
            {
                return;
            }

            VirtualRoomEngine RoomEngine = BrickEngine.GetRoomReactor().GetVirtualRoom(RoomId, RoomRunningState.Alive).GetRoomEngine();

            if (RoomEngine == null)
            {
                return;
            }

            if (InfoSplit[1].Contains(':'))
            {
                string Verify = RoomEngine.VerifyWallPosition(PointInfo.Substring(Array.IndexOf(PointInfo.ToCharArray(), ':')));

                if (string.IsNullOrEmpty(Verify) || !Verify.StartsWith(":"))
                {
                    return;
                }

                // Gain Item & Verify
                Item Item = null;

                if ((Item = BrickEngine.GetItemReactor().GetItem(ItemId)) == null)
                {
                    return;
                }

                Item.RoomId = RoomId;
                Item.WallPoint = Verify;

                RoomEngine.HandleIncomingItem(Item, Verify, Client.GetUser().GetRoomUser());
            }
            else
            {
                // Gain Point X & Verify
                int PointX = BrickEngine.GetConvertor().ObjectToInt32(InfoSplit[1]);

                if (PointX < 0 || PointX >= LimitX)
                {
                    return;
                }

                // Gain Point Y & Verify
                int PointY = BrickEngine.GetConvertor().ObjectToInt32(InfoSplit[2]);

                if (PointY < 0 || PointY >= LimitY)
                {
                    return;
                }

                // Gain Item Rot & Verify
                int ItemRot = BrickEngine.GetConvertor().ObjectToInt32(InfoSplit[3]);

                if (ItemRot < 0 || ItemRot > 6)
                {
                    return;
                }

                // Gain Item & Verify
                Item Item = null;

                if ((Item = BrickEngine.GetItemReactor().GetItem(ItemId)) == null)
                {
                    return;
                }

                // Already in a room
                if (Item.Place.Equals(ItemPlace.Room))
                {
                    return;
                }

                iPoint NewPlace = new iPoint(PointX, PointY);

                if (RoomEngine.LinkedPoint(Item, NewPlace, ItemRot))
                {
                    return;
                }

                Double PointZ = RoomEngine.GetTileHeight(NewPlace, Item.GetBaseItem().LengthZ, ItemId);

                if (PointZ < 0.0)
                {
                    PointZ = RoomEngine.GetTileHeight(NewPlace);
                }

                NewPlace.Z = PointZ;

                // Update Info & Cache
                Item.Point = NewPlace;
                Item.Rotation = ItemRot;
                Item.RoomId = RoomId;

                RoomEngine.HandleIncomingItem(Item, NewPlace, ItemRot, Client.GetUser().GetRoomUser());
            }

            Response Response = new Response(99);
            Response.AppendInt32(ItemId);
            Client.SendResponse(Response);
        }
Beispiel #26
0
        private void GetMarketPlaceOffers(Client Client, Request Request)
        {
            int MinimalPrice = Request.PopWiredInt32();
            int MaximalPrice = Request.PopWiredInt32();
            string Query = Request.PopFixedString();
            int OrderState = Request.PopWiredInt32();

            Client.SendResponse(BrickEngine.GetMarketplaceReactor().GetResponse(MinimalPrice, MaximalPrice, Query, OrderState));
        }
Beispiel #27
0
        private void SearchRooms(Client Client, Request Request)
        {
            string Query = string.Empty;

            if (Request.Length > 3)
            {
                Query = Request.PopFixedString();
            }

            Client.SendResponse(BrickEngine.GetNavigatorManager().GetSearchResponse(Query));
        }
Beispiel #28
0
        private void GetPetName(Client Client, Request Request)
        {
            string PetName = BrickEngine.CleanString(Request.PopFixedString());

            Response Response = new Response(36);
            Response.AppendInt32(BrickEngine.GetPetReactor().NameCheckResult(PetName));
            Client.SendResponse(Response);
        }
Beispiel #29
0
        private void GetRooms(Client Client, Request Request)
        {
            int Category = int.Parse(Request.PopFixedString());

            Client.SendResponse(BrickEngine.GetNavigatorManager().GetRoomsResponse(Category));
        }
Beispiel #30
0
        private void RequestUser(Client Client, Request Request)
        {
            string Username = Request.PopFixedString();

            int HabboId = BrickEngine.GetUserReactor().GetId(Username);

            if (!BrickEngine.GetUserReactor().GetEnableNewFriends(HabboId))
            {
                Response Response = new Response(260);
                Response.AppendInt32(39);
                Response.AppendInt32(3);
                Client.SendResponse(Response);
                return;
            }

            if (HabboId > 0)
            {
                BrickEngine.GetMessengerHandler().RequestUser(Client.GetUser().HabboId, HabboId);
            }
        }