Référence › Référence des fonctions › Platform

Platform.health_forecast.GetHealthForecastProviderObservation

publique

Appel

addon.Platform:GetHealthForecastProviderObservation(unit)

Disponible directement via addon ; aucune dépendance n'est nécessaire.

Ce qu'elle fait

Lit RealMobHealth (facultatif) à l'aide de son appel exact avec point à un argument. Un espace de noms absent (nil/false) renvoie un enregistrement vide. Normalise current et maximum indépendamment : les champs nil/false permettent le repli natif, un zéro numérique reste présent. Les faits du fournisseur consommés mal formés, en échec, restreints, négatifs ou non finis sont indisponibles. Aucun cache de fournisseur ni repli sur des données périmées n'est utilisé.

Arguments

NomTypeCe qu'elle fait
selfRMPlatformAdaptateur de plateforme Rotation Master (implicite avec un appel par deux-points).
unitstringIdentifiant d'unité sélectionné, transmis comme unique argument du fournisseur.

Retours

1table | nilEnregistrement partiel current/maximum, vide en l'absence de fournisseur, ou nil si indisponible.
2string | nilMotif de fournisseur, de validation ou de disponibilité de l'observation.

É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.

Elle ne lit directement aucune API du jeu.

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 = 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

Dépendances

Source

Platform/health_forecast.lua, ligne 107. En lecture seule dans le jeu ; Dupliquer crée une copie modifiable.

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}

Retour à Référence des fonctions