[BCSTORM] Fix para el Maniquí Actualizado 23/04/2013


pues aqui les traigo un fix para el maniquí, funciona para BcStorm Open Source.. Vale, sigan mis pasos:

Nos vamos a HabboHotel\Items\RoomItem.cs
Buscamos

Código: [Seleccionar]
internal void Serialize

Volvemos a colocarlo como:
Código: [Seleccionar]
        internal void Serialize(ServerMessage Message, int UserId)
        {
            if (this.IsFloorItem)
            {
                Message.AppendInt32(this.Id);
                Message.AppendInt32(this.GetBaseItem().SpriteId);
                Message.AppendInt32(this.mX);
                Message.AppendInt32(this.mY);
                Message.AppendInt32(this.Rot);
                Message.AppendString(string.Format("{0:0.00}", TextHandling.GetString(this.mZ)));


                if (this.GetBaseItem().Name == "boutique_mannequin1")
                {
                    Message.AppendInt32(0);
                    Message.AppendInt32(1);
                    Message.AppendInt32(3);
                    Message.AppendString("GENDER");
                    Message.AppendString("m");
                    Message.AppendString("FIGURE");
                    Message.AppendString(this.ExtraData);
                    Message.AppendString("OUTFIT_NAME");
                    Message.AppendString("");
                }
                if (this.GetBaseItem().Name == "ads_mpu_720" || this.GetBaseItem().Name == "ads_background" || this.GetBaseItem().Name == "ads_mpu_300" || this.GetBaseItem().Name == "ads_mpu_160")
                {

                    Message.AppendInt32(0);
                    Message.AppendInt32(1);
                    if (ExtraData != "")
                    {
                        Message.AppendInt32(ExtraData.Split(Convert.ToChar(9)).Length / 2);

                        for (int i = 0; i <= ExtraData.Split(Convert.ToChar(9)).Length - 1; i++)
                        {
                            Message.AppendString(ExtraData.Split(Convert.ToChar(9))[i]);
                        }
                    }
                    else
                    {
                        Message.AppendInt32(0);
                    }

                }

                else if ((this.GetBaseItem().SpriteId >= 0xd2c) && (this.GetBaseItem().SpriteId < 0xd36))
                {
                    int i = 0;
                    if (this.ExtraData.Contains(Convert.ToChar(5).ToString()))
                    {
                        int num2 = int.Parse(this.ExtraData.Split(new char[] { '\x0005' })[1]);
                        int num3 = int.Parse(this.ExtraData.Split(new char[] { '\x0005' })[2]);
                        i = (num2 * 0x3e8) + num3;
                    }
                    Message.AppendInt32(i);
                    if (this.ExtraData.Contains(Convert.ToChar(5).ToString()))
                    {
                        Habbo habbo = ButterflyEnvironment.getHabboForId((uint) int.Parse(this.ExtraData.Split(new char[] { ';' })[0]));
                        if (habbo != null)
                        {
                            Message.AppendInt32(1);
                            Message.AppendInt32(6);
                            Message.AppendString("EXTRA_PARAM");
                            Message.AppendString("");
                            Message.AppendString("MESSAGE");
                            Message.AppendString(this.ExtraData.Split(new char[] { ';' })[1].Split(new char[] { '\x0005' })[0]);
                            Message.AppendString("PURCHASER_NAME");
                            Message.AppendString(habbo.Username);
                            Message.AppendString("PURCHASER_FIGURE");
                            Message.AppendString(habbo.Look);
                            Message.AppendString("PRODUCT_CODE");
                            Message.AppendString("");
                            Message.AppendString("state");
                            Message.AppendString(this.MagicRemove ? "1" : "0");
                        }
                        else
                        {
                            Message.AppendInt32(0);
                        }
                    }
                    else
                    {
                        Message.AppendInt32(0);
                    }
                }
                else
                {
                    Message.AppendInt32(0);
                    if (this.RareId > 0)
                    {
                        Message.AppendString("");
                        Message.AppendBoolean(true);
                        Message.AppendBoolean(false);
                    }
                    else if (this.mBaseItem.AllowGroupItem)
                    {
                        MyGuild guild = ButterflyEnvironment.GetGame().GetGuilds().GetGuild(int.Parse(this.Guilds_Data_String.Split(new char[] { ';' })[0]));
                        if (guild == null)
                        {
                            Message.AppendInt32(0);
                        }
                        else
                        {
                            Message.AppendInt32(2);
                            Message.AppendInt32(5);
                            Message.AppendString("0");
                            Message.AppendString(guild.Id.ToString());
                            Message.AppendString(guild.Image);
                            Message.AppendString(this.Guilds_Data_String.Split(new char[] { ';' })[1]);
                            Message.AppendString(this.Guilds_Data_String.Split(new char[] { ';' })[2]);
                        }
                    }
                    else
                    {
                        Message.AppendInt32(0);
                    }
                    if (this.mBaseItem.InteractionType == InteractionType.trophy)
                    {
                        Message.AppendString(this.ExtraData);
                    }
                    else if (!this.mBaseItem.AllowGroupItem)
                    {
                        Message.AppendString(this.ExtraData);
                    }
                    if (this.RareId > 0)
                    {
                        Message.AppendInt32(this.RareId);
                        Message.AppendInt32(this.GetRareCatalogItem((int) this.BaseItem).LimitedStack);
                    }
                }
                Message.AppendInt32(-1);
                Message.AppendInt32(1);
                Message.AppendInt32(UserId);
                if (!this.mRoom.MovedThinksObH && (this.GetBaseItem().InteractionType == InteractionType.obstacle_h))
                {
                    if ((this.Rot == 2) || (this.Rot == 6))
                    {
                        this.mX = this.GetX + 1;
                    }
                    else if ((this.Rot == 0) || (this.Rot == 4))
                    {
                        this.mY = this.GetY + 1;
                    }
                }
            }
            else if (this.IsWallItem)
            {
                Message.AppendString(this.Id + string.Empty);
                Message.AppendInt32(this.GetBaseItem().SpriteId);
                Message.AppendString(this.wallCoord.ToString());
                if (this.GetBaseItem().InteractionType == InteractionType.postit)
                {
                    Message.AppendString(this.ExtraData.Split(new char[] { ' ' })[0]);
                }
                else
                {
                    Message.AppendString(this.ExtraData);
                }
                Message.AppendInt32(1);
                Message.AppendInt32(UserId);
            }
        }

