Thread Tools Display Modes
10-17-14, 01:35 PM   #1
Annika
A Murloc Raider
Join Date: Oct 2014
Posts: 7
Hiding Minimap Quest Arrow

Hi everyone,

I'm not sure if it's the done thing to make a thread asking for help as your first post, but this is driving me up the wall. Very simply, I'm looking for a way to hide the gold arrow that points to quest objectives, or, if that's not possible removing the entire minimap cluster (think this can be done with MoveAnything) and then getting a minimap replacement which roughly mirrors the hunter and gatherer tracking of the original.

Any help would be gratefully received, I really, really hate this thing!
  Reply With Quote
10-17-14, 01:56 PM   #2
semlar
A Pyroguard Emberseer
 
semlar's Avatar
AddOn Author - Click to view addons
Join Date: Sep 2007
Posts: 1,060
It's built into the minimap. Your only option, aside from physically replacing the arrow texture (which I don't think even works), is to un-track the quest it's pointing to.

Try this..
Lua Code:
  1. SetSuperTrackedQuestID(0)
  2. hooksecurefunc('SetSuperTrackedQuestID', function(questID) if questID ~= 0 then SetSuperTrackedQuestID(0) end end)
  Reply With Quote
10-17-14, 02:00 PM   #3
Annika
A Murloc Raider
Join Date: Oct 2014
Posts: 7
Thanks for your reply! None of the quests it's pointing to are tracked in the Quest Tracking thing, if that's what you mean?

I'll be completely honest here and admit that I have no idea what you've just given me. I've only today discovered add-ons, in an attempt to get rid of this cursed thing, ahem... Any chance you could tell me what I'm googling so I can try to apply it? Again, much appreciated!
  Reply With Quote
10-17-14, 02:03 PM   #4
semlar
A Pyroguard Emberseer
 
semlar's Avatar
AddOn Author - Click to view addons
Join Date: Sep 2007
Posts: 1,060
Alright, just paste that script into http://addon.bool.no and it'll generate an addon for you.
  Reply With Quote
10-17-14, 02:20 PM   #5
Annika
A Murloc Raider
Join Date: Oct 2014
Posts: 7
OMG it works! Thank you SO much, that was driving me mad! Really appreciate it!
  Reply With Quote
10-17-14, 04:48 PM   #6
SDPhantom
A Pyroguard Emberseer
 
SDPhantom's Avatar
AddOn Author - Click to view addons
Join Date: Jul 2006
Posts: 2,313
Originally Posted by semlar View Post
Lua Code:
  1. SetSuperTrackedQuestID(0)
  2. hooksecurefunc('SetSuperTrackedQuestID', function(questID) if questID ~= 0 then SetSuperTrackedQuestID(0) end end)
Hooking a function then unwittingly calling it from itself is dangerously close to sending Lua into an infinite loop by recursive calling. You can avoid this by storing the old function and calling that directly instead of calling it normally and running your hook again.
Lua Code:
  1. local oldfunc=SetSuperTrackedQuestID;
  2. hooksecurefunc('SetSuperTrackedQuestID', function() oldfunc(0); end);

Note hooksecurefunc() creates a new function just like any manual hooking method would. The only difference is it bypasses the taint mechanic.
__________________
WoWInterface AddOns
"All I want is a pretty girl, a decent meal, and the right to shoot lightning at fools."
-Anders (Dragon Age: Origins - Awakening)

Last edited by SDPhantom : 10-17-14 at 04:51 PM.
  Reply With Quote
10-17-14, 05:04 PM   #7
semlar
A Pyroguard Emberseer
 
semlar's Avatar
AddOn Author - Click to view addons
Join Date: Sep 2007
Posts: 1,060
It's not an infinite loop because it stops when you pass 0 to the function.
  Reply With Quote
10-17-14, 05:24 PM   #8
SDPhantom
A Pyroguard Emberseer
 
SDPhantom's Avatar
AddOn Author - Click to view addons
Join Date: Jul 2006
Posts: 2,313
Hence the phrasing dangerously close. I know your code checks and counters for it. I'm just offering an alternative that wouldn't run the risk of recursive calling.
__________________
WoWInterface AddOns
"All I want is a pretty girl, a decent meal, and the right to shoot lightning at fools."
-Anders (Dragon Age: Origins - Awakening)
  Reply With Quote
08-21-16, 12:12 PM   #9
Annika
A Murloc Raider
Join Date: Oct 2014
Posts: 7
So, after two years of blessed arrow-free gameplay, it's BACK and the addon that Semlar so kindly wrote all that time ago is not doing anything for it this time. Is there anything that can be done about it in a post-Legion Azeroth?

