Questie

Questie

116M Downloads

Incompatibility with Krowi's Achievement Filter

orionshock opened this issue ยท 4 comments

commented

Bug description

Incompatibility/Error with Questie & Krowi's Achievement Filter ( https://www.curseforge.com/wow/addons/krowi-achievement-filter )
Attempting to enable tracking using Krowi's Achievement UI spits out this error and doesn't track Achievement.

Not sure if this is more a problem with Questie or Krowi's Achievement Filter.

Error

9x ...ceQuestie/Modules/Tracker/QuestieTracker.lua:1934: bad argument #1 to 'strmatch' (string expected, got nil)
[string "=[C]"]: in function strmatch' [string "@Questie/Modules/Tracker/QuestieTracker.lua"]:1934: in function TrackAchieve'
[string "@Questie/Modules/Tracker/QuestieTracker.lua"]:1601: in function <...ceQuestie/Modules/Tracker/QuestieTracker.lua:1601>
[string "=[C]"]: in function AddTrackedAchievement' [string "@Blizzard_AchievementUI/Blizzard_AchievementUI.lua"]:1007: in function AchievementButton_ToggleTracking'
[string "@Krowi_AchievementFilter/GUI/AchievementButton/AchievementButtonMixin.lua"]:464: in function ProcessedModifiers' [string "@Krowi_AchievementFilter/GUI/AchievementButton/AchievementButtonMixin.lua"]:489: in function Select'
[string "@Krowi_AchievementFilter/GUI/AchievementButton/AchievementButton.lua"]:29: in function <...ntFilter/GUI/AchievementButton/AchievementButton.lua:27>

Locals:
(*temporary) = nil
(temporary) = "(AchievementFrameAchievementsContainerButton%dTracked.)"
(*temporary) = "string expected, got nil"

Questie & WoW version

Classic Wrath - Questie 8.2.1 ( 5/7/23 Release on Curseforge )
Krowi's Achievement Filter version v56.4 (5/12/23 release on Curseforge)

commented

If you're running the latest release, then line 1934 is this:

local frameMatch = strmatch(mouseFocus, "(AchievementFrameAchievementsContainerButton%dTracked.*)")

Questie isn't able to find the "default" Blizzard "AchievementButton_ToggleTracking" check box.
image

Nothing we can really do about addons changing the Default Blizzard Achievement UI except maybe have Questie not look for it while Krowi is loaded. We don't like to do that because there are tons of addons out there and we can't possibly check each one to see what they are modifying, nor can we control how often it's update or if it's been deprecated.

My suggestion is to ask the Krowi team to handle that Blizzard Check Box and return the same values and frame name it returns. This would allow other addons to not worry about this feature in the Blizzard Achievement UI... not just Questie.

commented

Hey, a little insight from my end, KAF does not replace any default Achievement UI stuff. It just adds more stuff and hides the original Achievements tab and adds a new one. The new tab however does indeed use different frames than the default ones. I'm more than happy to implement a compatibility fix on my end, the only thing I would need to know is what Questie changes and how I should adopt to it when both our addons are active.

Do I just need to call QuestieTracker:TrackAchieve(achieveId) and QuestieTracker:UntrackAchieveId(achieveId) to get the tracking fixed for the custom KAF stuff?

commented

@TheKrowi

Heya! Thanks for stopping by.

  • Achievement frames:
    Ah, so the original Blizzard frame isn't present. Explains the nil error on our end. I'll insert a IsAddOnLoaded("Krowi_AchievementFilter") check and jump over the frameMatch = strmatch(mouseFocus, "(AchievementFrameAchievementsContainerButton%dTracked.*)") code. No worries... We don't change any of the Blizzard Achievement frames.

  • Tracking Achievements:
    I'm not aware of any issues with Tracking Achievements while using Questie and Krowi. At least not that I'm aware of? The above error comes from within the QuestieTracker:TrackAchieve(achieveId) function but it nil's out due to the missing Blizzard Global Frame Name and doesn't finish tracking the Achieve. Once my nil check is in place it should be just fine. We already hook the Blizzard functions so anything you guys are doing; as long as you stick to the Blizzard API's you'll be just fine. :) We do hide the Blizzard QuestWatch frame and remove any quests added to it, then insert them into the Questie Tracker. Questie has an option to "Show Blizzard Timer" vs it being embedded in the Tracker. In order to get this to work correctly, we have to keep the QuestWatch frame cleared of any Quests since the timer frame is now embedded inside the QuestWatch frame post-Wrath. It'll also flicker on/off in some edge cases...