Vamos a Messages\GameClientMessageHandler.cs
Buscamos:
Código: [Seleccionar]
internal void SaveBranding()

Antes de eso, agregamos:
Código: [Seleccionar]
        internal void SaveMannequin()
        {
            uint ItemId = Request.PopWiredUInt();
            Room Room = Session.GetHabbo().CurrentRoom;
            RoomItem Item = Room.GetRoomItemHandler().GetItem(ItemId);
            if(Session.GetHabbo().Look.Contains(GetHair(Session.GetHabbo().Look)))
            {
                Item.ExtraData = Session.GetHabbo().Look.Replace(GetHair(Session.GetHabbo().Look), "");
            }
            else
            {
                Item.ExtraData = Session.GetHabbo().Look;
            }
            Item.UpdateNeeded = true;
            Item.ProcessUpdates();
            Room.GetRoomItemHandler().SetFloorItem(Session, Item, Item.GetX, Item.GetY, Item.Rot, false, false, true);
            Room.GetRoomItemHandler().SaveFurniture(ButterflyEnvironment.GetDatabaseManager().getQueryreactor());
            IQueryAdapter dbClient = ButterflyEnvironment.GetDatabaseManager().getQueryreactor();
            dbClient.runFastQuery("DELETE FROM items_extradata WHERE item_id = " + Item.Id);
            dbClient.runFastQuery("INSERT INTO items_extradata (item_id, data) VALUES (" + Item.Id + ", '" + Item.ExtraData + "')");
        }

        internal string GetHair(string _Figure)
        {

            string FigurePartHair = _Figure;
            string GetHairPart;

            GetHairPart = System.Text.RegularExpressions.Regex.Split(_Figure, "hr")[1];
            FigurePartHair = GetHairPart.Split('.')[0];
            string FigurePartBody = _Figure;
            string GetBodyPart;

            GetBodyPart = System.Text.RegularExpressions.Regex.Split(_Figure, "hd")[1];
            FigurePartBody = GetBodyPart.Split('.')[0];

            string _Uni = Convert.ToString("hr" + FigurePartHair + "." + "hd" + FigurePartBody + ".");

            return _Uni;
        }

Vamos a Messages\StaticMessageHandlers\SharedPacketLib.cs
Buscamos:

Código: [Seleccionar]
  internal static void SaveBranding(GameClientMessageHandler handler)
        {
            handler.SaveBranding();
        }

Debajo ponemos:
Código: [Seleccionar]
        internal static void SaveMannequin(GameClientMessageHandler handler)
        {
            handler.SaveMannequin();
        }

