Today I release my Mannequin Code, but Rotating not working till now. But i think someone can fix them ;)
The Rest is 100% working ;)
RoomItem.cs (Serialize):
Code:internal void Serialize(ServerMessage Message, int UserId) { if (IsFloorItem) { Message.AppendUInt(Id); Message.AppendInt32(GetBaseItem().SpriteId); Message.AppendInt32(mX); Message.AppendInt32(mY); Message.AppendInt32(Rot); Message.AppendStringWithBreak(String.Format("{0:0.00}", TextHandling.GetString(mZ))); if (this.GetBaseItem().InteractionType == InteractionType.gift) { int result = 0; if (ExtraData.Contains(Convert.ToChar(5).ToString())) { int color = int.Parse(ExtraData.Split((char)5)[1]); int lazo = int.Parse(ExtraData.Split((char)5)[2]); result = color * 1000 + lazo; } Message.AppendInt32(result); if (this.ExtraData.Contains(Convert.ToChar(5).ToString())) { uint PurchaserId = (uint)int.Parse(ExtraData.Split(';')[0]); Habbo Purchaser = ButterflyEnvironment.getHabboForId(PurchaserId); if (Purchaser != null) { Message.AppendInt32(1); Message.AppendInt32(6); Message.AppendString("EXTRA_PARAM"); Message.AppendString(""); Message.AppendString("MESSAGE"); Message.AppendString(ExtraData.Split(';')[1].Split((char)5)[0]); Message.AppendString("PURCHASER_NAME"); Message.AppendString(Purchaser.Username); Message.AppendString("PURCHASER_FIGURE"); Message.AppendString(Purchaser.Look); Message.AppendString("PRODUCT_CODE"); Message.AppendString(""); Message.AppendString("state"); Message.AppendString(MagicRemove ? "1" : "0"); } else { Message.AppendInt32(0); } } // this.ExtraData.Contains(Convert.ToChar(5).ToString()) ? ExtraData.Split((char)5)[1] : "0" else Message.AppendInt32(0); } else { Message.AppendInt32(0); if (this.GetBaseItem().Name == "boutique_mannequin1") { Message.AppendInt32(1); Message.AppendInt32(3); if (ExtraData != "") { Message.AppendString("GENDER"); Message.AppendString(ExtraData.Split(Convert.ToChar(9))[1]); Message.AppendString("FIGURE"); Message.AppendString(ExtraData.Split(Convert.ToChar(9))[2]); Message.AppendString("OUTFIT_NAME"); Message.AppendString(ExtraData.Split(Convert.ToChar(9))[0]); } else { Message.AppendString("GENDER"); Message.AppendString("m"); Message.AppendString("FIGURE"); Message.AppendString("ch-210-62.lg-270-62"); Message.AppendString("OUTFIT_NAME"); Message.AppendString(""); } } else { Message.AppendInt32(0); if (GetBaseItem().InteractionType != InteractionType.fbgate) Message.AppendStringWithBreak(ExtraData); else Message.AppendStringWithBreak(string.Empty); } } Message.AppendInt32(-1); Message.AppendInt32(1); // Type New R63 ('use bottom') Message.AppendInt32(UserId); } else if (IsWallItem) { Message.AppendStringWithBreak(Id + String.Empty); Message.AppendInt32(GetBaseItem().SpriteId); Message.AppendStringWithBreak(wallCoord.ToString()); switch (GetBaseItem().InteractionType) { case InteractionType.postit: Message.AppendStringWithBreak(ExtraData.Split(' ')[0]); break; default: Message.AppendStringWithBreak(ExtraData); break; } Message.AppendInt32(1); // Type New R63 ('use bottom') Message.AppendInt32(UserId); } }
UserItem.cs
Rooms.cs:Code:internal void SerializeFloor(ServerMessage Message, Boolean Inventory) { Message.AppendUInt(Id); Message.AppendStringWithBreak(mBaseItem.Type.ToString().ToUpper()); Message.AppendUInt(Id); Message.AppendInt32(GetBaseItem().SpriteId); Message.AppendInt32(1); if (this.GetBaseItem().Name == "boutique_mannequin1") { Message.AppendInt32(1); Message.AppendInt32(3); if (ExtraData != "") { Message.AppendString("GENDER"); Message.AppendString(ExtraData.Split(Convert.ToChar(9))[1]); Message.AppendString("FIGURE"); Message.AppendString(ExtraData.Split(Convert.ToChar(9))[2]); Message.AppendString("OUTFIT_NAME"); Message.AppendString(ExtraData.Split(Convert.ToChar(9))[0]); } else { Message.AppendString("GENDER"); Message.AppendString("m"); Message.AppendString("FIGURE"); Message.AppendString("ch-210-62.lg-270-62"); Message.AppendString("OUTFIT_NAME"); Message.AppendString(""); } } else { Message.AppendInt32(0); Message.AppendStringWithBreak(ExtraData); } Message.AppendBoolean(GetBaseItem().AllowRecycle); Message.AppendBoolean(GetBaseItem().AllowTrade); Message.AppendBoolean(GetBaseItem().AllowInventoryStack); Message.AppendBoolean(Marketplace.CanSellItem(this)); Message.AppendInt32(-1); Message.AppendStringWithBreak(""); Message.AppendInt32(0); }
SharedPacketLib.cs:Code:internal void SaveMannequin() { try { Room Room = ButterflyEnvironment.GetGame().GetRoomManager().GetRoom(Session.GetHabbo().CurrentRoomId); if (Room == null) { return; } int ID = Request.PopWiredInt32(); RoomItem Item = Room.GetRoomItemHandler().GetItem(Convert.ToUInt32(ID)); if (Item == null || Item.GetBaseItem().InteractionType != Butterfly.HabboHotel.Items.InteractionType.mannequin) { return; } Item.ExtraData = Item.ExtraData.Split(Convert.ToChar(9))[0] + Convert.ToChar(9) + Session.GetHabbo().Gender + Convert.ToChar(9) + Session.GetHabbo().Look; ServerMessage Message = new ServerMessage(0); Message.Init(Outgoing.UpdateFloorItemExtraData); Message.AppendStringWithBreak(Item.Id.ToString()); Message.AppendInt32(1); Message.AppendInt32(3); Message.AppendString("GENDER"); Message.AppendString(Item.ExtraData.Split(Convert.ToChar(9))[1]); Message.AppendString("FIGURE"); Message.AppendString(Item.ExtraData.Split(Convert.ToChar(9))[2]); Message.AppendString("OUTFIT_NAME"); Message.AppendString(Item.ExtraData.Split(Convert.ToChar(9))[0]); Room.SendMessage(Message); } catch { } } internal void SaveMannequinName() { try { Room Room = ButterflyEnvironment.GetGame().GetRoomManager().GetRoom(Session.GetHabbo().CurrentRoomId); if (Room == null) { return; } uint ID = Request.PopWiredUInt(); RoomItem Item = Room.GetRoomItemHandler().GetItem(ID); if (Item == null || Item.GetBaseItem().InteractionType != Butterfly.HabboHotel.Items.InteractionType.mannequin) { return; } string Name = Request.PopFixedString(); Item.ExtraData = Name + Convert.ToChar(9) + Item.ExtraData.Split(Convert.ToChar(9))[1] + Convert.ToChar(9) + Item.ExtraData.Split(Convert.ToChar(9))[2]; ServerMessage Message = new ServerMessage(0); Message.Init(Outgoing.UpdateFloorItemExtraData); Message.AppendStringWithBreak(Item.Id.ToString()); Message.AppendInt32(1); Message.AppendInt32(3); Message.AppendString("GENDER"); Message.AppendString(Item.ExtraData.Split(Convert.ToChar(9))[1]); Message.AppendString("FIGURE"); Message.AppendString(Item.ExtraData.Split(Convert.ToChar(9))[2]); Message.AppendString("OUTFIT_NAME"); Message.AppendString(Item.ExtraData.Split(Convert.ToChar(9))[0]); Room.SendMessage(Message); } catch { } }
StaticClientMessageHandler.cs:Code:internal static void SaveMannequin(GameClientMessageHandler handler) { handler.SaveMannequin(); } internal static void SaveMannequinName(GameClientMessageHandler handler) { handler.SaveMannequinName(); }
InteractionType.cs (enum InteractionType {):Code://MANNEQUIN handlers.Add(2868, new StaticRequestHandler(SharedPacketLib.SaveMannequin)); handlers.Add(2036, new StaticRequestHandler(SharedPacketLib.SaveMannequinName)); //
Code:add: mannequin, search for: case "vendingmachine": return InteractionType.vendingmachine; add under: case "mannequin": return InteractionType.mannequin; search for: case InteractionType.vendingmachine: return "vendingmachine"; add under: case InteractionType.mannequin: return "mannequin";
RoomItem.cs
FurniInteractor.csCode:Search for: case InteractionType.vendingmachine: return new InteractorVendor(); add under: case InteractionType.mannequin: return new InteractorMannequin();
Code:Add: class InteractorClothes : FurniInteractor { internal override void OnPlace(GameClient Session, RoomItem Item) { } internal override void OnRemove(GameClient Session, RoomItem Item) { } internal override void OnTrigger(GameClient Session, RoomItem Item, int Request, bool UserHasRights) { if (Item.ExtraData != "") { Session.GetHabbo().Gender = Item.ExtraData.Split(Convert.ToChar(9))[1]; Session.GetHabbo().Look = Item.ExtraData.Split(Convert.ToChar(9))[2]; Session.GetMessageHandler().GetResponse().Init(Outgoing.UpdateUserInformation); Session.GetMessageHandler().GetResponse().AppendInt32(-1); Session.GetMessageHandler().GetResponse().AppendStringWithBreak(Session.GetHabbo().Look); Session.GetMessageHandler().GetResponse().AppendStringWithBreak(Session.GetHabbo().Gender.ToLower()); Session.GetMessageHandler().GetResponse().AppendStringWithBreak(Session.GetHabbo().Motto); Session.GetMessageHandler().GetResponse().AppendInt32(Session.GetHabbo().AchievementPoints); Session.GetMessageHandler().SendResponse(); if (Session.GetHabbo().InRoom) { Room Room = Session.GetHabbo().CurrentRoom; if (Room == null) { return; } RoomUser User = Room.GetRoomUserManager().GetRoomUserByHabbo(Session.GetHabbo().Id); if (User == null) { return; } ServerMessage RoomUpdate = new ServerMessage(Outgoing.UpdateUserInformation); RoomUpdate.AppendInt32(User.VirtualId); RoomUpdate.AppendStringWithBreak(Session.GetHabbo().Look); RoomUpdate.AppendStringWithBreak(Session.GetHabbo().Gender.ToLower()); RoomUpdate.AppendStringWithBreak(Session.GetHabbo().Motto); RoomUpdate.AppendInt32(Session.GetHabbo().AchievementPoints); Room.SendMessage(RoomUpdate); } } } }


![[BUTTERFLY][R63B]Mannequin (Rotate not working)](http://ragezone.com/hyper728.png)


