public void WriteNodeIndex(BCCatalogPage page, int treeSize) { base.WriteBoolean(page.Visible); base.WriteInteger(page.Icon); base.WriteInteger(-1); base.WriteString(page.PageLink); base.WriteString(page.Caption); base.WriteInteger(0); base.WriteInteger(treeSize); }
public void WritePage(BCCatalogPage page, int treeSize) { base.WriteBoolean(page.Visible); base.WriteInteger(page.Icon); base.WriteInteger(page.Id); base.WriteString(page.PageLink); base.WriteString(page.Caption); base.WriteInteger(page.ItemOffers.Count); foreach (int i in page.ItemOffers.Keys) { base.WriteInteger(i); } base.WriteInteger(treeSize); }
public void Parse(GameClient Session, ClientPacket Packet) { int PageId = Packet.PopInt(); int Something = Packet.PopInt(); string CataMode = Packet.PopString(); CatalogPage Page = null; BCCatalogPage BCPage = null; if (CataMode == "NORMAL") { if (!RavenEnvironment.GetGame().GetCatalog().TryGetPage(PageId, out Page)) { return; } if (!Page.Enabled || !Page.Visible || Page.MinimumRank > Session.GetHabbo().Rank || (Page.MinimumVIP > Session.GetHabbo().VIPRank&& Session.GetHabbo().Rank == 1)) { return; } Session.SendMessage(new CatalogPageComposer(Page, CataMode, Session)); } if (CataMode == "BUILDERS_CLUB") { if (!RavenEnvironment.GetGame().GetCatalog().TryGetBCPage(PageId, out BCPage)) { return; } if (!BCPage.Enabled || !BCPage.Visible || BCPage.MinimumRank > Session.GetHabbo().Rank || (BCPage.MinimumVIP > Session.GetHabbo().VIPRank&& Session.GetHabbo().Rank == 1)) { return; } Session.SendMessage(new BCCatalogPageComposer(BCPage, CataMode)); } Session.GetHabbo().lastLayout = Page.Template; }
public BCCatalogPageComposer(BCCatalogPage Page, string CataMode) : base(ServerPacketHeader.CatalogPageMessageComposer) { base.WriteInteger(Page.Id); base.WriteString(CataMode); base.WriteString(Page.Template); base.WriteInteger(Page.PageStrings1.Count); foreach (string s in Page.PageStrings1) { base.WriteString(s); } base.WriteInteger(Page.PageStrings2.Count); foreach (string s in Page.PageStrings2) { base.WriteString(s); } if (!Page.Template.Equals("frontpage") && !Page.Template.Equals("club_buy")) { base.WriteInteger(Page.Items.Count); foreach (var Item in Page.Items.Values) { base.WriteInteger(Item.Id); base.WriteString(Item.Name); base.WriteBoolean(false);//IsRentable base.WriteInteger(Item.CostCredits); if (Item.CostDiamonds > 0) { base.WriteInteger(Item.CostDiamonds); base.WriteInteger(5); // Diamonds } else if (Item.CostGOTWPoints > 0) { base.WriteInteger(Item.CostGOTWPoints); base.WriteInteger(103); // Pixeles } else { base.WriteInteger(Item.CostPixels); base.WriteInteger(0); // Type of PixelCost } base.WriteBoolean(false); if (Item.Data.InteractionType == InteractionType.DEAL) { foreach (CatalogDeal Deal in Page.Deals.Values) { base.WriteInteger(Deal.ItemDataList.Count);//Count foreach (CatalogItem DealItem in Deal.ItemDataList.ToList()) { base.WriteString(DealItem.Data.Type.ToString()); base.WriteInteger(DealItem.Data.SpriteId); base.WriteString(""); base.WriteInteger(DealItem.Amount); base.WriteBoolean(false); } base.WriteInteger(0);//club_level base.WriteBoolean(false); base.WriteBoolean(true); base.WriteString(""); } } else { if (Item.PredesignedId > 0) { base.WriteInteger(Page.PredesignedItems.Items.Count); foreach (var predesigned in Page.PredesignedItems.Items.ToList()) { ItemData Data = null; if (RavenEnvironment.GetGame().GetItemManager().GetItem(predesigned.Key, out Data)) { } base.WriteString(Data.Type.ToString()); base.WriteInteger(Data.SpriteId); base.WriteString(string.Empty); base.WriteInteger(predesigned.Value); base.WriteBoolean(false); } base.WriteInteger(0); base.WriteBoolean(false); base.WriteBoolean(true); // Niu Rilí base.WriteString(""); // Niu Rilí } else { base.WriteInteger(string.IsNullOrEmpty(Item.Badge) ? 1 : 2);//Count 1 item if there is no badge, otherwise count as 2. if (!string.IsNullOrEmpty(Item.Badge)) { base.WriteString("b"); base.WriteString(Item.Badge); } base.WriteString(Item.Data.Type.ToString()); if (Item.Data.Type.ToString().ToLower() == "b") { //This is just a badge, append the name. base.WriteString(Item.Data.ItemName); } else { base.WriteInteger(Item.Data.SpriteId); if (Item.Data.InteractionType == InteractionType.WALLPAPER || Item.Data.InteractionType == InteractionType.FLOOR || Item.Data.InteractionType == InteractionType.LANDSCAPE) { base.WriteString(Item.Name.Split('_')[2]); } else if (Item.Data.InteractionType == InteractionType.BOT)//Bots { CatalogBot CatalogBot = null; if (!RavenEnvironment.GetGame().GetCatalog().TryGetBot(Item.ItemId, out CatalogBot)) { base.WriteString("hd-180-7.ea-1406-62.ch-210-1321.hr-831-49.ca-1813-62.sh-295-1321.lg-285-92"); } else { base.WriteString(CatalogBot.Figure); } } else if (Item.ExtraData != null) { base.WriteString(Item.ExtraData != null ? Item.ExtraData : string.Empty); } base.WriteInteger(Item.Amount); base.WriteBoolean(Item.IsLimited); // IsLimited if (Item.IsLimited) { base.WriteInteger(Item.LimitedEditionStack); base.WriteInteger(Item.LimitedEditionStack - Item.LimitedEditionSells); } } base.WriteInteger(0); //club_level base.WriteBoolean(false); base.WriteBoolean(true); // Niu Rilí base.WriteString(""); // Niu Rilí } } } //} /*}*/ } else { base.WriteInteger(0); } base.WriteInteger(-1); base.WriteBoolean(false); if (Page.Template == "frontpage4") { ICollection <Frontpage> FrontPage = RavenEnvironment.GetGame().GetCatalogFrontPageManager().GetBCCatalogFrontPage(); base.WriteInteger(FrontPage.Count); // count foreach (Frontpage front in FrontPage.ToList <Frontpage>()) { base.WriteInteger(front.Id()); base.WriteString(front.FrontName()); base.WriteString(front.FrontImage()); base.WriteInteger(0); base.WriteString(front.FrontLink()); base.WriteInteger(-1); } } }
public void Parse(HabboHotel.GameClients.GameClient Session, ClientPacket Packet) { if (Session == null || Session.GetHabbo() == null || !Session.GetHabbo().InRoom) { return; } Room Room = null; if (!RavenEnvironment.GetGame().GetRoomManager().TryGetRoom(Session.GetHabbo().CurrentRoomId, out Room)) { return; } bool HasRights = false; if (Room.CheckRights(Session, false, true)) { HasRights = true; } if (!HasRights) { Session.SendMessage(new RoomNotificationComposer("furni_placement_error", "message", "${room.error.cant_set_not_owner}")); return; } int PageId = Packet.PopInt(); int ItemId = Packet.PopInt(); BCCatalogPage Page = null; if (!RavenEnvironment.GetGame().GetCatalog().TryGetBCPage(PageId, out Page)) { return; } if (Session.GetHabbo().Rank > 3 && !Session.GetHabbo().StaffOk || RavenStaticGameSettings.IsGoingToBeClose) { return; } if (!Page.Enabled || !Page.Visible || Page.MinimumRank > Session.GetHabbo().Rank || (Page.MinimumVIP > Session.GetHabbo().VIPRank&& Session.GetHabbo().Rank == 1)) { return; } BCCatalogItem Item = null; if (!Page.Items.TryGetValue(ItemId, out Item)) { if (Page.ItemOffers.ContainsKey(ItemId)) { Item = (BCCatalogItem)Page.ItemOffers[ItemId]; if (Item == null) { return; } } else { return; } } ItemData baseItem = Item.GetBaseItem(Item.ItemId); if (Item.CostCredits > 0) { Session.GetHabbo().Credits -= Item.CostCredits; Session.SendMessage(new CreditBalanceComposer(Session.GetHabbo().Credits)); } if (Item.CostPixels > 0) { Session.GetHabbo().Duckets -= Item.CostPixels; Session.SendMessage(new HabboActivityPointNotificationComposer(Session.GetHabbo().Duckets, Session.GetHabbo().Duckets)); } if (Item.CostDiamonds > 0) { Session.GetHabbo().Diamonds -= Item.CostDiamonds; Session.SendMessage(new HabboActivityPointNotificationComposer(Session.GetHabbo().Diamonds, 0, 5)); } if (Item.CostGOTWPoints > 0) { Session.GetHabbo().GOTWPoints -= Item.CostGOTWPoints; Session.SendMessage(new HabboActivityPointNotificationComposer(Session.GetHabbo().GOTWPoints, 0, 103)); } Item NewItem = null; List <Item> GeneratedGenericItems = new List <Item>(); List <Item> Items = ItemFactory.CreateMultipleItems(Item.Data, Session.GetHabbo(), "", 1); if (Items != null) { GeneratedGenericItems.AddRange(Items); //Session.SendMessage(RoomNotificationComposer.SendBubble("icons/" + Item.Data.ItemName + "_icon", "Acabas de comprar un/una " + Item.Data.PublicName + "", "inventory/open/furni")); } int newID = 0; foreach (Item PurchasedItem in GeneratedGenericItems) { if (Session.GetHabbo().GetInventoryComponent().TryAddItem(PurchasedItem)) { // Session.SendMessage(new FurniListNotificationComposer(PurchasedItem.Id, 1)); newID = PurchasedItem.Id; } } Session.SendMessage(new PurchaseOKComposer(Item, Item.Data)); Session.SendMessage(new FurniListUpdateComposer()); string Unknown = Packet.PopString(); int X = Packet.PopInt(); int Y = Packet.PopInt(); int Rot = Packet.PopInt(); Console.WriteLine(Unknown); Item RoomItem = new Item(newID, Room.RoomId, baseItem.Id, Item.ExtraData, X, Y, 0, Rot, Session.GetHabbo().Id, 0, 0, 0, string.Empty, Room); if (Room.GetRoomItemHandler().SetFloorItem(Session, RoomItem, X, Y, Rot, true, false, true)) { Session.GetHabbo().GetInventoryComponent().RemoveItem(newID); if (Session.GetHabbo().Id == Room.OwnerId) { RavenEnvironment.GetGame().GetAchievementManager().ProgressAchievement(Session, "ACH_RoomDecoFurniCount", 1, false); } } else { Session.SendMessage(RoomNotificationComposer.SendBubble("furni_placement_error", "Lo siento, no tienes permiso para colocar furnis aquí", "")); return; } Console.WriteLine("Unknown: " + X + "|" + Y + "|" + Rot + "|"); }