Пример #1
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);
            }
        }
Пример #2
0
 private void GetEcotronInfo(Client Client, Request Request)
 {
     Response Response = new Response(507);
     Response.AppendInt32(BrickEngine.GetEcotronReactor().GetTimerTime(Client.GetUser().HabboId));
     Response.AppendInt32(BrickEngine.GetEcotronReactor().GetTimeToWait(Client.GetUser().HabboId));
     Client.SendResponse(Response);
 }
Пример #3
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);
            }
        }
Пример #4
0
        private void CheckRoomCreate(Client Client, Request Request)
        {
            int Limit = BrickEngine.GetConfigureFile().CallIntKey("max.rooms.amount");
            int RoomAmount = BrickEngine.GetRoomReactor().GetMe(Client.GetUser().HabboId).Count;

            Response Response = new Response(512);
            Response.AppendBoolean(RoomAmount >= Limit);
            Response.AppendInt32(Limit);
            Client.SendResponse(Response);
        }
Пример #5
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();
            }
        }
Пример #6
0
        public void ClearLoading(Client Client, Boolean Reset)
        {
            if (Client.GetUser().IsInRoom)
            {
                Client.GetUser().RoomId = -1;
            }

            if (Client.GetUser().IsLoadingRoom)
            {
                Client.GetUser().PreparingRoomId = -1;
            }

            if (Reset)
            {
                Client.SendResponse(new Response(18));
            }
        }
Пример #7
0
        private void GetEcotronPackage(Client Client, Request Request)
        {
            if (!Client.GetUser().IsInRoom)
            {
                return;
            }

            int ItemAmount = Request.PopWiredInt32();

            if (ItemAmount < 5 || ItemAmount > 5)
            {
                return;
            }

            var ItemList = new List<int>();

            for (int i = 0; i < ItemAmount; i++)
            {
                int ItemId = Request.PopWiredInt32();

                ItemList.Add(ItemId);
            }

            if (BrickEngine.GetEcotronReactor().GainReward(Client))
            {
                foreach (int ItemId in ItemList)
                {
                    BrickEngine.GetItemReactor().RemoveItem(ItemId);
                }

                Client.SendResponse(new Response(101));

                foreach (int ItemId in ItemList)
                {
                    using (QueryReactor Reactor = BrickEngine.GetQueryReactor())
                    {
                        Reactor.SetQuery("DELETE FROM items WHERE id = @itemid LIMIT 1");
                        Reactor.AddParam("itemid", ItemId);
                        Reactor.ExcuteQuery();
                    }
                }
            }
        }
Пример #8
0
        private void AcceptRequests(Client Client, Request Request)
        {
            int Amount = Request.PopWiredInt32();

            for (int i = 0; i < Amount; i++)
            {
                int UserId = Request.PopWiredInt32();

                BrickEmulator.HabboHotel.Users.Handlers.Messenger.Friend Friend = new BrickEmulator.HabboHotel.Users.Handlers.Messenger.Friend(UserId);

                if (Friend.IsAlive)
                {
                    // Send Response (come online) >> Friend
                    Friend.GetClient().SendResponse(BrickEngine.GetMessengerHandler().GetStatusMessage(Friend.HabboId, Client.GetUser(), true));

                    // Send Response (come online) >> MySELF
                    Client.SendResponse(BrickEngine.GetMessengerHandler().GetStatusMessage(Client.GetUser().HabboId, Friend.GetClient().GetUser(), true));
                }

                BrickEngine.GetMessengerHandler().AcceptRequest(UserId, Client.GetUser().HabboId);
            }
        }