Vamos a
Messages\StaticMessageHandlers\StaticClientMessageHandler.cs
Buscamos:

Código: [Seleccionar]
handlers.Add(Incoming.PickupItem, new StaticRequestHandler(SharedPacketLib.TakeItem));

Abajo de eso añadimos:

Código: [Seleccionar]
 //MANNEQUIN
            handlers.Add(2242, new StaticRequestHandler(SharedPacketLib.SaveMannequin));
            //

Vamos a HabboHotel\Items\InteractionType.cs
buscamos
Código: [Seleccionar]
enum InteractionType
    {
        none, //None == default

añadimos debajo de esa línea
Código: [Seleccionar]
mannequin, // Mannequin Code by Divide

Buscamos:
Código: [Seleccionar]
 case "gate":
                    return InteractionType.gate;

abajo de hay agregamos:
Código: [Seleccionar]
 case "mannequin":
                    return InteractionType.mannequin;


Buscamos
Código: [Seleccionar]
 case InteractionType.gate:
                    return "gate";

abajo agregamos:
Código: [Seleccionar]
case InteractionType.mannequin:
                    return "mannequin";

Vamos a HabboHotel\Items\RoomItem.cs

Buscamos
Código: [Seleccionar]
case InteractionType.gate:
                        return new InteractorGate(GetBaseItem().Modes);

Abajo agregamos
Código: [Seleccionar]
 case InteractionType.mannequin:
                        return new InteractorMannequin();

Vamos a HabboHotel\Items\InteractionType.cs
Buscamos

Código: [Seleccionar]
class InteractorDice : FurniInteractor

Sobre esa línea, agrega:
Código: [Seleccionar]
    class InteractorMannequin : FurniInteractor
    {
        internal override void OnPlace(GameClient Session, RoomItem Item)
        {

        }


        internal override void OnRemove(GameClient Session, RoomItem Item)
        {


        }

        internal string GetHair(string _Figure)
        {

            string FigurePartHair = _Figure;
            string GetHairPart;

            GetHairPart = System.Text.RegularExpressions.Regex.Split(_Figure, "hr")[1];
            FigurePartHair = GetHairPart.Split('.')[0];
            string FigurePartBody = _Figure;
            string GetBodyPart;

            GetBodyPart = System.Text.RegularExpressions.Regex.Split(_Figure, "hd")[1];
            FigurePartBody = GetBodyPart.Split('.')[0];

            string _Uni = Convert.ToString("hr" + FigurePartHair + "." + "hd" + FigurePartBody + ".");

            return _Uni;
        }

        internal override void OnTrigger(GameClient Session, RoomItem Item, int Request, bool UserHasRights)
        {
            if (Item.ExtraData != "")
            {
                Session.GetHabbo().Look = Item.ExtraData + "." + GetHair(Session.GetHabbo().Look);
                Session.GetMessageHandler().GetResponse().Init(HabboEvents.Outgoing.UpdateUserInformation);
                Session.GetMessageHandler().GetResponse().AppendInt32(-1);
                Session.GetMessageHandler().GetResponse().AppendString(Session.GetHabbo().Look);
                Session.GetMessageHandler().GetResponse().AppendString(Session.GetHabbo().Gender.ToLower());
                Session.GetMessageHandler().GetResponse().AppendString(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;
                    }

                    Butterfly.Messages.ServerMessage RoomUpdate = new Butterfly.Messages.ServerMessage(HabboEvents.Outgoing.UpdateUserInformation);
                    RoomUpdate.AppendInt32(User.VirtualId);
                    RoomUpdate.AppendString(Session.GetHabbo().Look);
                    RoomUpdate.AppendString(Session.GetHabbo().Gender.ToLower());
                    RoomUpdate.AppendString(Session.GetHabbo().Motto);
                    RoomUpdate.AppendInt32(Session.GetHabbo().AchievementPoints);
                    Room.SendMessage(RoomUpdate);
                }
            }
        }


    }

Este es el resultado:


Recuerden hacer una copia de seguridad por si sucede algo.
¡Babeen tema! :3
 [baba]

Créditos:

Divide
Yo

Fuente:
RageZone

Comentarios

Entradas populares de este blog

[CMS]Deck CMS V1| Buena index |Based Lavvos| es para xamp y iss [Habbo] ACTUALIZADO 20/04/2013

Emulador HabboLatino New Crypto ACTUALIZADO 19/04/2013

New Habbo Room Layout (Working on any server)