Справочник › Справочник функций › Platform

Platform.instance.GetInstanceObservation

общедоступный

Как вызывать

addon.Platform:GetInstanceObservation()

Доступен напрямую через addon; зависимость не нужна.

Что делает

Наблюдать один защищённый кортеж IsInInstance без аргументов. Обязательное читаемое логическое значение нахождения не зависит от поля типа: известное «снаружи» возвращается без разбора неиспользуемого типа; «внутри» возвращает читаемую строку типа или instanceTypeReason, если это вторичное поле недоступно. Проверяющим «снаружи» достаточно факта нахождения; сравнения типа «внутри» должны проверять вторичную причину. Выводы о нахождении под открытым небом, зоне или юните не добавляются.

Аргументы

ИмяТипЧто делает
selfRMPlatformАдаптер платформы Rotation Master (неявно при вызове через двоеточие).

Возвращает

1table | nilЗапись с inInstance и, если внутри, instanceType или instanceTypeReason; nil, если нахождение недоступно.
2string | nilПричина недоступности по политике клиента, встроенному вызову или обязательному членству для записи nil.

Издания

Встроенные помощники регистрируются во всех изданиях. Различается игровой API, который они читают; если нужного API нет, помощник использует запасной вариант или возвращает nil с причиной.

  • Недоступно в этом издании (причина — во всплывающей подсказке)
  • Только пока включены запасные реализации Blizzard для устаревших функций
Игровой APIClassic EraTBC AnniversaryClassic ProgressionForeverRetail
IsInInstanceClassic EraTBC AnniversaryClassic ProgressionForeverRetail
canaccessvalueClassic EraTBC AnniversaryClassic ProgressionForeverRetail

Секретные значения (Retail и Forever)

В Retail и Forever игра передаёт аддонам секретные значения. Этот помощник проверяет то, что читает (addon.Platform:CanReadValue), и вместо секретного значения, которое нельзя сравнить, возвращает nil с причиной, например restricted-value. Считайте nil недоступным значением, а не ложью.

Пример

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"

Исходный код

Platform/instance.lua, строка 18. В игре только для чтения; «Дублировать» создаёт редактируемую копию.

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}

Назад: Справочник функций