Appel
Functions.trends.calculateOld(health)
Enregistrez-la comme dépendance nommée Functions.trends.calculateOld (accepter la complétion le fait pour vous), puis appelez-la sous ce nom.
Ce qu'elle fait
Exécute la formule historique de tendance des instantanés de points de vie à l'aide de la fenêtre d'historique du profil en direct, de l'horloge et de l'ancien service d'arrondi. Conserve ses transitions de points de vie maximum, son arrêt anticipé à pleine vie ou à zéro, sa pondération, ses erreurs et ses nombres de valeurs renvoyées. Un tableau vide, ou des instantanés qui n'enregistrent aucune variation pondérée, ne renvoient que zéro au lieu d'un résultat 0/0 ; il s'agit de l'ancien algorithme, et non d'une prévision validée.
Arguments
| Nom | Type | Ce qu'elle fait |
|---|---|---|
health | table | false | nil | Instantanés de points de vie, du plus récent au plus ancien, contenant time, value et max. Une entrée fausse renvoie uniquement zéro, sans lire l'horloge. |
Retours
| 1 | number | Variation pondérée des instantanés de points de vie selon la formule d'origine total/nombre ; zéro pour une entrée fausse ou lorsqu'aucune variation pondérée n'a été enregistrée. |
|---|---|---|
| 2 | number | nil | Nombre d'origine d'intervalles d'âge arrondi, omis lorsque le résultat est le zéro seul. |
Éditions
Les fonctions utilitaires intégrées sont enregistrées sur toutes les éditions. Ce qui diffère, c'est l'API du jeu qu'elles lisent ; quand l'une manque, la fonction utilitaire se rabat sur une alternative ou renvoie nil avec une raison.
- Indisponible sur cette édition (la raison figure dans l'infobulle)
- Uniquement tant que les solutions de repli de Blizzard pour les fonctions obsolètes sont actives
| API du jeu | |||||
|---|---|---|---|---|---|
GetTime |
Exemple
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 < 0Source
Functions/trends.lua, ligne 21. En lecture seule dans le jeu ; Dupliquer crée une copie modifiable.
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




