Referência › Referência de funções › Platform

Platform.health_forecast.GetHealthForecastProviderObservation

pública

Chame como

addon.Platform:GetHealthForecastProviderObservation(unit)

Disponível diretamente por meio de addon; nenhuma dependência é necessária.

O que faz

Lê o RealMobHealth opcional usando a chamada com ponto exata de um argumento. Um namespace ausente, nil ou false retorna um registro vazio. Normaliza current e maximum de forma independente: campos nil/false permitem a alternativa nativa, e o zero numérico continua presente. Dados do provedor consumidos malformados, com falha, restritos, negativos ou não finitos ficam indisponíveis. Nenhum cache do provedor ou alternativa obsoleta é usado.

Argumentos

NomeTipoO que faz
selfRMPlatformAdaptador de plataforma do Rotation Master (implícito nas chamadas com dois-pontos).
unitstringToken de unidade selecionado repassado como único argumento do provedor.

Retornos

1table | nilRegistro parcial de current/maximum, vazio quando o provedor está ausente, ou nil quando indisponível.
2string | nilMotivo de disponibilidade do provedor, da validação ou da observação.

Edições

As funções auxiliares integradas são registradas em todas as edições. O que muda é a API do jogo que elas leem; quando uma está ausente, a função auxiliar recorre a uma alternativa ou retorna nil com um motivo.

Não lê nenhuma API do jogo diretamente.

Valores secretos (Retail e Forever)

No Retail e no Forever, o jogo entrega valores secretos aos addons. Esta função auxiliar verifica o que lê (addon.Platform:CanReadValue) e retorna nil com um motivo como restricted-value em vez de um valor secreto que não consegue comparar. Trate nil como indisponível, não como false.

Exemplo

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

Dependências

Código-fonte

Platform/health_forecast.lua, linha 107. Somente leitura no jogo; Duplicar cria uma cópia editável.

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}

Voltar para Referência de funções