Иконка ресурса

FREE ApartamentRent : 1.0.2 1.0.2

Нет прав для скачивания
C#:
// Все права принадлежат дискорд сообществу https://discord.gg/VgNHPpNrz6
using System;
using System.Collections.Generic;
using Facepunch.Extend;
using Oxide.Core;
using Oxide.Core.Plugins;
using Oxide.Game.Rust.Cui;
using UnityEngine;
using Vector3 = UnityEngine.Vector3;

namespace Oxide.Plugins
{
    [Info("ApartamentRent", "Kira", "1.0.2")]
    [Description("Renting apartments and buying houses")]
    public class ApartamentRent : RustPlugin
    {
        #region [Vars]

        [PluginReference] private Plugin ImageLibrary, BankSystem;
        private StoredData _dataBase = new StoredData();

        private const string UIMain = "UI.ApartamentRent";
        private const string Blur = "assets/content/ui/uibackgroundblur.mat";
        private const int Cost = 500;
        private const int CostS = 10000;

        private List<CardReader> Readers = new List<CardReader>();

        #endregion

        #region [Lang]

        protected override void LoadDefaultMessages()
        {
            var ru = new Dictionary<string, string>
            {
                ["APARTAMENT"] = "КВАРТИРА",
                ["APARTAMENTRENT"] = "АРЕНДА КВАРТИРЫ",
                ["RDESCRIPTION"] = "Вы можете снять квартиру на определенное количество дней, за ШРЕКИ",
                ["RENT"] = "<size=40><color=#ef631f>КВАРТИРА #{1}</color></size>\n" + "СТОИМОСТЬ ➜ {2} ШРЕКОВ",
                ["CALCULATE"] = "Стоимость за {1} дней аренды = {2} ШРЕКОВ",
                ["APARTAMENTSALE"] = "ПРОДАЖА ДОМА",
                ["SDESCRIPTION"] = "Вы можете купить дом за ШРЕКИ",
                ["SCOST"] = "СТОИМОСТЬ {1} ШРЕКОВ",
                ["RENTED"] = "Вы арендовали квартиру",
                ["HOUSEPURCHASED"] = "Вы приобрели дом",
                ["KEYRENT"] = "Ключ от квартиры #{1}",
                ["KEYSALE"] = "Ключ от дома #{1}"
            };

            var en = new Dictionary<string, string>
            {
                ["APARTAMENT"] = "APARTAMENT",
                ["APARTAMENTRENT"] = "APARTAMENT RENT",
                ["RDESCRIPTION"] = "You can rent an apartment for a certain number of days, for SHREKS",
                ["RENT"] = "<size=40><color=#ef631f>APARTAMENTS #{1}</color></size>\n" + $"COST ➜ {2} SHREKS",
                ["CALCULATE"] = "Cost for {1} days of rent = {2} SHREK",
                ["APARTAMENTSALE"] = "APARTAMENT SALE",
                ["SDESCRIPTION"] = "You can buy a house for SHREKS",
                ["SCOST"] = "COST {1} SHREKS",
                ["RENTED"] = "Have you rented an apartment",
                ["HOUSEPURCHASED"] = "You have purchased a house",
                ["KEYRENT"] = "The key to the apartment #{1}",
                ["KEYSALE"] = "The key to the house #{1}"
            };
            lang.RegisterMessages(ru, this, "ru");
            lang.RegisterMessages(en, this);
        }

        #endregion

        #region [DrawUI]

