Для создания плагина на подобие EarlyQ (Early Queue) в игре Rust, который позволяет игрокам ставить себя в очередь на сервер заранее, вот пример кода плагина, который может быть адаптирован для вашей цели:
C#:
using System.Collections.Generic;
using Oxide.Core;
using Oxide.Core.Libraries;
using UnityEngine;
namespace Oxide.Plugins
{
[Info("EarlyQ", "YourName", "1.0.0")]
class EarlyQ : RustPlugin
{
private Dictionary<ulong, QueueData> playerQueueData = new Dictionary<ulong, QueueData>();
class QueueData
{
public string playerName;
public bool isQueued;
}
void OnPlayerInit(BasePlayer player)
{
if (!playerQueueData.ContainsKey(player.userID))
{
playerQueueData.Add(player.userID, new QueueData { playerName = player.displayName, isQueued = false });
}
}
[ChatCommand("earlyq")]
void cmdEarlyQ(BasePlayer player, string command, string[] args)
{
if (!playerQueueData.ContainsKey(player.userID))
{
player.ChatMessage("An error occurred while trying to queue. Please try again.");
return;
}
if (args.Length > 0 && args[0].ToLower() == "leave")
{
playerQueueData[player.userID].isQueued = false;
player.ChatMessage("You have been removed from the early queue.");
}
else
{
playerQueueData[player.userID].isQueued = true;
player.ChatMessage("You have been added to the early queue.");
}
}
void OnPlayerDisconnected(BasePlayer player)
{
if (playerQueueData.ContainsKey(player.userID))
{
playerQueueData.Remove(player.userID);
}
}
void OnPlayerSleepEnded(BasePlayer player)
{
if (playerQueueData.ContainsKey(player.userID) && playerQueueData[player.userID].isQueued)
{
// Code to handle early queue logic when the player wakes up
// For example, move the player to a specific location or perform a specific action
}
}
}
}
Этот плагин позволяет игрокам ставить себя в очередь на сервер заранее с помощью команды /earlyq. Они могут войти в очередь или выйти из нее. Когда игрок просыпается после сна, плагин выполняет действия, связанные с ранней очередью (например, перемещение игрока в определенное место или выполнение определенного действия).
Помните, что этот код является примером и может потребовать настройки и дорабботки в зависимости от ваших требований. Не забудьте скомпилировать и загрузить плагин на ваш сервер Rust. Если возникнут вопросы или потребуется дополнительная помощь, не стесняйтесь обращаться!