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
| Nom | Type | Ce qu'elle fait |
|---|---|---|
self | RMPlatform | Adaptateur de plateforme Rotation Master (implicite avec un appel par deux-points). |
unit | string | Identifiant d'unité sélectionné, transmis comme unique argument du fournisseur. |
Retours
| 1 | table | nil | Enregistrement partiel current/maximum, vide en l'absence de fournisseur, ou nil si indisponible. |
|---|---|---|
| 2 | string | nil | Motif 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.2Dépendances
providerValue→Platform.health_forecast.providerValuereadField→Platform.health_forecast.readField
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}