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

На главную

## avatar.GetContextActionInfo( id )

Вернуть информацию о контекстном действии. Контекстное действие может находится в списке контекстных действий аватара, но в то же время быть недоступным (например цель не в зоне действия или не в той полусфере игрока). Поле enabled принимает значение true, если действие доступно и false, если не доступно. В случае изменения поля, на клиент приходит EVENT_CONTEXT_ACTIONS_CHANGED.

Внимание! Есть более оптимииованный вариант: avatar.GetContextActionShortInfo( id ) и avatar.GetContextActionCooldown( id ).

    -- система:
    UIState/GameState
    функция имеет основную реализация в логике и расширенную реализацию в UI

    -- библиотека
    avatar

    -- объявление:
    function GetContextActionInfo( id )

    -- параметры
    id: ObjectId -  идентификатор контекстного действия

    -- возвращаемые значения
    nil, если контекстного действия нет
    table, если действие есть - информация по действию
      id: ObjectId -  идентификатор контекстного действия
      priority: number (int) - приоритет действия
      name: WString - название
      description: ValuedText or nil - описание с подставленными текущими значениями параметров
    --{ часть таблицы, реализованная только для UI
      image: TextureId - идентификатор текстуры для иконки
    --}
      enabled: boolean - true, если действие доступно
      sysType: string (строковый enum "ENUM_CONTEXT_ACTION_TYPE_XXX") - название типа контекстного действия
      objectId: ObjectId or nil -  идентификатор объекта, если он есть, к которому применяется контекстное действие

      spellId: SpellId or nil - идентификатор ресурса заклинания, которое запустится при использовании этого действия
      itemId: ObjectId or nil - идентификатор предмета, который будет использован

      cooldown: Table or nil - информация о кулдауне, если доступна. Таблица с полями:
        durationMs: number(integer) - длительность кулдауна в миллисекундах
        remainingMs: number(integer) - сколько осталось кулдауна в миллисекундах

      pointInfo: table or nil - если это контекстное действие требует точку установки, то таблица с полями:
        range: number (float) - максимальное растояние до цели, на котором действует (0, если не указано)
        minRange: number (float) - минимальное растояние до цели, на котором действует (0, если не указано)
        radius: number (float) - радиус действия AOE от точки применения (0, если не указано)
      sysNameAEMark: string or nil - для АЕ спеллов имя текстуры AEMark, которую нужно визуализировать (nil, если не указана)

    -- пример использования
    local actionInfo = avatar.GetContextActionInfo( id )
    if actionInfo then
      local enabled = actionInfo.enabled
    end

Типы контекстных действий:

      "ENUM_CONTEXT_ACTION_TYPE_UNKNOWN" - тип не известен
      "ENUM_CONTEXT_ACTION_TYPE_SPELL" - запустить заклинание
      "ENUM_CONTEXT_ACTION_TYPE_EXPLOIT" - использовать устройство
      "ENUM_CONTEXT_ACTION_TYPE_LOOT" - собрать лут
      "ENUM_CONTEXT_ACTION_TYPE_NPC_TALK" - поговорить с NPC
      "ENUM_CONTEXT_ACTION_TYPE_ITEM" - использовать предмет из сумки

#### Search: "CategoryLuaApi" "CategoryContextActions"

CategoryContextActions
EventContextActionPointStarted
EventContextActionsChanged
FunctionAvatarGetContextActionCooldown
FunctionAvatarGetContextActionInfo
FunctionAvatarGetContextActionShortInfo

CategoryLuaApi CategoryFunction CategoryContextActions CategoryAvatar

На главную