Lua в разработке. Описанный здесь API версии 1 может немного меняться до релиза вкладки LUA. Скрипты, написанные по этому гайду, останутся рабочими: мы будем добавлять функции, а не ломать существующие.
События
Модуль реагирует на игру через m:on(имя, функция). Обработчики вызываются, только пока модуль включён.
Список событий
| Событие | Когда приходит | Аргументы |
|---|---|---|
tick | Каждый тик клиента (20 раз в секунду) | нет |
render | Каждый кадр, при отрисовке интерфейса | ctx: рисование |
key | Нажатие и отпускание клавиш | key и action |
packet_receive | Пришёл пакет от сервера | p, у него есть p.name |
Дополнительно у модуля есть on_enable и on_disable, которые вызываются при включении и выключении.
Рисование: ctx
В событии render вы получаете объект ctx.
| Метод | Что делает |
|---|---|
ctx:text(строка, x, y, цвет) | Пишет текст в пикселях экрана |
ctx:rect(x, y, w, h, цвет) | Рисует закрашенный прямоугольник |
Цвет задаётся числом 0xAARRGGBB: например, 0xFFFFFFFF это непрозрачный белый.
m:on("render", function(ctx)
ctx:rect(8, 8, 120, 22, 0xAA000000)
ctx:text("FPS: " .. client.fps(), 14, 14, 0xFFFFFFFF)
end)
Клавиши
m:on("key", function(key, action)
if action == "press" and key == m.settings.panic then
m:disable()
end
end)
Пакеты
m:on("packet_receive", function(p)
if p.name == "EntityStatusS2CPacket" then
client.log("Статус сущности")
end
end)
Обработчик должен быть быстрым. Если он работает слишком долго, клиент остановит скрипт, подробности на странице «Песочница и лимиты».