Меню и рисование HUD
Страницы меню плагина
samp.ui.menu.register(page)
Требует ui.menu, регистрирует страницу или заменяет страницу с тем же ID и ничего не возвращает. Некорректная структура страницы или control обычно пропускается; ошибки типов и неверные числовые аргументы могут вызвать Lua ошибку.
samp.ui.menu.register({
id = "main",
title = "Example",
controls = {
{ type = "switch", id = "enabled", title = "Enabled", value = true },
{
type = "dropdown",
id = "theme",
title = "Theme",
value = "dark",
options = {
{ value = "dark", label = "Dark" },
{ value = "light", label = "Light" }
}
}
}
})| Поле страницы | Правила |
|---|---|
id | Обязательная непустая строка до 64 байт. |
title | Обязательная непустая строка до 128 байт. |
controls | До 32 элементов с уникальными ID. |
До 8 страниц на плагин. Каждый control требует непустые type, id до 64 байт и title до 128 байт. У всех control есть общие необязательные поля:
| Поле | Тип | По умолчанию | Назначение |
|---|---|---|---|
description | string | "" | Дополнительный текст до 512 байт. |
enabled | boolean | true | Отключённый control виден, но не создаёт событий. |
visible | boolean | true | Скрытый control не занимает место и не создаёт событий. |
read_only | boolean | false | Только чтение: control виден, но не интерактивен. |
error | string | "" | Текст ошибки под control, до 512 байт. |
Полный набор control
Ниже приведены все 16 типов API 1.1. В Lua имена полей используют snake_case; полученное от интерфейса значение хост проверяет повторно.
| Тип | Дополнительные поля и правила |
|---|---|
section | Нет. Заголовок секции, событий не создаёт. |
text | text: string, может быть пустым, до 512 байт. Только отображение, событий нет. |
button | Нет. Нажатие создаёт valueType="action", value="click". |
switch | Обязательный value: boolean, изменение возвращает boolean. |
slider | min=0, max=1, step=0.1, value=min; конечные числа до 1 000 000 по модулю, max>min, step>0; начальное значение ограничивается диапазоном, изменения выравниваются по step, возвращается number. |
choice | value: string и 1–32 уникальных {value,label}; value до 512 байт, label до 128, текущее value обязано существовать. Возвращается выбранная строка. |
text_input | value="", placeholder="", max_length=512; целое 1..512 в UTF-8 байтах, value не должен превышать лимит. Строка отправляется после Apply. |
number_input | min=0, max=100, step=1, value=min; конечные числа до 1 000 000 по модулю, max>min, step>0, начальное value внутри диапазона. Apply возвращает нормализованный number. |
dropdown | value: string и 1–32 уникальных options; текущее value обязано существовать, выбор возвращает строку. |
multi_choice | values: string[] (может быть пустым) и 1–32 уникальных options; все выбранные значения существуют и не повторяются. Нажатие переключает вариант и возвращает его value. |
color_picker | value: string в формате #RRGGBB или #RRGGBBAA; после Apply возвращается проверенная строка цвета. |
confirm_button | confirmation: string до 512 байт; сначала показывает подтверждение, затем создаёт action/click. |
divider | Нет. Разделитель, событий не создаёт. |
group | expanded: boolean, по умолчанию true; нажатие создаёт action/toggle и показывает/скрывает следующие control до следующего group. |
list | options: 0–32 уникальных {value,label}; необязательный empty_text до 512 байт. Нажатие возвращает value элемента, пустой список показывает empty_text. |
progress | value в 0..1 и необязательный indeterminate: boolean (по умолчанию false). Только отображение, событий нет. |
Для каждого option value ограничен 512 байтами, label — 128 байтами; choice, dropdown, multi_choice и list отклоняют дублирующиеся значения. При замене страницы control, не прошедшие проверку, не показываются.
ui.control_changed
Событие содержит pluginId, pageId, controlId, valueType и типизированный value:
| Control | valueType | value |
|---|---|---|
switch | boolean | true или false |
slider, number_input | number | Конечное значение после проверки диапазона и step |
choice, dropdown, multi_choice, color_picker, text_input, list | string | Выбранное, переключённое, подтверждённое или нажатое значение |
button, confirm_button | action | "click" после подтверждения |
group | action | "toggle" |
section, text, divider и progress изменений не создают. Поля общего конверта событий приведены в справочнике событий.
Фаза HUD
Все samp.draw требуют ui.draw, работают только синхронно в draw.hud и ограничены 512 командами за кадр. Цвет — ARGB 0xAARRGGBB. При normalized=true координаты находятся в 0..1; обычные конечные координаты не превышают 100 000 по модулю.
| Функция | Поля options |
|---|---|
draw.text | x=0, y=0, обязательный text до 1024 байт, size=16 (>0..512), color=0xFFFFFFFF, normalized=false. |
draw.line | x1,y1,x2,y2=0, thickness=1 (>0..100), color, normalized. |
draw.rect | Как line, плюс filled=false. |
draw.circle | x,y=0, radius=1 (>0..100000, до 1 в normalized), thickness, color, filled, normalized. |
draw.progress_bar | x1,y1,x2,y2, value=0 в 0..1, color, background_color=0x66000000, normalized; x2>x1, y2>y1. |
draw.image | x1,y1,x2,y2, обязательный безопасный resource до 256 байт, alpha=1 в 0..1, normalized; x2>x1, y2>y1. |
Изображения: PNG/WebP/JPEG/JPG, файл до 16 МиБ, размер до 1024×1024; на плагин 16 изображений и 16 МиБ декодированных данных, глобально 64 МиБ. За кадр начинается загрузка не более одного нового изображения.
samp.draw.world_to_screen(Vector3) возвращает nil или {x,y,depth,width,height}.