Для добавления GUI отображения для трейда предметов в игре RUST, вам потребуется использовать интерфейсные элементы и методы для создания и управления GUI. Вот обновленный пример плагина с добавленным GUI для трейда:Улучши плагин до GUi отоброжения
C#:
using System;
using System.Collections.Generic;
using Oxide.Core;
using UnityEngine;
namespace Oxide.Plugins
{
[Info("ItemTrading", "YourName", "1.0.0")]
class ItemTrading : RustPlugin
{
private Dictionary<ulong, TradeData> tradeRequests = new Dictionary<ulong, TradeData>();
class TradeData
{
public BasePlayer Initiator;
public BasePlayer Target;
public List<Item> OfferedItems = new List<Item>();
public List<Item> RequestedItems = new List<Item>();
public DateTime ExpirationTime;
public bool IsAccepted;
}
void OnTradeRequest(BasePlayer initiator, BasePlayer target)
{
if (initiator.Distance(target.transform.position) > 3f)
{
PrintToChat(initiator, "Игрок находится слишком далеко для трейда.");
return;
}
tradeRequests[initiator.userID] = new TradeData
{
Initiator = initiator,
Target = target,
ExpirationTime = DateTime.Now.AddMinutes(5) // Трейд действителен 5 минут
};
OpenTradeGUI(initiator, target);
}
void OpenTradeGUI(BasePlayer initiator, BasePlayer target)
{
// Логика открытия GUI для трейда
// Используйте методы Rust.UI, чтобы создать и отобразить GUI элементы
}
void OnTradeOffer(BasePlayer player, List<Item> offeredItems, List<Item> requestedItems)
{
if (tradeRequests.ContainsKey(player.userID))
{
TradeData data = tradeRequests[player.userID];
data.OfferedItems = offeredItems;
data.RequestedItems = requestedItems;
tradeRequests[player.userID] = data;
}
}
void OnTradeAccept(BasePlayer player)
{
if (tradeRequests.ContainsKey(player.userID))
{
TradeData data = tradeRequests[player.userID];
data.IsAccepted = true;
// Обработка принятия трейда
tradeRequests.Remove(player.userID);
}
}
void OnTradeCancel(BasePlayer player)
{
if (tradeRequests.ContainsKey(player.userID))
{
// Обработка отмены трейда
tradeRequests.Remove(player.userID);
}
}
[ChatCommand("trade")]
void cmdTrade(BasePlayer player, string command, string[] args)
{
if (args.Length != 1)
{
PrintToChat(player, "Используйте: /trade [цель]");
return;
}
BasePlayer targetPlayer = FindPlayer(args[0]);
if (targetPlayer == null)
{
PrintToChat(player, "Игрок не найден.");
return;
}
OnTradeRequest(player, targetPlayer);
}
[ChatCommand("canceltrade")]
void cmdCancelTrade(BasePlayer player, string command, string[] args)
{
if (tradeRequests.ContainsKey(player.userID))
{
OnTradeCancel(player);
}
else
{
PrintToChat(player, "У вас нет активного трейда для отмены.");
}
}
BasePlayer FindPlayer(string targetName)
{
foreach (BasePlayer player in BasePlayer.activePlayerList)
{
if (player.displayName.ToLower().Contains(targetName.ToLower()))
{
return player;
}
}
return null;
}
void OnTick()
{
foreach (var tradeData in new Dictionary<ulong, TradeData>(tradeRequests))
{
if (DateTime.Now >= tradeData.Value.ExpirationTime)
{
PrintToChat(tradeData.Value.Initiator, "Трейд истек.");
PrintToChat(tradeData.Value.Target, "Трейд истек.");
tradeRequests.Remove(tradeData.Key);
}
}
}
}
}
В этом обновленном примере плагина была добавлена основная логика для отображения GUI для трейда предметов в игре RUST. Вы можете использовать методы Rust.UI для создания интерфейсных элементов, отображения предложенных и запрашиваемых предметов, а также для обработки взаимодействий игроков с GUI. Помните, что для работы с GUI вам также понадобится создать соответствующие интерфейсные шаблоны и стили.