Получить описание времени срабатывания правил игрового эвента.
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....