C#:
using UnityEngine;
namespace Oxide.Plugins {
[Info("HumanHeart", "wazzzup", "1.1.0")]
[Description("HumanHeart")]
public class HumanHeart : RustPlugin {
ConfigData configData;
class ConfigData {
public string heartName = "Человеческое сердце<size=24>\n</size><size=12> Съешь, чтобы пополнить силы---------------</size>";
}
protected override void LoadDefaultConfig() {
configData = new ConfigData();
SaveConfig(configData);
}
void SaveConfig(ConfigData config) => Config.WriteObject(config, true);
void Init() {
configData = Config.ReadObject<ConfigData>();
SaveConfig(configData);
}
void OnDispenserGather(ResourceDispenser dispenser, BaseEntity entity, Item item) {
if (item.info.shortname=="skull.human") {
Item byItemId = ItemManager.CreateByName("black.raspberries", 1, 2010735139);
byItemId.name = configData.heartName;
entity.GiveItem(byItemId, BaseEntity.GiveItemReason.ResourceHarvested);
}
}
void OnServerInitialized() {
cmd.AddConsoleCommand("giveheart", this, "cmdGive");
}
void cmdGive(ConsoleSystem.Arg arg) {
var player = arg?.Player() ?? null;
if (player?.net.connection.authLevel < 2) return;
if (arg.Args == null || arg.Args.Length < 1) {
SendReply(arg, "bad syntax");
return;
}
BasePlayer targetPlayer = BasePlayer.Find(arg.Args[0]);
if (targetPlayer == null) {
SendReply(arg, "error player not found for give");
return;
}
Item item = ItemManager.CreateByName("black.raspberries", 1, 2010735139);
item.name = configData.heartName;
if (!targetPlayer.inventory.GiveItem(item)) {
item.Drop(targetPlayer.inventory.containerMain.dropPosition, targetPlayer.inventory.containerMain.dropVelocity, new Quaternion());
}
}
object CanStackItem(Item item, Item anotherItem) {
if (item.info.shortname == "black.raspberries" && item.skin != anotherItem.skin) {
return false;
}
return null;
}
object OnItemSplit(Item item, int split_Amount) {
if (item.info.shortname != "black.raspberries") return null;
Item byItemId = ItemManager.CreateByItemID(item.info.itemid, 1, item.skin);
item.amount -= split_Amount;
byItemId.amount = split_Amount;
item.MarkDirty();
return byItemId;
}
}
}