Lua в разработке. Описанный здесь API версии 1 может немного меняться до релиза вкладки LUA. Скрипты, написанные по этому гайду, останутся рабочими: мы будем добавлять функции, а не ломать существующие.

Первый модуль

Модуль, который показывает ваше здоровье в чате при включении и следит за ним каждую секунду.

1. Создаём модуль

module.create принимает таблицу с названием, описанием и категорией. Категория одна из combat, movement, player, render, misc. Для скриптов все модули показываются во вкладке LUA, а категория нужна для группировки и поиска.

local m = module.create({
  name = "Страж здоровья",
  description = "Предупреждает о низком здоровье",
  category = "player"
})

2. Добавляем настройку

m:number("limit", "Порог здоровья", 8, 1, 20)

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

3. Реагируем на событие

local ticks = 0

m:on("tick", function()
  ticks = ticks + 1
  if ticks % 20 ~= 0 then return end   -- раз в секунду

  if player.health() <= m.settings.limit then
    chat.print("Здоровье: " .. player.health())
  end
end)

Событие tick приходит 20 раз в секунду. Текущее значение настройки всегда доступно как m.settings.имя.

4. Включение и выключение

m:on_enable(function() ticks = 0 end)
m:on_disable(function() chat.print("Страж выключен") end)
Состояние (ticks) лежит в обычной локальной переменной скрипта. После перезагрузки скриптов она создаётся заново.

Весь скрипт

local m = module.create({
  name = "Страж здоровья",
  description = "Предупреждает о низком здоровье",
  category = "player"
})

m:number("limit", "Порог здоровья", 8, 1, 20)

local ticks = 0

m:on_enable(function() ticks = 0 end)
m:on_disable(function() chat.print("Страж выключен") end)

m:on("tick", function()
  ticks = ticks + 1
  if ticks % 20 ~= 0 then return end
  if player.health() <= m.settings.limit then
    chat.print("Здоровье: " .. player.health())
  end
end)