Skip to content

Меню и рисование HUD ​

Страницы меню плагина ​

samp.ui.menu.register(page) ​

Требует ui.menu, регистрирует страницу или заменяет страницу с тем же ID и ничего не возвращает. Некорректная структура страницы или control обычно пропускается; ошибки типов и неверные числовые аргументы могут вызвать Lua ошибку.

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 есть общие необязательные поля:

ПолеТипПо умолчаниюНазначение
descriptionstring""Дополнительный текст до 512 байт.
enabledbooleantrueОтключённый control виден, но не создаёт событий.
visiblebooleantrueСкрытый control не занимает место и не создаёт событий.
read_onlybooleanfalseТолько чтение: control виден, но не интерактивен.
errorstring""Текст ошибки под control, до 512 байт.

Полный набор control ​

Ниже приведены все 16 типов API 1.1. В Lua имена полей используют snake_case; полученное от интерфейса значение хост проверяет повторно.

ТипДополнительные поля и правила
sectionНет. Заголовок секции, событий не создаёт.
texttext: string, может быть пустым, до 512 байт. Только отображение, событий нет.
buttonНет. Нажатие создаёт valueType="action", value="click".
switchОбязательный value: boolean, изменение возвращает boolean.
slidermin=0, max=1, step=0.1, value=min; конечные числа до 1 000 000 по модулю, max>min, step>0; начальное значение ограничивается диапазоном, изменения выравниваются по step, возвращается number.
choicevalue: string и 1–32 уникальных {value,label}; value до 512 байт, label до 128, текущее value обязано существовать. Возвращается выбранная строка.
text_inputvalue="", placeholder="", max_length=512; целое 1..512 в UTF-8 байтах, value не должен превышать лимит. Строка отправляется после Apply.
number_inputmin=0, max=100, step=1, value=min; конечные числа до 1 000 000 по модулю, max>min, step>0, начальное value внутри диапазона. Apply возвращает нормализованный number.
dropdownvalue: string и 1–32 уникальных options; текущее value обязано существовать, выбор возвращает строку.
multi_choicevalues: string[] (может быть пустым) и 1–32 уникальных options; все выбранные значения существуют и не повторяются. Нажатие переключает вариант и возвращает его value.
color_pickervalue: string в формате #RRGGBB или #RRGGBBAA; после Apply возвращается проверенная строка цвета.
confirm_buttonconfirmation: string до 512 байт; сначала показывает подтверждение, затем создаёт action/click.
dividerНет. Разделитель, событий не создаёт.
groupexpanded: boolean, по умолчанию true; нажатие создаёт action/toggle и показывает/скрывает следующие control до следующего group.
listoptions: 0–32 уникальных {value,label}; необязательный empty_text до 512 байт. Нажатие возвращает value элемента, пустой список показывает empty_text.
progressvalue в 0..1 и необязательный indeterminate: boolean (по умолчанию false). Только отображение, событий нет.

Для каждого option value ограничен 512 байтами, label — 128 байтами; choice, dropdown, multi_choice и list отклоняют дублирующиеся значения. При замене страницы control, не прошедшие проверку, не показываются.

ui.control_changed ​

Событие содержит pluginId, pageId, controlId, valueType и типизированный value:

ControlvalueTypevalue
switchbooleantrue или false
slider, number_inputnumberКонечное значение после проверки диапазона и step
choice, dropdown, multi_choice, color_picker, text_input, liststringВыбранное, переключённое, подтверждённое или нажатое значение
button, confirm_buttonaction"click" после подтверждения
groupaction"toggle"

section, text, divider и progress изменений не создают. Поля общего конверта событий приведены в справочнике событий.

Фаза HUD ​

Все samp.draw требуют ui.draw, работают только синхронно в draw.hud и ограничены 512 командами за кадр. Цвет — ARGB 0xAARRGGBB. При normalized=true координаты находятся в 0..1; обычные конечные координаты не превышают 100 000 по модулю.

ФункцияПоля options
draw.textx=0, y=0, обязательный text до 1024 байт, size=16 (>0..512), color=0xFFFFFFFF, normalized=false.
draw.linex1,y1,x2,y2=0, thickness=1 (>0..100), color, normalized.
draw.rectКак line, плюс filled=false.
draw.circlex,y=0, radius=1 (>0..100000, до 1 в normalized), thickness, color, filled, normalized.
draw.progress_barx1,y1,x2,y2, value=0 в 0..1, color, background_color=0x66000000, normalized; x2>x1, y2>y1.
draw.imagex1,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}.