Aiue's Quest Tracker (AQT)
AQT (pronounced a-cutie) aims to be a highly configurable quest objective tracker. Take not that it is neither a guide nor a helper addon, and there are no plans to turn it into one.
Functionality includes, but is not limited to:
-
Show a list of all the quests in your log, and their status, or:
- A list of manually selected quests
- A list of automatically tracked quests, depending on configuration
- Fully configurable progress-based progressive color, pick any color scheme you want!
- Optionally show quest tags/levels.
- Configurable sorting, pick any number of sorting rules from the ones available, and rank them.
- Sounds, if you're into that kind of thing. I am. Defaults to faction-based sounds, but can be reconfigured. Makes use of LibSharedMedia.
- Direct quest updates via LibSink, and optionally suppress the standard errorframe update.
- Support for quest timers! Yes, this is rare.
- And plenty more. Features are being continuously added, but right now the main focus is polishing.
Please use the Issue Tracker on GitHub for bug reports or feature requests. Also a good place to go if you want to get an idea of what my current future plans include.
There is also a discord. Can't say there's much of interest there. But it's there, in case you'd for whatever reason want to head there.
I do plan on eventually making a retail version, but as it means making the addon fully modular (which, to be fair, would only require minor tweaking), adding support for achievements, story type quests, instance objectives, and more, that's still quite a far way off.
Translators wanted! Let me know if you want to contribute with translations!
As per request, you can now donate.
So, turns out there are still people interested in this addon. As such, I will be looking at what will need to be changed for it to remain functional. However, as I will most likely not be playing myself, chances are that I will not be fixing old bugs or adding new features. I will take this opportunity to point out that the license would allow anyone to take over, as long as original work is acknowledged and credited. And if someone wants to keep it updated in the main repo, that's fine too. I would also be available for consultation if required.
Easiest place to reach me would most likely be discord.
In reply to Aiue_:
Thank you! Having used a few other quest tracking replacements yours is my favorite by far.
In reply to Aiue_:
Thank you! Having used a few other quest tracking replacements yours is my favorite by far.
In reply to Aiue_:
"So, turns out there are still people interested in this addon."
Still the best Quest Tracker out there! :)
Hey there, started another twink and got this error from time to time :)
Quests: nil entry when trying to sort, please report to Aiue.
After doing the Quest "Test of Faith" (https://classic.wowhead.com/quest=1149/test-of-faith) it spammed my chat with "nil objective text". No error window though
In reply to Runkel:
Got another "Quests: nil entry when trying to sort, please report to Aiue." after accepting the Quest: https://classic.wowhead.com/quest=672/raising-spirits
(Both Errors on the German client btw.)
1x AQT\GUI.lua:824: invalid order function for sorting
[C]: ?
AQT\GUI.lua:824: in function `Sort'
AQT\GUI.lua:777: in function `Update'
AQT\GUI.lua:688: in function `New'
AQT\Core.lua:464: in function `CreateUIObject'
AQT\Core.lua:819: in function `Track'
AQT\Core.lua:745: in function `New'
AQT\Core.lua:1003: in function `?'
AQT\Core.lua:1191: in function <AQT\Core.lua:1190>
Locals:
(*temporary) = <table> {
1 = <unnamed> {
}
2 = <unnamed> {
}
3 = <unnamed> {
}
4 = <unnamed> {
}
5 = <unnamed> {
}
}
(*temporary) = <function> defined @AQT\GUI.lua:824
(*temporary) = <unnamed> {
0 = <userdata>
releasing = true
text = <unnamed> {
}
container = <unnamed> {
}
scripts = <table> {
}
button = <unnamed> {
}
owner = <table> {
}
children = <table> {
}
counter = <unnamed> {
}
}
(*temporary) = <unnamed> {
0 = <userdata>
text = <unnamed> {
}
owner = <table> {
}
scripts = <table> {
}
button = <unnamed> {
}
container = <unnamed> {
}
children = <table> {
}
counter = <unnamed> {
}
}
(*temporary) = nil
In reply to Runkel:
Changing the error message on the former to be more informative. The second error will take some digging, but I'll see what I can figure out.
In reply to Forge_User_60375205:
Sorry about that, that's what BugSack showed me
In reply to Runkel:
Oh, nothing to apologize for here. There's just some complexity involved, so figuring out where exactly things go wrong can be tricky.
One thing would help me narrow it down slightly, though: do you have headers showing or not?
In reply to Forge_User_60375205:
Yes, headers are shown. It might be also worth mentioning that i quested a lot in the past few days (just leveled a new Twink) and these two quests where the only cases a error showed up.
In reply to Forge_User_60375205:
Encountered another error after Turning in a Quest:
And after changing the Zone
After reload everything went back to normal
[00:19] Failed to parse data for objective in quest 'Screecher Spirits'. Please notify Aiue, along with the following information:
[00:19] Locale: zhCN
[00:19] Objective type: monster
[00:19] QUEST_MONSTERS_KILLED: 已消灭%s:%d/%d
[00:19] QUEST_ITEMS_NEEDED: %s:%d/%d
[00:19] QUEST_OBJECTS_FOUND: %s:%d/%d
[00:19] QUEST_FACTION_NEEDED: %s:%s / %s
In reply to wicatfly:
Seems I failed to include the most important debug information. Pushed a new revision that should print all the relevant information.
In reply to Forge_User_60375205:
I'm afraid it is not helpful. It came up again.
[19:11] Failed to parse data for objective in quest 'Vyletongue Corruption'. Please notify Aiue, along with the following information:
[19:11] Locale: zhCN
[19:11] Objective index: 1
[19:11] Objective type: monster
[19:11] Objective text: 治疗维利斯塔姆藤蔓:0/8
[19:11] QUEST_MONSTERS_KILLED: 已消灭%s:%d/%d
[19:11] QUEST_ITEMS_NEEDED: %s:%d/%d
[19:11] QUEST_OBJECTS_FOUND: %s:%d/%d
In reply to wicatfly:
It does help me figure out the problem, though! Turns out not only is the colon different in the clients, but zhCN also lacks a whitespace. I'll have a fix out soonish.
In reply to Forge_User_60375205:
Thank you! It has been fixed.
after recently two updates
41x Leatrix_Plus\Leatrix_Plus-1.13.38.alpha.3.lua:3097: bad argument #3 to 'format' (string expected, got nil)
[C]: in function `format'
Leatrix_Plus\Leatrix_Plus-1.13.38.alpha.3.lua:3097: in function <Leatrix_Plus\Leatrix_Plus.lua:3077>
[C]: in function `QuestLog_Update'
AQT\Core.lua:258: in function `func'
AQT\GUI.lua:1194: in function <AQT\GUI.lua:1112>
Locals:
InCombatSkipped
In reply to wicatfly:
Forwarded to Leatrix.
2x AQT\Core.lua:598: attempt to index field 'quest' (a number value)
AQT\Core.lua:598: in function `Update'
AQT\Core.lua:897: in function `UpdateObjectives'
AQT\Core.lua:857: in function `Update'
AQT\Core.lua:686: in function `New'
AQT\Core.lua:942: in function `?'
AQT\Core.lua:1128: in function <AQT\Core.lua:1127>
Locals:
self = <table> {
index = 1
quest = 5561
new = true
}
qIndex = 2
oIndex = 1
noPour = nil
retry = nil
oText = "驯服科多兽:0/5"
oType = "monster"
complete = false
text = nil
have = nil
need = nil
countertext = nil
update = nil
sound = nil
(*temporary) = <function> defined @FrameXML\RestrictedInfrastructure.lua:116
(*temporary) = "Failed to parse data for objective in quest '"
(*temporary) = 5561
(*temporary) = nil
(*temporary) = "$"
(*temporary) = nil
(*temporary) = nil
(*temporary) = nil
(*temporary) = nil
(*temporary) = nil
(*temporary) = nil
(*temporary) = nil
(*temporary) = nil
(*temporary) = nil
(*temporary) = nil
(*temporary) = "attempt to index field 'quest' (a number value)"
QUEST_MONSTERS_KILLED = "已消灭(.+):(%d+)/(%d+)"
QUEST_ITEMS_NEEDED = "(.+):(%d+)/(%d+)"
QUEST_OBJECTS_FOUND = "(.+):(%d+)/(%d+)"
QUEST_FACTION_NEEDED = "(.+):(.+) / (.+)"
factionCache = <table> {
隐藏 = <table> {
}
热砂港 = <table> {
}
棘齿城 = <table> {
}
铁炉堡 = <table> {
}
银色黎明 = <table> {
}
永望镇 = <table> {
}
暴风城 = <table> {
}
达纳苏斯 = <table> {
}
藏宝海湾 = <table> {
}
加基森 = <table> {
}
其它 = <table> {
}
诺莫瑞根流亡者 = <table> {
}
联盟 = <table> {
}
血帆海盗 = <table> {
}
}
st = <table> {
SOUND_OBJECTIVE_PROGRESS = 3
SOUND_OBJECTIVE_COMPLETE = 2
cfg = <table> {
}
db = <table> {
}
gui = AQTParent {
}
initConfig = <function> defined @AQT\Config.lua:1979
L = <table> {
}
SOUND_COMPLETE = 1
types = <table> {
}
}
time = <function> defined =[C]:-1
Prism = <table> {
Darken = <function> defined @AQT\libs\LibPrism-1.0\Prism.lua:395
HSVtoRGB = <function> defined @AQT\libs\LibPrism-1.0\Prism.lua:198
AlterStringColor = <function> defined @AQT\libs\LibPrism-1.0\Prism.lua:411
Lighten = <function> defined @AQT\libs\LibPrism-1.0\Prism.lua:336
Desaturate = <function> defined @AQT\libs\LibPrism-1.0\Prism.lua:309
Gradient = <function> defined @AQT\libs\LibPrism-1.0\Prism.lua:99
RGBtoHSV = <function> defined @AQT\libs\LibPrism-1.0\Prism.lua:152
Saturate = <function> defined @AQT\libs\LibPrism-1.0\Prism.lua:251
}
AQT = <table> {
PrePour = <function> defined @AQT\Core.lua:1030
SetDefaultModuleLibraries = <function> defined @AQT\libs\AceAddon-3.0\AceAddon-3.0.lua:367
Enable = <function> defined @AQT\libs\AceAddon-3.0\AceAddon-3.0.lua:294
UnregisterAllEvents = <function> defined @AQT\libs\CallbackHandler-1.0\CallbackHandler-1.0.lua:174
EnableModule = <function> defined @AQT\libs\AceAddon-3.0\AceAddon-3.0.lua:332
modules = <table> {
}
GetModule = <function> defined @AQT\libs\AceAddon-3.0\AceAddon-3.0.lua:210
IterateEmbeds = <function> defined @AQT\libs\AceAddon-3.0\AceAddon-3.0.lua:442
defaultModuleLibraries = <table> {
}
PlayerLevelUp = <function> defined @AQT\Core.lua:985
UpdateHeaders = <function> defined @AQT\Core.lua:1100
ToggleHeaders = <function> defined @AQT\Core.lua:1077
SetDefaultModulePrototype = <function> defined @AQT\libs\AceAddon-3.0\AceAddon-3.0.lua:409
GetSinkAce3OptionsDataTable = <function> defined @AQT\libs\LibSink-2.0\LibSink-2.0.lua:508
name = "AQT"
OnEnable = <function> defined @AQT\Core.lua:325
IsEnabled = <function> defined @AQT\libs\AceAddon-3.0\AceAddon-3.0.lua:451
orderedModules = <table> {
}
Pour = <function> defined @AQT\libs\LibSink-2.0\LibSink-2.0.lua:368
DisableModule = <function> defined @AQT\libs\AceAddon-3.0\AceAddon-3.0.lua:350
NewModule = <function> defined @AQT\libs\AceAddon-3.0\AceAddon-3.0.lua:235
baseName = "AQT"
ToggleConfig = <function> defined @AQT\Config.lua:2022
UpdateLDBIcon = <function> defined @
------------------------------------
And when I deleted a quest, sometimes, quest at the top of log disappeaered and the list misplace