Пример #1
0
        public void Handle(GameClient session, ClientMessage message)
        {
            RoomUnit user = session.GetHabbo().GetRoomSession().GetRoomUser();

            if (!user.HasStatus("lay"))
            {
                if (user.BodyRotation == 0 || user.BodyRotation == 2 || user.BodyRotation == 4 || user.BodyRotation == 6)
                {
                    user.AddStatus("sit", TextUtilies.DoubleWithDotDecimal((user.Z + 1) / 2 - user.Z * 0.5));
                }
            }
        }
Пример #2
0
        public ServerMessage Handle(ValueHolder valueHolder = null)
        {
            RoomItemRollerMovement[] movement = valueHolder.GetValueOrDefault <RoomItemRollerMovement[]>("Movement");
            RoomUserRollerMovement   user     = valueHolder.GetValueOrDefault <RoomUserRollerMovement>("User");

            ServerMessage message = BasicUtilies.GetRevisionServerMessage(Revision.RELEASE63_201211141113_913728051);

            message.Init(r63cOutgoing.RollerMovement);
            if (movement != null)
            {
                RoomItemRollerMovement single = movement[0];

                message.AppendInt32(single.CurrentXY.X);
                message.AppendInt32(single.CurrentXY.Y);
                message.AppendInt32(single.NextXY.X);
                message.AppendInt32(single.NextXY.Y);

                message.AppendInt32(movement.Length); //items count
                foreach (RoomItemRollerMovement item in movement)
                {
                    message.AppendUInt(item.ItemId);
                    message.AppendString(TextUtilies.DoubleWithDotDecimal(item.CurrentZ));
                    message.AppendString(TextUtilies.DoubleWithDotDecimal(item.NextZ));
                }

                message.AppendUInt(single.SourceID); //source of action
            }
            else
            {
                message.AppendInt32(user.CurrentX);
                message.AppendInt32(user.CurrentY);
                message.AppendInt32(user.NextX);
                message.AppendInt32(user.NextY);

                message.AppendInt32(0);            //items count

                message.AppendUInt(user.SourceID); //source of action
            }

            if (user != null)
            {
                message.AppendInt32(2); //user movement type
                message.AppendInt32(user.VirtualID);
                message.AppendString(TextUtilies.DoubleWithDotDecimal(user.CurrentZ));
                message.AppendString(TextUtilies.DoubleWithDotDecimal(user.NextZ));
            }
            else
            {
                message.AppendInt32(0);
            }
            return(message);
        }
Пример #3
0
 public override void Serialize(ServerMessage message)
 {
     message.AppendInt32(-1);
     message.AppendString(this.Data.Name);
     message.AppendString(this.Data.Motto);
     message.AppendString(this.Data.Look);
     message.AppendInt32(this.VirtualID);
     message.AppendInt32(this.X);
     message.AppendInt32(this.Y);
     message.AppendString(TextUtilies.DoubleWithDotDecimal(this.Z));
     message.AppendInt32(2); //dir
     message.AppendInt32(3);
 }
Пример #4
0
 public override void Serialize(ServerMessage message)
 {
     message.AppendUInt(this.PetData.ID);
     message.AppendString(this.PetData.Name);
     message.AppendString(""); //pets dont have motto xD
     message.AppendString(this.PetData.Look);
     message.AppendInt32(this.VirtualID);
     message.AppendInt32(this.X);
     message.AppendInt32(this.Y);
     message.AppendString(TextUtilies.DoubleWithDotDecimal(this.Z));
     message.AppendInt32(2); //dir
     message.AppendInt32(2);
     message.AppendInt32(int.Parse(this.PetData.Race));
 }
