Для проверки доступных предметов на клиенте игрока вам необходимо использовать информацию из библиотеки BlueprintData. Вот обновленный код плагина RandomItem с проверкой доступных предметов на клиенте игрока:Проверка на предметы с клиента игрока
C#:
using System;
using Oxide.Core;
using Oxide.Core.Plugins;
using System.Collections.Generic;
using UnityEngine;
namespace Oxide.Plugins
{
[Info("RandomItem", "YourName", "1.0.0")]
class RandomItem : RustPlugin
{
private int timerInterval = 60;
private const string permissionName = "randomitem.use";
void Init()
{
LoadConfigValues();
permission.RegisterPermission(permissionName, this);
}
void LoadConfigValues()
{
timerInterval = 60; // Устанавливаем значение по умолчанию
}
void OnServerInitialized()
{
timer.Every(timerInterval, () =>
{
GiveRandomItemToAllPlayers();
});
Puts($"Плагин RandomItem успешно инициализирован. Интервал: {timerInterval} секунд.");
}
void GiveRandomItemToAllPlayers()
{
foreach (BasePlayer player in BasePlayer.activePlayerList)
{
if (permission.UserHasPermission(player.UserIDString, permissionName))
{
List<string> availableItems = GetAvailableItemsOnClient(player);
if (availableItems.Count > 0)
{
string randomItem = availableItems[UnityEngine.Random.Range(0, availableItems.Count)];
GiveItemToPlayer(player, randomItem);
}
else
{
PrintWarning($"У игрока {player.displayName} нет доступных предметов на клиенте.");
}
}
}
}
List<string> GetAvailableItemsOnClient(BasePlayer player)
{
List<string> availableItems = new List<string>();
foreach (BlueprintData.BlockInfo blockInfo in player.blueprints)
{
string shortName = blockInfo.blockDef.name;
availableItems.Add(shortName);
}
return availableItems;
}
void GiveItemToPlayer(BasePlayer player, string itemShortName)
{
Item item = ItemManager.CreateByName(itemShortName);
if (item != null)
{
player.GiveItem(item);
SendReply(player, $"<color=green>Вы получили предмет:</color> {item.info.displayName.translated}");
}
}
}
}
Этот код будет использовать информацию о доступных предметах на клиенте игрока из библиотеки BlueprintData. После внесения изменений сохраните код и перезагрузите плагин на сервере Rust. Теперь плагин будет использовать доступные предметы на клиенте для выдачи игрокам.