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

FREE VendingControl : 1.0.1 1.0.1

Нет прав для скачивания
C#:
// Все права принадлежат дискорд сообществу https://discord.gg/VgNHPpNrz6
using System;
using Newtonsoft.Json;

namespace Oxide.Plugins
{
    [Info("VendingControl", "Kira", "1.0.1")]
    [Description("Настройка кд для VendingMachine")]
    public class VendingControl : RustPlugin
    {
        #region [Vars] / [Переменные]

        private const string PERMISSION_USE = "vendingcontrol.use";

        #endregion

        #region [Configuraton] / [Конфигурация]

        private ConfigData _config;

        public class ConfigData
        {
            [JsonProperty(PropertyName = "VendingControl - Config")]
            public VendingCFG VendingConfig = new VendingCFG();

            public class VendingCFG
            {
                [JsonProperty(PropertyName = "Время восстановления ресурсов")]
                public float time;
            }
        }

        private ConfigData GetDefaultConfig()
        {
            return new ConfigData
            {
                VendingConfig = new ConfigData.VendingCFG
                {
                    time = 1f
                }
            };
        }

        protected override void LoadConfig()
        {
            base.LoadConfig();

            try
            {
                _config = Config.ReadObject<ConfigData>();
            }
            catch
            {
                LoadDefaultConfig();
            }

            SaveConfig();
        }

        protected override void LoadDefaultConfig()
        {
            PrintError("Файл конфигурации поврежден (или не существует), создан новый!");
            _config = GetDefaultConfig();
        }

        protected override void SaveConfig()
        {
            Config.WriteObject(_config);
        }

        #endregion

        #region [Hooks] / [Хуки]

        // ReSharper disable once UnusedMember.Local
        private void OnServerIntialized()
        {
            permission.RegisterPermission(PERMISSION_USE, this);
        }

        private void VendingRefill(Item soldItem, NPCVendingMachine vm)
        {
            if (vm == null || soldItem == null || soldItem.info == null)
                return;

            var item = ItemManager.Create(soldItem.info, soldItem.amount, soldItem.skin);
            if (soldItem.blueprintTarget != 0)
                item.blueprintTarget = soldItem.blueprintTarget;

            if (soldItem.instanceData != null)
                item.instanceData.dataInt = soldItem.instanceData.dataInt;

            NextTick(() =>
            {
                if (item == null)
                    return;

                if (vm == null || vm.IsDestroyed)
                {
                    item.Remove();
                    return;
                }

                vm.transactionActive = true;
                if (!item.MoveToContainer(vm.inventory))
                    item.Remove();

                vm.transactionActive = false;
                vm.FullUpdate();
            });
        }

        #endregion

        // ReSharper disable once UnusedMember.Local
        private void CanPurchaseItem(BasePlayer buyer, Item soldItem, Action<BasePlayer, Item> onItemPurchased,
            NPCVendingMachine vm)
        {
            if (!buyer.HasPlayerFlag(BasePlayer.PlayerFlags.SafeZone)) return;
            if (!permission.UserHasPermission(buyer.UserIDString, PERMISSION_USE)) return;
            timer.Once(_config.VendingConfig.time, () => VendingRefill(soldItem, vm));
        }
    }
}

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