C#:
// Все права принадлежат дискорд сообществу https://discord.gg/VgNHPpNrz6
using System.Collections.Generic;
using System;
using UnityEngine;
using Oxide.Core.Plugins;
namespace Oxide.Plugins
{
[Info("ToggleNoggin", "carny666", "1.0.4", ResourceId = 2725)]
class ToggleNoggin : RustPlugin
{
const string adminPermission = "ToggleNoggin.admin";
const string candlePermission = "ToggleNoggin.candle";
const string minersPermission = "ToggleNoggin.miners";
static string lastHat = "";
void Init()
{
try
{
permission.RegisterPermission(adminPermission, this);
permission.RegisterPermission(candlePermission, this);
permission.RegisterPermission(minersPermission, this);
}
catch (Exception ex)
{
throw new Exception($"Error in Loaded {ex.Message}");
}
}
[ConsoleCommand("togglenoggin")]
void ccToggleNoggin(ConsoleSystem.Arg arg)
{
try
{
var player = arg.Player();
if (player == null) return;
if ((permission.UserHasPermission(player.UserIDString, minersPermission) || permission.UserHasPermission(player.UserIDString, adminPermission)) && arg?.Args != null)
ToggleHat(player, "hat.miner");
else if (permission.UserHasPermission(player.UserIDString, candlePermission) && permission.UserHasPermission(player.UserIDString, adminPermission))
ToggleHat(player, "hat.candle");
}
catch (Exception ex)
{
throw new Exception($"Error in ccToggleNoggin {ex.Message}");
}
}
[ChatCommand("togglenoggin")]
void chcToggleNoggin(BasePlayer player, string command, string[] args)
{
try
{
if (player == null) return;
if ((permission.UserHasPermission(player.UserIDString, adminPermission) || permission.UserHasPermission(player.UserIDString, minersPermission)) && args.Length > 0)
ToggleHat(player, "hat.miner");
else if (permission.UserHasPermission(player.UserIDString, adminPermission) || permission.UserHasPermission(player.UserIDString, candlePermission))
ToggleHat(player, "hat.candle");
}
catch (Exception ex)
{
throw new Exception($"Error in chcToggleNoggin {ex.Message}");
}
}
void ToggleHat(BasePlayer player, string hatItemName)
{
try
{
/// test is hat already exists
if (player.inventory.containerWear.FindItemsByItemName("hat.miner") == null && player.inventory.containerWear.FindItemsByItemName("hat.candle") == null)
{
var hatDef = ItemManager.FindItemDefinition(hatItemName);
// save last hat for removeal next time..lastHat = hatItemName;
if (hatDef != null)
{
Item hatItem = ItemManager.CreateByItemID(hatDef.itemid, 1);
if (hatItem != null)
{
player.inventory.GiveItem(hatItem, player.inventory.containerWear);
hatItem.SetFlag(global::Item.Flag.IsOn, true);
}
}
}
else
{
var p = player.inventory.containerWear.FindItemsByItemName(lastHat);
if (p != null)
p.RemoveFromContainer();
}
}
catch (Exception ex)
{
throw new Exception($"Error in ToggleHat {ex.Message}");
}
}
}
}