seblindfors / ConsolePort

ConsolePort - Game Controller Addon for World of Warcraft
Artistic License 2.0
172 stars 40 forks source link

Utility Belt #11

Closed Denncore closed 8 years ago

Denncore commented 8 years ago

Hello,

I'm very excited about your work here and really enjoy playing with controller + this addon. One really nice feature is the utilty Belt function, especially when it comes to Quest Items but I discovered 2 issues there.

The First (not clear): Sometimes a Quest Item won't appear the utility belt -> /reload help as a workaround. At this moment I cannot determine why and when exactly this happens but I try to reproduce it and let you know if I found something.

The second: I currently playing with my shaman, so I often switch to the ghost wolf form and after some switches the utility belt stop appearing when I press the hotkey. A /reload helps in that case too.

P.S First of all I thought it would only happen if I have elvui or Tukui enabled but both issues still appear when I use the default Blizzard ui (addons disabled)

Best regards Fischbraetsche

seblindfors commented 8 years ago

The quest item thing is something I'm aware of, but it's not really my fault. I use one of Blizzard's functions to get the count of a specific item. If you have the item (and it's a quest item) the utility belt won't remove it. But if you don't have the quest item, the bar will clear it because it assumes you're done with the quest. The problem is that sometimes, for a handful of quest items, the game tells the addon that you don't have the item at all, even when it's sitting right there in your bag. I'm not really sure why that is, but I'll look into possible fixes that aren't too hacky.

The utility belt could use some all around polishing, because there are other issues with it too. I just haven't gotten around to fix them yet.

The second issue is something I've never seen before. I play a resto shaman and frequently use ghost wolf, but haven't noticed bindings not working properly. If you can provide details about a given situation when this happend, what you were doing, if you were in combat, etc, might help me solve it.

Denncore commented 8 years ago

Okay, I try to get some details while playing. If I found something, I'll tell you here.

Denncore commented 8 years ago

sry wrong button :/

seblindfors commented 8 years ago

It turns out that entering and leaving Ghost Wolf triggers an actionpage refresh, similar to how druids' forms trigger a refresh. The difference is that Ghost Wolf doesn't actually change the actionpage, it just refreshes it. This might be related to the problem you're describing, but not confirmed.

Denncore commented 8 years ago

Yesterday I had the issue many times but could not determine why its happening and when exactly it stopped working it. The most time it appeared in a dungeon or immediately after the last Boss was defeated. I also discovered, that it isn't only the utilty belt which stops working. The raid cursor won't work either and the controller options frame won't open when clicking on it.

seblindfors commented 8 years ago

No lua errors?

Denncore commented 8 years ago

ohhhh damned, I forgot I turned off the lua Errors in the interface panel. Well everytime I use ghost wolf ability 13 Lua Errors appear.

--> Message: Interface\FrameXML\RestrictedExecution.lua:397: Call failed: Interface\FrameXML\RestrictedExecution.lua:397: Call failed: Interface\FrameXML\RestrictedExecution.lua:397: Call failed: Interface\FrameXML\RestrictedInfrastructure.lua:365: Cannot create restricted tables from insecure code Time: 01/17/16 20:12:00 Count: 1 Stack: C: ?

Interface\FrameXML\RestrictedExecution.lua:397: in function <Interface\FrameXML\RestrictedExecution.lua:390> (tail call): ? (tail call): ? Interface\FrameXML\SecureHandlers.lua:113: in function <Interface\FrameXML\SecureHandlers.lua:108> C: in function `SetAttribute' Interface\FrameXML\SecureStateDriver.lua:114: in function <Interface\FrameXML\SecureStateDriver.lua:95> Interface\FrameXML\SecureStateDriver.lua:127: in function <Interface\FrameXML\SecureStateDriver.lua:119> <--

--> Message: Interface\FrameXML\UIPanelTemplates.lua:120: attempt to perform arithmetic on field 'cursorOffset' (a nil value) Time: 01/17/16 20:12:00 Count: 1 Stack: C: ? Interface\FrameXML\UIPanelTemplates.lua:120: in function ScrollingEdit_OnUpdate' Interface\FrameXML\UIPanelTemplates.lua:97: in functionScrollingEdit_OnTextChanged' ...e\AddOns\Blizzard_DebugTools\Blizzard_DebugTools.lua:604: in function ScriptErrorsFrame_Update' ...e\AddOns\Blizzard_DebugTools\Blizzard_DebugTools.lua:551: in functionScriptErrorsFrame_OnError'

Interface\AddOns\Auctionator\AtrErrorInspector.lua:107: in function <Interface\AddOns\Auctionator\AtrErrorInspector.lua:52>

Interface\FrameXML\RestrictedExecution.lua:397: in function <Interface\FrameXML\RestrictedExecution.lua:390> (tail call): ? (tail call): ? Interface\FrameXML\SecureHandlers.lua:126: in function <Interface\FrameXML\SecureHandlers.lua:119> C: in function `SetAttribute' Interface\FrameXML\SecureStateDriver.lua:114: in function <Interface\FrameXML\SecureStateDriver.lua:95> Interface\FrameXML\SecureStateDriver.lua:127: in function <Interface\FrameXML\SecureStateDriver.lua:119>

