Команды и таймеры
Команды
lua
bh.commands.register({
name = "home",
aliases = { "h" },
description = "Takes you home.",
usage = "/home [name]",
min_role = "player", -- player, moderator, admin or owner
console = false, -- может ли её запускать консоль сервера?
}, function(sender, label, args)
local p = sender.player -- nil, если запускает консоль
if not args[1] then
return { handled = false } -- показывает "Usage: /home [name]"
end
return { handled = true, reply = { "Welcome home, " .. p:alias() } }
end)- Имена состоят из
a-z,0-9,_,-, до 32 символов, и не должны совпадать со встроенными командами и командами других модов. - Команды модов работают для каждого игрока (в обычной игре
/могут использовать только модераторы и админы), еслиmin_roleне указывает иное. Игрокам ниже этой роли отвечают "You do not have permission". labelэто имя или псевдоним, который ввели;argsэто остаток строки, разбитый по пробелам.- Строки
replyуходят отправителю: игроку в чат, консоли в лог.
Таймеры
Время задаётся в тиках: один тик это один шаг мира, 0,2 с, так что 5 тиков это 1 секунда.
lua
bh.scheduler.run_later(25, function() ... end) -- один раз, через 5 с
local id = bh.scheduler.run_every(0, 5, function() ... end) -- сразу, затем каждую секунду
bh.scheduler.cancel(id)
bh.scheduler.run_next_poll(function() ... end) -- примерно через 16 мс, для быстрых ответовИгрок, которого вы сохранили в таймере, к моменту запуска мог выйти: сначала проверьте p:is_online().
Пример: scheduler-lua (/countdown, /remind). Справочник: commands, scheduler.