Appel
Functions.trends.calculate(history, window, noheals, nodmg)
Enregistrez-la comme dépendance nommée Functions.trends.calculate (accepter la complétion le fait pour vous), puis appelez-la sous ce nom.
Ce qu'elle fait
Estime la variation signée des points de vie à partir de l'historique pondéré des dégâts et des soins. Les dégâts contribuent un taux négatif et les soins un taux positif. Lit la fenêtre du profil en direct si aucune fenêtre n'est fournie, utilise l'horloge en direct et l'ancien service d'arrondi, et conserve la pondération et le calcul d'âge arrondi existants. Cette fonction utilitaire ne valide ni n'assainit l'historique, ne borne pas les horodatages et ne garantit pas des résultats finis.
Arguments
| Nom | Type | Ce qu'elle fait |
|---|---|---|
history | table | false | nil | Enregistrement d'historique contenant les tableaux damage et heals d'entrées temps/valeur, du plus récent au plus ancien. Un historique faux renvoie uniquement zéro, sans lire l'horloge. |
window | number | false | nil | Fenêtre de pondération en secondes ; nil ou false utilise le paramètre damage_history du profil actuel. |
noheals | boolean | nil | Une valeur vraie ignore le flux de soins sans lire son tableau. |
nodmg | boolean | nil | Une valeur vraie ignore le flux de dégâts sans lire son tableau. |
Retours
| 1 | number | Taux pondéré signé combiné issu de la formule d'origine ; les entrées mal formées ou non finies conservent l'ancien comportement (erreur ou valeur numérique). |
|---|---|---|
| 2 | number | nil | Plus grand âge de flux arrondi, en secondes ; ce n'est ni un nombre d'échantillons ni la preuve d'une observation continue. Omis lorsque l'historique est faux. |
É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 guid = UnitGUID("target")
local history = guid and addon.damageHistory[guid]
if not history then return false end
local rate = Functions.trends.calculate(history, 5, true)
return rate < -1000Source
Functions/trends.lua, ligne 75. En lecture seule dans le jeu ; Dupliquer crée une copie modifiable.
Functions.trends.calculate(history, window, noheals, nodmg)
if not history then
return 0
end
if not window then
window = addon.db.profile.damage_history
end
local now = GetTime()
local damage_total, damage_count, damage_seconds = 0, 0, 0
local heal_total, heal_count, heal_seconds = 0, 0, 0
local maxoffs, data = 0, {}
if not nodmg then
for _,v in ipairs(history.damage) do
local diff = now - v.time
local scale = window - diff
maxoffs = addon.round(diff)
if maxoffs > window then
break
end
if v.value then
data[maxoffs] = (data[maxoffs] or 0) + (v.value * scale)
end
end
damage_seconds = maxoffs
for i=0,maxoffs do
damage_total = damage_total + (data[i] or 0)
damage_count = damage_count + (window - i)
end
end
if not noheals then
maxoffs, data = 0, {}
for _,v in ipairs(history.heals) do
local diff = now - v.time
local scale = window - diff
maxoffs = addon.round(diff)
if maxoffs > window then
break
end
if v.value then
data[maxoffs] = (data[maxoffs] or 0) + (v.value * scale)
end
end
heal_seconds = maxoffs
for i=0,maxoffs do
heal_total = heal_total + (data[i] or 0)
heal_count = heal_count + (window - i)
end
end
return (((damage_count > 0) and (-damage_total / damage_count) or 0) +
((heal_count > 0) and (heal_total / heal_count) or 0)),
(damage_seconds > heal_seconds and damage_seconds or heal_seconds)




