C#:
// Все права принадлежат дискорд сообществу https://discord.gg/VgNHPpNrz6
using System.Collections.Generic;
using System.Linq;
namespace Oxide.Plugins
{
[Info("NoNudity", "Absolut", "1.0.3", ResourceId = 2394)]
class NoNudity : RustPlugin
{
void OnServerInitialized()
{
LoadVariables();
foreach (var player in BasePlayer.activePlayerList)
OnPlayerInit(player);
}
void OnPlayerInit(BasePlayer player)
{
if (player.inventory.containerWear.itemList.Count() == 0) { GivePants(player); return; }
Item valid = player.inventory.containerWear.itemList.Where(k => Pants.Contains(k.info.shortname)).Select(k => k).FirstOrDefault();
if (valid == null) GivePants(player);
}
void OnPlayerRespawned(BasePlayer player)
{
GivePants(player);
}
void GivePants(BasePlayer player)
{
var definition = ItemManager.FindItemDefinition(configData.TypeOfPants_Shortname);
if (definition == null) definition = ItemManager.FindItemDefinition("pants");
Item newPants = ItemManager.Create(definition, 1, configData.PantsSkin);
if (newPants == null) newPants = ItemManager.Create(definition, 1, 0);
newPants.MoveToContainer(player.inventory.containerWear);
}
object CanMoveItem(Item item, PlayerInventory playerLoot, uint targetContainer, int targetSlot)
{
if (item == null || playerLoot == null) return null;
if (playerLoot.containerWear.itemList.Contains(item) && Pants.Contains(item.info.shortname)) return false;
Item valid = playerLoot.containerWear.itemList.Where(k => Pants.Contains(k.info.shortname)).Select(k => k).FirstOrDefault();
if (Pants.Contains(item.info.shortname) && valid == null)
{
timer.Once(1, () => MovePants(item, playerLoot.containerWear));
return false;
}
if (playerLoot.containerWear.uid == targetContainer && valid != null && !Pants.Contains(item.info.shortname) && targetSlot == valid.position) return false;
return null;
}
void MovePants(Item item, ItemContainer cont)
{
item.MoveToContainer(cont);
}
object OnItemAction(Item item, string cmd)
{
if (item == null || item.parent == null || item.parent.playerOwner == null) return null;
if (cmd == "drop" && item.parent.playerOwner.inventory.containerWear.itemList.Contains(item) && Pants.Contains(item.info.shortname)) return true;
return null;
}
private List<string> Pants = new List<string>
{
{"pants"},
{"pants.shorts"},
{"hazmat.pants"},
{"burlap.trousers"},
{"attire.hide.pants"},
{"attire.hide.skirt"},
{"roadsign.kilt"},
{"heavy.plate.pants"},
{"wood.armor.pants"},
{"hazmatsuit" },
};
private ConfigData configData;
class ConfigData
{
public string TypeOfPants_Shortname { get; set; }
public ulong PantsSkin { get; set; }
}
private void LoadVariables()
{
LoadConfigVariables();
SaveConfig();
}
protected override void LoadDefaultConfig()
{
var config = new ConfigData
{
PantsSkin = 0,
TypeOfPants_Shortname = "pants",
};
SaveConfig(config);
}
private void LoadConfigVariables() => configData = Config.ReadObject<ConfigData>();
void SaveConfig(ConfigData config) => Config.WriteObject(config, true);
}
}