Ich suche nach einer Möglichkeit, per API die Berufe abzufragen, die mein Charakter gelernt hat und genauere Informationen darüber, in welchem Teilbereich welcher Skill erreicht ist. Das Ziel soll sein, den Skill beim Farmen auf dem Bildschirm anzuzeigen, um mich zu motivieren.
Gefunden und ausprobiert habe ich:
GetProfessions()
GetProfessionInfo(index)
Das ist mir aber zu ungenau, weil es mir nur den Beruf als ganzes und den Skill des jeweils höchsten erlernten Addons gibt.
Also: Was ich sehe: Kräuterkunde 31/75
Was ich gerne sehen würde:
Kräuterkunde: 300/300
Kräuterkunde von irgendwas dazwischen: 1/75
Kräuterkunde von Pandaria: 31/75
Es scheint noch weitere Funktionen im Bereich C_TradeSkillUI zu geben, aber die funktionieren nur, wenn das entsprechende Fenster auch geöffnet ist. Das ist in diesem Fall aber nur mäßig hilfreich.
Schneiderei hat die skillLineID 197, alle Schneiderei-Unterklassen haben bei der Funktion C_TradeSkillUI.GetTradeSkillLineInfoByID als fünften Rückgabewert die parentSkillLineID 197
local t = C_TradeSkillUI.GetAllProfessionTradeSkillLines()
for i=1,#t do
local skillLineID = t[i]
local skillLineDisplayName, skillLineRank, skillLineMaxRank, skillLineModifier, parentSkillLineID = C_TradeSkillUI.GetTradeSkillLineInfoByID(skillLineID)
if parentSkillLineID == 197 then
-- do something
end
end
Das benötigte Event lautet SKILL_LINES_CHANGED .
Das ganz kann man noch dynamischer ausgehend von GetProfessions() aufbauen, damit es für den/die jeweiligen aktiven Berufe funktioniert.
Faszinierend! Ich hatte viele der “SkillLine”-Funktionen ausprobiert, aber keine brauchbaren Ergebnisse zurückbekommen. Offenbar muss da wirklich erst der Fachmann ran. Dann funktioniert es großartig.
Und die WeakAura erspart es mir, ein eigenes Interface zusammenzustümpern.
Vielen Dank!
Edit:
Ich brauche doch nochmal Hilfe.
Der Text in der WeakAura aktualisiert sich nicht, wenn ich einen Skillpunkt bekomme.
Ich habe versuchsweise “print”-Anweisungen in die benutzerdefinierten Funktionen eingefügt, damit ich sehe, wann sie ausgeführt werden.
Demnach wird der Trigger (Auslöser) korrekt ausgeführt, aber die benutzerdefinierte Funktion unter Display (Anzeige?) nur einmal und danach nicht mehr.