        private void DrawUI_Main(BasePlayer player, int id)
        {
            var ui = new CuiElementContainer();

            ui.Add(new CuiPanel
            {
                CursorEnabled = true,
                Image =
                {
                    Color = "0 0 0 0.8",
                    Material = Blur
                },
                RectTransform =
                {
                    AnchorMin = "0 0",
                    AnchorMax = "1 1"
                }
            }, "Overlay", UIMain);

            ui.Add(new CuiElement
            {
                Name = $"{UIMain}.Background",
                Parent = UIMain,
                Components =
                {
                    new CuiRawImageComponent
                    {
                        Png = (string) ImageLibrary.Call("GetImage", "UI.ApartamentRent.Background")
                    },
                    new CuiRectTransformComponent
                    {
                        AnchorMin = "0 0",
                        AnchorMax = "1 1"
                    }
                }
            });

            ui.Add(new CuiButton
            {
                Button =
                {
                    Close = UIMain,
                    Color = "0 0 0 0"
                },
                Text = {Text = " "},
                RectTransform =
                {
                    AnchorMin = "0 0",
                    AnchorMax = "1 1"
                }
            }, UIMain);

            ui.Add(new CuiElement
            {
                Name = $"{UIMain}.Heading",
                Parent = UIMain,
                Components =
                {
                    new CuiTextComponent
                    {
                        Align = TextAnchor.MiddleCenter,
                        FontSize = 25,
                        Color = "0.39 0.40 0.44 1.00",
                        Text = lang.GetMessage("APARTAMENTRENT", this, player.UserIDString)
                    },
                    new CuiRectTransformComponent
                    {
                        AnchorMin = "0 0.91",
                        AnchorMax = "1 1"
                    }
                }
            });

            ui.Add(new CuiElement
            {
                Name = $"{UIMain}.Heading",
                Parent = UIMain,
                Components =
                {
                    new CuiTextComponent
                    {
                        Align = TextAnchor.MiddleCenter,
                        FontSize = 20,
                        Color = "0.39 0.40 0.44 1.00",
                        Text = lang.GetMessage("RDESCRIPTION", this, player.UserIDString)
                    },
                    new CuiRectTransformComponent
                    {
                        AnchorMin = "0 0",
                        AnchorMax = "1 0.09"
                    }
                }
            });
            ui.Add(new CuiElement
            {
                Name = $"{UIMain}.Panel",
                Parent = UIMain,
                Components =
                {
                    new CuiImageComponent
                    {
                        Color = "0 0 0 0"
                    },
                    new CuiRectTransformComponent
                    {
                        AnchorMin = "0.3651042 0.3490741",
                        AnchorMax = "0.6765625 0.6037037"
                    }
                }
            });

            CuiHelper.DestroyUi(player, UIMain);
            CuiHelper.AddUi(player, ui);
            DrawUI_UpdateCost(player, 1, id);
        }

        private void DrawUI_UpdateCost(BasePlayer player, int count, int id)
        {
            var ui = new CuiElementContainer();
            var parent = $"{UIMain}.Panel";
            var reader = _dataBase.Readers[id];

            ui.Add(new CuiElement
            {
                Name = $"{parent}.Text",
                Parent = parent,
                Components =
                {
                    new CuiTextComponent
                    {
                        Align = TextAnchor.MiddleCenter,
                        FontSize = 20,
                        Color = "0.39 0.40 0.44 1.00",
                        Text = lang.GetMessage("RENT", this, player.UserIDString).Replace("{1}", $"{id}").Replace("{2}", $"{reader.cost}")
                    },
                    new CuiRectTransformComponent
                    {
                        AnchorMin = "0 0.2363637",
                        AnchorMax = "0.8678929 1"
                    }
                }
            });

            ui.Add(new CuiElement
            {
                Name = $"{parent}.Cost",
                Parent = parent,
                Components =
                {
                    new CuiTextComponent
                    {
                        Align = TextAnchor.MiddleCenter,
                        FontSize = 15,
                        Color = "0.39 0.40 0.44 1.00",
                        Text = lang.GetMessage("CALCULATE", this, player.UserIDString).Replace("{1}", $"{count}").Replace("{2}", $"{reader.cost * count}")
                    },
                    new CuiRectTransformComponent
                    {
                        AnchorMin = "0 0",
                        AnchorMax = "0.8678929 0.1927272"
                    }
                }
            });

            ui.Add(new CuiElement
            {
                Name = $"{parent}.Count",
                Parent = parent,
                Components =
                {
                    new CuiTextComponent
                    {
                        Align = TextAnchor.MiddleCenter,
                        FontSize = 20,
                        Color = "0.39 0.40 0.44 1.00",
                        Text = $"{count}"
                    },
                    new CuiRectTransformComponent
                    {
                        AnchorMin = "0.8879598 0.4363636",
                        AnchorMax = "0.994 0.8"
                    }
                }
            });

            ui.Add(new CuiButton
            {
                Button =
                {
                    Command = $"apartament {count} + {id}",
                    Color = "0 0 0 0"
                },
                Text = {Text = " "},
                RectTransform =
                {
                    AnchorMin = "0.8879598 0.8000001",
                    AnchorMax = "1 1"
                }
            }, parent, $"{parent}.+");

            ui.Add(new CuiButton
            {
                Button =
                {
                    Command = $"apartament {count} - {id}",
                    Color = "0 0 0 0"
                },
                Text = {Text = " "},
                RectTransform =
                {
                    AnchorMin = "0.8879598 0.2363642",
                    AnchorMax = "1 0.4363642"
                }
            }, parent, $"{parent}.-");

            ui.Add(new CuiElement
            {
                Name = $"{parent}.Cart",
                Parent = $"{parent}",
                Components =
                {
                    new CuiImageComponent
                    {
                        Sprite = "assets/icons/store.png"
                    },
                    new CuiRectTransformComponent
                    {
                        AnchorMin = "0.905 0.02",
                        AnchorMax = "0.975 0.17"
                    }
                }
            });

            ui.Add(new CuiButton
            {
                Button =
                {
                    Command = $"apartament.rent {count} {id}",
                    Color = "1 1 1 0"
                },
                Text = {Text = " "},
                RectTransform =
                {
                    AnchorMin = "0.8879598 0",
                    AnchorMax = "1 0.1927272"
                }
            }, parent, $"{parent}.Rent");

            CuiHelper.DestroyUi(player, $"{parent}.-");
            CuiHelper.DestroyUi(player, $"{parent}.+");
            CuiHelper.DestroyUi(player, $"{parent}.Count");
            CuiHelper.DestroyUi(player, $"{parent}.Cost");
            CuiHelper.DestroyUi(player, $"{parent}.Text");
            CuiHelper.AddUi(player, ui);
        }

