Настройки
Виджеты создаются один раз при загрузке и появляются в панели модуля рядом с настройками встроенных модулей. Значения сохраняются в конфиг по имени.
Виджеты
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)цвет в ARGBui.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 говорит, в какой группе они лежат.