Aufruf als
Functions.trends.calculate(history, window, noheals, nodmg)
Erfassen Sie sie als Abhängigkeit mit dem Namen Functions.trends.calculate (das Übernehmen der Vervollständigung erledigt das) und rufen Sie sie dann unter diesem Namen auf.
Was sie bewirkt
Vorzeichenbehaftete Gesundheitsänderung aus gewichtetem Schadens- und Heilungsverlauf schätzen. Schaden trägt eine negative Rate bei, Heilung eine positive. Ohne übergebenes Fenster das Live-Fenster des Profils lesen, die Live-Uhr und den alten Rundungsdienst verwenden und die bestehende Gewichtung und Berechnung des gerundeten Alters beibehalten. Diese Hilfsfunktion validiert oder bereinigt den Verlauf nicht, begrenzt keine Zeitstempel und garantiert keine endlichen Ergebnisse.
Argumente
| Name | Typ | Was sie bewirkt |
|---|---|---|
history | table | false | nil | Verlaufsdatensatz mit den Arrays damage und heals aus Zeit-/Wert-Einträgen, neueste zuerst. Ist der Verlauf nil oder false, wird nur null zurückgegeben, ohne die Uhr zu lesen. |
window | number | false | nil | Gewichtungsfenster in Sekunden; nil oder false verwendet die aktuelle Profileinstellung damage_history. |
noheals | boolean | nil | Ein Wert ungleich nil/false überspringt den Heilungsdatenstrom, ohne dessen Array zu lesen. |
nodmg | boolean | nil | Ein Wert ungleich nil/false überspringt den Schadensdatenstrom, ohne dessen Array zu lesen. |
Rückgabewerte
| 1 | number | Kombinierte vorzeichenbehaftete gewichtete Rate aus der ursprünglichen Formel; fehlerhafte oder nicht endliche Eingaben behalten das alte Fehler- bzw. Zahlenverhalten. |
|---|---|---|
| 2 | number | nil | Größeres gerundetes Alter des Datenstroms in Sekunden, weder eine Stichprobenzahl noch ein Beleg für lückenlose Beobachtung. Entfällt, wenn der Verlauf nil oder false ist. |
Editionen
Integrierte Hilfsfunktionen werden auf jeder Edition registriert. Unterschiedlich ist die Spiel-API, die sie lesen; fehlt eine, weicht die Hilfsfunktion aus oder gibt nil mit einem Grund zurück.
- Auf dieser Edition nicht verfügbar (den Grund nennt der Tooltip)
- Nur, solange Blizzards Ersatz für veraltete Funktionen aktiv ist
| Spiel-API | |||||
|---|---|---|---|---|---|
GetTime |
Beispiel
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 < -1000Quelle
Functions/trends.lua, Zeile 75. Im Spiel schreibgeschützt; Duplizieren erstellt eine bearbeitbare Kopie.
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)




