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)