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

Platform.health_forecast.GetHealthForecastProviderObservation

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

Как вызывать

addon.Platform:GetHealthForecastProviderObservation(unit)

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

Что делает

Прочитать необязательный RealMobHealth точным вызовом через точку с одним аргументом. Отсутствующее (nil/false) пространство имён возвращает пустую запись. current и maximum нормализуются независимо: поля nil/false разрешают встроенный запасной вариант, числовой ноль считается присутствующим. Повреждённые, неудачные, ограниченные, отрицательные или бесконечные используемые факты поставщика недоступны. Кэш поставщика или устаревших значений не используется.

Аргументы

ИмяТипЧто делает
selfRMPlatformАдаптер платформы Rotation Master (неявно при вызове через двоеточие).
unitstringВыбранный токен юнита, передаваемый единственным аргументом поставщику.

Возвращает

1table | nilЧастичная запись current/maximum; пустая, если поставщика нет; nil, если недоступно.
2string | nilПричина недоступности по поставщику, проверке или наблюдению.

Издания

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

Не читает игровой API напрямую.

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

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

Пример

local record = addon.Platform:GetHealthForecastProviderObservation("target")
if not record or not record.current or not record.maximum then return nil end
if record.maximum == 0 then return nil end
return record.current / record.maximum < 0.2

Зависимости

Исходный код

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

Platform.health_forecast.GetHealthForecastProviderObservation(self, unit)
    local policy=self:GetCombatDataPolicy()
    if policy~='probe' and policy~='restricted' then return nil,'unsupported-policy' end
    if not self:CanReadValue(unit) then return nil,'restricted-value' end
    if type(unit)~='string' or unit=='' then return nil,'invalid-unit' end
    local provider=_G.RealMobHealth
    if not self:CanReadValue(provider) then return nil,'restricted-value' end
    if provider==nil or provider==false then return {} end
    local api,why=readField(self,provider,'GetUnitHealth')
    if why then return nil,why end
    if type(api)~='function' then return nil,'missing-api' end
    local ok,current,maximum=pcall(api,unit)
    if not ok then return nil,'api-error' end
    local value,reason=providerValue(self,current)
    if reason then return nil,reason end
    local max,maxReason=providerValue(self,maximum)
    if maxReason then return nil,maxReason end
    return {current=value,maximum=max}

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