Example #1
0
        internal void Serialize(ServerMessage Message, int UserId)
        {
            // int
            // int
            // int
            // int
            // int
            // string
            // int (extra)
            // int data type (0,1,2,3,4) (
            // 0 = (StringData?)          - string
            // 1 = (MapStuffData)         - int i, foreach i { string, string }
            // 2 = (StringArrayStuffData) - int i, foreach i { string }
            // 3 = (?)                    - string, int
            // 4 = not implemented?

            // ---data
            //    int


            // int
            // int
            // int
            // if type < 0, string

            if (IsFloorItem)
            {
                Message.AppendUInt(Id);
                Message.AppendInt32(GetBaseItem().SpriteId);                                 // type
                Message.AppendInt32(mX);                                                     // x
                Message.AppendInt32(mY);                                                     // y
                Message.AppendInt32(Rot);                                                    // dir
                Message.AppendString(String.Format("{0:0.00}", TextHandling.GetString(mZ))); // z
                Message.AppendInt32(Extra);                                                  // extra
                Message.AppendInt32(data.GetTypeID());                                       // data type

                data.AppendToMessage(Message);

                //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 = FirewindEnvironment.getHabboForId(PurchaserId);
                //        if (Purchaser != null)
                //        {
                //            // "MESSAGE", "PRODUCT_CODE", "EXTRA_PARAM", "PURCHASER_NAME", "PURCHASER_FIGURE";

                //            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);
                //    Message.AppendInt32(0);
                //    if (GetBaseItem().InteractionType != InteractionType.fbgate)
                //        Message.AppendString(ExtraData);
                //    else
                //        Message.AppendString(string.Empty);
                //}
                Message.AppendInt32(-1);
                Message.AppendInt32(1); // Type New R63 ('use bottom')
                Message.AppendInt32(UserId);
            }
            else if (IsWallItem)
            {
                Message.AppendString(Id + String.Empty);
                Message.AppendInt32(GetBaseItem().SpriteId);
                Message.AppendString(wallCoord.ToString());
                switch (GetBaseItem().InteractionType)
                {
                case InteractionType.postit:
                    Message.AppendString(data.GetData().ToString().Split(' ')[0]);
                    break;

                default:
                    Message.AppendString(data.ToString());
                    break;
                }
                Message.AppendInt32(1); // Type New R63 ('use bottom')
                Message.AppendInt32(UserId);

                if (data.GetType() != typeof(StringData))
                {
                    Logging.LogException(string.Format("Strange wallitem, {2}, {3}, {0}, \"{1}\"", Id, data.ToString(), GetBaseItem().Name, GetBaseItem().Type));

                    using (IQueryAdapter dbClient = FirewindEnvironment.GetDatabaseManager().getQueryreactor())
                        dbClient.runFastQuery(string.Format("DELETE FROM items_extradata WHERE item_id = {0}", Id));
                }
            }
        }