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

Platform.zone_pvp.GetZonePVPObservation

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

Как вызывать

addon.Platform:GetZonePVPObservation()

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

Что делает

Наблюдать первый результат классификации PvP зоны одним защищённым вызовом через точку без аргументов. Предпочитается вызываемый C_PvP.GetZonePVPInfo, а глобальный помощник используется, только если современного вызова нет. Успешный nil или отсутствие возвращаемых значений дают известную пустую запись; отсутствующие, неудачные, ограниченные или повреждённые наблюдения остаются недоступными. Читаемые пустые и будущие строки сохраняют точный смысл, а неиспользуемые возвращаемые поля не определяют доступность. После результата или ошибки современного варианта переключение на другой никогда не происходит.

Аргументы

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

Возвращает

1table | nilЗапись успешного наблюдения со строкой pvpType или nil; запись nil означает «недоступно».
2string | nilПричина недоступности по политике клиента, возможности, вызову или наблюдению для записи nil.

Издания

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

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

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

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

Пример

local zone = addon.Platform:GetZonePVPObservation()
if not zone then return nil end
return zone.pvpType == "sanctuary"

Исходный код

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

Platform.zone_pvp.GetZonePVPObservation(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
    local namespace=C_PvP
    if not self:CanReadValue(namespace) then return nil,'restricted-value' end
    if canaccessvalue and not canaccessvalue(namespace) then return nil,'restricted-value' end
    local api
    if type(namespace)=='table' then api=namespace.GetZonePVPInfo end
    if not self:CanReadValue(api) then return nil,'restricted-value' end
    if canaccessvalue and not canaccessvalue(api) then return nil,'restricted-value' end
    if type(api)~='function' then
        api=GetZonePVPInfo
        if not self:CanReadValue(api) then return nil,'restricted-value' end
        if canaccessvalue and not canaccessvalue(api) then return nil,'restricted-value' end
        if type(api)~='function' then return nil,'missing-api' end
    end
    local ok,pvpType=pcall(api)
    if not ok then return nil,'api-error' end
    if not self:CanReadValue(pvpType) then return nil,'restricted-value' end
    if canaccessvalue and not canaccessvalue(pvpType) then return nil,'restricted-value' end
    if pvpType==nil then return {} end
    if type(pvpType)~='string' then return nil,'invalid-api-result' end
    return {pvpType=pvpType}

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