Пример #9
0
 private void HandleSessionDetails(Client Client, Request Request)
 {
     Response Response = new Response(257);
     Response.AppendInt32(9);
     Response.AppendBoolean(false);
     Response.AppendBoolean(false);
     Response.AppendBoolean(true);
     Response.AppendBoolean(true);
     Response.AppendInt32(3);
     Response.AppendBoolean(false);
     Response.AppendInt32(2);
     Response.AppendBoolean(false);
     Response.AppendInt32(4);
     Response.AppendBoolean(true);
     Response.AppendInt32(5);
     Response.AppendStringWithBreak("dd-MM-yyyy");
     Response.AppendInt32(7);
     Response.AppendBoolean(false);
     Response.AppendInt32(8);
     Response.AppendStringWithBreak("http://");
     Response.AppendInt32(9);
     Response.AppendBoolean(false);
     Client.SendResponse(Response);
 }
Пример #10
0
        public void GetBadges(Client Client, Request Request)
        {
            var Badges = BrickEngine.GetBadgeHandler().GetBadgesForUser(Client.GetUser().HabboId);
            var Equiped = BrickEngine.GetBadgeHandler().GetEquipedBadges(Client.GetUser().HabboId);

            Response Response = new Response(229);
            Response.AppendInt32(Badges.Count);

            foreach (Badge Badge in Badges)
            {
                Response.AppendInt32(BrickEngine.GetBadgeHandler().GetIdForBadge(Badge.BadgeCode));
                Response.AppendStringWithBreak(Badge.BadgeCode);
            }

            Response.AppendInt32(Equiped.Count);

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

            Client.SendResponse(Response);
        }
Пример #11
0
 private void GetPrivates(Client Client, Request Request)
 {
     Client.SendResponse(BrickEngine.GetNavigatorManager().GetPrivateResponse());
 }
Пример #12
0
 private void GetLastVisitedRooms(Client Client, Request Request)
 {
     Client.SendResponse(BrickEngine.GetNavigatorManager().GetLastVisited(Client));
 }
Пример #13
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));
        }
