Riferimento › Riferimento delle funzioni › Functions

Functions.trends.calculateOld

pubblica

Chiamala come

Functions.trends.calculateOld(health)

Registrala come dipendenza chiamata Functions.trends.calculateOld (accettare il completamento lo fa per te), poi chiamala con quel nome.

Cosa fa

Esegue la formula storica di tendenza delle istantanee della salute usando la finestra attuale della cronologia del profilo, l'orologio e il servizio di arrotondamento precedente. Preserva le sue transizioni della salute massima, l'arresto anticipato a salute piena o nulla, la ponderazione, gli errori e il numero di valori restituiti. Un array vuoto, o istantanee che non registrano alcuna variazione ponderata, restituiscono solo zero invece di un risultato 0/0; è l'algoritmo precedente, non una previsione convalidata.

Argomenti

NomeTipoCosa fa
healthtable | false | nilIstantanee della salute dalla più recente, contenenti time, value e max. Un input falsy restituisce solo zero senza leggere l'orologio.

Valori restituiti

1numberVariazione ponderata delle istantanee della salute secondo la formula originale totale/conteggio; zero per un input falso o quando non è stata registrata alcuna variazione ponderata.
2number | nilConteggio originale degli intervalli di età arrotondata, omesso quando il risultato è lo zero da solo.

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 disponibile su quell'edizione (il motivo è nel suggerimento)
  • Solo mentre sono attivi i ripieghi di Blizzard per le API deprecate
API di giocoClassic EraTBC AnniversaryClassic progressionForeverRetail
GetTimeClassic EraTBC AnniversaryClassic progressionForeverRetail

Esempio

local now = GetTime()
local snapshots = { { time = now, value = 6000, max = 10000 },
    { time = now - 1, value = 7000, max = 10000 }, { time = now - 2, value = 8000, max = 10000 } }
local change = Functions.trends.calculateOld(snapshots)
return change < 0

Sorgente

Functions/trends.lua, riga 21. Nel gioco è in sola lettura; Duplica crea una copia modificabile.

Functions.trends.calculateOld(health)
    if not health then
        return 0
    end

    local damage_history = addon.db.profile.damage_history
    local now = GetTime()
    local total, count, seconds = 0, 0, 0

    local last_health, last_offs, last_max
    local offs_total = 0
    for _,v in ipairs(health) do
        if v.value >= v.max or v.value == 0 then
            break
        end

        if last_max ~= v.max then
            last_health = nil
            last_max = v.max
        end

        local offs = addon.round(now - v.time)
        if last_health ~= nil then
            offs_total = offs_total + (last_health - v.value)

            if last_offs ~= offs then
                local scale = damage_history - offs
                count = count + scale
                total = total + (offs_total * scale)
                seconds = seconds + 1
                offs_total = 0
            end
        end
        last_health = v.value
        last_offs = offs
    end

    -- seconds is a number, so test it: with no change recorded (or no weight)
    -- total/count is 0/0, and the trend is zero, not NaN.
    if seconds > 0 and count ~= 0 then
        return total / count, seconds
    end
    return 0

Torna a Riferimento delle funzioni