Eigenen Kampflog erstellen in WeakAuras

Hallo.

Ich versuche WeakAuras (in Classic) so einzustellen, dass mir die einkommenden Dmg Zahlen (auf mich == Spieler) aufploppen.

Das mache ich normalerweise mit dem Auslösertyp Ereignis>Kampflog und halt einem Anzeigetext (z.b. %1.amount).

Ich will die Zahlen allerdings als Prozentwert von meinem aktuellen Leben haben. Die Option hab ich so nicht gefunden. Deshalb denke ich man muss mit benutzerdefinierten Scripts was zusammenschustern.

Den Auslöser konnte ich mit den events COMBAT_LOG_EVENT_UNFILTERED oder COMBAT_TEXT_UPDATE zumindest aktivieren. Ich verstehe aber nicht wie man diese Werte der Schadenszahlen bekommt. Brauch da mehr Hilfe.

Hab folgendes gefunden:
/wowwiki.fandom.com/wiki/API_COMBAT_LOG_EVENT
/wowwiki.fandom.com/wiki/Events/C#COMBAT_TEXT_UPDATE
/wow.gamepedia.com/API_CombatLogGetCurrentEventInfo

Mir fehlt eben nur das Script für den Anzeigetext. Die Seiten von oben helfen mir mit meinem momentanen Wissenstand (Trial and Error) nicht weiter. Die Schreibweise, Variablensetzung oder was auch immer krieg ich nicht korrekt hin.

Kurzes Beispiel was ich ungefähr haben möchte:
if event_type == „SWING“ then return(amount)

Wäre schön wenn jemand helfen könnte.

Ja, zur genaueren Formatierung von Zahlen ist eigener Code nötig, da es dafür aufgrund der großen Anzahl an möglicher Werte keinerlei in WeakAuras integrierte Funktion gibt.

Ein eigener Auslöser sollte dafür aber nicht nötig sein, da man mit einem eigenen Anzeige-Code (%c) direkt auf die Daten des Auslösers zugreifen kann, um diese dann weiterzuverarbeiten.

Mit deinem bisherigen Auslöser (Ereignis -> Kampflog) solltest du das komfortabel mit folgendem Anzeigetext-Code (%c) lösen können:

function()
    local damage = aura_env.state.amount
    local health = UnitHealthMax("player")
    
    return format("%.f%%", damage/health*100)
end

Wenn du die Prozente mit Nachkommastellen angezeigt bekommen möchtest, dann kannst du den Teil %.f%% bearbeiten, indem du hinter den Punkt noch eine Zahl schreibst - bspw. 2 für zwei Nachkommastellen: %.2f%%.


Effizienter dürfte es aber sein, das komplett selbst mit eigenem Auslöser usw. zu programmieren, allerdings wird das auch um Längen komplizierter… :wink:


PS: Das ist bislang leider nur in Retail getestet, Classic komme ich erst heute Nachmittag/Abend dazu. Sollte aber eigentlich auch dort funktionieren.

1 Like

Ja das funktioniert, danke. Hab noch paar Fragen:

  1. Wie kriegt man das Prozentsymbol weg? Ich will nur 15 anstatt 15% stehen haben.
  2. Weißt du wie man einstellen kann, dass die Spellschools (Feuer, Natur usw) angezeigt werden? Das muss nicht zwangsläufig mit Code sein, ich habs vielleicht nur bisher übersehen in Weakauras.
  3. Das Script erzeugt beim Anklicken in Weakauras eine Fehlermeldung:
    [string „–[==[ Error in ‚Kampflog‘:'custom text…“]:5: attempt to perform arithmetic on local ‚damage‘ (a nil value)
    Kriegt man das irgendwie weg?

Das Prozentsysmbol wird durch den Teil %% innerhalb der Funktion format() eingfügt. Diese beiden Zeichen kannst du einfach entfernen, damit dieses nicht mehr angezeigt wird. Die gesamte Zeile würde dann so aussehen:

return format("%.f", damage/health*100)

Soweit ich das sehe, gibt der Auslöser die Zauberschule nicht mit zurück, wodurch das nicht so einfach möglich sein dürfte. Dafür müsste man wohl doch einen komplett eigenen Auslöser erstellen, anstatt sich auf das Kampflog-Ereignis verlassen zu können.


Guter Punkt, den Fehler hatte ich zwischendurch auch gesehen, konnte ihn dann aber irgendwie nicht reproduzieren. Das liegt daran, dass beim Öffnen des Optionsmenüs die Aura angezeigt wird, aber keinerlei Daten beinhaltet - und ohne Zahl lässt sich schlecht rechnen. Das kannst du einfach beheben, indem du ein „or 0“ hinter die zweite Zeile setzt, damit da immer ein Wert existiert:

local damage = aura_env.state.amount or 0
1 Like

Echt cool, danke nochmal!

Dieses Thema wurde automatisch 180 Tage nach der letzten Antwort geschlossen. Es sind keine neuen Nachrichten mehr erlaubt.