Пример #5
0
        public override bool OnUse(GameClient session, string[] args)
        {
            if (args.Length >= 2)
            {
                GameClient target = Skylight.GetGame().GetGameClientManager().GetGameClientByUsername(args[1]);
                if (target != null)
                {
                    RoomUnit     me    = session.GetHabbo().GetRoomSession().GetRoomUser();
                    RoomUnitUser other = target.GetHabbo().GetRoomSession().GetRoomUser();
                    if (target.GetHabbo().GetRoomSession().IsInRoom&& target.GetHabbo().GetRoomSession().CurrentRoomID == session.GetHabbo().GetRoomSession().CurrentRoomID)
                    {
                        bool doit = true;
                        if ((me.X + 1 != other.X || me.Y != other.Y) && (me.X - 1 != other.X || me.Y != other.Y) && (me.Y + 1 != other.Y || me.X != other.X))
                        {
                            bool skip = false;
                            if (me.X - 1 == other.X)
                            {
                                if (me.Y == other.Y)
                                {
                                    skip = true;
                                }
                            }

                            if (!skip)
                            {
                                doit = me.X == other.X || me.Y == other.Y;
                            }
                        }

                        if (doit)
                        {
                            me.Speak("*RKO'S " + other.Session.GetHabbo().Username + " OUT OF NO WHERE*", true);
                            other.Speak("Ouch", true);
                            if (!other.HasStatus("lay") && !other.HasStatus("sit"))
                            {
                                if (other.BodyRotation == 0 || other.BodyRotation == 2 || other.BodyRotation == 4 || other.BodyRotation == 6)
                                {
                                    other.AddStatus("sit", TextUtilies.DoubleWithDotDecimal((other.Z + 1) / 2 - other.Z * 0.5));
                                }
                            }
                        }

                        return(true);
                    }
                }
            }

            return(false);
        }
Пример #6
0
        public override void Serialize(ServerMessage message)
        {
            if (message.GetRevision() > Revision.R26_20080915_0408_7984_61ccb5f8b8797a3aba62c1fa2ca80169)
            {
                message.AppendUInt(this.Session.GetHabbo().ID);
                message.AppendString(this.Session.GetHabbo().Username);
                message.AppendString(this.Session.GetHabbo().Motto);
                message.AppendString(this.Session.GetHabbo().Look);
                message.AppendInt32(this.VirtualID);
                message.AppendInt32(this.X);
                message.AppendInt32(this.Y);
                message.AppendString(TextUtilies.DoubleWithDotDecimal(this.Z));
                message.AppendInt32(0);
                message.AppendInt32(1);
                message.AppendString(this.Session.GetHabbo().Gender.ToLower());
                message.AppendInt32(-1); //group id
                message.AppendInt32(-1); //fav group
                if (message.GetRevision() < Revision.RELEASE63_201211141113_913728051)
                {
                    message.AppendInt32(-1);
                }
                else
                {
                    message.AppendString(""); //group name
                }
                message.AppendString(this.Swimsuit);
                message.AppendInt32(this.Session.GetHabbo().GetUserStats().AchievementPoints);
                if (message.GetRevision() >= Revision.PRODUCTION_201601012205_226667486)
                {
                    message.AppendBoolean(true); //IDK
                }
            }
            else
            {
                message.AppendString("i:" + this.VirtualID, 13);
                message.AppendString("a:" + this.UserID, 13);
                message.AppendString("s:" + this.Session.GetHabbo().Gender, 13);
                message.AppendString("n:" + this.Session.GetHabbo().Username, 13);
                message.AppendString("f:" + this.Session.GetHabbo().Look, 13);
                message.AppendString("l:" + this.X + " " + this.Y + " " + TextUtilies.DoubleWithDotDecimal(this.Z), 13);
                message.AppendString("c:" + this.Session.GetHabbo().Motto, 13);

                if (!string.IsNullOrEmpty(this.Swimsuit))
                {
                    message.AppendString("p:" + this.Swimsuit, 13);
                }
            }
        }
Пример #7
0
        public override bool OnUse(GameClient session, string[] args)
        {
            RoomUnit user = session.GetHabbo().GetRoomSession().GetRoomUser();

            if (user.HasStatus("sit") && !user.CurrentTile.IsSeat)
            {
                user.RemoveStatus("sit");
                return(true);
            }
            else
            {
                if (!user.HasStatus("lay"))
                {
                    if (user.BodyRotation == 0 || user.BodyRotation == 2 || user.BodyRotation == 4 || user.BodyRotation == 6)
                    {
                        user.AddStatus("sit", TextUtilies.DoubleWithDotDecimal((user.Z + 1) / 2 - user.Z * 0.5));
                    }
                }
            }

            return(true);
        }
