ImServerGUI — маленький framework для быстрого создания интерфейсов в Server Specific Settings на серверах SCP:SL.
~ Я думаю что этот простейший фреймворк пригодиться тем кто хочется сделать меню быстро и на коленке. Так что, думаю, вам понравится. А ещё, возможно, я перепишу его на LabAPI в будущем. Но это не точно.
- Упрощённое создание Server Specific GUI.
- Автоматическая отправка интерфейса игрокам при подключении.
- Поддержка разных интерфейсов для разных игроков.
- Линейное верстка в одной функции.
- Удобное добавление элементов через
AddGuiElement().
Для создания собственного GUI необходимо создать класс, наследующийся от ImServerGui.
using Exiled.API.Features;
using Exiled.API.Features.Core.UserSettings;
using ImServerGUI;
namespace AdvancedAdmin
{
public class Menu : ImServerGui
{
public override string GuiId { get; set; } = "AdvancedAdminMenu";
protected override void Gui(Player player)
{
AddGuiElement(
new HeaderSetting(
27000,
"Advanced Admin"
)
);
}
}
}ImServerGUI автоматически обработает подключение игрока и выполняет синхронизацию.
using Exiled.API.Features;
using Exiled.API.Features.Core.UserSettings;
using ImServerGUI;
namespace AdvancedAdmin
{
public class Menu : ImServerGui
{
public override string GuiId { get; set; } = "AdvancedAdminMenu";
protected override void Gui(Player player)
{
if (player.CheckPermission("advancedadmin.admin"))
{
AddGuiElement(
new HeaderSetting(
27000,
"Advanced Admin (Admin)"
)
);
AddGuiElement(
new ButtonSetting(
27001,
"Restart Round",
"Restart"
)
);
}
else if (player.CheckPermission("advancedadmin.moderator"))
{
AddGuiElement(
new HeaderSetting(
27002,
"Advanced Admin (Moderator)"
)
);
}
}
}
}Метод Gui(Player player) вызывается отдельно для каждого игрока.
Plugin.cs
using System;
using Exiled.API.Features;
namespace AdvancedAdmin
{
public class Plugin : Plugin<Config>
{
public override string Name { get; } = "AdvancedAdmin";
public override string Author { get; } = "Morkamo";
public override Version Version { get; } = new Version(1, 0, 0);
public static Plugin Instance { get; private set; }
private Menu Menu { get; set; }
public override void OnEnabled()
{
Instance = this;
Menu = new Menu();
Menu.RegisterGui();
base.OnEnabled();
}
public override void OnDisabled()
{
Menu.UnregisterGui();
Menu = null;
Instance = null;
base.OnDisabled();
}
}
}После запуска:
- Создаётся экземпляр меню.
- ImServerGUI подписывается на необходимые события.
- При подключении игрока вызывается метод
Gui(Player player). - Созданный интерфейс отправляется игроку после подключения на сервер.
Для добавления элементов используется:
AddGuiElement();Так как Gui() получает объект игрока:
protected override void Gui(Player player)вы можете создавать любые условия для отображения UI (может быть особо эффективно в UI для донат-групп):
protected override void Gui(Player player)
{
if (player.CheckPermission("advancedadmin.admin"))
{
AddGuiElement(
new HeaderSetting(
27000,
"Administrator"
)
);
}
}Библиотека предоставляет базовый класс:
public abstract class ImServerGuiОн отвечает за:
- регистрацию событий;
- обработку подключения игроков;
- хранение элементов GUI;
- регистрацию объектов Server Specific Settings.
Разработчику необходимо реализовать только:
protected abstract void Gui(Player player);Внутри этого метода описывается интерфейс конкретного игрока.
Каждый элемент Server Specific Settings должен иметь уникальный ID.
Использование одинаковых ID для разных элементов может привести к конфликтам.
Подходит для создания:
- административных панелей;
- донат-интерфейсов;
- систем управления режимами;
- общедоступных UI.
MIT License