Referenz › Funktionsreferenz › Platform

Platform.loss_of_control.GetLossOfControlEvent

öffentlich

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

NameTypWas sie bewirkt
selfRMPlatformPlattformadapter von Rotation Master (bei Doppelpunktaufrufen implizit).
indexnumberNativer einsbasierter ganzzahliger Index der aktiven Zeile innerhalb des RM-Scan-Budgets von 256 Zeilen.
kindstringGenau type oder school; wählt das erforderliche Subjektfeld, ohne das andere zu benötigen.

Rückgabewerte

1table | nilNormalisiertes angefragtes Subjekt mit endlichem timeRemaining oder timeRemainingReason; nil, wenn die erforderliche Zeile oder das Subjekt nicht verfügbar ist.
2string | nilVerfü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-APIClassic EraTBC AnniversaryClassic ProgressionForeverRetail
C_LossOfControlClassic EraTBC AnniversaryClassic ProgressionForeverRetail
canaccessvalueClassic EraTBC AnniversaryClassic ProgressionForeverRetail

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

Zurück zu Funktionsreferenz