I've coded furniture fix for BCstorm.
Find from Butterfly -> HabboHotel - > Items -> Item.cs
Add after:Code:internal int Width;
Replace after internal Item(uint id..) toCode:internal string VariableHeight;
Find this.VendingIds = new List<int>();:Code:internal Item(uint Id, int Sprite, string PublicName, string Name, string Type, int Width, int Length, double Height, bool Stackable, bool Walkable, bool IsSeat, bool AllowRecycle, bool AllowTrade, bool AllowMarketplaceSell, bool AllowGift, bool AllowInventoryStack, bool AllowGroupItem, Butterfly.HabboHotel.Items.InteractionType InteractionType, int Modes, string VendingIds, string VariableHeight)
Add after:
Find string vendingIds = (string) row[0x13]; from Butterfly -> HabboHotel - > Items -> ItemManager.csCode:this.VariableHeight = VariableHeight;
Add after
Replace after line to:Code:string variableheights = (string)row[20];
Go to Butterfly -> HabboHotel - > Items -> Interactors -> InteractorGenericSwitch.csCode:Item item = new Item(id, sprite, publicName, name, str3, width, length, height, stackable, walkable, isSeat, allowRecycle, allowTrade, allowMarketplaceSell, allowGift, allowInventoryStack, allowGroupItem, typeFromString, modes, vendingIds, variableheights);
Find:
Add after:Code:Item.ExtraData = num2.ToString(); Item.UpdateState();
FindCode:if (Item.GetBaseItem().VariableHeight != "") { Item.GetRoom().GetGameMap().updateMapForItem(Item); if (Item.GetX == Item.GetRoom().GetRoomUserManager().GetRoomUserByHabbo(Session.GetHabbo().Username).X && Item.GetY == Item.GetRoom().GetRoomUserManager().GetRoomUserByHabbo(Session.GetHabbo().Username).Y) { Item.GetRoom().GetRoomUserManager().GetRoomUserByHabbo(Session.GetHabbo().Username).Z = Item.TotalHeight; Item.GetRoom().GetRoomUserManager().GetRoomUserByHabbo(Session.GetHabbo().Username).ClearMovement(true); } }from RoomItem.csCode:internal double TotalHeight { get {
Replace
to:Code:return (this.mZ + this.GetBaseItem().Height);
Go to Rooms -> Gamemap.cs find:Code:if (this.GetBaseItem().VariableHeight != "") { string[] Heights = this.GetBaseItem().VariableHeight.Split(';'); if (this.ExtraData == "") { this.ExtraData = "0"; } if (this.ExtraData == "0") { return (this.mZ + double.Parse(Heights[0])); } else { return (this.mZ + double.Parse(Heights[int.Parse(this.ExtraData) - 1])); } } else { return (this.mZ + this.GetBaseItem().Height); }
Add afterCode:internal double SqAbsoluteHeight(int X, int Y, List<RoomItem> ItemsOnSquare)this:Code:if (item.TotalHeight > totalHeight) { if (item.GetBaseItem().IsSeat || (item.GetBaseItem().InteractionType == InteractionType.bed)) { flag = true; height = item.GetBaseItem().Height; } else { flag = false; } }
Add variable_heights column to items_base table.Code:if (item.GetBaseItem().VariableHeight != "") { string[] Heights = item.GetBaseItem().VariableHeight.Split(';'); if (item.ExtraData == "") { item.ExtraData = "0"; item.UpdateState(); } if (int.Parse(item.ExtraData) != 0) { totalHeight = totalHeight + double.Parse(Heights[int.Parse(item.ExtraData) - 1]); } }
When you set heights make height for all states etc. 5 states furni: 0.50;1.00;1.25;1.60;1.85.
![]()



![[BCSTORM] Multi-Height Feature for furnitures](http://ragezone.com/hyper728.png)


