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

Platform.spells.GetSpellCharges

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

Как вызывать

addon.Platform:GetSpellCharges(spell)

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

Что делает

Прочитать нормализованную запись зарядов: currentCharges, maxCharges, cooldownStartTime, cooldownDuration, chargeModRate и isActive. Для неподдерживаемых заклинаний или ограниченных данных клиента возвращается nil с причиной.

Аргументы

ИмяТипЧто делает
selfRMPlatformАдаптер платформы Rotation Master. При обращении через точку первым аргументом нужен addon.Platform; при вызове через двоеточие он передаётся неявно.
spellnumber | stringID заклинания или распознаваемое клиентом название заклинания, заряды которого нужно прочитать.

Возвращает

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

Издания

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

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

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

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

Пример

local charges = addon.Platform:GetSpellCharges(value.spell)
if not charges then return nil end
-- spend a charge rather than waste recharge time
return charges.currentCharges == charges.maxCharges

Зависимости

Исходный код

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

Platform.spells.GetSpellCharges(self, spell)
    local valid,reason=identifier(spell)
    if not valid then return nil,reason end
    local ok,record,built
    if C_Spell and type(C_Spell.GetSpellCharges)=="function" then
        ok,record=pcall(C_Spell.GetSpellCharges,spell)
    elseif type(GetSpellCharges)=="function" then
        local current,maximum,start,duration,rate
        ok,current,maximum,start,duration,rate=pcall(GetSpellCharges,spell)
        if not ok then return nil,"api-error" end
        record={currentCharges=current,maxCharges=maximum,cooldownStartTime=start,cooldownDuration=duration,chargeModRate=rate};built=true
    else return nil,"missing-api" end
    if not ok then return nil,"api-error" end
    if not self:CanReadValue(record) then return nil,"restricted-value" end
    if record==nil then return nil,"spell-charges-unavailable" end
    local charges,why=own(record,chargeFields,built)
    if not charges then return nil,why end
    if next(charges)==nil then return nil,"spell-charges-unavailable" end
    local current,maximum,start,duration=charges.currentCharges,charges.maxCharges,charges.cooldownStartTime,charges.cooldownDuration
    if current==nil or maximum==nil or start==nil or duration==nil or current<0 or current%1~=0
        or maximum<1 or maximum%1~=0 or current>maximum or start<0 or duration<0
        or charges.chargeModRate and charges.chargeModRate<=0 then return nil,"invalid-api-result" end
    local active=current<maximum and start>0 and duration>0
    if charges.isActive==nil then charges.isActive=active
    elseif charges.isActive and not active then return nil,"invalid-api-result" end
    charges.chargeModRate=charges.chargeModRate or 1
    return charges

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