Справочник › Справочник функций › Platform

Platform.spells.IsAutoRepeatActive

общедоступный

Как вызывать

addon.Platform:IsAutoRepeatActive(spellID)

Доступен напрямую через addon; зависимость не нужна.

Что делает

Прочитать состояние автоповтора игрока для заклинания вроде «Выстрела» или «Автоматической стрельбы». Это не то же, что текущее или поставленное в очередь применение. Современные клиенты получают точный ID заклинания; старый запрос сначала определяет ячейку книги заклинаний игрока. Ограничения политики клиента, нечитаемые результаты и недоступные ячейки книги возвращают nil с причиной. Только наблюдается состояние; заклинание никогда не запускается и не останавливается.

Аргументы

ИмяТипЧто делает
selfRMPlatformАдаптер платформы Rotation Master (неявно при вызове через двоеточие).
spellIDnumberПоложительный целый ID заклинания, а не ячейка книги заклинаний.

Возвращает

1boolean | niltrue, если клиент сообщает, что заклинание повторяется автоматически; false, если сообщает, что неактивно; nil, если недоступно.
2string | nilПричина ошибки проверки или недоступности для результата nil.

Издания

Встроенные помощники регистрируются во всех изданиях. Различается игровой API, который они читают; если нужного API нет, помощник использует запасной вариант или возвращает nil с причиной.

  • Недоступно в этом издании (причина — во всплывающей подсказке)
  • Только пока включены запасные реализации Blizzard для устаревших функций
Игровой APIClassic EraTBC AnniversaryClassic ProgressionForeverRetail
C_Spell.IsAutoRepeatSpellClassic EraTBC AnniversaryClassic ProgressionForeverRetail
FindSpellBookSlotBySpellIDClassic EraTBC AnniversaryClassic ProgressionForeverRetail
IsAutoRepeatSpellClassic EraTBC AnniversaryClassic ProgressionForeverRetail

Секретные значения (Retail и Forever)

В Retail и Forever игра передаёт аддонам секретные значения. Этот помощник проверяет то, что читает (addon.Platform:CanReadValue), и вместо секретного значения, которое нельзя сравнить, возвращает nil с причиной, например restricted-value. Считайте nil недоступным значением, а не ложью.

Пример

local shooting = addon.Platform:IsAutoRepeatActive(75) -- Auto Shot
if shooting == nil then return nil end
return not shooting

Зависимости

Исходный код

Platform/spells.lua, строка 697. В игре только для чтения; «Дублировать» создаёт редактируемую копию.

Platform.spells.IsAutoRepeatActive(self, spellID)
    local policy=self:GetCombatDataPolicy()
    if policy~='probe' and policy~='restricted' then return nil,'unsupported-policy' end
    local valid,reason=identifier(spellID,true)
    if not valid then return nil,reason end
    local native=C_Spell and C_Spell.IsAutoRepeatSpell
    local ok,active
    if type(native)=='function' then
        ok,active=pcall(native,spellID)
    else
        if type(IsAutoRepeatSpell)~='function' or type(FindSpellBookSlotBySpellID)~='function' then return nil,'missing-api' end
        local found,slot=pcall(FindSpellBookSlotBySpellID,spellID,false)
        if not found then return nil,'api-error' end
        if not self:CanReadValue(slot) then return nil,'restricted-value' end
        if slot==nil then return nil,'spell-not-in-book' end
        if type(slot)~='number' or slot<1 or slot==math.huge or slot%1~=0 then return nil,'invalid-api-result' end
        ok,active=pcall(IsAutoRepeatSpell,slot,BOOKTYPE_SPELL or 'spell')
    end
    if not ok then return nil,'api-error' end
    if not self:CanReadValue(active) then return nil,'restricted-value' end
    if type(native)~='function' then
        if active==0 then active=false elseif active==1 then active=true end
    end
    if type(active)~='boolean' then return nil,'invalid-api-result' end
    return active

Назад: Справочник функций