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

FREE AnimalLoot : 0.0.2 0.0.2

Нет прав для скачивания
C#:
using Newtonsoft.Json;
using System.Collections.Generic;
using System.Linq;

namespace Oxide.Plugins
{
    [Info("AnimalLoot", "https://topplugin.ru/", "0.0.2")]
    [Description("Полная настройка выпадаемого лута с животных ")]
    class AnimalLoot : RustPlugin
    {
        #region Configuration

        private static Configuration config = new Configuration();
        private class Configuration
        {
            [JsonProperty("Настройка животных [животное] - {лут}")]
            public Dictionary<string,Dictionary<string , Amount>> AnimalSettings = new Dictionary<string, Dictionary<string, Amount>>();
            [JsonProperty("Включить(true) стандартный лут от животных(будет совмещен с вашим,из кфг) или отключить(false)")]
            public bool DefaultLoot;

            internal class Amount
            {
                [JsonProperty("Минимальное количество выпадения")]
                public int MinimumAmount;
                [JsonProperty("Максимальное количество выпадения")]
                public int MaximumAmount;
            }

            public static Configuration GetNewConfiguration()
            {
                return new Configuration
                {
                   DefaultLoot = true,
                   AnimalSettings = new Dictionary<string, Dictionary<string, Amount>>
                   {
                       ["assets/rust.ai/agents/horse/horse.corpse.prefab"] = new Dictionary<string, Amount>
                       {
                          ["wood"] = new Amount
                          {
                              MinimumAmount = 10,
                              MaximumAmount = 300
                          },
                          ["stones"] = new Amount
                           {
                               MinimumAmount = 4,
                               MaximumAmount = 340
                           },
                           ["diesel_barrel"] = new Amount
                           {
                               MinimumAmount = 1,
                               MaximumAmount = 30 
                           },
                       },
                       ["assets/rust.ai/agents/boar/boar.corpse.prefab"] = new Dictionary<string, Amount>
                       {
                           ["wood"] = new Amount
                           {
                               MinimumAmount = 100,
                               MaximumAmount = 400
                           },
                           ["stones"] = new Amount
                           {
                               MinimumAmount = 100,
                               MaximumAmount = 500
                           },
                           ["diesel_barrel"] = new Amount
                           {
                               MinimumAmount = 100,
                               MaximumAmount = 20
                           },
                       },
                       ["assets/rust.ai/agents/chicken/chicken.corpse.prefab"] = new Dictionary<string, Amount>
                       {
                           ["wood"] = new Amount
                           {
                               MinimumAmount = 100,
                               MaximumAmount = 400
                           },
                           ["stones"] = new Amount
                           {
                               MinimumAmount = 100,
                               MaximumAmount = 500
                           },
                           ["diesel_barrel"] = new Amount
                           {
                               MinimumAmount = 100,
                               MaximumAmount = 20
                           },
                       },
                       ["assets/rust.ai/agents/stag/stag.corpse.prefab"] = new Dictionary<string, Amount>
                       {
                           ["wood"] = new Amount
                           {
                               MinimumAmount = 100,
                               MaximumAmount = 400
                           },
                           ["stones"] = new Amount
                           {
                               MinimumAmount = 100,
                               MaximumAmount = 500
                           },
                           ["diesel_barrel"] = new Amount
                           {
                               MinimumAmount = 100,
                               MaximumAmount = 20
                           },
                       },
                       ["assets/rust.ai/agents/wolf/wolf.corpse.prefab"] = new Dictionary<string, Amount>
                       {
                           ["wood"] = new Amount
                           {
                               MinimumAmount = 100,
                               MaximumAmount = 400
                           },
                           ["stones"] = new Amount
                           {
                               MinimumAmount = 100,
                               MaximumAmount = 500
                           },
                           ["diesel_barrel"] = new Amount
                           {
                               MinimumAmount = 100,
                               MaximumAmount = 20
                           },
                       },
                       ["assets/rust.ai/agents/bear/bear.corpse.prefab"] = new Dictionary<string, Amount>
                       {
                           ["wood"] = new Amount
                           {
                               MinimumAmount = 100,
                               MaximumAmount = 400
                           },
                           ["stones"] = new Amount
                           {
                               MinimumAmount = 100,
                               MaximumAmount = 500
                           },
                           ["diesel_barrel"] = new Amount
                           {
                               MinimumAmount = 100,
                               MaximumAmount = 20
                           },
                       },
                   }
                };
            }
        }

        protected override void LoadConfig()
        {
            base.LoadConfig();
            try
            {
                config = Config.ReadObject<Configuration>();
                if (config == null) LoadDefaultConfig();
            }
            catch
            {
                PrintWarning("Ошибка #{261}" + $"чтения конфигурации 'oxide/config/{Name}', создаём новую конфигурацию!!");
                LoadDefaultConfig();
            }

            NextTick(SaveConfig);
        }

        protected override void LoadDefaultConfig() => config = Configuration.GetNewConfiguration();
        protected override void SaveConfig() => Config.WriteObject(config);

        #endregion

        #region Hooks
        object OnDispenserGather(ResourceDispenser dispenser, BaseEntity entity, Item item)
        {
            if (dispenser.gatherType != (ResourceDispenser.GatherType)2 || dispenser.name == "assets/prefabs/player/player_corpse.prefab") return null;
            var player = (BasePlayer)entity;
            if (!config.DefaultLoot)
            {
                GiveItem(player, dispenser.name);
                return false;
            }
            GiveItem(player, dispenser.name);
            return null;

        }
        #endregion

        #region Metods

        public void GiveItem(BasePlayer player,string Animal)
        {
            var ConfigOut = config.AnimalSettings[Animal];
            var ConfigOutShortname = ConfigOut.ElementAt(UnityEngine.Random.Range(0, ConfigOut.Count)).Key;

            Item item = ItemManager.CreateByName(ConfigOutShortname, RandomAmount(Animal), 0);
            player.GiveItem(item); 
        }

        public int RandomAmount(string Animal)
        {
            var ConfigOut = config.AnimalSettings[Animal];
            var ConfigOutAmount = ConfigOut.ElementAt(UnityEngine.Random.Range(0, ConfigOut.Count)).Value;
            int Amount = UnityEngine.Random.Range(ConfigOutAmount.MinimumAmount, ConfigOutAmount.MaximumAmount);
            return Amount;
        }

        #endregion
    }
}

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