C#:
// Все права принадлежат дискорд сообществу https://discord.gg/VgNHPpNrz6
using System;
using System.Collections.Generic;
using Newtonsoft.Json;
namespace Oxide.Plugins
{
[Info("Auto Reset Targets", "Default", "1.0.5")]
[Description("Automatically resets knocked down targets after a set amount of time")]
public class AutoResetTargets : RustPlugin
{
public float activeTime;
bool Changed = false;
private const string permissionName = "autoresettargets.use";
private void OnEntityTakeDamage(BaseCombatEntity entity, HitInfo info)
{
ReactiveTarget target = entity as ReactiveTarget;
var p = entity.OwnerID.ToString();
if (target != null && target.IsKnockedDown() && permission.UserHasPermission(p, permissionName))
{
timer.Once(activeTime, () =>
{
target.ResetTarget();
});
}
}
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))
{
value = defaultValue;
data[datavalue] = value;
Changed = true;
}
return value;
}
void LoadVariables()
{
activeTime = Convert.ToSingle(GetConfig("ART", "Time until reset", 1.0f));
if (!Changed) return;
SaveConfig();
Changed = false;
}
protected override void LoadDefaultConfig()
{
Config.Clear();
LoadVariables();
}
void Init()
{
LoadVariables();
permission.RegisterPermission(permissionName, this);
}
}
}