Пример #8
0
        public override void SerializeStatus(ServerMessage message)
        {
            if (message.GetRevision() > Revision.R26_20080915_0408_7984_61ccb5f8b8797a3aba62c1fa2ca80169)
            {
                message.AppendInt32(this.VirtualID);
                message.AppendInt32(this.X);
                message.AppendInt32(this.Y);
                message.AppendString(TextUtilies.DoubleWithDotDecimal(this.Z));
                message.AppendInt32(this.SkateboardRotation ?? this.BodyRotation);
                message.AppendInt32(this.SkateboardRotation ?? this.HeadRotation);
            }
            else
            {
                message.AppendString(this.VirtualID + " " + this.X + "," + this.Y + "," + TextUtilies.DoubleWithDotDecimal(this.Z) + "," + this.BodyRotation + "," + this.HeadRotation, null);
            }

            string status = "/";

            foreach (KeyValuePair <string, string> value in this.Statuses)
            {
                if (status.Length > 1)
                {
                    status += "/";
                }

                status += value.Key + " " + value.Value;
            }

            if (message.GetRevision() > Revision.R26_20080915_0408_7984_61ccb5f8b8797a3aba62c1fa2ca80169)
            {
                message.AppendString(status);
            }
            else
            {
                message.AppendString(status, (byte)13);
            }
        }
Пример #9
0
        public void OnUserSpeak(RoomUnitUser user, string message, bool shout)
        {
            if (!shout)
            {
                if (message == this.PetData.Name)
                {
                    this.SetRotation(WalkRotation.Walk(this.X, this.Y, user.X, user.Y), false);
                }
                else if (message.StartsWith(this.PetData.Name + " ") && user.UserID == this.PetData.OwnerID) //pet commands
                {
                    int random = RandomUtilies.GetRandom(1, 100);
                    if (random <= this.PetData.Happiness)
                    {
                        string command = message.Split(' ')[1];
                        switch (command)
                        {
                        case "free":
                        {
                            this.EndAction();
                        }
                        break;

                        case "sit":
                        {
                            if (this.PetData.Energy >= 10)
                            {
                                this.AddExpirience(10);
                                this.PetData.Energy    -= 10;
                                this.PetData.NeedUpdate = true;
                                this.AddStatus("sit", TextUtilies.DoubleWithDotDecimal(this.Z));

                                this.Moving = false;
                                if (this.HasStatus("mv"))
                                {
                                    this.RemoveStatus("mv");
                                }

                                this.ActionTick = 8;
                                this.Action     = "sit";
                            }
                            else
                            {
                                this.Speak("Too tired! :(", false);
                            }
                        }
                        break;

                        default:
                            this.Speak("*not yet implemented*", false);
                            break;
                        }
                    }
                    else
                    {
                        this.PetData.Energy -= 10;
                        if (this.PetData.Energy < 0)
                        {
                            this.PetData.Energy = 0;
                        }
                        this.PetData.NeedUpdate = true;

                        this.Speak("NO! >:(", false);
                    }
                }
            }
        }