Пример #14
0
        public void PurchaseItem(int Id, Client Client, string ExtraData, int PageId)
        {
            ShopItem Item = null;

            if ((Item = GetShopItem(Id)) == null)
            {
                return;
            }

            Boolean CreditsToLow = false;
            Boolean PixelsToLow = false;

            if (Client.GetUser().Credits < Item.CreditsCost)
            {
                CreditsToLow = true;
            }

            if (Client.GetUser().Pixels < Item.PixelsCost)
            {
                PixelsToLow = true;
            }

            if (CreditsToLow || PixelsToLow)
            {
                Response Response = new Response(68);
                Response.AppendBoolean(CreditsToLow);
                Response.AppendBoolean(PixelsToLow);
                Client.SendResponse(Response);
                return;
            }

            if (Item.CreditsCost > 0)
            {
                Client.GetUser().Credits -= Item.CreditsCost;
                Client.GetUser().UpdateCredits(true);
            }

            if (Item.PixelsCost > 0)
            {
                Client.GetUser().Pixels -= Item.PixelsCost;
                Client.GetUser().UpdatePixels(true);
            }

            if (!Item.GetBaseItem(Item.InternalItemIds[0]).InternalType.ToLower().Equals("e"))
            {
                if (Item.GetBaseItem(Item.InternalItemIds[0]).ExternalType.ToLower().Equals("membership"))
                {
                    Client.SendResponse(Item.GetPurchaseResponse(true));

                    ShopClubItem ClubItem = GetClubItem(Id);

                    if (Item == null)
                    {
                        return;
                    }

                    int Type = (ClubItem.MemberShipType.ToUpper() == "VIP") ? 1 : 0;
                    int Months = ClubItem.MonthsAmount;

                    BrickEngine.GetMembershipHandler().DeliverMembership(Client.GetUser().HabboId, Type, Months);

                    BrickEngine.GetPacketHandler().GetMembershipParams(Client, null);

                    Response Rights = new Response(2);

                    if (Client.GetUser().GetMembership() != null)
                    {
                        Rights.AppendInt32(Type + 1);
                    }
                    else
                    {
                        Rights.AppendInt32(0);
                    }

                    Client.SendResponse(Rights);

                    BrickEngine.GetAchievementReactor().UpdateUsersAchievement(Client, 8);
                    BrickEngine.GetAchievementReactor().UpdateUsersAchievement(Client, 9);
                }
                else
                {
                    if (Item.IsDeal)
                    {
                        var FloorItems = new List<int>();
                        var WallItems = new List<int>();

                        Client.SendResponse(Item.GetPurchaseResponse(false));

                        Response ShowItems = new Response(832);
                        ShowItems.AppendInt32(Item.InternalItemIds.Count);

                        for (int i = 0; i < Item.Amount; i++)
                        {
                            foreach (int ItemId in Item.InternalItemIds)
                            {
                                if (Item.GetBaseItem(ItemId).InternalType.ToLower().Equals("s"))
                                {
                                    FloorItems.Add(BrickEngine.GetItemReactor().InsertItem(Client.GetUser().HabboId, ItemId, ExtraData, -1));
                                }
                                else
                                {
                                    WallItems.Add(BrickEngine.GetItemReactor().InsertItem(Client.GetUser().HabboId, ItemId, ExtraData, -1));
                                }
                            }
                        }

                        ShowItems.AppendInt32(1);
                        ShowItems.AppendInt32(FloorItems.Count);

                        foreach (int ItemId in FloorItems)
                        {
                            ShowItems.AppendInt32(ItemId);
                        }

                        ShowItems.AppendInt32(2);
                        ShowItems.AppendInt32(WallItems.Count);

                        foreach (int ItemId in WallItems)
                        {
                            ShowItems.AppendInt32(ItemId);
                        }

                        Client.SendResponse(ShowItems);
                    }
                    else
                    {
                        if (Item.GetBaseItem(Item.InternalItemIds[0]).InternalName.ToLower().Contains("pet"))
                        {
                            string[] PetData = ExtraData.Split('\n');

                            int PetType = -1;
                            int PetRace = -1;
                            string PetName = string.Empty;
                            string PetColor = string.Empty;

                            PetType = Convert.ToInt32(Item.GetBaseItem(Item.InternalItemIds[0]).InternalName.ToLower().Substring(6));
                            PetRace = Convert.ToInt32(PetData[1]);
                            PetName = PetData[0];
                            PetColor = PetData[2];

                            int PetId = BrickEngine.GetPetReactor().GeneratePet(Client.GetUser().HabboId, PetType, PetRace, PetColor, PetName);

                            Response ShowPet = new Response(832);
                            ShowPet.AppendInt32(Item.Amount);
                            ShowPet.AppendInt32(3);
                            ShowPet.AppendInt32(Item.Amount);
                            ShowPet.AppendInt32(PetId);
                            Client.SendResponse(ShowPet);

                            Response AddMessage = new Response(603);
                            BrickEngine.GetPetReactor().GetPetInfo(PetId).GetInventoryResponse(AddMessage);
                            Client.SendResponse(AddMessage);
                        }

                        Response ShowItem = new Response(832);
                        ShowItem.AppendInt32(Item.Amount);
                        ShowItem.AppendInt32(Item.GetBaseItem(Item.InternalItemIds[0]).InternalType.ToLower().Equals("s") ? 1 : 2);
                        ShowItem.AppendInt32(Item.Amount);

                        Client.SendResponse(Item.GetPurchaseResponse(false));

                        for (int i = 0; i < Item.Amount; i++)
                        {
                            ShowItem.AppendInt32(BrickEngine.GetItemReactor().InsertItem(Client.GetUser().HabboId, Item.InternalItemIds[0], ExtraData, -1));
                        }

                        Client.SendResponse(ShowItem);
                    }

                    Client.SendResponse(new Response(101));
                }
            }
            else
            {
                if (Item.IsDeal)
                {
                    Client.SendResponse(Item.GetPurchaseResponse(false));

                    for (int i = 0; i < Item.Amount; i++)
                    {
                        foreach (int ItemId in Item.InternalItemIds)
                        {
                            BrickEngine.GetEffectsHandler().InsertEffect(Client, Item.GetBaseItem(ItemId).SpriteId, Item.GetBaseItem(ItemId).InteractorAmount);
                        }
                    }
                }
                else
                {
                    Client.SendResponse(Item.GetPurchaseResponse(false));

                    for (int i = 0; i < Item.Amount; i++)
                    {
                        BrickEngine.GetEffectsHandler().InsertEffect(Client, Item.GetBaseItem(Item.InternalItemIds[0]).SpriteId, Item.GetBaseItem(Item.InternalItemIds[0]).InteractorAmount);
                    }
                }
            }

            if (Item.CreditsCost > 0)
            {
                using (QueryReactor Reactor = BrickEngine.GetQueryReactor())
                {
                    Reactor.SetQuery("INSERT INTO user_transactions (user_id, datetime, activity) VALUES (@user_id, @datetime, @activity)");
                    Reactor.AddParam("user_id", Client.GetUser().HabboId);
                    Reactor.AddParam("datetime", DateTime.Now);
                    Reactor.AddParam("activity", -Item.CreditsCost);
                    Reactor.ExcuteQuery();
                }
            }
        }
