C#:
using System;
using System.Collections.Generic;
using Newtonsoft.Json;
using Oxide.Core.Plugins;
using UnityEngine;
namespace Oxide.Plugins
{
[Info("Extract", "vetrovskiy", "1.0.23")]
[Description("Setting up the dispenser bonus multiplier")]
public class Extract : RustPlugin
{
private const bool LangEn = true;
private const string PermissionUse = "extract.use";
private PluginConfig _config;
private class PluginConfig
{
[JsonProperty(LangEn ? "Bonus multiplier" : "Бонус коэффициент")]
public int MultiplierValue = 4;
[JsonProperty(LangEn ? "Use a random chance?" : "Использовать рандом шанс?")]
public bool UseChance = false;
[JsonProperty(LangEn ? "Bonus drop chance (from 1% to 100%)" : "Шанс бонусного дропа (от 1% до 100%)")]
public int ChanceValue = 50;
}
protected override void LoadConfig()
{
base.LoadConfig();
try
{
_config = Config.ReadObject<PluginConfig>() ?? throw new Exception();
CheckConfig();
}
catch
{
PrintError(LangEn ? "Errors have been identified in your configuration. Recreating the config." : "Были найдены ошибки в конфиге. Пересоздаю конфиг");
LoadDefaultConfig();
}
NextTick(SaveConfig);
}
protected override void LoadDefaultConfig() => _config = new PluginConfig();
protected override void SaveConfig() => Config.WriteObject(_config);
private void CheckConfig()
{
if (_config.MultiplierValue <= 0)
_config.MultiplierValue = 4;
if (_config.ChanceValue <= 0 || _config.ChanceValue > 100)
_config.ChanceValue = 50;
}
private void OnServerInitialized()
{
permission.RegisterPermission(PermissionUse, this);
Puts(LangEn ? "Successfully loaded" : "Успешно загружен");
}
private object OnDispenserBonus(ResourceDispenser resource, BasePlayer player, Item item)
{
if (!permission.UserHasPermission(player.UserIDString, PermissionUse)) return null;
if (_config.UseChance)
{
float randomAmount = UnityEngine.Random.Range(0, 100);
if (randomAmount >= _config.ChanceValue) return null;
}
item.amount *= _config.MultiplierValue;
return item;
}
}
}