using Random = UnityEngine.Random; using Newtonsoft.Json; using System.Collections.Generic; namespace Oxide.Plugins { [Info("Forest Berries", "Castom", "1.0.3")] class ForestBerries : RustPlugin { private Configurarion config; public class Configurarion { [JsonProperty(PropertyName = "[Record Items]")] public Dictionary items = new Dictionary(); internal class ItemRecord { [JsonProperty(PropertyName = "Collectible Pickup Item Name")] public string pickupName; [JsonProperty(PropertyName = "Shortname Item That Will Drop")] public string itemDropped; [JsonProperty(PropertyName = "Chance To Drop Item")] public float chance; [JsonProperty(PropertyName = "Min Amount To Drop")] public int amountMin; [JsonProperty(PropertyName = "Max Amount To Drop")] public int amountMax; } } protected override void LoadDefaultConfig() { config = new Configurarion() { items = new Dictionary{ ["Mushroom"] = new Configurarion.ItemRecord() { pickupName = "Mushroom", itemDropped = "black.berry", chance = 100, amountMin = 10, amountMax = 10 }, ["Sulfur"] = new Configurarion.ItemRecord() { pickupName = "Sulfur Ore", itemDropped = "black.berry", chance = 100, amountMin = 10, amountMax = 10 }, } }; SaveConfig(); } protected override void SaveConfig() => Config.WriteObject(config); private void Loaded() { try { config = Config.ReadObject(); } catch { LoadDefaultConfig(); } } object OnCollectiblePickup(CollectibleEntity item, BasePlayer player) { // player.ChatMessage(item.itemName.english); To debug the name of the item you need // player.ChatMessage(item.itemName.token); Delete // to enable :) var configItem = config.items.Values; foreach (var settings in configItem) { if (item.itemName.english.Contains(settings.pickupName) || item.itemName.token.Contains(settings.pickupName)) { if (Random.Range(0f, 100f) < settings.chance) //Шанс выпадения ягод : Chance of berries falling out { var amount = Random.Range(settings.amountMin, settings.amountMax); //Рандомное количество ягод за один сбор (от 1 до 3) : Random number of berries per harvest (from 1 to 3) Item berry = ItemManager.CreateByName(settings.itemDropped, amount); player.inventory.GiveItem(berry); } } } return null; } } }