Пример #15
0
        // 3001
        private void GetPetInfo(Client Client, Request Request)
        {
            if (!Client.GetUser().IsInRoom)
            {
                // Outside room placing FTW.
                return;
            }

            int PetId = Request.PopWiredInt32();

            if (PetId <= 0)
            {
                return;
            }

            PetInfo Info = BrickEngine.GetPetReactor().GetPetInfo(PetId);

            if (Info == null)
            {
                return;
            }

            Client.SendResponse(Info.GetInfoResponse());
        }
Пример #16
0
        public void GetRestResponse(Client Client)
        {
            Response UsersWithoutMe = new Response(28); // Users without me (before me)
            UsersWithoutMe.AppendInt32(GetRoomEngine().UnitCount); // UsersCount

            foreach (VirtualRoomUser User in GetRoomEngine().GetUsers())
            {
                User.GetResponse(UsersWithoutMe);
            }

            foreach (VirtualRoomUser Pet in GetRoomEngine().GetPets())
            {
                Pet.GetResponse(UsersWithoutMe);
            }

            Client.SendResponse(UsersWithoutMe);

            Response StaticFurni = new Response(30);
            StaticFurni.AppendBoolean(false); // Habbo leaves Public Rooms?
            Client.SendResponse(StaticFurni);

            Response FloorItems = new Response(32);
            FloorItems.AppendInt32(GetRoomEngine().GetFloorItems().Count); // ItemCount

            foreach (Item FloorItem in GetRoomEngine().GetFloorItems())
            {
                FloorItem.GetRoomResponse(FloorItems);
            }

            Client.SendResponse(FloorItems);

            Response WallItems = new Response(45);
            WallItems.AppendInt32(GetRoomEngine().GetWallItems().Count); // ItemCount

            foreach (Item WallItem in GetRoomEngine().GetWallItems())
            {
                WallItem.GetRoomResponse(WallItems);
            }

            Client.SendResponse(WallItems);

            if (GetRoomEngine().GenerateRoomUser(Client) != null)
            {
                Response UsersWithMe = new Response(28); // Users with me (after me)
                UsersWithMe.AppendInt32(GetRoomEngine().UnitCount); // UsersCount

                foreach (VirtualRoomUser User in GetRoomEngine().GetUsers())
                {
                    User.GetResponse(UsersWithMe);

                    if (User.DanceId > 0)
                    {
                        Response Dance = new Response(480);
                        Dance.AppendInt32(User.VirtualId);
                        Dance.AppendInt32(User.DanceId);
                        Client.SendResponse(Dance);
                    }

                    if (User.Suppressed)
                    {
                        Response Suppressed = new Response(486);
                        Suppressed.AppendInt32(User.VirtualId);
                        Suppressed.AppendBoolean(true);
                        Client.SendResponse(Suppressed);
                    }

                    if (BrickEngine.GetEffectsHandler().UserHasRunningEffect(User.HabboId))
                    {
                        Response Response = new Response(485);
                        Response.AppendInt32(User.VirtualId);
                        Response.AppendInt32(BrickEngine.GetEffectsHandler().GetRunningEffect(User.HabboId).EffectId);
                        Client.SendResponse(Response);
                    }
                }

                foreach (VirtualRoomUser Pet in GetRoomEngine().GetPets())
                {
                    Pet.GetResponse(UsersWithMe);
                }

                Client.SendResponse(UsersWithMe);
            }
            else
            {
                BrickEngine.GetPacketHandler().ClearLoading(Client, true);
                return;
            }

            if (BrickEngine.GetEffectsHandler().UserHasRunningEffect(Client.GetUser().HabboId))
            {
                Response Response = new Response(485);
                Response.AppendInt32(Client.GetUser().GetRoomUser().VirtualId);
                Response.AppendInt32(BrickEngine.GetEffectsHandler().GetRunningEffect(Client.GetUser().HabboId).EffectId);
                Client.SendResponse(Response);
            }

            Response Additionals = new Response(472);
            Additionals.AppendBoolean(AllowHideWall);
            Additionals.AppendInt32(WallThick);
            Additionals.AppendInt32(FloorThick);
            Client.SendResponse(Additionals);

            int HabboId = Client.GetUser().HabboId;

            if (GetRoomEngine().HasRights(Client.GetUser().HabboId, RightsType.Founder))
            {
                Client.SendResponse(new Response(47));
                Client.SendResponse(new Response(42));

                VirtualRoomUser myUser = GetRoomEngine().GetUserByHabboId(Client.GetUser().HabboId);
                myUser.AddStatus("flatctrl useradmin", "");
            }
            else if (GetRoomEngine().HasRights(Client.GetUser().HabboId, RightsType.Rights))
            {
                Client.SendResponse(new Response(42));

                VirtualRoomUser myUser = GetRoomEngine().GetUserByHabboId(Client.GetUser().HabboId);
                myUser.AddStatus("flatctrl", "");
            }

            Response Extra = new Response(471);
            Extra.AppendBoolean(true);
            Extra.AppendInt32(Id);
            Extra.AppendBoolean(GetRoomEngine().HasRights(Client.GetUser().HabboId,RightsType.Founder)); // Enable Editing
            Client.SendResponse(Extra);

            Response Statusses = new Response(34);
            Statusses.AppendInt32(GetRoomEngine().UnitCount); // UsersCount

            foreach (VirtualRoomUser User in GetRoomEngine().GetUsers())
            {
                User.GetStatusResponse(Statusses);
            }

            foreach (VirtualRoomUser Pet in GetRoomEngine().GetPets())
            {
                Pet.GetStatusResponse(Statusses);
            }

            Client.SendResponse(Statusses);

            Client.SendResponse(new Response(208));

            Response RoomCache = new Response(454);
            RoomCache.AppendBoolean(true);
            GetNavigatorResponse(RoomCache, false);
            Client.SendResponse(RoomCache);
        }
