Перейти к содержимому

ImGui

Только client ImGui недоступен в server.lua Reflex-модуля.

API Область отображения
Глобальные ImGui:Draw*() Непосредственно поверх всего игрового экрана. Положение задаёт сам модуль.
ImGui:DrawDebugText() Встроенный отладочный блок у края экрана.
Методы ImGuiWindow Внутри отдельного HUD-окна, которое игрок может перемещать и масштабировать в редакторе интерфейса.

Отрисовка выполняется напрямую и не зависит от встроенного HUD-модуля. Все элементы существуют только в кадре, в котором был вызван соответствующий метод.

ImGui рисует элементы только в текущем кадре. Чтобы текст или изображение оставались на экране, вызывайте методы рисования из Scheduler:OnFrame().

Scheduler:OnFrame(function()
ImGui:DrawText(
"Tick: " .. tostring(Time.Tick),
Rect.new(20, 20, 280, 36),
18,
Color.new(1, 1, 1),
TextAnchor.MiddleLeft
)
end)

Окна создаются один раз при загрузке модуля. Перерисовывать каждый кадр нужно только их содержимое.

  • DrawText(), DrawTextPos() и глобальные методы текстур используют экранные координаты в пикселях. Начало координат находится в левом верхнем углу.
  • DrawTextUV() использует нормализованные координаты viewport: (0, 0) — левый нижний угол, (1, 1) — правый верхний.
  • Методы ImGuiWindow используют координаты внутри содержимого окна.

Глобальный слой быстрого интерфейса.

ImGui:DrawDebugText(text: string)

Добавляет строку в отладочный блок у края экрана. Несколько вызовов в одном кадре располагаются друг под другом. Возвращает nil.

ImGui:DrawText(
text: string,
rect: Rect,
fontSize: number = 11,
color: Color? = nil,
alignment: TextAnchor = TextAnchor.MiddleCenter
)

Рисует текст внутри указанной экранной области. Если color не передан, используется встроенный светлый цвет текста. Возвращает nil.

ImGui:DrawTextPos(
text: string,
screenPosition: Vector2,
fontSize: number = 11,
color: Color? = nil,
alignment: TextAnchor = TextAnchor.MiddleCenter
)

Рисует текст в экранной позиции и автоматически подбирает область под содержимое. Возвращает nil.

ImGui:DrawTextUV(
text: string,
viewportPosition: Vector2,
fontSize: number = 11,
color: Color? = nil,
alignment: TextAnchor = TextAnchor.MiddleCenter
)

Рисует автоматически размеренный текст в нормализованной позиции viewport. Значения преобразуются относительно текущих Screen.Width и Screen.Height. Возвращает nil.

ImGui:DrawTexture(texture: Texture, rect: Rect? = nil)

Рисует Texture в указанной экранной области. Если rect не передан, используется вся доступная область глобального слоя. Возвращает nil.

ImGui:DrawTextureColor(texture: Texture, color: Color, rect: Rect? = nil)

Рисует текстуру с цветовой маской. Альфа-канал color управляет прозрачностью. Возвращает nil.

ImGui:AddImGuiWindow(id: string, title: string, rect: Rect): ImGuiWindow

Создаёт плавающее HUD-окно, положение и размер которого пользователь может настроить в редакторе интерфейса.

  • id должен быть непустым и уникальным внутри модуля;
  • title отображается в заголовке окна;
  • rect задаёт начальную позицию и размер в экранных пикселях;
  • один модуль может создать не больше 16 окон.

Возвращает ImGuiWindow. Для пустого id или после достижения лимита возвращает nil.

Плавающее HUD-окно, созданное через ImGui:AddImGuiWindow().

local window = ImGui:AddImGuiWindow(
"status",
"Module status",
Rect.new(40, 120, 320, 140)
)
if window ~= nil then
window:SetVisibilityTypes({
WindowVisibilityType.Match,
WindowVisibilityType.Spectate,
})
Scheduler:OnFrame(function()
window:DrawText(
"Module is active",
Rect.new(12, 12, 296, 32),
18,
Color.new(0.4, 1, 0.5),
TextAnchor.MiddleLeft
)
end)
end
ImGuiWindow:DrawText(
text: string,
rect: Rect,
fontSize: number,
color: Color,
alignment: TextAnchor = TextAnchor.MiddleCenter
)

Рисует текст внутри содержимого окна. В отличие от глобального DrawText(), размер шрифта и цвет обязательны. Возвращает nil.

ImGuiWindow:DrawTexture(texture: Texture, rect: Rect? = nil)

Рисует текстуру внутри окна. Если rect не передан, изображение занимает всю доступную область содержимого. Возвращает nil.

ImGuiWindow:DrawTextureColor(texture: Texture, color: Color, rect: Rect? = nil)

Рисует текстуру внутри окна с цветовой маской. Возвращает nil.

ImGuiWindow:GetContentRenderSize(): Vector2

Возвращает фактический размер области содержимого на экране в пикселях с учётом масштаба UI и масштаба плавающего окна.

ImGuiWindow:SetVisibilityTypes(visibilityTypes: table): bool

Задаёт режимы, в которых окно доступно через редактор раскладки HUD. Передайте массив значений WindowVisibilityType. nil или пустая таблица оставляет окно только в общем фильтре всех режимов.

Возвращает true для действующего окна и false, если связанный элемент окна уже недоступен.

Выравнивание текста относительно переданной области или позиции.

Значение Число Положение
TextAnchor.UpperLeft 0 Сверху слева
TextAnchor.UpperCenter 1 Сверху по центру
TextAnchor.UpperRight 2 Сверху справа
TextAnchor.MiddleLeft 3 По центру слева
TextAnchor.MiddleCenter 4 По центру
TextAnchor.MiddleRight 5 По центру справа
TextAnchor.LowerLeft 6 Снизу слева
TextAnchor.LowerCenter 7 Снизу по центру
TextAnchor.LowerRight 8 Снизу справа

Режим видимости плавающего HUD-окна.

Значение Число Режим
WindowVisibilityType.Match 0 Обычный матч
WindowVisibilityType.Spectate 1 Наблюдение за игроком
WindowVisibilityType.Killcam 2 Камера убийства
  • Rect — экранная область;
  • Vector2 — позиция;
  • Color — цвет и прозрачность;
  • Texture — изображение;
  • Screen — размеры экрана;
  • Scheduler — перерисовка каждый кадр.