        private void DrawUI_MainSale(BasePlayer player, int id)
        {
            var ui = new CuiElementContainer();

            ui.Add(new CuiPanel
            {
                CursorEnabled = true,
                Image =
                {
                    Color = "0 0 0 0.8",
                    Material = Blur
                },
                RectTransform =
                {
                    AnchorMin = "0 0",
                    AnchorMax = "1 1"
                }
            }, "Overlay", UIMain);

            ui.Add(new CuiElement
            {
                Name = $"{UIMain}.Background",
                Parent = UIMain,
                Components =
                {
                    new CuiRawImageComponent
                    {
                        Png = (string) ImageLibrary.Call("GetImage", "UI.ApartamentSale.Background")
                    },
                    new CuiRectTransformComponent
                    {
                        AnchorMin = "0 0",
                        AnchorMax = "1 1"
                    }
                }
            });

            ui.Add(new CuiButton
            {
                Button =
                {
                    Close = UIMain,
                    Color = "0 0 0 0"
                },
                Text = {Text = " "},
                RectTransform =
                {
                    AnchorMin = "0 0",
                    AnchorMax = "1 1"
                }
            }, UIMain);

            ui.Add(new CuiElement
            {
                Name = $"{UIMain}.Heading",
                Parent = UIMain,
                Components =
                {
                    new CuiTextComponent
                    {
                        Align = TextAnchor.MiddleCenter,
                        FontSize = 25,
                        Color = "0.39 0.40 0.44 1.00",
                        Text = lang.GetMessage("APARTAMENTSALE", this, player.UserIDString)
                    },
                    new CuiRectTransformComponent
                    {
                        AnchorMin = "0 0.91",
                        AnchorMax = "1 1"
                    }
                }
            });

            ui.Add(new CuiElement
            {
                Name = $"{UIMain}.Heading",
                Parent = UIMain,
                Components =
                {
                    new CuiTextComponent
                    {
                        Align = TextAnchor.MiddleCenter,
                        FontSize = 20,
                        Color = "0.39 0.40 0.44 1.00",
                        Text = lang.GetMessage("SDESCRIPTION", this, player.UserIDString)
                    },
                    new CuiRectTransformComponent
                    {
                        AnchorMin = "0 0",
                        AnchorMax = "1 0.09"
                    }
                }
            });
            ui.Add(new CuiElement
            {
                Name = $"{UIMain}.PanelSale",
                Parent = UIMain,
                Components =
                {
                    new CuiImageComponent
                    {
                        Color = "0 0 0 0"
                    },
                    new CuiRectTransformComponent
                    {
                        AnchorMin = "0.3651042 0.3490741",
                        AnchorMax = "0.6354166 0.6037037"
                    }
                }
            });

            CuiHelper.DestroyUi(player, UIMain);
            CuiHelper.AddUi(player, ui);
            DrawUI_UpdateCostSale(player, id);
        }

