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

Core.level_conditions.GetConditionUnitLevel

pública

Chame como

addon:GetConditionUnitLevel(unit, cache)

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

O que faz

Resolve um nível de unidade bruto legível para avaliar condições. Ausência conhecida retorna false; observações indisponíveis retornam nil com um motivo. Guarda observações em cache dentro da passada de avaliação fornecida. Apenas níveis de jogador válidos são mantidos entre passadas até uma atualização de habilidade, perfil ou nível.

Argumentos

NomeTipoO que faz
selfRMAddonInstância do addon Rotation Master (implícita nas chamadas com dois-pontos).
unitstringToken de unidade cujo nível bruto deve ser resolvido.
cachetable | nilCache de avaliação compartilhado; nil observa diretamente sem cache por passada.

Retornos

1number | boolean | nilNível inteiro positivo, false para unidade sabidamente ausente ou nil quando indisponível.
2string | nilMotivo de disponibilidade ou de validação da consulta para um nível nil.

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.

Como o addon a chama

  • Nível (evaluate)
    local observed,reason=addon:GetConditionUnitLevel(value.unit,cache)
  • Nível (evaluate)
    local level,reason=addon:GetConditionUnitLevel("player",cache)

Código-fonte

Core/level_conditions.lua, linha 21. Somente leitura no jogo; Duplicar cria uma cópia editável.

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

Voltar para Referência de funções