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)
Обработчик должен быть быстрым. Если он работает слишком долго, клиент остановит скрипт, подробности на странице «Песочница и лимиты».