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

FREE WaterPassthrough : 1.0.1 1.0.1

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

// Updates
// [1.0.1]
// Bug Fix: Constant values have been moved from the configuration file to the plugin.namespace Oxide.Plugins
{
    [Info("Water Passthrough", "ArtiOM", "1.0.1")]
    [Description("Change the default water flow from containers to liquid.")]
    internal class WaterPassthrough : RustPlugin
    {

     public Dictionary<string, int> defaultVar = new Dictionary<string, int>() {
            {"waterbarrel", 12},
            {"water.pump.deployed", 12},
            {"poweredwaterpurifier.deployed", 12},
            {"poweredwaterpurifier.storage", 12},
            {"waterpurifier.deployed", 12},
            {"waterpurifier.storage", 12},
            {"water_catcher_large", 12},
            {"water_catcher_small", 6}
            };

     #region Config
        private static ConfigData config;

        private class PassthroughSettings
        {

            [JsonProperty(PropertyName = "Precent(true)/Amount(false)")]
            public bool type;

            [JsonProperty(PropertyName = "Value")]
            public double value;

        }
        private class ConfigData
        {
            [JsonProperty(PropertyName = "Passthrough Settings")]
            public Dictionary<string, PassthroughSettings> passthroughSettings = new Dictionary<string, PassthroughSettings>();
        }

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

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

            SaveConfig();
        }

        protected override void LoadDefaultConfig()
        {
            config = new ConfigData
            {
                passthroughSettings = new Dictionary<string, PassthroughSettings>
                {
                    {"waterbarrel", new PassthroughSettings {type = true, value = 1} },
                    {"water.pump.deployed", new PassthroughSettings {type = true, value = 1} },
                    {"poweredwaterpurifier.deployed", new PassthroughSettings {type = true, value = 1} },
                    {"poweredwaterpurifier.storage", new PassthroughSettings {type = true, value = 1} },
                    {"waterpurifier.deployed", new PassthroughSettings {type = true, value = 1} },
                    {"waterpurifier.storage", new PassthroughSettings {type = true, value = 1} },
                    {"water_catcher_large", new PassthroughSettings {type = true, value = 1} },
                    {"water_catcher_small", new PassthroughSettings {type = true, value = 1} },
                }
            };
        }

        protected override void SaveConfig()
        {
            Config.WriteObject(config);
        }
        #endregion
     #region Hooks
        void Init()
        {
            LoadConfig();
        }

        void OnEntitySpawned(LiquidContainer container)
        {
            if(config.passthroughSettings.ContainsKey(container.ShortPrefabName))
                ChangeLiquidContainer(container);
        }

        void OnServerInitialized(bool initial)
        {
            Puts("Loading liquid container configuration! The server may be lagging!");

            int counter = 0;
            foreach (LiquidContainer container in BaseNetworkable.FindObjectsOfType<LiquidContainer>())
            {
                if (config.passthroughSettings.ContainsKey(container.ShortPrefabName))
                {
                    if(ChangeLiquidContainer(container))
                        counter++;
                }
#if DEBUG
                PrintWarning($"{container.ShortPrefabName}, {container.autofillTickAmount}, x{container.autofillTickRate}");
#endif
            }
            Puts($"Approved changes in {counter} containers.");
        }

        bool ChangeLiquidContainer(LiquidContainer container)
        {
            PassthroughSettings setup;
            if (config.passthroughSettings.TryGetValue(container.ShortPrefabName, out setup))
            {
                if(defaultVar.TryGetValue(container.ShortPrefabName, out int value))
                {
                    value = value * 2;
                    if (setup.type)
                    {
                        if (container.autofillTickAmount == (int)(setup.value * value))
                            return false;

                        container.autofillTickAmount = (int)(setup.value * value);
                        container.maxOutputFlow = (int)(container.autofillTickAmount / container.autofillTickRate);
                    }
                    else
                    {
                        if (container.autofillTickAmount == (int)setup.value)
                            return false;

                        container.autofillTickAmount = (int)setup.value;
                        container.maxOutputFlow = (int)(setup.value / container.autofillTickRate);
                    }   
                }
                else
                {
                    Puts("Const value is not set by plugin author! Contact to ArtiIOMI");
                }
            }
            return true;
        }
     #endregion
    }
}

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