Пример #17
0
        public void GetSecondairResponse(Client Client)
        {
            Response PasteLink = new Response(166);
            PasteLink.AppendStringWithBreak("/client/private/" + Id + "/id");
            Client.SendResponse(PasteLink);

            Response ModelParams = new Response(69);
            ModelParams.AppendStringWithBreak(ModelParam.ToLower());
            ModelParams.AppendInt32(Id);
            Client.SendResponse(ModelParams);

            Response Environment = new Response();

            if (!Wallpaper.Equals("0.0"))
            {
                Environment.Initialize(46);
                Environment.AppendStringWithBreak("wallpaper");
                Environment.AppendStringWithBreak(Wallpaper);
            }

            if (!Floor.Equals("0.0"))
            {
                Environment.Initialize(46);
                Environment.AppendStringWithBreak("floor");
                Environment.AppendStringWithBreak(Floor);
            }

            Environment.Initialize(46);
            Environment.AppendStringWithBreak("landscape");
            Environment.AppendStringWithBreak(Landscape);

            Environment.Initialize(345);

            if (GetRoomEngine().HasRights(Client.GetUser().HabboId, RightsType.Founder) || Client.GetUser().VotedRooms.Contains(Id))
            {
                Environment.AppendInt32(Rating);
            }
            else
            {
                Environment.AppendInt32(-1);
            }

            Environment.Initialize(370);

            if (Event != null)
            {
                Event.GetResponse(Environment);
            }
            else
            {
                Environment.AppendRawInt32(-1);
                Environment.AppendChar(2);
            }

            Client.SendResponse(Environment);
        }