Locals: <--

--> Message: Interface\FrameXML\UIPanelTemplates.lua:120: C stack overflow Time: 01/17/16 20:12:01 Count: 1 Stack: C: ? Interface\FrameXML\UIPanelTemplates.lua:120: in function ScrollingEdit_OnUpdate' Interface\FrameXML\UIPanelTemplates.lua:97: in functionScrollingEdit_OnTextChanged' ...e\AddOns\Blizzard_DebugTools\Blizzard_DebugTools.lua:604: in function ScriptErrorsFrame_Update' ...e\AddOns\Blizzard_DebugTools\Blizzard_DebugTools.lua:551: in functionScriptErrorsFrame_OnError'

Interface\AddOns\Auctionator\AtrErrorInspector.lua:56: in function <Interface\AddOns\Auctionator\AtrErrorInspector.lua:52>

Interface\FrameXML\UIPanelTemplates.lua:120: in function ScrollingEdit_OnUpdate' Interface\FrameXML\UIPanelTemplates.lua:97: in functionScrollingEdit_OnTextChanged' ...e\AddOns\Blizzard_DebugTools\Blizzard_DebugTools.lua:604: in function ScriptErrorsFrame_Update' ...e\AddOns\Blizzard_DebugTools\Blizzard_DebugTools.lua:551: in functionScriptErrorsFrame_OnError' ...

Interface\FrameXML\UIPanelTemplates.lua:120: in function ScrollingEdit_OnUpdate' Interface\FrameXML\UIPanelTemplates.lua:97: in functionScrollingEdit_OnTextChanged' ...e\AddOns\Blizzard_DebugTools\Blizzard_DebugTools.lua:604: in function ScriptErrorsFrame_Update' ...e\AddOns\Blizzard_DebugTools\Blizzard_DebugTools.lua:551: in functionScriptErrorsFrame_OnError'

Interface\AddOns\Auctionator\AtrErrorInspector.lua:56: in function <Interface\AddOns\Auctionator\AtrErrorInspector.lua:52>

Interface\FrameXML\UIPanelTemplates.lua:120: in function `ScrollingEdit_OnUpdate'

Locals: <--

And if I try to use the utility Belt this one comes in front: --> Message: Interface\FrameXML\RestrictedExecution.lua:397: Call failed: Interface\FrameXML\RestrictedExecution.lua:432: Cannot call restricted closure from insecure code Time: 01/17/16 20:19:29 Count: 2 Stack: C: ?

Interface\FrameXML\RestrictedExecution.lua:397: in function <Interface\FrameXML\RestrictedExecution.lua:390> (tail call): ? (tail call): ? Interface\FrameXML\SecureHandlers.lua:283: in function <Interface\FrameXML\SecureHandlers.lua:277> (tail call): ?

Locals: <--

seblindfors commented 8 years ago

I see. I know what's happening now.

You have another addon running alongside ConsolePort that has a corrupted metatable. In non-technical terms, it means that when ConsolePort scans the interface for action buttons (to use with the raid cursor) it comes across a corrupted frame from another addon that causes Blizzard's restricted environment to lock down. Essentially, Blizzard put in a fail safe to ensure that insecure code can't "sneak" in to the restricted environment, which is the subset of API that's used for unit frames and action buttons to make sure that people can't make bot addons.

The reason this happens when you use Ghost Wolf is that Ghost Wolf triggers an action page refresh, which causes ConsolePort to refresh the action button cache, to keep track of which of your action buttons are for healing and which buttons are for damage.

If you want to determine which addon is causing the issue, (so that I can report it to the addon's author), try disabling your addons one by one, whip out the raid cursor and swap in and out of Ghost Wolf. Keep doing that until the error stops happening and you'll know which addon is causing the problem.

If you're using ElvUI, then it has already been reported to the authors.

Blazeflack commented 8 years ago

I have responded to your thread: http://www.tukui.org/forums/topic.php?id=35332

Please test the changes if you don't mind. You can download the latest changes here: http://git.tukui.org/Elv/elvui/repository/archive.zip

seblindfors commented 8 years ago

I can confirm that the taint issue with the raid frames has been fixed. Action pages are working and so are the icons. The only thing that doesn't line up now is the stealthed bonusbar used in cat form with ElvUI, since Blizzard only uses actionpage 7 regardless of stealth or not. Not stealthed: image Stealthed: image

I did, however, notice that you can actually modify the state driver in ElvUI, so I'll just post a solution for feral druids so that it lines up with my addon. Thanks for your time investigating this.

Blazeflack commented 8 years ago

Glad to hear everything is fixed now. The taint was a bitch to track down :P

seblindfors commented 8 years ago

I can only imagine. I realize it's a bit unorthodox to cache the interface in the secure environment, but at least you have that out of the way now!

Blazeflack commented 8 years ago

Very true, it's always a nice feeling when you know things are "right" ;)

seblindfors commented 8 years ago

Btw, sorry about not providing more details, but the line of code I posted on your forum was the only clue I had without delving into the deep end of your coding.