Пример #10
0
        public void BuyItem(GameClient session, int pageId, uint itemId, string extraData, int amountMultiplayer, bool asGift, string receiverUsername = "", string giftMessage = "", int giftSpriteId = 0, int giftBoxId = 0, int giftRibbonId = 0)
        {
            CatalogPage page = this.GetCatalogPage(pageId);

            if (page != null && page.Visible & page.Enabled && page.MinRank <= session.GetHabbo().Rank)
            {
                CatalogItem item = page.GetItem(itemId);
                if (item != null)
                {
                    if (item.IsDeal)
                    {
                        if (amountMultiplayer > 1)
                        {
                            session.SendNotif("You can't buy multiple deals at once!");
                            return;
                        }
                    }

                    Tuple <Item, int>[] products = item.GetItems();
                    uint giftReceiverId          = 0;
                    if (asGift)
                    {
                        foreach (Tuple <Item, int> data in products)
                        {
                            if (!data.Item1.AllowGift)
                            {
                                return;
                            }
                        }

                        giftReceiverId = Skylight.GetGame().GetGameClientManager().GetIDByUsername(receiverUsername);
                        if (giftReceiverId == 0) //not valid user
                        {
                            ServerMessage receiverNotFound = BasicUtilies.GetRevisionServerMessage(Revision.RELEASE63_35255_34886_201108111108);
                            receiverNotFound.Init(r63aOutgoing.GiftReceiverNotFound);
                            session.SendMessage(receiverNotFound);
                            return;
                        }
                    }

                    if (amountMultiplayer > 1 && products[0].Item2 * amountMultiplayer > 100)
                    {
                        session.SendNotif("You can't buy more then 100 at once with the buy command");
                        return;
                    }

                    int finalCredits = item.CostCredits * amountMultiplayer;
                    int finalPixels  = item.CostActivityPoints * amountMultiplayer;

                    if (asGift && giftSpriteId > 0) //special gifts costs one credit more
                    {
                        finalCredits++;
                    }

                    bool noCredits        = false;
                    bool noActivityPoints = false;

                    if (session.GetHabbo().Credits < finalCredits)
                    {
                        noCredits = true;
                    }

                    if (session.GetHabbo().TryGetActivityPoints(item.ActivityPointsType) < finalPixels)
                    {
                        noActivityPoints = true;
                    }

                    if (noCredits || noActivityPoints)
                    {
                        ServerMessage noEnoughtCash = BasicUtilies.GetRevisionServerMessage(Revision.RELEASE63_35255_34886_201108111108);
                        noEnoughtCash.Init(r63aOutgoing.NoEnoughtCash);
                        noEnoughtCash.AppendBoolean(noCredits);
                        noEnoughtCash.AppendBoolean(noActivityPoints);
                        session.SendMessage(noEnoughtCash);
                    }
                    else
                    {
                        if (asGift)
                        {
                            foreach (Tuple <Item, int> data in products)
                            {
                                if (data.Item1.Type == "e")
                                {
                                    session.SendNotif("You can not send this item as a gift.");
                                    return;
                                }
                            }
                        }

                        if (!item.IsDeal)
                        {
                            switch (products[0].Item1.InteractionType.ToLower())
                            {
                            case "pet":
                            {
                                string[] data    = extraData.Split('\n');
                                string   petName = data[0];
                                int      petRace = int.Parse(data[1]);
                                string   color   = data[2];

                                Regex regex = new Regex(@"^[A-Z0-9_-]+$", RegexOptions.IgnoreCase);
                                if (petName.Length >= 2 && petName.Length <= 16 && regex.IsMatch(petName) && !TextUtilies.HaveBlacklistedWords(petName))
                                {
                                    //buy
                                }
                                else
                                {
                                    return;
                                }

                                if (color.Length != 6)
                                {
                                    return;
                                }
                                break;
                            }

                            case "roomeffect":
                            {
                                extraData = TextUtilies.DoubleWithDotDecimal(double.Parse(extraData));
                            }
                            break;

                            case "postit":
                            {
                                extraData = "FFFF33";         //if you leave extra data empty same result, but for sure
                            }
                            break;

                            case "dimmer":
                            {
                                extraData = "1,1,1,#000000,255";         //current mode
                            }
                            break;

                            case "trophy":
                            {
                                extraData = session.GetHabbo().ID.ToString() + (char)9 + DateTime.Now.Day + "-" + DateTime.Now.Month + "-" + DateTime.Now.Year + (char)9 + TextUtilies.FilterString(extraData, false, true);
                            }
                            break;

                            default:
                            {
                                extraData = "";
                                break;
                            }
                            }
                        }

                        if (finalCredits > 0)
                        {
                            session.GetHabbo().Credits -= finalCredits;
                            session.GetHabbo().UpdateCredits(true);
                        }

                        if (finalPixels > 0)
                        {
                            session.GetHabbo().RemoveActivityPoints(item.ActivityPointsType, finalPixels);
                            session.GetHabbo().UpdateActivityPoints(item.ActivityPointsType, true);
                        }

                        session.SendMessage(BasicUtilies.GetRevisionPacketManager(session.Revision).GetOutgoing(OutgoingPacketsEnum.BuyInfo).Handle(new ValueHolder("Item", item, "Products", products, "Credits", finalCredits, "Pixels", finalPixels)));

                        if (asGift)
                        {
                            Item gift = this.GetGiftLook(giftSpriteId);

                            using (DatabaseClient dbClient = Skylight.GetDatabaseManager().GetClient())
                            {
                                string giftData = TextUtilies.FilterString(giftMessage, false, true) + (char)9 + session.GetHabbo().ID + (char)9 + giftBoxId + (char)9 + giftRibbonId;
                                dbClient.AddParamWithValue("giftData", giftData);
                                dbClient.AddParamWithValue("receiverId", giftReceiverId);
                                dbClient.AddParamWithValue("giftBaseItem", gift.ID);
                                uint giftItemId = (uint)dbClient.ExecuteQuery("INSERT INTO items(user_id, base_item, extra_data) VALUES(@receiverId, @giftBaseItem, @giftData)");

                                string baseItems = "";
                                string amounts   = "";
                                foreach (Tuple <Item, int> data in products)
                                {
                                    if (baseItems.Length > 0)
                                    {
                                        baseItems += ",";
                                        amounts   += ",";
                                    }

                                    baseItems += data.Item1.ID;
                                    amounts   += data.Item2 * amountMultiplayer;
                                }

                                dbClient.AddParamWithValue("itemId", giftItemId);
                                dbClient.AddParamWithValue("baseItems", baseItems);
                                dbClient.AddParamWithValue("amounts", amounts);
                                dbClient.AddParamWithValue("extraData", extraData);
                                dbClient.ExecuteQuery("INSERT INTO items_presents(item_id, base_ids, amounts, extra_data) VALUES(@itemId, @baseItems, @amounts, @extraData)");

                                GameClient receiver = Skylight.GetGame().GetGameClientManager().GetGameClientById(giftReceiverId);
                                if (receiver != null)
                                {
                                    if (giftReceiverId != session.GetHabbo().ID) //do achievement progress
                                    {
                                        receiver.GetHabbo().GetUserStats().GiftsReceived++;
                                        receiver.GetHabbo().GetUserAchievements().CheckAchievement("GiftReceiver");
                                    }

                                    receiver.GetHabbo().GetInventoryManager().AddItem(giftItemId, gift.ID, giftData, false);                                                                                       //add it to inventory first

                                    session.SendMessage(BasicUtilies.GetRevisionPacketManager(session.Revision).GetOutgoing(OutgoingPacketsEnum.UnseenItem).Handle(new ValueHolder("Type", 1, "ID", giftItemId))); //receiver one item in this case the gift

                                    //receiver.GetHabbo().GetInventoryManager().UpdateInventoryItems(true); //update inv
                                }
                                else
                                {
                                    if (giftReceiverId != session.GetHabbo().ID) //do achievement progress
                                    {
                                        dbClient.ExecuteQuery("UPDATE user_stats SET gifts_received = gifts_received + 1 WHERE user_id = @receiverId LIMIT 1");
                                    }
                                }
                            }

                            if (giftReceiverId != session.GetHabbo().ID) //do achievement progress
                            {
                                session.GetHabbo().GetUserStats().GiftsGived++;
                                session.GetHabbo().GetUserAchievements().CheckAchievement("GiftGiver");
                            }
                        }
                        else
                        {
                            session.GetHabbo().GetInventoryManager().SetQueueBytes(true);
                            foreach (Tuple <Item, int> data in products)
                            {
                                this.AddItem(session, data.Item1, data.Item2 * amountMultiplayer, extraData, true, false);
                            }
                            session.GetHabbo().GetInventoryManager().SetQueueBytes(false);
                        }
                    }
                }
            }
        }
