Документация
Скрипты
К скриптам
Интерфейс

Настройки

Виджеты создаются один раз при загрузке и появляются в панели модуля рядом с настройками встроенных модулей. Значения сохраняются в конфиг по имени.

Виджеты

ui.checkbox("Имя", true)галочка
ui.slider("Размер", 8, 4, 32, 1)значение, минимум, максимум, шаг
ui.combo("Режим", "Both", { "Both", "Icon" })список режимов, есть is(mode) и modes()
ui.multibox("Что показывать", { Ник = true })набор галочек, get(option) и set(option, bool)
ui.keybind("Клавиша", 82)бинд, name() и held()
ui.color("Цвет", 0xFFFFFFFF)цвет в ARGB
ui.text("Префикс", "nl", 64)строка с ограничением длины
ui.button("Сбросить", fn)кнопка, press() жмёт программно

Группы

Настройки можно собирать в группы двух видов. ui.group("Имя") — заголовок по центру, под ним идут настройки с отступом; клик по заголовку сворачивает группу. ui.gear("Имя", widget) вешает шестерёнку прямо в строку другой настройки: пока она не нажата, вложенные настройки скрыты.

local visual = ui.group("Отображение")
local box    = ui.checkbox("Коробка", true)
local boxCfg = ui.gear("Настройки коробки", box)

ui.combo("Режим", "Fill", { "Fill", "Outline" }):group(visual)
ui.slider("Толщина", 1, 0.5, 5, 0.1):group(boxCfg)
ui.color("Цвет", 0xFF55AAFF):group(boxCfg)

Метод :group(g) есть у любого виджета и возвращает его же, поэтому вызовы можно писать цепочкой. У самой группы есть expanded() и set_expanded(bool).

Бинды настроек

Галочку и ui.keybind можно забиндить на клавишу — в клиенте это делается колесом мыши по строке настройки, а из скрипта через set_bind(key). Режим "toggle" переключает по нажатию, "hold" держит значение только пока клавиша зажата. Флаг set_bind_display(bool) убирает бинд из HUD «Клавиши».

local dash = ui.checkbox("Рывок", false)

dash.set_bind(82)               -- R
dash.set_bind_mode("hold")      -- работает только пока зажата
dash.set_bind_display(true)     -- видно в HUD «Клавиши»

events.on("update", function()
    if dash.active() then
        -- клавиша зажата
    end
end)

Чтение и запись

У всех виджетов одинаковый набор: get(), set(v), visible(bool) и поле name. Вызывать можно и через точку, и через двоеточие — работает одинаково.

local size = ui.slider("Размер", 8, 4, 32, 1)
local mode = ui.combo("Режим", "Both", { "Both", "Icon", "Text" })

events.on("render2d", function()
    if mode.is("Icon") then
        render.svg(icon, 10, 10, size.get(), size.get(), 0xFFFFFFFF)
    end
end)

Имена

Настройка сохраняется по имени, поэтому два виджета с одинаковым именем в одном скрипте перетирают друг друга в конфиге. Если элементов несколько, добавляйте префикс: «Hotkeys: чип», «Potions: чип».

Чужие настройки

Скрипт может читать и менять настройки встроенных модулей — например, подстраивать дистанцию ауры под ситуацию.

local aura = modules.get("AttackAura")

if aura and aura.enabled() then
    aura.setting("Дистанция").set(4.5)
end

У чужой настройки есть type — по нему понятно, что вызывать: у слайдера есть min() и max(), у списка modes() и cycle(), у бинда name_of_key(). Типы "group" и "gear" — это группы: у них есть members(), expanded() и host. У остальных настроек поле group говорит, в какой группе они лежат.