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
| Nome | Tipo | Cosa fa |
|---|---|---|
health | table | false | nil | Istantanee della salute dalla più recente, contenenti time, value e max. Un input falsy restituisce solo zero senza leggere l'orologio. |
Valori restituiti
| 1 | number | Variazione ponderata delle istantanee della salute secondo la formula originale totale/conteggio; zero per un input falso o quando non è stata registrata alcuna variazione ponderata. |
|---|---|---|
| 2 | number | nil | Conteggio 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 gioco | |||||
|---|---|---|---|---|---|
GetTime |
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 < 0Sorgente
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




