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

FREE StorageWhitelist : 0.2.1 0.2.1

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

namespace Oxide.Plugins
{
    [Info("StorageWhitelist", "Kaleidos", "0.2.1")]
    class StorageWhitelist : RustPlugin
    {
        private const string storageWhitelistIgnore = "storagewhitelist.ignore";

        private List<string> rafinery;
        private List<string> furnaceLarge;
        private List<string> furnace;
        private List<string> campfire;
        private List<string> fuelstorage;
        private List<string> hopperoutput;
        private List<string> crudeoutput;

        protected override void LoadDefaultConfig()
        {
            Puts("Creating a new config file");
            Config.Clear();

            SetConfig("Storage Container", "refinery_small_deployed", new List<object>
{
                "wood",
                "crude.oil",
                "lowgradefuel"
            });

            SetConfig("Storage Container", "furnace", new List<object> {
                "wood",
                "charcoal",
                "sulfur.ore",
                "sulfur",
                "metal.ore",
                "metal.fragments",
                "hq.metal.ore",
                "metal.refined"
            });
            SetConfig("Storage Container", "furnace.large", new List<object>
            {
                "wood",
                "charcoal",
                "sulfur.ore",
                "sulfur",
                "metal.ore",
                "metal.fragments",
                "hq.metal.ore",
                "metal.refined"
            });
            SetConfig("Storage Container", "campfire", new List<object>
            {
                "wood",
                "charcoal",
                "bearmeat",
                "bearmeat.burned",
                "bearmeat.cooked",
                "humanmeat.burned",
                "humanmeat.cooked",
                "humanmeat.raw",
                "humanmeat.spoiled",
                "meat.boar",
                "meat.pork.burned",
                "meat.pork.cooked",
                "wolfmeat.burned",
                "wolfmeat.cooked",
                "wolfmeat.raw",
                "wolfmeat.spoiled",
                "chicken.burned",
                "chicken.cooked",
                "chicken.raw",
                "chicken.spoiled",
                "fish.raw",
                "fish.cooked"
            });
            SetConfig("Storage Container", "fuelstorage", new List<object>
            {
                "lowgradefuel"
            });
            SetConfig("Storage Container", "hopperoutput", new List<object>
            {
                "sulfur.ore",
                "metal.ore",
                "metal.fragments",
                "hq.metal.ore",
                "stones"
            });
            SetConfig("Storage Container", "crudeoutput", new List<object>
            {
                "crude.oil"
            });
            SaveConfig();
            LoadVariables();
        }
        private void LoadVariables()
        {
            rafinery = ConvertList(Config.Get("Storage Container", "refinery_small_deployed"));
            furnaceLarge = ConvertList(Config.Get("Storage Container", "furnace.large"));
            furnace = ConvertList(Config.Get("Storage Container", "furnace"));
            campfire = ConvertList(Config.Get("Storage Container", "campfire"));
            fuelstorage = ConvertList(Config.Get("Storage Container", "fuelstorage"));
            hopperoutput = ConvertList(Config.Get("Storage Container", "hopperoutput"));
            crudeoutput = ConvertList(Config.Get("Storage Container", "crudeoutput"));
        }
        private void OnServerInitialized()
        {
            LoadVariables();
            permission.RegisterPermission(storageWhitelistIgnore, this);
        }
        private object CanAcceptItem(ItemContainer container, Item item)
        {
            var storage = container.entityOwner as StorageContainer;
            if (storage == null) return null;
            var player = item.GetOwnerPlayer();
            if (player == null || permission.UserHasPermission(player.UserIDString, storageWhitelistIgnore)) return null;
            var storageContainers = (Dictionary<string, object>)Config.Get("Storage Container");
            if (storageContainers.Count == 0 || !storageContainers.ContainsKey(storage.ShortPrefabName)) return null;

            List<string> storageList;
            switch (storage.ShortPrefabName)
            {
                case "refinery_small_deployed":
                    storageList = rafinery;
                    break;
                case "furnace.large":
                    storageList = furnaceLarge;
                    break;
                case "furnace":
                    storageList = furnace;
                    break;
                case "campfire":
                    storageList = campfire;
                    break;
                case "fuelstorage":
                    storageList = fuelstorage;
                    break;
                case "hopperoutput":
                    storageList = hopperoutput;
                    break;
                case "crudeoutput":
                    storageList = crudeoutput;
                    break;
                default:
                    storageList = new List<string>();
                    break;
            }

            if (!(storageList.Contains(item.info.shortname)))
                return ItemContainer.CanAcceptResult.CannotAccept;
            return null;
        }

        private void SetConfig(params object[] args)
        {
            string[] stringArgs = GetConfigPath(args);
            if (Config.Get(stringArgs) == null) Config.Set(args);
        }
        private string[] GetConfigPath(params object[] args)
        {
            string[] stringArgs = new string[args.Length - 1];
            for (var i = 0; i < args.Length - 1; i++)
                stringArgs[i] = args[i].ToString();
            return stringArgs;
        }
        private List<string> ConvertList(object value)
        {
            if (value is List<object>)
                return ((List<object>)value).ConvertAll(l => (string)l);
            return (List<string>)value;
        }        
    }
}

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