C#:
using Oxide.Game.Rust.Cui;
using UnityEngine;
using System;
using System.Linq;
using Oxide.Core;
using System.Globalization;
using Newtonsoft.Json;
using System.Collections.Generic;
using Oxide.Core.Libraries.Covalence;
using Random = UnityEngine.Random;
namespace Oxide.Plugins
{
[Info("SnyxSeedOres", "LAGZYA", "0.0.2")]
class SnyxSeedOres: RustPlugin
{
public class SemenaTypes
{
[JsonProperty("Ресурс который будеь спавнить семя(Лучше не менять)")]
public string semena;
}
public class ConfigData
{
[JsonProperty("Шанс 0-100")]
public int shans;
[JsonProperty("Имя семени")]
public string sname;
[JsonProperty("Скин семени")]
public ulong skin;
[JsonProperty("Настройка семя")]
public List<SemenaTypes> types;
}
public ConfigData cfg;
protected override void LoadConfig()
{
base.LoadConfig();
cfg = Config.ReadObject<ConfigData>();
}
protected override void SaveConfig()
{
Config.WriteObject(cfg);
}
protected override void LoadDefaultConfig()
{
cfg = new ConfigData
{
shans = 5,
sname = "Семя",
skin = 1897083293,
types = new List<SemenaTypes>
{
new SemenaTypes
{
semena = "assets/bundled/prefabs/autospawn/resource/ores/stone-ore.prefab", // не менять
},
new SemenaTypes
{
semena = "assets/bundled/prefabs/autospawn/resource/ores/sulfur-ore.prefab", // не менять
},
new SemenaTypes
{
semena = "assets/bundled/prefabs/autospawn/resource/ores/metal-ore.prefab", // не менять
}
},
};
}
void OnDispenserGather(ResourceDispenser dispenser, BaseEntity entity, Item item)
{
var seme4kas = ItemManager.CreateByName("seed.hemp", 1);
seme4kas.name = cfg.sname;
seme4kas.skin = cfg.skin;
if (dispenser.gatherType == ResourceDispenser.GatherType.Ore)
{
if (Random.Range(0, 100) <= cfg.shans)
{
seme4kas.MoveToContainer((entity as BasePlayer).inventory.containerMain);
}
}
}
private object CanStackItem(Item item, Item target)
{
if (item.skin == cfg.skin)
{
return true;
}
return null;
}
private Item OnItemSplit(Item item, int amount)
{
if (item.skin == cfg.skin)
{
item.amount -= amount;
var newItem = ItemManager.Create(item.info, amount, item.skin);
newItem.name = item.name;
return newItem;
}
return null;
}
private object CanCombineDroppedItem(WorldItem first, WorldItem second)
{
return CanStackItem(first.item, second.item);
}
//[ChatCommand("ru4ka")]
void CmdGive(BasePlayer player)
{
var seme4ka = ItemManager.CreateByName("seed.hemp", 1);
seme4ka.name = cfg.sname;
seme4ka.skin = cfg.skin;
seme4ka.MoveToContainer(player.inventory.containerMain);
}
void OnEntityBuilt(Planner planner, GameObject gameobject, BasePlayer player)
{
BaseEntity entity = gameobject.ToBaseEntity();
if(entity == null) return;
if (entity.skinID != cfg.skin) return;
entity.Kill();
Vector3 ePos = entity.transform.position;
Effect.server.Run("assets/prefabs/misc/orebonus/effects/bonus_finish.prefab", entity.transform.position);
Effect.server.Run("assets/prefabs/misc/orebonus/effects/hotspot_death.prefab", entity.transform.position);
int type = UnityEngine.Random.Range(0, cfg.types.Count);
BaseEntity Semeni4ka = GameManager.server.CreateEntity(cfg.types[type].semena, ePos, entity.transform.rotation, true);
Semeni4ka.Spawn();
}
void OnServerInitialized()
{
PrintError("[*][*][*][*][*][*][*][*][*]");
PrintError("[*] Creater: SnyxCloud [*]");
PrintError("[*][*][*][*][*][*][*][*][*]");
}
}
}