Пример #18
0
        private void GiveRights(Client Client, Request Request)
        {
            if (!Client.GetUser().IsInRoom)
            {
                return;
            }

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

            int HabboId = Request.PopWiredInt32();

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

            if (TriggeredUser == null)
            {
                return;
            }

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

            Client.GetUser().GetRoom().GetRoomEngine().AddRights(HabboId, RightsType.Rights);

            Response Response = new Response(510);
            Response.AppendInt32(Client.GetUser().RoomId);
            Response.AppendInt32(HabboId);
            Response.AppendStringWithBreak(BrickEngine.GetUserReactor().GetUsername(HabboId));
            Client.SendResponse(Response);

            TriggeredUser.GetClient().SendResponse(new Response(42));

            TriggeredUser.AddStatus("flatctrl", "");
            TriggeredUser.UpdateStatus(true);

            // Doing Querys
            using (QueryReactor Reactor = BrickEngine.GetQueryReactor())
            {
                Reactor.SetQuery("INSERT INTO private_rooms_rights (user_id, room_id) VALUES (@habboid, @roomid)");
                Reactor.AddParam("habboid", HabboId);
                Reactor.AddParam("roomid", Client.GetUser().RoomId);
                Reactor.ExcuteQuery();
            }
        }
Пример #19
0
        public void RedeemPresent(Client Client, Item Item)
        {
            iPoint OldPlace = Item.Point;
            int OldRot = Item.Rotation;

            iPoint NewPlace = new iPoint(-1, -1);
            int NewRot = 0;

            Client.GetUser().GetRoom().GetRoomEngine().HandleIncomingItemPickUp(Item, OldPlace, NewPlace, OldRot, NewRot, Client.GetUser().GetRoomUser());

            Item.RoomId = 0;
            Item.Rotation = NewRot;
            Item.Point = NewPlace;
            Item.BaseId = Item.InsideItemId;
            Item.InsideItemId = -1;

            Response ResponseA = new Response(219);
            ResponseA.AppendInt32(Item.Id);
            Client.SendResponse(ResponseA);

            Response ResponseB = new Response(129);
            ResponseB.AppendStringWithBreak(Item.GetBaseItem().InternalType.ToLower());
            ResponseB.AppendInt32(Item.GetBaseItem().SpriteId);
            ResponseB.AppendStringWithBreak(Item.GetBaseItem().InternalName);
            Client.SendResponse(ResponseB);

            Response Response = new Response(832);
            Response.AppendInt32(1);
            Response.AppendInt32(Item.GetBaseItem().InternalType.ToLower().Equals("s") ? 1 : 2);
            Response.AppendInt32(1);
            Response.AppendInt32(Item.Id);
            Client.SendResponse(Response);

            Client.SendResponse(new Response(101));

            using (QueryReactor Reactor = BrickEngine.GetQueryReactor())
            {
                Reactor.SetQuery("UPDATE items SET base_id = @baseid, inside_base_id = '-1' WHERE id = @itemid LIMIT 1");
                Reactor.AddParam("baseid", Item.BaseId);
                Reactor.AddParam("itemid", Item.Id);
                Reactor.ExcuteQuery();
            }
        }
