C#:
// Все права принадлежат дискорд сообществу https://discord.gg/VgNHPpNrz6
using System;
using System.Linq;
using UnityEngine;
namespace Oxide.Plugins
{
[Info("Purifier Config", "Shady", "1.0.4", ResourceId = 1911)]
[Description("Tweak settings for water purifiers.")]
class PurifierConfig : RustPlugin
{
bool init = false;
#region Config
int WPM;
int WaterRatio;
protected override void LoadDefaultConfig()
{
Config["WaterToProcessPerMinute"] = WPM = GetConfig("WaterToProcessPerMinute", 120);
Config["FreshWaterRatio"] = WaterRatio = GetConfig("FreshWaterRatio", 4);
SaveConfig();
}
#endregion
#region Hooks
void OnServerInitialized()
{
var purifiers = BaseEntity.serverEntities?.Where(p => p != null && (p is WaterPurifier))?.Select(p => p as WaterPurifier)?.ToList() ?? null;
if (purifiers != null && purifiers.Count > 0)
{
for (int i = 0; i < purifiers.Count; i++) ConfigurePurifier(purifiers[i]);
Puts("Configured " + purifiers.Count.ToString("N0") + " water purifiers successfully!");
}
init = true;
}
void Init() => LoadDefaultConfig();
void OnEntitySpawned(BaseNetworkable entity)
{
if (entity == null || !init || !(entity is WaterPurifier)) return;
var purifier = entity?.GetComponent<WaterPurifier>() ?? null;
if (purifier != null) ConfigurePurifier(purifier);
}
#endregion
#region ConfigurePurifiers
void ConfigurePurifier(WaterPurifier purifier)
{
if (purifier == null) return;
purifier.waterToProcessPerMinute = WPM;
purifier.freshWaterRatio = WaterRatio;
}
#endregion
#region Util
T GetConfig<T>(string name, T defaultValue) { return (Config[name] == null) ? defaultValue : (T)Convert.ChangeType(Config[name], typeof(T)); }
#endregion
}
}