C#:
using System.Collections.Generic;
using Oxide.Core.Plugins;
using UnityEngine;
namespace Oxide.Plugins {
[Info("GoldSkull", "wazzzup", "1.1.1")]
[Description("GoldSkull")]
public class GoldSkull : RustPlugin {
[PluginReference]
Plugin LootItems;
public ConfigData configData;
public class ConfigData {
public string recycleContainerName = "skull";
public string crushContainerName = "skull_crush";
public string itemName = "Золотой череп";
}
protected override void LoadDefaultConfig() {
var config = new ConfigData();
SaveConfig(config);
}
void SaveConfig(ConfigData config) => Config.WriteObject(config, true);
void Init() {
configData = Config.ReadObject<ConfigData>();
SaveConfig(configData);
}
void OnServerInitialized() {
cmd.AddConsoleCommand("giveskull", 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("skull.human", 1, 2226172494);
item.name = configData.itemName;
if (!targetPlayer.inventory.GiveItem(item)) {
item.Drop(targetPlayer.inventory.containerMain.dropPosition, targetPlayer.inventory.containerMain.dropVelocity, new Quaternion());
}
}
object OnRecycleItem(Recycler recycler, Item item) {
if (item.info.shortname == "skull.human" && item.skin== 2226172494) {
List<Item> items = LootItems?.Call("ManualSpawn", recycler.inventory, "skull", true) as List<Item>;
if (items != null) {
item.UseItem(1);
foreach (Item itm in items) {
recycler.MoveItemToOutput(itm);
}
}
return true;
}
return null;
}
object CanRecycle(Recycler recycler, Item item) {
if (item.info.shortname== "skull.human" && item.skin == 2226172494) return true;
return null;
}
object OnItemAction(Item item, string action, BasePlayer player) {
if (action == "crush" && item.skin == 2226172494) {
LootItems?.Call("ManualSpawn", player.inventory.containerMain, "skull_crush");
item.UseItem(1);
return true;
}
return null;
}
}
}