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

Platform.instance.GetInstanceObservation

pública

Chame como

addon.Platform:GetInstanceObservation()

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

O que faz

Observa uma única tupla protegida de IsInInstance sem argumentos. A participação booleana legível necessária independe do campo de tipo: fora (conhecido) retorna sem interpretar o tipo não usado; dentro retorna um tipo de texto legível ou um instanceTypeReason quando esse campo secundário está indisponível. Quem testa se está fora precisa apenas da participação; comparações de tipo dentro devem verificar o motivo secundário. Nenhuma dedução de ar livre, zona ou unidade é adicionada.

Argumentos

NomeTipoO que faz
selfRMPlatformAdaptador de plataforma do Rotation Master (implícito nas chamadas com dois-pontos).

Retornos

1table | nilRegistro com inInstance e, quando dentro, instanceType ou instanceTypeReason; nil quando a participação está indisponível.
2string | nilMotivo de disponibilidade da política do cliente, da chamada nativa ou da participação necessária para um registro 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.

  • Indisponível nessa edição (o motivo está na dica)
  • Só enquanto as alternativas da Blizzard para APIs obsoletas estiverem ativas
API do jogoClassic EraTBC AnniversaryClassic ProgressionForeverRetail
IsInInstanceClassic EraTBC AnniversaryClassic ProgressionForeverRetail
canaccessvalueClassic EraTBC AnniversaryClassic ProgressionForeverRetail

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:GetInstanceObservation()
if not record then return nil end
if not record.inInstance then return false end
if not record.instanceType then return nil end
return record.instanceType == "raid"

Código-fonte

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

Platform.instance.GetInstanceObservation(self)
    local family=self:GetClientFamily()
    if family~='retail' and family~='forever' and family~='era' and family~='tbc' and family~='progression' then return nil,'unsupported-policy' end
    if type(IsInInstance)~='function' then return nil,'missing-api' end
    local ok,inInstance,instanceType=pcall(IsInInstance)
    if not ok then return nil,'api-error' end
    if not self:CanReadValue(inInstance) then return nil,'restricted-value' end
    if canaccessvalue and not canaccessvalue(inInstance) then return nil,'restricted-value' end
    if inInstance==nil then return nil,'instance-data-unavailable' end
    if type(inInstance)~='boolean' then return nil,'invalid-api-result' end
    if not inInstance then return {inInstance=false} end
    if not self:CanReadValue(instanceType) then return {inInstance=true,instanceTypeReason='restricted-value'} end
    if canaccessvalue and not canaccessvalue(instanceType) then return {inInstance=true,instanceTypeReason='restricted-value'} end
    if instanceType==nil then return {inInstance=true,instanceTypeReason='instance-type-unavailable'} end
    if type(instanceType)~='string' then return {inInstance=true,instanceTypeReason='invalid-api-result'} end
    return {inInstance=true,instanceType=instanceType}

Voltar para Referência de funções