Référence › Référence des fonctions › Functions

Functions.trends.calculateOld

publique

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

NomTypeCe qu'elle fait
healthtable | false | nilInstantané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

1numberVariation 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.
2number | nilNombre 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 jeuClassic EraTBC AnniversaryClassic ProgressionForeverRetail
GetTimeClassic EraTBC AnniversaryClassic ProgressionForeverRetail

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 < 0

Source

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

Retour à Référence des fonctions