        private void DrawUI_UpdateCostSale(BasePlayer player, int id)
        {
            var ui = new CuiElementContainer();
            var parent = $"{UIMain}.PanelSale";
            var house = _dataBase.ReaderSales[id];

            ui.Add(new CuiElement
            {
                Name = $"{parent}.Text",
                Parent = parent,
                Components =
                {
                    new CuiTextComponent
                    {
                        Align = TextAnchor.MiddleCenter,
                        FontSize = 20,
                        Color = "0.39 0.40 0.44 1.00",
                        Text =
                            $"<size=40><color=#ef631f>{lang.GetMessage("APARTAMENT", this, player.UserIDString)} #{id}</color></size>"
                    },
                    new CuiRectTransformComponent
                    {
                        AnchorMin = "0 0.2363637",
                        AnchorMax = "1 1"
                    }
                }
            });

            ui.Add(new CuiElement
            {
                Name = $"{parent}.Cost",
                Parent = parent,
                Components =
                {
                    new CuiTextComponent
                    {
                        Align = TextAnchor.MiddleCenter,
                        FontSize = 15,
                        Color = "0.39 0.40 0.44 1.00",
                        Text = lang.GetMessage("SCOST", this, player.UserIDString).Replace("{1}", house.cost.ToString())
                    },
                    new CuiRectTransformComponent
                    {
                        AnchorMin = "0 0",
                        AnchorMax = "0.8516378 0.1927272"
                    }
                }
            });

            ui.Add(new CuiElement
            {
                Name = $"{parent}.Cart",
                Parent = $"{parent}",
                Components =
                {
                    new CuiImageComponent
                    {
                        Sprite = "assets/icons/store.png"
                    },
                    new CuiRectTransformComponent
                    {
                        AnchorMin = "0.89 0.02",
                        AnchorMax = "0.97 0.17"
                    }
                }
            });

            ui.Add(new CuiButton
            {
                Button =
                {
                    Command = $"apartament.buy {id}",
                    Color = "1 1 1 0"
                },
                Text = {Text = " "},
                RectTransform =
                {
                    AnchorMin = "0.8728325 0",
                    AnchorMax = "1 0.1927272"
                }
            }, parent, $"{parent}.Sale");

            CuiHelper.DestroyUi(player, $"{parent}.-");
            CuiHelper.DestroyUi(player, $"{parent}.+");
            CuiHelper.DestroyUi(player, $"{parent}.Count");
            CuiHelper.DestroyUi(player, $"{parent}.Cost");
            CuiHelper.DestroyUi(player, $"{parent}.Text");
            CuiHelper.AddUi(player, ui);
        }

        #endregion

        #region [Hooks]

        // ReSharper disable once UnusedMember.Local
        private void OnServerInitialized()
        {
            LoadData();
            ImageLibrary.Call("AddImage", "https://i.imgur.com/RWSTMyB.png", "UI.ApartamentRent.Background");
            ImageLibrary.Call("AddImage", "https://i.imgur.com/B0QSW6H.png", "UI.ApartamentSale.Background");
            NextFrame(FindReader);
        }

        // ReSharper disable once UnusedMember.Local
        private void Unload()
        {
            SaveData();
            foreach (var r in Readers) r.Kill();
        }

        // ReSharper disable once UnusedMember.Local
        private object OnCardSwipe(CardReader cardReader, Keycard card, BasePlayer player)
        {
            if (cardReader.skinID == 0) return null;
            if (card.skinID == 0) return null;
            card.GetItem().RepairCondition(1000);
            if (cardReader.skinID <= 18)
            {
                var readerr = _dataBase.Readers[Convert.ToInt32(cardReader.skinID)];
                if (readerr.OwnerID == 0) DrawUI_Main(player, Convert.ToInt32(cardReader.skinID));
                if (cardReader.skinID != card.skinID) return null;
                var door = (Door) BaseNetworkable.serverEntities.Find(Convert.ToUInt32(readerr.DoorID));
                door.SetOpen(true);
                timer.Once(2f, () => door.SetOpen(false));
                if (IsRent(Convert.ToInt32(cardReader.skinID))) return null;
                readerr.OwnerID = 0;
                readerr.renttime = 0;
            }
            else
            {
                var readers = _dataBase.ReaderSales[Convert.ToInt32(cardReader.skinID)];
                if (readers.OwnerID == 0) DrawUI_MainSale(player, Convert.ToInt32(cardReader.skinID));
                if (cardReader.skinID != card.skinID) return null;
                var door = (Door) BaseNetworkable.serverEntities.Find(Convert.ToUInt32(readers.DoorID));
                door.SetOpen(true);
                timer.Once(2f, () => door.SetOpen(false));
                card.GetItem().RepairCondition(100);
            }

            return null;
        }

        #endregion

        #region [Helpers]

