Appel
addon:GetConditionUnitLevel(unit, cache)
Disponible directement via addon ; aucune dépendance n'est nécessaire.
Ce qu'elle fait
Résout le niveau brut lisible d'une unité pour l'évaluation des conditions. Une absence connue renvoie false ; les observations indisponibles renvoient nil avec un motif. Les observations sont mises en cache au sein de la passe d'évaluation fournie. Seuls les niveaux valides du joueur sont conservés d'une passe à l'autre, jusqu'à une actualisation des compétences, du profil ou du niveau.
Arguments
| Nom | Type | Ce qu'elle fait |
|---|---|---|
self | RMAddon | Instance de l'addon Rotation Master (implicite avec un appel par deux-points). |
unit | string | Identifiant de l'unité dont le niveau brut doit être résolu. |
cache | table | nil | Cache d'évaluation partagé ; nil observe directement, sans cache par passe. |
Retours
| 1 | number | boolean | nil | Niveau entier positif, false pour une unité connue comme absente, ou nil si indisponible. |
|---|---|---|
| 2 | string | nil | Motif de disponibilité ou de validation de la requête pour un niveau nil. |
É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.
Comment l'addon l'appelle
Source
Core/level_conditions.lua, ligne 21. En lecture seule dans le jeu ; Dupliquer crée une copie modifiable.
Core.level_conditions.GetConditionUnitLevel(self, unit, cache)
if not self.Platform:CanReadValue(unit) then return nil,'restricted-value' end
if type(unit)~='string' or unit=='' then return nil,'invalid-unit' end
if self.Platform:GetClientFamily()=='unknown' then return nil,'unsupported-client' end
local longterm=self.longtermCache
if unit=='player' and type(longterm)=='table' then
local level=longterm.conditionPlayerLevel
if not self.Platform:CanReadValue(level) then return nil,'restricted-value' end
if level~=nil then
if type(level)~='number' or level~=level or level<=0 or level==math.huge or level%1~=0 then return nil,'invalid-api-result' end
return level
end
end
local record,reason=addon.Functions.cache.getCached(cache,self.Platform.GetUnitLevelObservation,self.Platform,unit)
if not record then return nil,reason end
if not record.exists then return false end
if unit=='player' and type(longterm)=='table' then longterm.conditionPlayerLevel=record.level end
return record.level