ich versuche gerade in einer Weakaura als Text anzuzeigen wie oft ich den Zauber noch benutzen kann. Leider habe ich noch nicht so viel Ahnung davon und ich komme nicht so richtig weiter.
Hier mein bisheriger Versuch:
function()
local mana = UnitPower(“player”, 0)
local shadowbold_mana_cost = 315
local spell = UnitCastingInfo(“player”)
if spell == “11660” then
countremaining = mana / shadowbold_mana_cost
end
return countremaining
end
Hatte mir ein Ähnliches Problem von einem Arcane-Magier durchgelesen der das für Arcanblast gemacht hat und entsprechend etwas abgewandelt. Funktioniert aber nicht.
Läßt sich mein Problem/Wunsch überhaupt einfach lösen?
Das Hauptproblem daran dürfte sein, dass die Funktion UnitCastingInfo zur Abfrage des aktuellen Zauber-Status in Vanilla nicht existierte und somit auch in Classic wieder entfernt wurde.
Wenn die Anzeige nur sichtbar sein soll, während du einen Zauber wirkst, dann kannst du aber einfach als Auslöser “Status” -> “Zauber” nutzen, was den gleichen Effekt hat.
Weiterhin kannst du die Manakosten auch einfach vom Client abfragen anstatt diese manuell anzugeben, wodurch die Anzeige von sich aus Kostenreduktionen durch Talente o.Ä. mit einberechnen sollte - allerdings muss man dann prüfen, ob der Zauber kostenlos ist, um eine Fehlermeldung zu verhindern.
function()
local mana = UnitPower("player", 0)
local cost = GetSpellPowerCost(25307)[1]["cost"]
if cost and cost ~= 0 then
return mana / cost
end
end
Die Funktion math.floor() rundet auf die nächst kleinere natürliche Zahl ℕ.
function()
local mana = UnitPower("player", 0)
local cost = GetSpellPowerCost(25307)[1]["cost"]
if cost and cost ~= 0 then
return math.floor(mana / cost)
end
end
Alternativ ginge auch
string.format("%.0f", num)
aber das benötigt mehr CPU.
Hier bestimmst du über die erste Ziffer die Anzahl an Nachkommastellen.
Wenn du mit der Funktion math.floor() Nachkommastellen haben möchtest, geht dies via folgendem Code, wobei decimalsdie Anzahl an Nachkommastellen definiert.
local power = 10^decimals
return math.floor(number * power) / power
Wenn du auf die am nächsten gelegene Zahl runden möchtest (also z.B. bei 9,5 auf 10 statt auf 9), dann geht das wie folgt:
local power = 10^decimals
return math.floor(number * power + 0.5) / power