        private void FindReader()
        {
            foreach (var r in _dataBase.Readers)
            {
                var cardreader =
                    GameManager.server.CreateEntity("assets/prefabs/io/electric/switches/cardreader.prefab") as
                        CardReader;
                var transform = cardreader.transform;
                transform.position = r.Value.pos;
                transform.Rotate(Quaternion.Euler(0f, r.Value.rotx, 0f).eulerAngles);
                cardreader.UpdateHasPower(10, 0);
                cardreader.skinID = Convert.ToUInt64(r.Key);
                cardreader.Spawn();
                cardreader.SendNetworkUpdate();
                Readers.Add(cardreader);
            }

            foreach (var r in _dataBase.ReaderSales)
            {
                var cardreader =
                    GameManager.server.CreateEntity("assets/prefabs/io/electric/switches/cardreader.prefab") as
                        CardReader;
                var transform = cardreader.transform;
                transform.position = r.Value.pos;
                transform.Rotate(Quaternion.Euler(0f, r.Value.rotx, 0f).eulerAngles);
                cardreader.UpdateHasPower(10, 0);
                cardreader.skinID = Convert.ToUInt64(r.Key);
                cardreader.Spawn();
                cardreader.SendNetworkUpdate();
                Readers.Add(cardreader);
            }
        }

        private void GiveCard(BasePlayer player, int room, int days)
        {
            var card = ItemManager.CreateByName("keycard_green", 1, Convert.ToUInt64(room));
            card.name = lang.GetMessage("KEYRENT", this, player.UserIDString).Replace("{1}", $"{room}");
            card.skin = Convert.ToUInt64(room);
            var readerr = _dataBase.Readers[room];
            if ((int) BankSystem.Call("GetBalance", player.userID) < (days * readerr.cost)) return;
            readerr.OwnerID = player.userID;
            readerr.renttime = CurrentTime() + (86400 * days);
            BankSystem?.Call("TakeBalance", player.userID, days * readerr.cost);
            player.GiveItem(card);
            player.ChatMessage(lang.GetMessage("RENTED", this, player.UserIDString));
        }

        private void GiveCardSale(BasePlayer player, int room)
        {
            var card = ItemManager.CreateByName("keycard_green", 1, Convert.ToUInt64(room));
            card.name = lang.GetMessage("KEYSALE", this, player.UserIDString).Replace("{1}", $"{room}");
            card.skin = Convert.ToUInt64(room);
            var readers = _dataBase.ReaderSales[room];
            if ((int) BankSystem.Call("GetBalance", player.userID) < readers.cost) return;
            readers.OwnerID = player.userID;
            BankSystem.Call("TakeBalance", player.userID, readers.cost);
            player.GiveItem(card);
            player.ChatMessage(lang.GetMessage("HOUSEPURCHASED", this, player.UserIDString));
        }

        #endregion

        #region [Commands]

        private int reader;

        [ConsoleCommand("add.reader")]
        // ReSharper disable once UnusedMember.Local
        private void FindEntity(ConsoleSystem.Arg args)
        {
            if (args.Player() == null) return;
            var player = args.Player();
            if (!player.IsAdmin) return;
            RaycastHit h;
            Physics.Raycast(player.eyes.HeadRay(), out h, 1000);
            if (h.GetEntity() == null) return;
            var ent = h.GetEntity();
            if (ent == null) return;
            var message = $"Reader : {ent.skinID}";
            player.ChatMessage(message);
            PrintWarning(message);
            reader = Convert.ToInt32(ent.skinID);
        }

        [ConsoleCommand("add.doorrent")]
        // ReSharper disable once UnusedMember.Local
        private void FindEntitysr(ConsoleSystem.Arg args)
        {
            if (args.Player() == null) return;
            var player = args.Player();
            if (!player.IsAdmin) return;
            RaycastHit h;
            Physics.Raycast(player.eyes.HeadRay(), out h, 1000);
            if (h.GetEntity() == null) return;
            var ent = h.GetEntity();
            if (ent == null) return;
            var message = $"DoorID : {ent.prefabID}";
            player.ChatMessage(message);
            PrintWarning(message);
            if (!_dataBase.Readers.ContainsKey(reader)) _dataBase.Readers.Add(reader, new StoredData.Reader());
            _dataBase.Readers[reader].DoorID = ent.prefabID;
        }

