C#:
// Все права принадлежат дискорд сообществу https://discord.gg/VgNHPpNrz6
using System;
using System.Collections.Generic;
namespace Oxide.Plugins
{
[Info("Radiation Manager", "redBDGR", "1.0.0")]
[Description("Allows for slight management of radiated zones around the map")]
class RadiationManager : RustPlugin
{
private bool Changed;
// Minimal
private float minimalAmount;
// Low
private float lowAmount;
// Medium
private float mediumAmount;
// High
private float highAmount;
private void OnServerInitialized()
{
LoadVariables();
foreach (TriggerRadiation rad in UnityEngine.Object.FindObjectsOfType<TriggerRadiation>())
{
switch (rad.radiationTier)
{
case TriggerRadiation.RadiationTier.MINIMAL:
rad.RadiationAmountOverride = minimalAmount;
break;
case TriggerRadiation.RadiationTier.LOW:
rad.RadiationAmountOverride = lowAmount;
break;
case TriggerRadiation.RadiationTier.MEDIUM:
rad.RadiationAmountOverride = mediumAmount;
break;
case TriggerRadiation.RadiationTier.HIGH:
rad.RadiationAmountOverride = highAmount;
break;
}
}
}
protected override void LoadDefaultConfig()
{
Config.Clear();
LoadVariables();
}
private void LoadVariables()
{
minimalAmount = Convert.ToSingle(GetConfig("Minimal Tier Zones", "Radiation Amount", 2f));
lowAmount = Convert.ToSingle(GetConfig("Low Tier Zones", "Radiation Amount", 10f));
mediumAmount = Convert.ToSingle(GetConfig("Medium Tier Zones", "Radiation Amount", 25f));
highAmount = Convert.ToSingle(GetConfig("High Tier Zones", "Radiation Amount", 51)); // Change to 50 to get rid of "radiation leak"
if (!Changed) return;
SaveConfig();
Changed = false;
}
private object GetConfig(string menu, string datavalue, object defaultValue)
{
var data = Config[menu] as Dictionary<string, object>;
if (data == null)
{
data = new Dictionary<string, object>();
Config[menu] = data;
Changed = true;
}
object value;
if (data.TryGetValue(datavalue, out value)) return value;
value = defaultValue;
data[datavalue] = value;
Changed = true;
return value;
}
}
}