QuestPointer
QuestPointer puts the quest POI icons from the world map onto your minimap.
It'll integrate with TomTom's crazyarrow, if you have it installed. Click the broker plugin or type "/qp closest" to have the crazyarrow point to the current closest quest POI.
You can choose to:
- Track World Quests, too
- Auto-track the closest POI in TomTom
- Only show icons for quests you're watching
- Make icons on the edge of the minimap become arrows to make it more obvious that they're far away
- Change the icon scale
TODO:
- Arrowed-icons should include the number/icon that the closer ones use
-
View User Profile
-
Send Message
Posted Jul 7, 2025Edit: Sorry this wasn't caused by your addon.
Regardless I got a request please, there's another addon that I use both of which are using the same name, whats the solution? when I install both, one of them will disappear in addon list cause of same name.
https://www.curseforge.com/wow/addons/quest-pointer
-
View User Profile
-
Send Message
Posted Jul 7, 2025In reply to pawnzee:
When that happens, you just have to choose one to use, or persuade one of the authors to rename their addon.
-
View User Profile
-
Send Message
Posted Jul 11, 2025In reply to Kemayo:
Hi, i'm the author of the other Quest Pointer addon. I just realized I gave it the same name as yours. Sorry !
-
View User Profile
-
Send Message
Posted Jul 11, 2025In reply to pawnzee:
Don’t worry, I’ll update the name soon to avoid any confusion. Sorry for the inconvenience!
-
View User Profile
-
Send Message
Posted Jul 5, 2025there's leftover debug statements in ns:IsQuestWatched(questId) (classic/poi.lua)
-
View User Profile
-
Send Message
Posted Jul 5, 2025In reply to LangMans:
Oops, so there are. Pushing a fix release now.
-
View User Profile
-
Send Message
Posted Aug 4, 2024Not working for me in TWW prepatch. Just me?
47x QuestPointer/QuestPointer.lua:114: attempt to index field 'poi_parent' (a nil value)
[string "@QuestPointer/QuestPointer.lua"]:114: in function <QuestPointer/QuestPointer.lua:95>
[string "=(tail call)"]: ?
-
View User Profile
-
Send Message
Posted Aug 4, 2024In reply to Bananafana: The alpha should work -- I haven't done a proper release yet because I wanted to fix some quirks with the buttons, but I could get something out.
-
View User Profile
-
Send Message
Posted Aug 6, 2024In reply to Kemayo: Great thanks!
-
View User Profile
-
Send Message
Posted Aug 4, 2024In reply to Bananafana: Okay, a fixed version is going out.
-
View User Profile
-
Send Message
Posted Jun 20, 2024Release v21 of this addon works perfectly in Cataclysm Classic.
-
View User Profile
-
Send Message
Posted Sep 27, 2023This Addon stopped working. Its a unique one since it points to every objective of a quest.
-
View User Profile
-
Send Message
Posted Jan 19, 2023Hey there Kemayo, this addon is for some reason causing major lag while dragonriding. Spikey lag. Any idears why it might be doing that?
-
View User Profile
-
Send Message
Posted Nov 27, 2020The following errors often occur recently:
3x QuestPointer\QuestPointer-4c01f16.lua:354: attempt to index local 'button' (a nil value) [string "@QuestPointer\QuestPointer-4c01f16.lua"]:354: in function `GetPOI' [string "@QuestPointer\QuestPointer-4c01f16.lua"]:170: in function `UpdateLogPOIs' [string "@QuestPointer\QuestPointer-4c01f16.lua"]:114: in function <QuestPointer\QuestPointer.lua:94> [string "=(tail call)"]: ? Locals: self = <table> { PLAYER_LOGOUT = <function> defined @QuestPointer\QuestPointer.lua:64 defaults = <table> { } UpdateGlow = <function> defined @QuestPointer\QuestPointer.lua:379 GetWorldQuestButton = <function> defined @QuestPointer\QuestPointer.lua:246 QUEST_LOG_UPDATE = <function> defined @QuestPointer\QuestPointer.lua:94 UpdateLogPOIs = <function> defined @QuestPointer\QuestPointer.lua:126 dbpc = <table> { } SUPER_TRACKING_CHANGED = <function> defined @QuestPointer\QuestPointer.lua:493 FlushDB = <function> defined @QuestPointer\template\Database.lua:13 poi_parent = <unnamed> { } InitDB = <function> defined @QuestPointer\template\Database.lua:4 defaultsPC = <table> { } GetPOI = <function> defined @QuestPointer\QuestPointer.lua:324 UpdateEdges = <function> defined @QuestPointer\QuestPointer.lua:493 SetSelection = <function> defined @QuestPointer\QuestPointer.lua:390 ResetPOI = <function> defined @QuestPointer\QuestPointer.lua:364 ClearSelection = <function> defined @QuestPointer\QuestPointer.lua:407 Print = <function> defined @QuestPointer\QuestPointer.lua:532 UnregisterEvents = <function> defined @QuestPointer\template\EventDispatcher.lua:10 db = <table> { } UpdateWorldPOIs = <function> defined @QuestPointer\QuestPointer.lua:188 ClosestPOI = <function> defined @QuestPointer\QuestPointer.lua:74 Debug = <function> defined @QuestPointer\template\UtilityFunctions.lua:9 ZONE_CHANGED_NEW_AREA = <function> defined @QuestPointer\QuestPointer.lua:94 QUEST_POI_UPDATE = <function> defined @QuestPointer\QuestPointer.lua:94 wqpool = <table> { } TomTomClosestPOI = <function> defined @QuestPointer\TomTom.lua:42 WorldQuestIsWatched = <function> defined @QuestPointer\QuestPointer.lua:226 AutoTomTom = <function> defined @QuestPointer\TomTom.lua:15 QUEST_WATCH_LIST_CHANGED = <function> defined @QuestPointer\QuestPointer.lua:94 PLAYER_ENTERING_WORLD = <function> defined @QuestPointer\QuestPointer.lua:94 RegisterEvents = <function> defined @QuestPointer\template\EventDispatcher.lua:9 RegisterEvent = <function> defined @QuestPointer\template\EventDispatcher.lua:9 UpdatePOIs = <function> defined @QuestPointer\QuestPointer.lua:94 UnregisterEvent = <function> defined @QuestPointer\template\EventDispatcher.lua:10 pois = <table> { } } id = "QPL3" button = nil poi = QuestPointerPOIQPL3 { 0 = <userdata> arrow = <unnamed> { } } (*temporary) = <unnamed> { 0 = <userdata> t = 0 poi = QuestPointerPOIQPL3 { } texture = <unnamed> { } } (*temporary) = nil (*temporary) = <table> { QPL1 = QuestPointerPOIQPL1 { } QPL3 = QuestPointerPOIQPL3 { } QPL2 = QuestPointerPOIQPL2 { } } (*temporary) = <unnamed> { 0 = <userdata> t = 0 poi = QuestPointerPOIQPL3 { } texture = <unnamed> { } } (*temporary) = <userdata> (*temporary) = "attempt to index local 'button' (a nil value)" pois = <table> { QPL1 = QuestPointerPOIQPL1 { } QPL3 = QuestPointerPOIQPL3 { } QPL2 = QuestPointerPOIQPL2 { } } POI_OnEnter = <function> defined @QuestPointer\QuestPointer.lua:439 POI_OnLeave = <function> defined @QuestPointer\QuestPointer.lua:453 POI_OnMouseUp = <function> defined @QuestPointer\QuestPointer.lua:457 Arrow_OnUpdate = <function> defined @QuestPointer\QuestPointer.lua:464-
View User Profile
-
Send Message
Posted Nov 29, 2020I don't see that occurring -- can you point me to e.g. a particular zone or quest you see them for?
-
View User Profile
-
Send Message
Posted Nov 30, 2020In reply to Kemayo:
Hi Kemayo,
for me those error message are also occurring. I am currently in Ardenweald, after I chose the as my covenant.
Maybe it has somethings to do with the Worldqueests there for the covenant.
I hope this helps.
Those are my errors directly after loading the game:
36x QuestPointer\QuestPointer-v26.lua:354: attempt to index local 'button' (a nil value) [string "@QuestPointer\QuestPointer-v26.lua"]:354: in function `GetPOI' [string "@QuestPointer\QuestPointer-v26.lua"]:170: in function `UpdateLogPOIs' [string "@QuestPointer\QuestPointer-v26.lua"]:114: in function <QuestPointer\QuestPointer.lua:94> [string "=(tail call)"]: ? Locals: self = <table> { PLAYER_LOGOUT = <function> defined @QuestPointer\QuestPointer.lua:64 defaults = <table> { } UpdateGlow = <function> defined @QuestPointer\QuestPointer.lua:379 GetWorldQuestButton = <function> defined @QuestPointer\QuestPointer.lua:246 QUEST_LOG_UPDATE = <function> defined @QuestPointer\QuestPointer.lua:94 UpdateLogPOIs = <function> defined @QuestPointer\QuestPointer.lua:126 dbpc = <table> { } SUPER_TRACKING_CHANGED = <function> defined @QuestPointer\QuestPointer.lua:493 FlushDB = <function> defined @QuestPointer\template\Database.lua:13 poi_parent = <unnamed> { } InitDB = <function> defined @QuestPointer\template\Database.lua:4 defaultsPC = <table> { } GetPOI = <function> defined @QuestPointer\QuestPointer.lua:324 UpdateEdges = <function> defined @QuestPointer\QuestPointer.lua:493 SetSelection = <function> defined @QuestPointer\QuestPointer.lua:390 ResetPOI = <function> defined @QuestPointer\QuestPointer.lua:364 ClearSelection = <function> defined @QuestPointer\QuestPointer.lua:407 Print = <function> defined @QuestPointer\QuestPointer.lua:532 UnregisterEvents = <function> defined @QuestPointer\template\EventDispatcher.lua:10 db = <table> { } UpdateWorldPOIs = <function> defined @QuestPointer\QuestPointer.lua:188 ClosestPOI = <function> defined @QuestPointer\QuestPointer.lua:74 Debug = <function> defined @QuestPointer\template\UtilityFunctions.lua:9 ZONE_CHANGED_NEW_AREA = <function> defined @QuestPointer\QuestPointer.lua:94 QUEST_POI_UPDATE = <function> defined @QuestPointer\QuestPointer.lua:94 wqpool = <table> { } TomTomClosestPOI = <function> defined @QuestPointer\TomTom.lua:42 WorldQuestIsWatched = <function> defined @QuestPointer\QuestPointer.lua:226 AutoTomTom = <function> defined @QuestPointer\TomTom.lua:15 QUEST_WATCH_LIST_CHANGED = <function> defined @QuestPointer\QuestPointer.lua:94 PLAYER_ENTERING_WORLD = <function> defined @QuestPointer\QuestPointer.lua:94 RegisterEvents = <function> defined @QuestPointer\template\EventDispatcher.lua:9 RegisterEvent = <function> defined @QuestPointer\template\EventDispatcher.lua:9 UpdatePOIs = <function> defined @QuestPointer\QuestPointer.lua:94 UnregisterEvent = <function> defined @QuestPointer\template\EventDispatcher.lua:10 pois = <table> { } } id = "QPL1" button = nil poi = QuestPointerPOIQPL1 { 0 = <userdata> index = 1 arrow = <unnamed> { } questId = 62807 complete = true y = 0.028410 x = 0.802084 title = "Forest Refugees" m = 1701 active = false } (*temporary) = nil (*temporary) = nil (*temporary) = nil (*temporary) = nil (*temporary) = nil (*temporary) = "attempt to index local 'button' (a nil value)" pois = <table> { QPL15 = QuestPointerPOIQPL15 { } QPL16 = QuestPointerPOIQPL16 { } QPL9 = QuestPointerPOIQPL9 { } QPL14 = QuestPointerPOIQPL14 { } QPL1 = QuestPointerPOIQPL1 { } QPL11 = QuestPointerPOIQPL11 { } QPL4 = QuestPointerPOIQPL4 { } QPL8 = QuestPointerPOIQPL8 { } QPL6 = QuestPointerPOIQPL6 { } QPL3 = QuestPointerPOIQPL3 { } QPL12 = QuestPointerPOIQPL12 { } QPL13 = QuestPointerPOIQPL13 { } QPL7 = QuestPointerPOIQPL7 { } QPL10 = QuestPointerPOIQPL10 { } QPL5 = QuestPointerPOIQPL5 { } QPL2 = QuestPointerPOIQPL2 { } } POI_OnEnter = <function> defined @QuestPointer\QuestPointer.lua:439 POI_OnLeave = <function> defined @QuestPointer\QuestPointer.lua:453 POI_OnMouseUp = <function> defined @QuestPointer\QuestPointer.lua:457 Arrow_OnUpdate = <function> defined @QuestPointer\QuestPointer.lua:464-
View User Profile
-
Send Message
Posted Nov 30, 2020Ah, thanks. It's the covenant callings causing the issue. I've pushed up a version that'll not error, though I'm probably going to want to improve it further.
-
View User Profile
-
Send Message
Posted Aug 23, 2018No idea if this has been updated for wow 8.0 BUT the waypoints are horribly broken in tomtom.lua in questpointer..... good news is i fixed it :)
you had closest.z and last_waypoint.z which were completely unused and tomtom would produce a nil error, also it seems like TomTom:MFWaypoint is not used anymore either
Fix:
-
View User Profile
-
Send Message
Posted Aug 24, 2018In reply to SkOODaT91792:
-
View User Profile
-
Send Message
Posted Jul 18, 2018I'm getting the following error on the BFA prepatch, even though I've updated to v19:
87x QuestPointer\QuestPointer-v19.lua:195: attempt to call global 'WorldMap_TryCreatingWorldQuestPOI' (a nil value)
QuestPointer\QuestPointer-v19.lua:195: in function `UpdateWorldPOIs'
QuestPointer\QuestPointer-v19.lua:114: in function <QuestPointer\QuestPointer.lua:93>
(tail call): ?
Locals:
self = <table> {
PLAYER_LOGOUT = <function> defined @QuestPointer\QuestPointer.lua:63
defaults = <table> {
}
UpdateGlow = <function> defined @QuestPointer\QuestPointer.lua:287
PLAYER_ENTERING_WORLD = <function> defined @QuestPointer\QuestPointer.lua:93
QUEST_LOG_UPDATE = <function> defined @QuestPointer\QuestPointer.lua:93
UpdateLogPOIs = <function> defined @QuestPointer\QuestPointer.lua:125
dbpc = <table> {
}
FlushDB = <function> defined @QuestPointer\template\Database.lua:13
poi_parent = <unnamed> {
}
InitDB = <function> defined @QuestPointer\template\Database.lua:4
defaultsPC = <table> {
}
GetPOI = <function> defined @QuestPointer\QuestPointer.lua:234
UpdateEdges = <function> defined @QuestPointer\QuestPointer.lua:400
SetSelection = <function> defined @QuestPointer\QuestPointer.lua:300
ResetPOI = <function> defined @QuestPointer\QuestPointer.lua:274
ClearSelection = <function> defined @QuestPointer\QuestPointer.lua:316
Print = <function> defined @QuestPointer\QuestPointer.lua:439
UnregisterEvents = <function> defined @QuestPointer\template\EventDispatcher.lua:10
db = <table> {
}
UpdateWorldPOIs = <function> defined @QuestPointer\QuestPointer.lua:182
ClosestPOI = <function> defined @QuestPointer\QuestPointer.lua:73
Debug = <function> defined @QuestPointer\template\UtilityFunctions.lua:9
ZONE_CHANGED_NEW_AREA = <function> defined @QuestPointer\QuestPointer.lua:93
QUEST_POI_UPDATE = <function> defined @QuestPointer\QuestPointer.lua:93
SUPER_TRACKED_QUEST_CHANGED = <function> defined @QuestPointer\QuestPointer.lua:400
WorldQuestIsWatched = <function> defined @QuestPointer\QuestPointer.lua:220
TomTomClosestPOI = <function> defined @QuestPointer\TomTom.lua:42
QUEST_WATCH_LIST_CHANGED = <function> defined @QuestPointer\QuestPointer.lua:93
AutoTomTom = <function> defined @QuestPointer\TomTom.lua:15
RegisterEvents = <function> defined @QuestPointer\template\EventDispatcher.lua:9
RegisterEvent = <function> defined @QuestPointer\template\EventDispatcher.lua:9
UpdatePOIs = <function> defined @QuestPointer\QuestPointer.lua:93
UnregisterEvent = <function> defined @QuestPointer\template\EventDispatcher.lua:10
pois = <table> {
}
}
mapid = 627
floor = <function> defined =[C]:-1
taskInfo = <table> {
1 = <table> {
}
}
numTaskPOIs = 1
taskIconIndex = 0
(for generator) = <function> defined =[C]:-1
(for state) = <table> {
1 = <table> {
}
}
(for control) = 1
i = 1
info = <table> {
y = 0.34392058849335
x = 0.40003651380539
numObjectives = 1
mapID = 627
questId = 46135
inProgress = false
}
id = "QPWQ0"
(*temporary) = nil
(*temporary) = <table> {
y = 0.34392058849335
x = 0.40003651380539
numObjectives = 1
mapID = 627
questId = 46135
inProgress = false
}
(*temporary) = "QPWQ0"
(*temporary) = "attempt to call global 'WorldMap_TryCreatingWorldQuestPOI' (a nil value)"
ns = <table> {
PLAYER_LOGOUT = <function> defined @QuestPointer\QuestPointer.lua:63
defaults = <table> {
}
UpdateGlow = <function> defined @QuestPointer\QuestPointer.lua:287
PLAYER_ENTERING_WORLD = <function> defined @QuestPointer\QuestPointer.lua:93
QUEST_LOG_UPDATE = <function> defined @QuestPointer\QuestPointer.lua:93
UpdateLogPOIs = <function> defined @QuestPointer\QuestPointer.lua:125
dbpc = <table> {
}
FlushDB = <function> defined @QuestPointer\template\Database.lua:13
poi_parent = <unnamed> {
}
InitDB = <function> defined @QuestPointer\template\Database.lua:4
defaultsPC = <table> {
}
GetPOI = <function> defined @Interface