Referencia › Referencia de funciones › Functions

Functions.trends.calculateOld

pública

Llamar como

Functions.trends.calculateOld(health)

Regístrala como dependencia con el nombre Functions.trends.calculateOld (aceptar la sugerencia de autocompletado lo hace por ti) y luego llámala con ese nombre.

Qué hace

Ejecuta la fórmula histórica de tendencia de instantáneas de salud usando la ventana de historial del perfil en vivo, el reloj y el servicio de redondeo antiguo. Conserva sus transiciones de salud máxima, la parada temprana con salud completa o nula, la ponderación, los errores y el número de retornos. Una matriz vacía, o instantáneas que no registran ningún cambio ponderado, devuelven solo cero en lugar de un resultado 0/0; es el algoritmo antiguo, no una previsión validada.

Argumentos

NombreTipoQué hace
healthtable | false | nilInstantáneas de salud, de la más reciente a la más antigua, con tiempo, valor y máximo. Una entrada falsa devuelve solo cero sin leer el reloj.

Retornos

1numberCambio ponderado de las instantáneas de salud según la fórmula original total/recuento; cero para una entrada falsa o cuando no se registró ningún cambio ponderado.
2number | nilRecuento original de intervalos de edad redondeada; se omite cuando el resultado es el cero solo.

Ediciones

Las funciones auxiliares integradas se registran en todas las ediciones. Lo que cambia es la API del juego que leen; donde falta alguna, la función auxiliar recurre a una alternativa o devuelve nil con un motivo.

  • No disponible en esa edición (el motivo aparece en la información emergente)
  • Solo mientras estén activas las alternativas de Blizzard para API obsoletas
API del juegoClassic EraTBC AnniversaryClassic ProgressionForeverRetail
GetTimeClassic EraTBC AnniversaryClassic ProgressionForeverRetail

Ejemplo

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

Código fuente

Functions/trends.lua, línea 21. Solo lectura en el juego; Duplicar crea una copia editable.

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

Volver a Referencia de funciones