Any assistance much appreciated!
  Reply With Quote
08-21-16, 08:45 PM   #10
Phanx
Cat.
 
Phanx's Avatar
AddOn Author - Click to view addons
Join Date: Mar 2006
Posts: 5,617
Check the "Load out of date addons" option on the addon manager screen. Nothing about the functions used in Semlar's code has changed in the patch, so the addon should still work just fine, but the game automatically disables "out of date" addons for major patches.

Once you've verified that it works, open the .toc file in the addon's folder and change the number after "## Interface:" to "70000". This will tell the game that it's no longer "out of date".
__________________
Retired author of too many addons.
Message me if you're interested in taking over one of my addons.
Don’t message me about addon bugs or programming questions.
  Reply With Quote
08-22-16, 06:29 AM   #11
jeffy162
A Pyroguard Emberseer
 
jeffy162's Avatar
AddOn Author - Click to view addons
Join Date: May 2009
Posts: 2,364
Why not just get the Hide Quest Arrow addon? True, it's on Curse.com instead of WoWInterface.com, and it's out-of-date, but, it still works just fine.
__________________
Ahhhh, the vagueries of the aging mind. Wait.... What was I saying?


Carbonite <----- GitHub main module (Maps ONLY) download link. The other modules are also available on GitHub.
Carbonite-CLASSIC<----- GitHub link to Carbonite Classic. Thanks to ircdirk for this!
  Reply With Quote
08-22-16, 08:53 AM   #12
Phanx
Cat.
 
Phanx's Avatar
AddOn Author - Click to view addons
Join Date: Mar 2006
Posts: 5,617
The code in that addon is identical to what's posted in this thread.
__________________
Retired author of too many addons.
Message me if you're interested in taking over one of my addons.
Don’t message me about addon bugs or programming questions.
  Reply With Quote
09-10-16, 04:53 AM   #13
Annika
A Murloc Raider
Join Date: Oct 2014
Posts: 7
Sorry it took me such a long time to come back, work got heavy and I didn't have a chance to try it out today. It works, yay! Thank you both so much for taking the time to help, really, really appreciate it!
  Reply With Quote
05-06-17, 12:10 PM   #14
Annika
A Murloc Raider
Join Date: Oct 2014
Posts: 7
Resurrecting this thread because Blizzard has found a new and exciting way to screw with me: The add-on very helpfully posted in this thread (thank you again!) still works, but now has the unfortunate side effect of not making it impossible to read quest text in the quest log, which makes thing a little awkward.

Anyone have any idea if it is fixable, please? (Pretty, pretty please and thank you!)
  Reply With Quote
11-09-17, 04:41 AM   #15
stianhoiland
A Kobold Labourer
Join Date: Nov 2017
Posts: 1
Annika:

This one took a while to track down, but I figured it out.

There is some code in Interface/AddOns/Blizzard_ObjectiveTracker/Blizzard_QuestObjectiveTracker.lua that constantly effectively checks GetSuperTrackedQuestID(), and if it's 0 (which is what we set it to every time SetSuperTrackedQuestID() is called) it is deemed invalid and the closest quest is calculated and SetSuperTrackedQuestID() is called with that quest's questID.

Since the code in Blizzard_QuestObjectiveTracker.lua constantly checks, we get a call to SetSuperTrackedQuestID() probably every frame, since we immediately override by setting it to 0 again:

Lua Code:
  1. hooksecurefunc('SetSuperTrackedQuestID', function(questID)
  2.   if questID ~= 0 then
  3.     SetSuperTrackedQuestID(0)
  4.   end
  5. end)

The reason this prevents viewing quest details is that Interface/FrameXML/WorldMapFrame.lua listenes for the SUPER_TRACKED_QUEST_CHANGED event and calls QuestMapFrame_CloseQuestDetails() every time SUPER_TRACKED_QUEST_CHANGED, which is constantly since our code is pinging back and forth with Blizzard's.

To fix this we override the Blizzard function which calls QuestSuperTracking_ChooseClosestQuest():
Lua Code:
  1. QuestSuperTracking_CheckSelection = function()
  2.   return
  3. end
We could also have overridden another immediately relevant function called QuestSuperTracking_IsSuperTrackedQuestValid(), but we don't need to.

EDIT:

As a side note, you can also remove the golden minimap arrow by putting an empty .blp called SuperTrackerArrow.blp in Interface/Minimap. This might be the way forward if Blizzard keeps doing smart things

Last edited by stianhoiland : 11-09-17 at 04:54 AM.
  Reply With Quote
