Questie

Questie

116M Downloads

Tooltip Item Quest Log

Monteo opened this issue ยท 17 comments

commented

...for what it's worth I tried to look into this tonight. I looked at the code for 'aux-addon' and they aren't using a proper tool-tip hooking method. Without knowing exactly what issue it has with Questie I'd say that it's a mod incompatibility.

commented

OK so we see an error occurred but it doesn't tell us where or which file caused the issue. Please use Improved Error Frame and see if the error occurs again. This will give us the file and the line it error's on. This is the version I use:

http://addons.us.to/addon/improvederrorframe

commented

http://plays.tv/video/5874890880a7bcd55b/-wow-addon
My actions:
1 clear WDB
2 AUX + QUESTIE = error
3 - AUX = noerror, item cache
4 AUX+ QUESTIE = no error

commented

logon server not respond

commented

Here is a test case you haven't tried yet.

  1. disable AUX / enable QUESTIE
  2. clear WDB
  3. hover over tooltips in questlog - make sure all tooltips show up correctly
  4. enable AUX
  5. hover over tooltips in questlog

error?


Here is what I think is happening:

...aux-addon\core\tooltip.lua:27
local tmp = A(orig[GameTooltip][name](unpack(arg)))

It's trying to unpack tooltip info that isn't in cache. There have been a ton of issues lately since the servers are overburdened where things aren't making it into the item cache fast enough. So in essence this function is loading too quickly.

I can't try this since I can't get on the servers. I'll have to try later tonight after I get off work but you can try this to see if your error goes away. Copy&Paste the entire function LOAD() (line 19 to 53) to the end of the tooltip.lua... the reason I say this is because on line 150 is where SetQuestLogItem is located and also appears in the error.

commented

OK, I've done some extensive testing. I was able to repro this error using your steps. I don't think it's an issue with either addon. I think it's an itemcache issue purely on game clients whos cahce is empty. I notice that when I login there are several skills on my action bar without an icon. I can immediately open my questlog and repro the error on any quest reward tooltip and it consistently triggers errors. A simple reload of the UI fixes this and all errors disappear with both Questie and aux-addon enabled. It might not happen when you first login and Questie isn't enabled but it could be occurring because both addons are running tooltip insertion functions and they could be preventing each other from querying the server to trigger an itemcache refresh.

The tooltip code in aux-addon is really wonky, and I say that with respect to that addon's author because I know how complicated it is to get an addon to work and play nice with other addons. In Vanilla this was especially difficult compared to the current version of LUA found in todays retail WoW environment. The reason I bring this up is that with aux-addon enabled, quest items in my bags are supposed to only show one set of tooltips. Most of the time 2 sets of duplicate info is displayed or 3 sets of duplicate info. Without aux-addon enabled, I only see one set of info for each quest item in my bags.

commented

Actually, I've dropped ace from all my addons. Not too keen on using ancient unmaintained libraries. Given your testing with the cache I suspect it's not a hooking issue at all but maybe that questie calls the tooltip setter at an early point in the loading of the quest frame when its item data isn't loaded yet? How far ahead is the new version? If it's close I guess I won't look into this further either and try and resolve it when it still exists with 4.0.

commented

Yeah, I would wait till 4.0...

I have tried throttling certain functions but Questies functions is like a house of cards. The moment you tweak one thing, it breaks another. I have tried playing around with the modules loading order which has had no effect. EQL3 has a nice "Quest Tool Tip" already and personally I'm happy with it. Most use it anyway. Shagu has his own version as well that he includes with ShaguQuest.

commented

@shirsig Hey dude. I think I might have found your bug.

First, I fixed the "Duplicate Tool Tip" issues with Questie when Aux-addon was being used. I inadvertently misplaced a function call that clears our tool tips "OnHide". So that part is fixed however, the original issue that @Monteo reported still occurred. I was able to get it to repro and error on each "hover over" of a quest reward. I won't go into a long winded explanation on how I fixed it but I will summarize by saying that I had to add support for GameTooltip.SetQuestLogItem even though Questie isn't inserting tool tips into that type. But because of the way that Questie loads and maintains assertion over certain API's, like tool tips, I had to build in a handler. Very similar to the way you're doing yours I might add. :) This allows Questie to "pass the buck" onto other addons that want to add in their own info without polluting the tool tip that is already in memory.