Пример #11
0
        public void Serialize(ServerMessage message)
        {
            if (this.IsFloorItem)
            {
                if (message.GetRevision() > Revision.R26_20080915_0408_7984_61ccb5f8b8797a3aba62c1fa2ca80169)
                {
                    message.AppendUInt(this.ID);
                    message.AppendInt32(this.BaseItem.SpriteID);
                }
                else
                {
                    message.AppendString(this.ID.ToString());
                    message.AppendString(this.BaseItem.ItemName);
                }
                message.AppendInt32(this.X);
                message.AppendInt32(this.Y);
                if (message.GetRevision() < Revision.RELEASE63_35255_34886_201108111108)
                {
                    message.AppendInt32(this.BaseItem.Lenght);
                    message.AppendInt32(this.BaseItem.Width);
                }
                message.AppendInt32(this.Rot);
                message.AppendString(TextUtilies.DoubleWithDotDecimal(this.Z));
                if (message.GetRevision() > Revision.RELEASE63_201211141113_913728051)
                {
                    message.AppendString(""); //What is this?
                }
                if (this.GetBaseItem().ItemName.StartsWith("present_"))
                {
                    string[] data = this.ExtraData.Split((char)9);
                    if (data.Length >= 2)
                    {
                        if (this.GetBaseItem().ItemName.StartsWith("present_wrap"))
                        {
                            message.AppendInt32(int.Parse(data[2]) * 1000 + int.Parse(data[3])); //gift style
                        }
                        else
                        {
                            message.AppendInt32(0);
                        }

                        message.AppendString("!" + data[0] + "\n\n-" + Skylight.GetGame().GetGameClientManager().GetUsernameByID(uint.Parse(data[1]))); //client ignores first char
                    }
                    else
                    {
                        message.AppendInt32(0);
                        message.AppendString("!" + data[0]);
                    }
                }
                else if (this.GetBaseItem().InteractionType.ToLower() == "trophy")
                {
                    message.AppendInt32(0);
                    string[] data = this.ExtraData.Split((char)9);
                    message.AppendString(Skylight.GetGame().GetGameClientManager().GetUsernameByID(uint.Parse(data[0])) + (char)9 + string.Join("" + (char)9, data, 1, data.Length - 1));
                }
                else
                {
                    if (message.GetRevision() > Revision.R26_20080915_0408_7984_61ccb5f8b8797a3aba62c1fa2ca80169)
                    {
                        if (message.GetRevision() >= Revision.RELEASE63_201211141113_913728051)
                        {
                            message.AppendInt32(0); //case
                        }
                        message.AppendInt32(0);     //song id, gift style, etc
                        message.AppendString(this.ExtraData);
                    }
                    else
                    {
                        message.AppendString("");     //COLOR, r63a doesnt have this
                        message.AppendString("");     //item status, for pets?
                        message.AppendBoolean(false); //is dis f*****g pet food or nah
                        message.AppendString(OldSchoolUtils.GetOldSchoolExtraData(this));
                    }
                }

                if (message.GetRevision() > Revision.R26_20080915_0408_7984_61ccb5f8b8797a3aba62c1fa2ca80169)
                {
                    message.AppendInt32(-1); //expire time
                    if (message.GetRevision() >= Revision.RELEASE63_201211141113_913728051)
                    {
                        message.AppendInt32(1); //use button
                        message.AppendUInt(this.UserID);
                    }
                    else
                    {
                        message.AppendBoolean(true); //use button
                    }

                    if (this.GetBaseItem().SpriteID < 0)
                    {
                        message.AppendString(this.GetBaseItem().ItemName); //if sprite id is negative then this is needed
                    }
                }
            }
            else
            {
                if (this.IsWallItem) //just for sure nothing goes wrong
                {
                    message.AppendString(this.ID.ToString());
                    message.AppendInt32(this.BaseItem.SpriteID);
                    message.AppendString(this.WallCoordinate != null ? this.WallCoordinate.ToString() : ""); //sometimes its null ;(

                    if (this.BaseItem.ItemName.StartsWith("poster_"))
                    {
                        message.AppendString(this.BaseItem.ItemName.Split(new char[]
                        {
                            '_'
                        })[1]);
                    }
                    else
                    {
                        string text = this.BaseItem.InteractionType.ToLower();
                        if (text != null && text == "postit")
                        {
                            message.AppendString(this.ExtraData.Split(new char[]
                            {
                                ' '
                            })[0]);
                        }
                        else
                        {
                            message.AppendString(this.ExtraData);
                        }
                    }

                    if (message.GetRevision() < Revision.PRODUCTION_201601012205_226667486)
                    {
                        if (message.GetRevision() >= Revision.RELEASE63_201211141113_913728051)
                        {
                            message.AppendInt32(1); //use button
                            message.AppendUInt(this.UserID);
                        }
                        else
                        {
                            message.AppendBoolean(true); //use button
                        }
                    }
                    else
                    {
                        message.AppendUInt(this.UserID);
                        message.AppendInt32(1); //use button
                        message.AppendInt32(0); //idk
                    }
                }
            }
        }
        public override string GetItemData()
        {
            string itemString = "";

            foreach (KeyValuePair <uint, MatchFurniData> data in this.MatchFurniData)
            {
                if (itemString.Length > 0)
                {
                    itemString += "|";
                }

                itemString += data.Key + "," + data.Value.ExtraData + "," + data.Value.Rot + "," + data.Value.X + "," + data.Value.Y + "," + TextUtilies.DoubleWithDotDecimal(data.Value.Z);
            }

            return(itemString + (char)9 + TextUtilies.BoolToString(this.FurniState) + (char)9 + TextUtilies.BoolToString(this.Direction) + (char)9 + TextUtilies.BoolToString(this.Position));
        }