Для правильной инициализации плагина с сервером Rust в функции OnServerInitialized, вам следует удостовериться, что все необходимые зависимости и объекты корректно инициализированы. Вот исправленный код с уточненной логикой инициализации:Исправь иницилизацию с сервером раст
C#:
using System;
using Oxide.Core;
using Oxide.Core.Plugins;
using System.Collections.Generic;
using UnityEngine;
using Newtonsoft.Json;
namespace Oxide.Plugins
{
[Info("RandomItem", "YourName", "1.0.0")]
class RandomItem : RustPlugin
{
private int timerInterval = 60;
void Init()
{
LoadConfigValues();
}
void LoadConfigValues()
{
timerInterval = GetConfigValue("TimerInterval", timerInterval);
SaveConfig();
}
int GetConfigValue(string key, int defaultValue)
{
if (Config[key] == null)
{
Config[key] = defaultValue;
return defaultValue;
}
return Convert.ToInt32(Config[key]);
}
void SaveConfig() => Config.WriteObject(new { TimerInterval = timerInterval }, true);
void OnServerInitialized()
{
timer.Every(timerInterval, () =>
{
GiveRandomItemToAllPlayers();
});
Puts("RandomItem плагин успешно инициализирован.");
}
void GiveRandomItemToAllPlayers()
{
List<ItemDefinition> allItems = ItemManager.GetItemDefinitions();
if (allItems == null || allItems.Count == 0)
{
PrintWarning("Ошибка: Список всех предметов пуст.");
return;
}
foreach (BasePlayer player in BasePlayer.activePlayerList)
{
string randomItem = GetRandomItem(allItems);
GiveItemToPlayer(player, randomItem);
}
}
string GetRandomItem(List<ItemDefinition> allItems)
{
int randomIndex = UnityEngine.Random.Range(0, allItems.Count);
return allItems[randomIndex].shortname;
}
void GiveItemToPlayer(BasePlayer player, string itemShortName)
{
Item item = ItemManager.CreateByName(itemShortName);
if (item != null)
{
player.GiveItem(item);
SendReply(player, $"Вы получили предмет: {item.info.displayName.translated}");
}
}
}
}
Этот код учитывает инициализацию плагина с сервером Rust при старте, обеспечивая корректное выполнение логики и взаимодействие с игровыми объектами. После внесения изменений сохраните код и перезагрузите плагин на сервере Rust для применения обновленной логики.