Now, there is STILL a caching lag issue with the client and server. I'm not going to lay blame but I strongly suspect that our computers are running code MUCH faster than they were 10 years ago. Combine that with the number of players that are active on the server and you're going to get some data that hasn't quite reached the client when addons begin running their code. This only seems to be an issue when the data isn't available in the cache. Once it's in there, I can't get any thing to throw an error. So, I put in a check to make sure an item link is returned BEFORE it runs the tool tip code. That seems to cause tool tips for a NEW item not to appear but it at least doesn't error out. All a player has to do is select something else in the quest log and that seems to trigger another update between the client and server for that items data to be pulled into the clients cache. Once a player switches back to that quest, the tool tip for the reward will appear. Make sense?

So, this bug is officially resolved... at least on my box. Please download and test once I get the new version posted. I've also added the ability to hide the tool tips in Questie. Not sure if either of you two gents are interested in that. :)

commented

as an update, I will be sure to test

commented

Not sure what's so unusual about aux' tooltip hooks. They're essentially the same as informant's.
Basically this is what I'm doing for every hook: local tmp = A(orig[GameTooltip][name](unpack(arg))) inside_hook = false f(unpack(arg)) return ret(tmp)
I only call the original function once in the hook so I don't see how it could cause duplicates, and the error seems to be that something changes the parameters to the setter-function of the tooltip to something non-blizzlike?

About the cache issue ... could it be that the same error happens in the blizzard ui code but just isn't shown when it isn't hooked? And wouldn't this then also happen without questie?

Btw, the LOAD functions are called in the addon loaded event for aux, independently of where they appear in the file. But in any case, the error happens not in the load function but in the hook, which is called whenever the hooked function is called. I don't think I ever call the one for quest items, so it must be you or the default UI.

commented

@shirsig forgive my simplistic summary of how you're calling tool tips. I was only trying to explain why the error was occurring in a way that would be understandable to those that aren't engineers and sometimes my explanations sound like total BS. :)

Your addon, Questie and every other tool tip mod out there are handling tool tips the same way, more or less. Where Questie differs is we have to force the addon to override everything else in order to get the map notes to appear on the world map; Questie really should be a full ACE mod. I'm just a Dev Ops Engineer with more experience working in the digital media space then I have writing software and, I'm not familiar enough with the older versions of ACE to do this. Add to that, there is a performance issue in the WoW client pertaining to tool tips. It's in all Blizzard products and it might not have anything to do with Blizzards code at all but the way the engine renders the object. Mods installed or not, when hovering over objects that produce tool tips, especially other players, in large concentrations it will cause the game client to stutter. At one point I was able to cause my FPS to drop to single digits.

Questies tool tip code needs a complete rewrite instead of these band-aids I keep slapping on. I simply don't have time to invest in rewriting all the functions. Besides, Aero is working on Questie 4.0 which is a total rewrite of everything so I'm even more hesitant to look into this even further.

What I am going to do is add the ability to disable Questies tool tips like you can in other mods.

commented

New version release:
https://github.com/AeroScripts/QuestieDev/releases/latest

Don't forget to read the readme and the changelog or run the '/questie' command in game for options to customize Questie.

commented

I highly doubt the caching issue has anything to do with processing speed. The wow client is single-threaded afaik and individual cores aren't really faster than 10 years ago. It is however common for item data not being loaded when its "parent" frame loads. The same thing happens for vendor frames, profession frames etc. They usually keep firing update events until everything is loaded and you have to manually check if items are loaded for example like you described with the link function.

commented

I'm not at all familiar with how the client actually gets / requests data from the server. My interpretation is based on observation. I have tried wiping my cache, logging in and leaving my Quest Log open for a few minutes then trying to hover over quest rewards. It still error'd out. It wasn't until I clicked on another quest then came back to it before the tool tip appeared. But what you're saying makes perfect sense too. :) But, my fix does fix all test cases even with aux-addon loaded. At one point I even had auctioneer loaded too, in one of my test cases, to see if a conflict occurred. The only annoying thing is that initially, the tool tip doesn't show. Personally, I'd rather have that then an error. It fixes itself in the end.

commented

@Dyaxler Avesome. Everything works like you describe

commented

Great, thanks :) I'll also close the report on the aux tracker then.