Riferimento › Riferimento delle funzioni › Conditions

Conditions.totem.findSpecific

dipendenza

Chiamala come

Conditions.totem.findSpecific(value, cache, start, compareTime)

Registra la dipendenza Conditions.totem.findSpecific, poi chiamala con quel nome. Una chiamata con spazio dei nomi non passa self: usa una chiamata con i due punti o passa tu l'oggetto.

Cosa fa

Searches the totem slots for an active totem matching value.spell, by spell ID or name (only the exact spell ID when value.ranked is set). With compareTime it also requires the totem's remaining time, rounded to 3 decimals, to pass value.operator and value.value; an unreadable slot makes a non-match unavailable.

Argomenti

NomeTipoCosa fa
valuetableCondition settings: spell, ranked and, for timed checks, operator and value.
cachetable | nilEvaluation-pass cache passed to getCached, or nil to read directly.
startnumber | nilEvaluation start time; nil uses GetTime().
compareTimebooleanTrue to also compare the remaining time.

Valori restituiti

1boolean | nilTrue when a matching totem is found, false when none is, or nil when a slot could not be read.
2string | nilReason for nil, such as totem-data-unavailable, totem-rank-unavailable or totem-identity-unavailable.

Edizioni

Le funzioni di supporto integrate sono registrate su ogni edizione. Ciò che cambia è l'API di gioco che leggono; dove ne manca una, la funzione di supporto ripiega su un'alternativa o restituisce nil con un motivo.

Non legge direttamente alcuna API di gioco.

Come la chiama l'addon

Dipendenze

Sorgente

Conditions/totem.lua, riga 102. Nel gioco è in sola lettura; Duplica crea una copia modificabile.

Conditions.totem.findSpecific(value, cache, start, compareTime)
    local target,reason=observe(cache,platform.GetSpellInfo,value.spell)
    if not target then return nil,reason end
    local count,why=observe(cache,platform.GetTotemSlotCount)
    if not count then return nil,why end
    local unavailable
    for slot=1,count do
        local record,problem=observe(cache,platform.GetTotemInfo,slot)
        if not record then unavailable=unavailable or problem or "totem-data-unavailable"
        elseif record.active and remaining(record,start)>0 then
            local matches=false
            if value.ranked then
                if record.spellID then matches=record.spellID==value.spell
                elseif record.name==target.name or record.name=="" then unavailable=unavailable or "totem-rank-unavailable" end
            else
                matches=record.spellID==value.spell or record.name==target.name
                if not matches and record.name=="" then
                    local info,issue
                    if record.spellID then info,issue=observe(cache,platform.GetSpellInfo,record.spellID) end
                    if info then matches=info.name==target.name
                    else unavailable=unavailable or issue or "totem-identity-unavailable" end
                end
            end
            if matches and (not compareTime or addon.compare(value.operator,addon.round(remaining(record,start),3),value.value)) then return true end
        end
    end
    if unavailable then return nil,unavailable end
    return false

Torna a Riferimento delle funzioni