# Пользовательские дополнения

На главную

## rules.GetEventTimeIntervals( eventRuleId )

Получить описание времени срабатывания правил игрового эвента.

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) - длина интервала в миллисекундах

    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....

#### Связанные страницы: "CategoryLuaApi" "CategoryRules"

BillingBonusId
CategoryRules
EnumMsgGetBonusListResultResult
EnumRuleNotificationType
EnumRuleType
EventBillingInfoBonusChanged
EventBillingInfoBonusStatusChanged
EventMissionRuleCounterChanged
EventMissionRulesChanged
EventNewsPostLoaded
EventNewsPostSelected
EventWishmasterChanged
EventWishmasterMultiplying
FunctionRulesBillingInfoGetBonuses
FunctionRulesBillingInfoGetBonusInfo
FunctionRulesBillingInfoUpdate
FunctionRulesGetEventBySysName
FunctionRulesGetEventCounter
FunctionRulesGetEventInfo
FunctionRulesGetEvents
FunctionRulesGetEventTimeIntervals
FunctionRulesGetNotificationInfo
FunctionRulesGetWishmaster
FunctionRulesGetWishmasterMultiplyingInfos
FunctionRulesGetZonesMaps
FunctionRulesWishmasterRollMultiplying
WishmasterResourceId

CategoryLuaApi CategoryFunction CategoryRules

На главную