        [ConsoleCommand("add.doorsales")]
        // ReSharper disable once UnusedMember.Local
        private void FindEntitys(ConsoleSystem.Arg args)
        {
            if (args.Player() == null) return;
            var player = args.Player();
            if (!player.IsAdmin) return;
            RaycastHit h;
            Physics.Raycast(player.eyes.HeadRay(), out h, 1000);
            if (h.GetEntity() == null) return;
            var ent = h.GetEntity();
            if (ent == null) return;
            var message = $"DoorID : {ent.prefabID}";
            player.ChatMessage(message);
            PrintWarning(message);
            if (!_dataBase.ReaderSales.ContainsKey(reader))
                _dataBase.ReaderSales.Add(reader, new StoredData.ReaderSale());
            _dataBase.ReaderSales[reader].DoorID = ent.prefabID;
        }

        [ConsoleCommand("apartament")]
        // ReSharper disable once UnusedMember.Local
        private void Counts(ConsoleSystem.Arg args)
        {
            var player = args.Player();
            var count = args.Args[0].ToInt();
            switch (args.Args[1])
            {
                case "+":
                    count++;
                    break;
                case "-":
                    if (count <= 1) return;
                    count--;
                    break;
            }

            DrawUI_UpdateCost(player, count, 1);
        }

        [ConsoleCommand("apartament.rent")]
        // ReSharper disable once UnusedMember.Local
        private void Rent(ConsoleSystem.Arg args)
        {
            var player = args.Player();
            var count = args.Args[0].ToInt();
            var room = args.Args[1].ToInt();
            GiveCard(args.Player(), room, count);
            CuiHelper.DestroyUi(player, UIMain);
        }

        [ConsoleCommand("apartament.buy")]
        // ReSharper disable once UnusedMember.Local
        private void Buy(ConsoleSystem.Arg args)
        {
            var player = args.Player();
            var room = args.Args[0].ToInt();
            GiveCardSale(args.Player(), room);
            CuiHelper.DestroyUi(player, UIMain);
        }

        private bool IsRent(int room)
        {
            var playercooldown = _dataBase.Readers[room];
            PrintError((playercooldown.renttime - CurrentTime()).ToString());
            PrintError(((playercooldown.renttime - CurrentTime()) > 0).ToString());
            return (playercooldown.renttime - CurrentTime()) > 0;
        }

        [ConsoleCommand("apartamentrent.spawnnpc")]
        // ReSharper disable once UnusedMember.Local
        private void SpawnNpc(ConsoleSystem.Arg args)
        {
            if (!args.Player().IsAdmin) return;
            var player = args.Player();
            var npc = GameManager.server.CreateEntity(
                "assets/prefabs/deployable/vendingmachine/vendingmachine.deployed.prefab",
                player.transform.position) as VendingMachine;
            npc.shopName = "Car Sales";
            npc.skinID = 2558;
            var pos = player.GetNetworkRotation();
            npc.transform.rotation = new Quaternion(0, pos.y, 0, pos.w);
            npc.enableSaving = true;
            npc.Spawn();
            npc.SendNetworkUpdate();
        }

        [ConsoleCommand("apartament.clear")]
        // ReSharper disable once UnusedMember.Local
        private void ClearDataBase(ConsoleSystem.Arg args)
        {
            if (args.Player() != null) return;
            args.Player().GiveItem(ItemManager.CreateByName("keycard_green", 1, 1));
        }

        #endregion

        #region [DataBase]

        private static readonly DateTime Epoch = new DateTime(1970, 1, 1, 0, 0, 0);
        private static int CurrentTime() => (int) DateTime.UtcNow.Subtract(Epoch).TotalSeconds;

        public class StoredData
        {
            public Dictionary<int, Reader> Readers = new Dictionary<int, Reader>();
            public Dictionary<int, ReaderSale> ReaderSales = new Dictionary<int, ReaderSale>();

            public class Reader
            {
                public Vector3 pos;
                public int rotx;
                public ulong OwnerID;
                public int renttime;
                public int cost;
                public ulong DoorID;
            }

            public class ReaderSale
            {
                public Vector3 pos;
                public int rotx;
                public ulong OwnerID;
                public int cost;
                public ulong DoorID;
            }
        }

        private void SaveData() => Interface.Oxide.DataFileSystem.WriteObject(Name, _dataBase);

        private void LoadData()
        {
            try
            {
                _dataBase = Interface.GetMod().DataFileSystem.ReadObject<StoredData>(Name);
            }
            catch (Exception)
            {
                _dataBase = new StoredData();
            }
        }

        #endregion
    }
}

Автор
15FPS
Скачиваний
0
Просмотры
1
Первый выпуск
Обновление
Оценка
0.00 звёзд 0 оценок
Сверху