Пример #20
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);
        }
Пример #21
0
        private void UpdateFavorite(Client Client, Request Request)
        {
            int RoomId = Request.PopWiredInt32();

            string Query = string.Empty;

            Response Response = new Response(459);
            Response.AppendInt32(RoomId);

            if (Client.GetUser().FavoriteRoomIds.Contains(RoomId))
            {
                Client.GetUser().FavoriteRoomIds.Remove(RoomId);

                Query = "DELETE FROM user_favorite_rooms WHERE user_id = @habboid AND room_id = @roomid LIMIT 1";

                Response.AppendBoolean(false);
            }
            else
            {
                Client.GetUser().FavoriteRoomIds.Add(RoomId);

                Query = "INSERT INTO user_favorite_rooms (user_id, room_id) VALUES (@habboid, @roomid)";

                Response.AppendBoolean(true);
            }

            Client.SendResponse(Response);

            using (QueryReactor Reactor = BrickEngine.GetQueryReactor())
            {
                Reactor.SetQuery(Query);
                Reactor.AddParam("habboid", Client.GetUser().HabboId);
                Reactor.AddParam("roomid", RoomId);
                Reactor.ExcuteQuery();
            }
        }
Пример #22
0
        private void MovePetToInventory(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 PetId = Request.PopWiredInt32();

            if (PetId <= 0)
            {
                return;
            }

            PetInfo Info = BrickEngine.GetPetReactor().GetPetInfo(PetId);

            if (Info == null)
            {
                return;
            }

            if (Info.UserId != Client.GetUser().HabboId)
            {
                return;
            }

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

            if (RoomEngine == null)
            {
                return;
            }

            Info.RoomId = -1;

            RoomEngine.RemovePet(PetId);

            Response AddMessage = new Response(603);
            Info.GetInventoryResponse(AddMessage);
            Client.SendResponse(AddMessage);

            using (QueryReactor Reactor = BrickEngine.GetQueryReactor())
            {
                Reactor.SetQuery("UPDATE user_pets SET room_id = @roomid WHERE id = @petid LIMIT 1");
                Reactor.AddParam("roomid", -1);
                Reactor.AddParam("petid", PetId);
                Reactor.ExcuteQuery();
            }
        }
Пример #23
0
        private void UpdateHomeRoom(Client Client, Request Request)
        {
            if (!Client.GetUser().IsInRoom)
            {
                return;
            }

            int RoomId = Request.PopWiredInt32();

            if (!Client.GetUser().GetRoom().GetRoomEngine().HasRights(Client.GetUser().HabboId, Rooms.RightsType.Founder))
            {
                // You can't use anothers room.
                return;
            }

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

            Client.GetUser().HomeRoomId = RoomId;

            Response Response = new Response(455);
            Response.AppendInt32(RoomId);
            Client.SendResponse(Response);

            using (QueryReactor Reactor = BrickEngine.GetQueryReactor())
            {
                Reactor.SetQuery("UPDATE users SET home_room_id = @roomid WHERE id = @habboid LIMIT 1");
                Reactor.AddParam("roomid", RoomId);
                Reactor.AddParam("habboid", Client.GetUser().HabboId);
                Reactor.ExcuteQuery();
            }
        }
