Referenz › Funktionsreferenz › Platform

Platform.spells.GetSpellCooldown

öffentlich

Aufruf als

addon.Platform:GetSpellCooldown(spell)

Direkt über addon verfügbar; keine Abhängigkeit nötig.

Was sie bewirkt

Liest die Abklingzeit eines Zaubers und normalisiert sie über alle unterstützten Clients. Der zurückgegebene Datensatz enthält startTime, duration, isEnabled und modRate. Die Zeitstempel und duration beschreiben den Ablauf bereits in GetTime()-Sekunden; teilen Sie sie nicht durch modRate. Wenn der Client die Zeiten verbirgt (Retail und Forever im Kampf), ist der Datensatz nil mit dem Grund restricted-value, gefolgt von den nie geheimen Flags isEnabled, isActive und isOnGCD, sofern sie gelesen werden können.

Argumente

NameTypWas sie bewirkt
selfRMPlatformPlattformadapter von Rotation Master. Ein Punktaufruf erfordert addon.Platform als erstes Argument; ein Doppelpunktaufruf übergibt ihn implizit.
spellnumber | stringZauber-ID oder vom Client erkannter Zaubername, dessen Abklingzeit gelesen werden soll.

Rückgabewerte

1table | nilLesbarer Abklingzeit-Datensatz oder nil, wenn nicht verfügbar.
2string | nilVerfügbarkeits- oder Validierungsgrund, wenn der Datensatz nil ist.
3boolean | nilNur bei restricted-value: isEnabled, false, solange die Abklingzeit angehalten ist.
4boolean | nilNur bei restricted-value: isActive, true, solange eine Abklingzeit (die eigene oder die globale) läuft.
5boolean | nilNur bei restricted-value: isOnGCD, true, wenn die laufende Abklingzeit die globale Abklingzeit ist; kann nil sein.

Editionen

Integrierte Hilfsfunktionen werden auf jeder Edition registriert. Unterschiedlich ist die Spiel-API, die sie lesen; fehlt eine, weicht die Hilfsfunktion aus oder gibt nil mit einem Grund zurück.

  • Auf dieser Edition nicht verfügbar (den Grund nennt der Tooltip)
  • Nur, solange Blizzards Ersatz für veraltete Funktionen aktiv ist
Spiel-APIClassic EraTBC AnniversaryClassic ProgressionForeverRetail
C_Spell.GetSpellCooldownClassic EraTBC AnniversaryClassic ProgressionForeverRetail
GetSpellCooldownClassic EraTBC AnniversaryClassic ProgressionForeverRetail

Geheime Werte (Retail und Forever)

Auf Retail und Forever übergibt das Spiel Addons geheime Werte. Diese Hilfsfunktion prüft, was sie liest (addon.Platform:CanReadValue), und gibt statt eines geheimen Werts, den sie nicht vergleichen kann, nil mit einem Grund wie restricted-value zurück. Behandeln Sie nil als nicht verfügbar, nicht als false.

Beispiel

local record, reason, isEnabled, isActive = addon.Platform:GetSpellCooldown(value.spell)
if record then return record.isEnabled and record.duration == 0 end
-- Times are secret in combat on Retail and Forever; fall back to the flags.
if reason == "restricted-value" and isActive ~= nil then return isEnabled and not isActive end
return nil

Abhängigkeiten

Quelle

Platform/spells.lua, Zeile 393. Im Spiel schreibgeschützt; Duplizieren erstellt eine bearbeitbare Kopie.

Platform.spells.GetSpellCooldown(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.GetSpellCooldown) == "function" then
        ok, record = pcall(C_Spell.GetSpellCooldown, spell)
    elseif type(GetSpellCooldown) == "function" then
        local start, duration, enabled, rate
        ok, start, duration, enabled, rate = pcall(GetSpellCooldown, spell)
        if not ok then return nil, "api-error" end
        if not self:CanReadValue(start) or not self:CanReadValue(duration) or not self:CanReadValue(enabled)
            or not self:CanReadValue(rate) then return nil, "restricted-value" end
        if start ~= nil then
            if enabled ~= 0 and enabled ~= 1 then return nil, "invalid-api-result" end
            record = {startTime=start, duration=duration, isEnabled=enabled == 1, modRate=rate or 1};built = true
        end
    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-data-unavailable" end
    local cooldown, why = own(record, cooldownFields, built)
    if not cooldown then
        if why == "restricted-value" and not built then return nil, why, cooldownFlags(self, record) end
        return nil, why
    end
    if cooldown.startTime == nil or cooldown.duration == nil or cooldown.isEnabled == nil
        or cooldown.startTime < 0 or cooldown.duration < 0 or (cooldown.modRate and cooldown.modRate <= 0) then
        return nil, "invalid-api-result"
    end
    cooldown.modRate = cooldown.modRate or 1
    return cooldown

Zurück zu Funktionsreferenz