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

FREE LootMultiplier : 1.1.3 1.1.3

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

namespace Oxide.Plugins {
    [Info("Loot Multiplier", "Pho3niX90", "1.1.3")]
    [Description("Multiply items in all loot containers in the game")]
    public class LootMultiplier : RustPlugin {
        #region Oxide Hooks
        void OnServerInitialized() {
            RefreshLootContainers();
        }

        private void OnLootSpawn(StorageContainer container) {
            timer.Once(config.delay, () => {
                Multiply(container);
            });
        }

        #endregion

        #region Core

        private void Multiply(StorageContainer container) {
            if (container == null) {
                return;
            }

            var multiplier = 0;
            if (config.containers.TryGetValue(container.ShortPrefabName, out multiplier) == false) {
                return;
            }

            foreach (var item in container.inventory.itemList.ToArray()) {
                var shortname = item.info.shortname;
                var category = item.info.category.ToString();

                if (config.blacklist.Contains(shortname) || config.blacklist.Contains(category)) {
                    continue;
                }

                if (item.hasCondition && config.multiplyItemsWithCondition == false) {
                    continue;
                }

                item.amount *= multiplier;
            }
        }

        private void RefreshLootContainers() {
            int count = 0;
            LootContainer[] loot = BaseNetworkable.FindObjectsOfType<LootContainer>();
            foreach (var container in loot) {
                ClearContainer(container);
                container.PopulateLoot();
                Multiply(container);
                count++;
            }
            Puts("Repopulated " + count.ToString() + " loot containers.");
        }

        void ClearContainer(LootContainer container) {
            while (container.inventory.itemList.Count > 0) {
                var item = container.inventory.itemList[0];
                item.RemoveFromContainer();
                item.Remove(0f);
            }
        }
        #endregion

        #region Configuration

        private static ConfigData config;

        private class ConfigData {
            [JsonProperty(PropertyName = "Shortname -> Multiplier")]
            public Dictionary<string, int> containers = new Dictionary<string, int>();

            [JsonProperty(PropertyName = "Multiply items with condition")]
            public bool multiplyItemsWithCondition;

            [JsonProperty(PropertyName = "Delay after spawning crate to multiply it")]
            public float delay;

            [JsonProperty(PropertyName = "Item Blacklist")]
            public List<string> blacklist = new List<string>();
        }

        private ConfigData GetDefaultConfig() {
            return new ConfigData {
                multiplyItemsWithCondition = false,
                delay = 1f,
                containers = new Dictionary<string, int>
                {
                    {"loot-barrel-1", 10},
                    {"loot-barrel-2", 10},
                    {"loot_barrel_1", 10},
                    {"loot_barrel_2", 10},
                    {"crate_underwater_basic", 10},
                    {"crate_underwater_advanced", 10},
                    {"foodbox", 10},
                    {"trash-pile-1", 210},
                    {"minecart", 10},
                    {"oil_barrel", 10},
                    {"crate_basic", 10},
                    {"crate_mine", 2},
                    {"crate_tools", 2},
                    {"crate_normal", 2},
                    {"crate_normal_2", 2},
                    {"crate_normal_2_food", 2},
                    {"crate_normal_2_medical", 2},
                    {"crate_elite", 2},
                    {"codelockedhackablecrate", 10},
                    {"bradley_crate", 10},
                    {"heli_crate", 10},
                    {"supply_drop", 10}
                },
                blacklist = new List<string> {
                }
            };
        }

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

            try {
                config = Config.ReadObject<ConfigData>();

                if (config == null) {
                    LoadDefaultConfig();
                }
            } catch {
                LoadDefaultConfig();
            }

            SaveConfig();
        }

        protected override void LoadDefaultConfig() {
            PrintError("Configuration file is corrupt(or not exists), creating new one!");
            config = GetDefaultConfig();
        }

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

        #endregion
    }
}

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