11-09-17, 07:09 AM   #16
Kanegasi
A Molten Giant
 
Kanegasi's Avatar
AddOn Author - Click to view addons
Join Date: Apr 2007
Posts: 666
Originally Posted by stianhoiland View Post
To fix this we override the Blizzard function which calls QuestSuperTracking_ChooseClosestQuest():
Lua Code:
  1. QuestSuperTracking_CheckSelection = function()
  2.   return
  3. end
We could also have overridden another immediately relevant function called QuestSuperTracking_IsSuperTrackedQuestValid(), but we don't need to.
It is not good practice to replace Blizzard functions. Even if it's a minor function called from only one place, it's a good way to cause a taint, no matter what your replacement does.

The simplest way to fix the code in this thread is to use an ID of a quest that doesn't exist instead of 0. According to wowhead, 3 is the next number that brings up nothing.
  Reply With Quote
01-30-18, 11:05 PM   #17
Linorox
A Kobold Labourer
Join Date: Jan 2018
Posts: 1
Dropping the arrow without messing with Blizz functions

Originally Posted by Kanegasi View Post
It is not good practice to replace Blizzard functions. Even if it's a minor function called from only one place, it's a good way to cause a taint, no matter what your replacement does.

The simplest way to fix the code in this thread is to use an ID of a quest that doesn't exist instead of 0. According to wowhead, 3 is the next number that brings up nothing.
Originally Posted by semlar View Post
It's built into the minimap. Your only option, aside from physically replacing the arrow texture (which I don't think even works), is to un-track the quest it's pointing to.

Try this..
Lua Code:
  1. SetSuperTrackedQuestID(0)
  2. hooksecurefunc('SetSuperTrackedQuestID', function(questID) if questID ~= 0 then SetSuperTrackedQuestID(0) end end)
I don't understand about programming, but I really want to drop the arrow without messing with blizz functions. So, which quest ID number should be replaced by 3? Is it in the code above? How should the code look like after fixed? If someone could provide the right code, it could be transformed into a addon and solve the problem =D Thanks!
  Reply With Quote
07-29-18, 03:47 AM   #18
Annika
A Murloc Raider
Join Date: Oct 2014
Posts: 7
Originally Posted by Linorox View Post
I don't understand about programming, but I really want to drop the arrow without messing with blizz functions. So, which quest ID number should be replaced by 3? Is it in the code above? How should the code look like after fixed? If someone could provide the right code, it could be transformed into a addon and solve the problem =D Thanks!
As of November, that code works to hide the arrow but simultaneously prevents interaction with the quest log, so not ideal.


@stianhoiland: I'm so sorry it took so long for me to thank you for your efforts on this one, unfortunately I was not able to get online much at that time and never got a chance to try it out (life stuff), but I really appreciate the efforts you went to for me and others.

If anyone feels like a challenge, the arrow is now back and refusing to leave without taking the quest log with it. Any support much appreciated, as always! (Side note: I can't believe this thread is 4 years old. What a long, strange ride it's been, and still Blizzard hate me and insist on forcing that stupid arrow into my life, why?!)
  Reply With Quote
04-05-19, 08:51 PM   #19
ryoriot
A Kobold Labourer
Join Date: Apr 2019
Posts: 1
Originally Posted by Annika View Post
If anyone feels like a challenge, the arrow is now back and refusing to leave without taking the quest log with it. Any support much appreciated, as always! (Side note: I can't believe this thread is 4 years old. What a long, strange ride it's been, and still Blizzard hate me and insist on forcing that stupid arrow into my life, why?!)
I haven't solved your problem exactly. But I have a solution that might be good enough:

First I installed this mod: Classic Quest Log

Then I made this macro:
Code:
/run hooksecurefunc('SetSuperTrackedQuestID',function(questID) if questID ~= 0 then SetSuperTrackedQuestID(0); end end);
/run SetSuperTrackedQuestID(0);
That's a single line for each /run.

Now, I'm hiding the quest-log that follows the map. And I'm using the Classic Quest Log instead. This quest log will not be hijacked by the script running from the macro. I run this once per session (or after a /reload – that command will remove the effect of the macroed script aswell).

Alternatively you could create a map and quest log-addon from the default blizzard map and quest-log, and simply remove any checks to SuperTrackedQuestID to get rid of the hijacking, but I haven't bothered doing that.
  Reply With Quote

WoWInterface » AddOns, Compilations, Macros » AddOn Search/Requests » Hiding Minimap Quest Arrow

Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

vB code is On
Smilies are On
[IMG] code is On
HTML code is Off