Перейти к содержимому

IXR Framework (LUA Фреймворк)

IMPORTANT

Статус: Поддерживается
Минимальная версия: 1.4.0

Модуль таймеров IXR TIMERS

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

Обьект таймера записывается в сохранении игры.

lua
--// Создать таймер
TimerCreate(name, loop, auto_play, left_milliseconds, callable_fn, ...)
args: 
  name (string)(required) - уникальное имя таймера.
  loop (bool)(required) - флаг циклического повтора.
  auto_play (bool)(required) - флаг автоматического запуска.
  left_milliseconds (int)(required) - время до срабатывания в миллисекундах.
  callable_fn (function)(...) - функция вызываемая по окончании таймера (принимает аргументы переданные как ...).
  ... (аргументы для callable_fn функции)

retval: (table) возвращаемые как ООП методы созданного таймера
	self:name(): string - получить имя таймера.
	self:exists(): bool - проверить существование таймера.
	self:play(): bool - запустить таймер.
	self:stop(): bool - остановить таймер.
	self:delete(): bool - удалить таймер.

--// Проверить существование таймера по имени
IsTimerExists(name)
args: 
  name (string)(required) - уникальное имя таймера.
retval: (bool) возвращаемые true если таймер существует иначе false

--// Запуск таймера по имени (игнорируется если таймера нет или он уже запущен)
TimerPlay(name)
args: 
  name (string)(required) - уникальное имя таймера.
retval: (bool) возвращаемые true если таймер запустился иначе false

--// Остановка таймера по имени (игнорируется если таймера нет или он еще не запущен)
TimerStop(name)
args: 
  name (string)(required) - уникальное имя таймера.
retval: (bool) возвращаемые true если таймер остановлен иначе false

--// Удаление таймера по имени (игнорируется если таймера нет)
TimerDelete(name)
args: 
  name (string)(required) - уникальное имя таймера.
retval: (bool) возвращаемые true если таймер удален иначе false

Примеры:

lua

--// выставляем ожидание события новой игры
function on_game_start(callbackRegistrator)
	RegisterScriptCallback("new_game_created", this.on_new_game_started)
end

function on_new_game_started()
  --// здесь можно определить таймеры как вариант в начале новой игры
end

--// Автоматически запустится и будет повторяться каждые 5 секунд.
TimerCreate
(
  "my-timer-01", true, true, 5000, 
  function (a, b) 
    ...
  end, 
  "Переменная А", "Переменная Б"
 )

--// Автоматически запустится и сработает единожды через 5 секунд.
TimerCreate
(
  "my-timer-02", false, true, 5000, 
  function (a, b) 
    ...
  end, 
  "Переменная А", "Переменная Б"
 )

 --// Создаем таймер который сработает единожды через 5 секунд но он не запущен сразу после создания (запускаем его позже по мере необходимости - позволяет делать сложные отложенные цепочки действий т.к таймеры можно вкладывать друг в друга).
TimerCreate
(
  "my-timer-02", false, false, 5000, 
  function (a, b) 
    ...
  end, 
  "Переменная А", "Переменная Б"
 ):play()


--// Проверить существование таймера по имени
if IsTimerExists("my-timer-02") then
  ...
end

--// Запуск таймера по имени
TimerPlay("my-timer-02")

--// Остановка таймера по имени
TimerStop("my-timer-02")

--// Удаление таймера по имени
TimerStop("my-timer-02")

Опубликовано под лицензией MIT.