Как вызывать
addon.Platform:GetRuneCooldownObservation(index)
Доступен напрямую через addon; зависимость не нужна.
Что делает
Прочитать один защищённый кортеж GetRuneCooldown для точной встроенной ячейки. ready, start и duration нормализуются независимо: для ready нужен читаемый логический тип, для каждого времени — читаемое конечное число с сохранением знаковых, дробных и нулевых значений. У каждого недоступного поля своя причина. Успешный пустой кортеж даёт частичную запись; отсутствие возможности, политика или сбой встроенного вызова дают nil. ready никогда не выводится из времени, а время — из ready. Кэшируйте эту полную запись у вызывающего, чтобы одно наблюдение разделялось предикатами числа рун и восстановления.
Аргументы
| Имя | Тип | Что делает |
|---|---|---|
self | RMPlatform | Адаптер платформы Rotation Master (неявно при вызове через двоеточие). |
index | number | Точная целочисленная встроенная ячейка руны от 1 до 6. |
Возвращает
| 1 | table | nil | Частичная запись с ready или readyReason, start или startReason и duration или durationReason; nil только если сам запрос недоступен. |
|---|---|---|
| 2 | string | nil | Причина по политике, проверке ячейки, возможности или недоступности встроенного вызова для записи nil. |
Издания
Встроенные помощники регистрируются во всех изданиях. Различается игровой API, который они читают; если нужного API нет, помощник использует запасной вариант или возвращает nil с причиной.
- Недоступно в этом издании (причина — во всплывающей подсказке)
- Только пока включены запасные реализации Blizzard для устаревших функций
| Игровой API | |||||
|---|---|---|---|---|---|
GetRuneCooldown |
Секретные значения (Retail и Forever)
В Retail и Forever игра передаёт аддонам секретные значения. Этот помощник проверяет то, что читает (addon.Platform:CanReadValue), и вместо секретного значения, которое нельзя сравнить, возвращает nil с причиной, например restricted-value. Считайте nil недоступным значением, а не ложью.
Пример
local rune = addon.Platform:GetRuneCooldownObservation(1)
if not rune or rune.ready == nil then return nil end
return rune.readyЗависимости
numberField→Platform.runes.numberFieldvalidIndex→Platform.runes.validIndex
Исходный код
Platform/runes.lua, строка 72. В игре только для чтения; «Дублировать» создаёт редактируемую копию.
Platform.runes.GetRuneCooldownObservation(self, index)
local policy=self:GetCombatDataPolicy()
if policy~='probe' and policy~='restricted' then return nil,'unsupported-policy' end
local valid,reason=validIndex(self,index)
if not valid then return nil,reason end
local api=GetRuneCooldown
if type(api)~='function' then return nil,'missing-api' end
local ok,tuple=pcall(function() return {api(index)} end)
if not ok then return nil,'api-error' end
local record={}
record.start,record.startReason=numberField(self,tuple[1],'rune-start-unavailable')
record.duration,record.durationReason=numberField(self,tuple[2],'rune-duration-unavailable')
local ready=tuple[3]
if not self:CanReadValue(ready) then record.readyReason='restricted-value'
elseif ready==nil then record.readyReason='rune-ready-unavailable'
elseif type(ready)~='boolean' then record.readyReason='invalid-api-result'
else record.ready=ready end
return record




