Appel
addon.Platform:GetSpellCooldown(spell)
Disponible directement via addon ; aucune dépendance n'est nécessaire.
Ce qu'elle fait
Lit et normalise le temps de recharge d'un sort sur les clients pris en charge. L'enregistrement renvoyé contient startTime, duration, isEnabled et modRate. Les horodatages et la durée décrivent déjà l'expiration en secondes de GetTime() ; ne les divisez pas par modRate. Quand le client masque les durées (Retail et Forever en combat), l'enregistrement est nil avec la raison restricted-value, suivie des indicateurs isEnabled, isActive et isOnGCD, jamais secrets, lorsqu'ils peuvent être lus.
Arguments
| Nom | Type | Ce qu'elle fait |
|---|---|---|
self | RMPlatform | Adaptateur de plateforme Rotation Master. Une référence par point exige addon.Platform comme premier argument ; un appel par deux-points le fournit implicitement. |
spell | number | string | ID de sort, ou nom de sort reconnu par le client, dont le temps de recharge doit être lu. |
Retours
| 1 | table | nil | Enregistrement de temps de recharge lisible, ou nil si indisponible. |
|---|---|---|
| 2 | string | nil | Motif de disponibilité ou de validation lorsque l'enregistrement est nil. |
| 3 | boolean | nil | Avec restricted-value uniquement : isEnabled, false tant que le temps de recharge est suspendu. |
| 4 | boolean | nil | Avec restricted-value uniquement : isActive, true tant qu'un temps de recharge (le sien ou le global) est en cours. |
| 5 | boolean | nil | Avec restricted-value uniquement : isOnGCD, true quand le temps de recharge en cours est le temps de recharge global ; peut être nil. |
Éditions
Les fonctions utilitaires intégrées sont enregistrées sur toutes les éditions. Ce qui diffère, c'est l'API du jeu qu'elles lisent ; quand l'une manque, la fonction utilitaire se rabat sur une alternative ou renvoie nil avec une raison.
- Indisponible sur cette édition (la raison figure dans l'infobulle)
- Uniquement tant que les solutions de repli de Blizzard pour les fonctions obsolètes sont actives
| API du jeu | |||||
|---|---|---|---|---|---|
C_Spell.GetSpellCooldown | |||||
GetSpellCooldown |
Valeurs secrètes (Retail et Forever)
Sur Retail et Forever, le jeu transmet aux addons des valeurs secrètes. Cette fonction utilitaire vérifie ce qu'elle lit (addon.Platform:CanReadValue) et renvoie nil avec une raison telle que restricted-value au lieu d'une valeur secrète qu'elle ne peut pas comparer. Traitez nil comme indisponible, pas comme false.
Exemple
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 nilDépendances
cooldownFields(builtin:Platform/spells.lua:cooldownFields)cooldownFlags→Platform.spells.cooldownFlagsidentifier→Platform.spells.identifierown→Platform.spells.own
Source
Platform/spells.lua, ligne 393. En lecture seule dans le jeu ; Dupliquer crée une copie modifiable.
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




