Aufruf als
addon.Platform:GetLossOfControlEvent(index, kind)
Direkt über addon verfügbar; keine Abhängigkeit nötig.
Was sie bewirkt
Eine dokumentierte aktive Kontrollverlust-Zeile über ihren nativen Index und die angefragte Subjektart lesen. Typabfragen benötigen nur die lesbare Zeichenkette des Kontrolltyps; Schulabfragen nur die lesbare endliche nichtnegative ganzzahlige Zauberschulmaske. Optionales Timing wird als endliches timeRemaining oder als expliziter Grund pro Feld zurückgegeben, sodass ein nicht betroffenes Subjekt keinen nutzbaren Timer benötigt. Fehlende Zeilen sind nicht verfügbare Beobachtungen der Momentaufnahme. Es werden keine Anzeigefelder, abgeleiteten Fristen, Dauersummen, Maxima oder nativen Alias-Rückgriffe verwendet.
Argumente
| Name | Typ | Was sie bewirkt |
|---|---|---|
self | RMPlatform | Plattformadapter von Rotation Master (bei Doppelpunktaufrufen implizit). |
index | number | Nativer einsbasierter ganzzahliger Index der aktiven Zeile innerhalb des RM-Scan-Budgets von 256 Zeilen. |
kind | string | Genau type oder school; wählt das erforderliche Subjektfeld, ohne das andere zu benötigen. |
Rückgabewerte
| 1 | table | nil | Normalisiertes angefragtes Subjekt mit endlichem timeRemaining oder timeRemainingReason; nil, wenn die erforderliche Zeile oder das Subjekt nicht verfügbar ist. |
|---|---|---|
| 2 | string | nil | Verfügbarkeitsgrund aus Richtlinie, Abfrage, Client-Unterstützung oder erforderlicher Zeile/erforderlichem Subjekt 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 | |||||
|---|---|---|---|---|---|
C_LossOfControl | |||||
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 count = addon.Platform:GetLossOfControlCount()
if count == nil then return nil end
if count == 0 then return false end
local row = addon.Platform:GetLossOfControlEvent(1, "type")
if not row then return nil end
return row.locType == "STUN"Quelle
Platform/loss_of_control.lua, Zeile 45. Im Spiel schreibgeschützt; Duplizieren erstellt eine bearbeitbare Kopie.
Platform.loss_of_control.GetLossOfControlEvent(self, index, kind)
local policy=self:GetCombatDataPolicy()
if policy~='probe' and policy~='restricted' then return nil,'unsupported-policy' end
if not self:CanReadValue(index) or not self:CanReadValue(kind) then return nil,'restricted-value' end
if canaccessvalue and not canaccessvalue(index) then return nil,'restricted-value' end
if type(index)~='number' or index~=index or index==math.huge or index==-math.huge or index<1 or index%1~=0 then return nil,'invalid-loss-of-control-query' end
if kind~='type' and kind~='school' then return nil,'invalid-loss-of-control-query' end
if index>256 then return nil,'loss-of-control-budget-exceeded' end
local namespace=C_LossOfControl
if not self:CanReadValue(namespace) then return nil,'restricted-value' end
if type(namespace)~='table' then return nil,'missing-api' end
local methodOk,method=pcall(function() return namespace.GetActiveLossOfControlData end)
if not methodOk then return nil,'api-error' end
if not self:CanReadValue(method) then return nil,'restricted-value' end
if type(method)~='function' then return nil,'missing-api' end
local ok,event=pcall(method,index)
if not ok then return nil,'api-error' end
if not self:CanReadValue(event) then return nil,'restricted-value' end
if event==nil then return nil,'loss-of-control-event-unavailable' end
if type(event)~='table' then return nil,'invalid-api-result' end
local subjectOk,subject=pcall(function() return event[kind=='type' and 'locType' or 'lockoutSchool'] end)
if not subjectOk then return nil,'api-error' end
if not self:CanReadValue(subject) then return nil,'restricted-value' end
if canaccessvalue and not canaccessvalue(subject) then return nil,'restricted-value' end
if subject==nil then return nil,'loss-of-control-subject-unavailable' end
local record={}
if kind=='type' then
if type(subject)~='string' then return nil,'invalid-api-result' end
record.locType=subject
else
if type(subject)~='number' or subject~=subject or subject==math.huge or subject==-math.huge or subject<0 or subject%1~=0 then return nil,'invalid-api-result' end
record.lockoutSchool=subject
end
local timeOk,remaining=pcall(function() return event.timeRemaining end)
if not timeOk then record.timeRemainingReason='api-error'
elseif not self:CanReadValue(remaining) then record.timeRemainingReason='restricted-value'
elseif canaccessvalue and not canaccessvalue(remaining) then record.timeRemainingReason='restricted-value'
elseif remaining==nil then record.timeRemainingReason='loss-of-control-time-unavailable'
elseif type(remaining)~='number' or remaining~=remaining or remaining==math.huge or remaining==-math.huge then record.timeRemainingReason='invalid-api-result'
else record.timeRemaining=remaining end
return record




