コード例 #1
0
ファイル: WiredSaver.cs プロジェクト: BjkGkh/07052014
        public static void SaveWired(GameClient Session, RoomItem Item, ClientMessage Request)
        {
            if (!Item.IsWired)
            {
                return;
            }

            Room Room = Item.GetRoom();
            WiredHandler Handler = Room.GetWiredHandler();

            switch (Item.GetBaseItem().InteractionType)
            {
                #region Triggers
                case InteractionType.triggerroomenter:
                    {
                        int Unknown = Request.PopWiredInt32();
                        string User = Request.PopFixedString();

                        WiredItem WItem = Handler.GetWired(Item);
                        WItem.OtherString = User;
                        Handler.ReloadWired(WItem);

                        break;
                    }

                case InteractionType.triggeronusersay:
                    {
                        int Unknown = Request.PopWiredInt32();
                        int OwnerOnly = Request.PopWiredInt32();
                        string Message = Request.PopFixedString();

                        WiredItem WItem = Handler.GetWired(Item);
                        WItem.OtherString = Message;
                        WItem.OtherBool = (OwnerOnly == 1);
                        Handler.ReloadWired(WItem);

                        break;
                    }

                case InteractionType.triggerrepeater:
                    {
                        int Unknown = Request.PopWiredInt32();
                        int Delay = Request.PopWiredInt32() * 500;

                        WiredItem WItem = Handler.GetWired(Item);
                        WItem.Delay = Delay;
                        Handler.ReloadWired(WItem);
                        break;
                    }

                case InteractionType.triggerstatechanged:
                    {
                        int Unknown = Request.PopWiredInt32();
                        string Unknown2 = Request.PopFixedString();

                        List<RoomItem> Items = GetFurniItems(Request, Room);

                        int Delay = Request.PopWiredInt32();

                        WiredItem WItem = Handler.GetWired(Item);
                        WItem.Delay = Delay * 500;
                        WItem.Items = Items;
                        Handler.ReloadWired(WItem);
                        break;
                    }

                case InteractionType.triggerwalkonfurni:
                    {
                        int Unknown = Request.PopWiredInt32();
                        string Message = Request.PopFixedString();

                        List<RoomItem> Items = GetFurniItems(Request, Room);

                        int Delay = Request.PopWiredInt32();

                        WiredItem WItem = Handler.GetWired(Item);
                        WItem.Delay = Delay * 500;
                        WItem.Items = Items;
                        Handler.ReloadWired(WItem);
                        break;
                    }

                case InteractionType.triggerwalkofffurni:
                    {
                        int Unknown = Request.PopWiredInt32();
                        string Message = Request.PopFixedString();

                        List<RoomItem> Items = GetFurniItems(Request, Room);

                        int Delay = Request.PopWiredInt32();

                        WiredItem WItem = Handler.GetWired(Item);
                        WItem.Delay = Delay * 500;
                        WItem.Items = Items;
                        Handler.ReloadWired(WItem);
                        break;
                    }
                #endregion

                #region Effects
                case InteractionType.actionkickuser:
                case InteractionType.actionshowmessage:
                    {
                        int Unknown = Request.PopWiredInt32();
                        string Message = Request.PopFixedString();

                        WiredItem WItem = Handler.GetWired(Item);
                        WItem.OtherString = Message;
                        Handler.ReloadWired(WItem);
                        break;
                    }

                case InteractionType.actionteleportto:
                    {
                        int Unknown = Request.PopWiredInt32();
                        string Unknown2 = Request.PopFixedString();

                        List<RoomItem> Items = GetFurniItems(Request, Room);

                        int Delay = Request.PopWiredInt32();

                        WiredItem WItem = Handler.GetWired(Item);
                        WItem.Items = Items;
                        WItem.Delay = Delay * 500;
                        Handler.ReloadWired(WItem);

                        break;
                    }

                case InteractionType.actiontogglestate:
                    {
                        int Unknown = Request.PopWiredInt32();
                        string Unknown2 = Request.PopFixedString();

                        List<RoomItem> Items = GetFurniItems(Request, Room);

                        int Delay = Request.PopWiredInt32();

                        WiredItem WItem = Handler.GetWired(Item);
                        WItem.Items = Items;
                        WItem.Delay = Delay * 500;
                        Handler.ReloadWired(WItem);
                        break;
                    }

                case InteractionType.actionmoverotate:
                    {
                        int Unknown = Request.PopWiredInt32();
                        int Movement = Request.PopWiredInt32();
                        int Rotation = Request.PopWiredInt32();
                        string Unknown2 = Request.PopFixedString();

                        List<RoomItem> Items = GetFurniItems(Request, Room);

                        int Delay = Request.PopWiredInt32();

                        WiredItem WItem = Handler.GetWired(Item);
                        WItem.Items = Items;
                        WItem.Delay = Delay * 500;
                        WItem.OtherString = Rotation + ";" + Movement;
                        Handler.ReloadWired(WItem);
                        break;
                    }
                #endregion

                #region Conditions
                case InteractionType.conditionfurnishaveusers:
                case InteractionType.conditionfurnihasfurni:
                case InteractionType.conditiontriggeronfurni:
                    {
                        int Unknown = Request.PopWiredInt32();
                        string Unknown2 = Request.PopFixedString();

                        List<RoomItem> Items = GetFurniItems(Request, Room);

                        WiredItem WItem = Handler.GetWired(Item);
                        WItem.Items = Items;
                        Handler.ReloadWired(WItem);
                        break;
                    }
                #endregion
            }

            Session.SendMessage(new ServerMessage(Outgoing.SaveWired));
        }