コード例 #1
0
        public ServerMessage Handle(ValueHolder valueHolder = null)
        {
            RoomItem item = valueHolder.GetValue <RoomItem>("Item");

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

            message.Init(r26Outgoing.UpdateItem);
            message.AppendString(item.ID.ToString());
            message.AppendString(OldSchoolUtils.GetOldSchoolExtraData(item));
            return(message);
        }
コード例 #2
0
ファイル: RoomItem.cs プロジェクト: aromaa/Skylight
        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
                    }
                }
            }
        }