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
| Nombre | Tipo | Qué hace |
|---|---|---|
health | table | false | nil | Instantá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
| 1 | number | Cambio 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. |
|---|---|---|
| 2 | number | nil | Recuento 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 juego | |||||
|---|---|---|---|---|---|
GetTime |
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 < 0Có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




