Получить описание времени срабатывания правил игрового эвента.
TODO: нужно переделать время/дату на использование локализуемого формата (из Windiws) и локального времени игрока.
-- библиотека: rules -- объявление: function GetEventTimeIntervals( eventRuleId ) -- параметры: eventRuleId: ObjectId - идентификатор правил эвента -- возвращаемое значение: table of tables (TimeInterval) - индексированная с 0 таблица с отдельными временными интервалами
То есть возвращается список различных интервалов, в которых идёт эвент. В этом списке могут быть интервалы разного типа. Например, пять ежедневных часовых интервалов через каждые два часа и один еженедельный интервал, занимающий всё воскресение.
Элементом основной таблицы является таблица TimeInterval, представляющая собой описание одного временного интервала, в котором проходит эвент. Так как сам интервал может быть только одного типа (почасовой, ежемесячный, ежегодичный и т.п.), то в этой таблице заполнено только одно поле из представленых ниже. В заполненом поле содержится таблица с описанием данных для этого типа интервала.
Формат таблицы TimeInterval:
-- Поля (заполнено только одно в зависимости от типа интервала): hourly: table or nil - если интервал ежечасный, то таблица с полями: start: table - таблица, описывающая начало интервала. Поля: minute: number (integer) - минута начала события, начиная с 0 finish: table - таблица, описывающая конец интервала. Поля, такие же как в start. durationMs: number (integer) - длина интервала в миллисекундах daily: table or nil - если интервал ежедневный, то таблица с полями: start: table - таблица, описывающая начало интервала. Поля: hour: number (integer) - час начала события, начиная с 0 minute: number (integer) - минута начала события, начиная с 0 finish: table - таблица, описывающая конец интервала. Поля, такие же как в start. durationMs: number (integer) - длина интервала в миллисекундах weekly: table or nil - если интервал еженедельный, то таблица с полями: start: table - таблица, описывающая начало интервала. Поля: day: number (enum ENUM_DayOfWeek...) - день недели начала события, начиная с 1 ( 1 - понедельник, 7 - воскресенье ) hour: number (integer) - час начала события, начиная с 0 minute: number (integer) - минута начала события, начиная с 0 finish: table - таблица, описывающая конец интервала. Поля, такие же как в start. durationMs: number (integer) - длина интервала в миллисекундах monthly: table or nil - если интервал ежемесячный, то таблица с полями: start: table - таблица, описывающая начало интервала. Поля: day: number (integer) - день месяца начала события, начиная с 1 hour: number (integer) - час начала события, начиная с 0 minute: number (integer) - минута начала события, начиная с 0 finish: table - таблица, описывающая конец интервала. Поля, такие же как в start. durationMs: number (integer) - длина интервала в миллисекундах monthly_reverse: table or nil - если интервал ежемесячный, заканчивающийся к определённому времени, то таблица с полями: start: table - таблица, описывающая начало интервала. Поля: day: number (integer) - день месяца начала события, начиная с 1 hour: number (integer) - час начала события, начиная с 0 minute: number (integer) - минута начала события, начиная с 0 finish: table - таблица, описывающая конец интервала. Поля, такие же как в start. durationMs: number (integer) - длина интервала в миллисекундах yearly: table or nil - если интервал ежегодный, то таблица с полями: start: table - таблица, описывающая начало интервала. Поля: sysMonth: string (enum "ENUM_Month...") - месяц начала события month: number (enum ENUM_Month...) - месяц начала события day: number (integer) - день месяца начала события, начиная с 1 hour: number (integer) - час начала события, начиная с 0 minute: number (integer) - минута начала события, начиная с 0 finish: table - таблица, описывающая конец интервала. Поля, такие же как в start. durationMs: number (integer) - длина интервала в миллисекундах now: table or nil - если интервал "сейчас", то таблица с полями: start: table - пустая таблица finish: table - пустая таблица durationMs: number (integer) - длина интервала в миллисекундах never: table or nil - если интервал "никогда", то таблица с полями: start: table - пустая таблица finish: table - пустая таблица durationMs: number (integer) - длина интервала в миллисекундах once: table or nil - если интервал однократный, то таблица с полями: start: table - таблица, описывающая начало интервала. Поля: year: number (integer) - год начала события sysMonth: string (enum "ENUM_Month...") - месяц начала события month: number (enum ENUM_Month...) - месяц начала события day: number (integer) - день месяца начала события, начиная с 1 hour: number (integer) - час начала события, начиная с 0 minute: number (integer) - минута начала события, начиная с 0 finish: table - таблица, описывающая конец интервала. Поля, такие же как в start. durationMs: number (integer) - длина интервала в миллисекундах fromTime: table or nil - если интервал начинается в какой-то момент и не имеет конца, то таблица с полями: start: table - таблица, описывающая начало интервала. Поля: year: number (integer) - год начала события sysMonth: string (enum "ENUM_Month...") - месяц начала события month: number (enum ENUM_Month...) - месяц начала события day: number (integer) - день месяца начала события, начиная с 1 hour: number (integer) - час начала события, начиная с 0 minute: number (integer) - минута начала события, начиная с 0 finish: table - таблица, описывающая конец интервала. Поля, такие же как в start с теми же значениями. durationMs: number (integer) - длина интервала в миллисекундах cyclic: table or nil - если интервал длиться и повторяется через фиксированный период, то таблица с полями: start: table - таблица, описывающая начало интервала. Поля: year: number (integer) - год начала события sysMonth: string (enum "ENUM_Month...") - месяц начала события month: number (enum ENUM_Month...) - месяц начала события day: number (integer) - день месяца начала события, начиная с 1 hour: number (integer) - час начала события, начиная с 0 minute: number (integer) - минута начала события, начиная с 0 finish: table - таблица, описывающая конец интервала. Поля, такие же как в start. durationMs: number (integer) - длина интервала в миллисекундах
Пример:
local interval = rules.GetEventTimeIntervals( eventRuleId )[ 0 ] if interval then if interval.daily then LogInfo( "hour: ", interval.daily.hour ) end end
См. также ENUM_Month_..., ENUM_DayOfWeek....