Aufruf als
addon.Platform:GetInstanceObservation()
Direkt über addon verfügbar; keine Abhängigkeit nötig.
Was sie bewirkt
Ein geschütztes IsInInstance-Tupel ohne Argumente beobachten. Die erforderliche lesbare boolesche Zugehörigkeit ist unabhängig vom Typfeld: bekannt außerhalb kehrt zurück, ohne den ungenutzten Typ auszuwerten; innerhalb liefert einen lesbaren Zeichenketten-Typ oder instanceTypeReason, wenn dieses zweite Feld nicht verfügbar ist. Aufrufer, die auf „außerhalb“ prüfen, benötigen nur die Zugehörigkeit; Typvergleiche für „innerhalb“ müssen den zweiten Grund prüfen. Es wird keine Ableitung von Außenbereich, Zone oder Einheit hinzugefügt.
Argumente
| Name | Typ | Was sie bewirkt |
|---|---|---|
self | RMPlatform | Plattformadapter von Rotation Master (bei Doppelpunktaufrufen implizit). |
Rückgabewerte
| 1 | table | nil | Datensatz mit inInstance und, falls innerhalb, instanceType oder instanceTypeReason; nil, wenn die Zugehörigkeit nicht verfügbar ist. |
|---|---|---|
| 2 | string | nil | Verfügbarkeitsgrund aus Client-Richtlinie, nativem Aufruf oder erforderlicher Zugehörigkeit für einen nil-Datensatz. |
Editionen
Integrierte Hilfsfunktionen werden auf jeder Edition registriert. Unterschiedlich ist die Spiel-API, die sie lesen; fehlt eine, weicht die Hilfsfunktion aus oder gibt nil mit einem Grund zurück.
- Auf dieser Edition nicht verfügbar (den Grund nennt der Tooltip)
- Nur, solange Blizzards Ersatz für veraltete Funktionen aktiv ist
| Spiel-API | |||||
|---|---|---|---|---|---|
IsInInstance | |||||
canaccessvalue |
Geheime Werte (Retail und Forever)
Auf Retail und Forever übergibt das Spiel Addons geheime Werte. Diese Hilfsfunktion prüft, was sie liest (addon.Platform:CanReadValue), und gibt statt eines geheimen Werts, den sie nicht vergleichen kann, nil mit einem Grund wie restricted-value zurück. Behandeln Sie nil als nicht verfügbar, nicht als false.
Beispiel
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"Quelle
Platform/instance.lua, Zeile 18. Im Spiel schreibgeschützt; Duplizieren erstellt eine bearbeitbare Kopie.
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}




