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
| Name | Typ | Was sie bewirkt |
|---|---|---|
self | RMPlatform | Plattformadapter von Rotation Master. Ein Punktaufruf erfordert addon.Platform als erstes Argument; ein Doppelpunktaufruf übergibt ihn implizit. |
spell | number | string | Zauber-ID oder vom Client erkannter Zaubername, dessen Abklingzeit gelesen werden soll. |
Rückgabewerte
| 1 | table | nil | Lesbarer Abklingzeit-Datensatz oder nil, wenn nicht verfügbar. |
|---|---|---|
| 2 | string | nil | Verfügbarkeits- oder Validierungsgrund, wenn der Datensatz nil ist. |
| 3 | boolean | nil | Nur bei restricted-value: isEnabled, false, solange die Abklingzeit angehalten ist. |
| 4 | boolean | nil | Nur bei restricted-value: isActive, true, solange eine Abklingzeit (die eigene oder die globale) läuft. |
| 5 | boolean | nil | Nur 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-API | |||||
|---|---|---|---|---|---|
C_Spell.GetSpellCooldown | |||||
GetSpellCooldown |
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 nilAbhängigkeiten
cooldownFields(builtin:Platform/spells.lua:cooldownFields)cooldownFlags→Platform.spells.cooldownFlagsidentifier→Platform.spells.identifierown→Platform.spells.own
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