Пример #24
0
        private void MovePetToRoom(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 PetId = Request.PopWiredInt32();

            if (PetId <= 0)
            {
                return;
            }

            PetInfo Info = BrickEngine.GetPetReactor().GetPetInfo(PetId);

            if (Info == null)
            {
                return;
            }

            if (Info.UserId != Client.GetUser().HabboId)
            {
                return;
            }

            if (Client.GetUser().GetRoom().GetRoomEngine().GetPets().Count >= PetReactor.MAX_PETS_PER_ROOM)
            {
                Client.Notif(string.Format("A room can only contains {0} pets.",PetReactor.MAX_PETS_PER_ROOM), false);
                return;
            }

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

            int X = Request.PopWiredInt32();

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

            int Y = Request.PopWiredInt32();

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

            iPoint Place = new iPoint(X, Y);

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

            if (RoomEngine == null)
            {
                return;
            }

            Info.RoomId = Client.GetUser().RoomId;

            int Rot = Rotation.Calculate(Place, Client.GetUser().GetRoomUser().Point);

            RoomEngine.GenerateRoomPet(PetId, Place, Rot);

            Response RemoveMessage = new Response(604);
            RemoveMessage.AppendInt32(PetId);
            Client.SendResponse(RemoveMessage);

            using (QueryReactor Reactor = BrickEngine.GetQueryReactor())
            {
                Reactor.SetQuery("UPDATE user_pets SET room_id = @roomid WHERE id = @petid LIMIT 1");
                Reactor.AddParam("roomid", Client.GetUser().RoomId);
                Reactor.AddParam("petid", PetId);
                Reactor.ExcuteQuery();
            }
        }
Пример #25
0
 private void GetFavoriteRooms(Client Client, Request Request)
 {
     Client.SendResponse(BrickEngine.GetNavigatorManager().GetFavoriteRooms(Client));
 }
Пример #26
0
 private void ActivateLoading(Client Client, Request Request)
 {
     Response Response = new Response(297);
     Response.AppendBoolean(false);
     Client.SendResponse(Response);
 }
Пример #27
0
 private void GetMe(Client Client, Request Request)
 {
     Client.SendResponse(BrickEngine.GetNavigatorManager().GetResponseForUser(Client));
 }
Пример #28
0
        public Boolean BeginEnterRoom(Client Client, string Password)
        {
            RoomEnterMessage EnterMessage = TryEnterRoom(Client,Password);

            if (!EnterMessage.Equals(RoomEnterMessage.Accepted))
            {
                Response ErrorResponse = new Response();

                if (EnterMessage.Equals(RoomEnterMessage.Banned))
                {
                    ErrorResponse.Initialize(224);
                    ErrorResponse.AppendInt32(4);
                    ErrorResponse.Initialize(18);
                    Client.SendResponse(ErrorResponse);
                    return false;
                }
                else if (EnterMessage.Equals(RoomEnterMessage.LimitUsers))
                {
                    ErrorResponse.Initialize(224);
                    ErrorResponse.AppendInt32(1);
                    ErrorResponse.Initialize(18);
                    Client.SendResponse(ErrorResponse);
                    return false;
                }
                else if (EnterMessage.Equals(RoomEnterMessage.NoAnswer))
                {
                    Client.SendResponse(new Response(131));
                    return false;
                }
                else if (EnterMessage.Equals(RoomEnterMessage.WrongPassword))
                {
                    ErrorResponse.Initialize(33);
                    ErrorResponse.AppendInt32(-100002);
                    ErrorResponse.Initialize(18);
                    Client.SendResponse(ErrorResponse);
                    return false;
                }
            }
            else
            {
                Client.SendResponse(new Response(19));
                return true;
            }

            return false;
        }
Пример #29
0
        private void GetRooms(Client Client, Request Request)
        {
            int Category = int.Parse(Request.PopFixedString());

            Client.SendResponse(BrickEngine.GetNavigatorManager().GetRoomsResponse(Category));
        }
Пример #30
0
        public void GetMapsResponse(Client Client)
        {
            Response Premair = new Response(31);
            Premair.AppendStringWithBreak(GetRoomModel().GetPremairParams());
            Client.SendResponse(Premair);

            Response Secondair = new Response(470);
            Secondair.AppendStringWithBreak(GetRoomModel().GetSecondairParams());
            Client.SendResponse(Secondair);
        }