Zelda Loot Addon Wont show

I can’t seem to figure out how to use the ui source to properly update my addon. Because my addon is very simple I still don’t quite know what to look for and update. If someone could give me proper direction to get it updated I would really appreciate it. I know I’ve asked for help in the past, but I could really use the help once more.

Get BugSack and BugGrabber to see what errors are being thrown.

ive done that already. I just need to know if there is a website that can scan it for me to cross check

The 11.0.0 API change list
https://warcraft.wiki.gg/wiki/Patch_11.0.0/API_changes

You you could post the error(s) and we might be able to point you in the right direction if that doesn’t help.

1x ZeldaLoot_Extended/config.lua:739: attempt to call global ‘InterfaceOptions_AddCategory’ (a nil value)
[string “@ZeldaLoot_Extended/config.lua”]:739: in function zle_createConfigPanel' [string "@ZeldaLoot_Extended/Zeldasound_Extended.lua"]:356: in function zeldaFrame_OnEvent’
[string “@ZeldaLoot_Extended/Zeldasound_Extended.lua”]:9: in function <…ceZeldaLoot_Extended/Zeldasound_Extended.lua:9>

Locals:
panel = zle_cp {
name = “Zelda Loot”
}
title_str = zle_cp_str1 {
}
uncommon_lbl = zle_cp_str2 {
}
rare_lbl = zle_cp_str3 {
}
epic_lbl = zle_cp_str4 {
}
legendary_lbl = zle_cp_str5 {
}
inherit_lbl = zle_cp_str6 {
}
author_str = zle_cp_str7 {
}
uncommon_received = zle_cp_str8 {
}
uncommon_crafts = zle_cp_str9 {
}
rare_received = zle_cp_str10 {
}
rare_crafts = zle_cp_str11 {
}
epic_received = zle_cp_str12 {
}
epic_crafts = zle_cp_str13 {
}
legendary_received = zle_cp_str14 {
}
legendary_crafts = zle_cp_str15 {
}
jp_str = zle_cp_str16 {
}
hp_str = zle_cp_str17 {
}
misc_str = zle_cp_str18 {
}
use_antispam_str = zle_cp_str20 {
}
use_antispam_desc_str = zle_cp_str21 {
}
l1 = -30
l2 = -95
l3 = -160
l4 = -225
l5 = -245
l6 = -388
l7 = -428
btn_test1 = btn_test1 {
Right = Texture {
}
Left = Texture {
}
fitTextWidthPadding = 40
Text = btn_test1Text {
}
Middle = Texture {
}
fitTextCanWidthDecrease = true
}
btn_test2 = btn_test2 {
Right = Texture {
}
Left = Texture {
}
fitTextWidthPadding = 40
Text = btn_test2Text {
}
Middle = Texture {
}
fitTextCanWidthDecrease = true
}
btn_test3 = btn_test3 {
Right = Texture {
}
Left = Texture {
}
fitTextWidthPadding = 40
Text = btn_test3Text {
}
Middle = Texture {
}
fitTextCanWidthDecrease = true
}
btn_test4 = btn_test4 {
Right = Texture {
}
Left = Texture {
}
fitTextWidthPadding = 40
Text = btn_test4Text {
}
Middle = Texture {
}
fitTextCanWidthDecrease = true
}
btn_test5 = btn_test5 {
Right = Texture {
}
Left = Texture {
}
fitTextWidthPadding = 40
Text = btn_test5Text {
}
Middle = Texture {
}
fitTextCanWidthDecrease = true
}
btn_test6 = btn_test6 {
Right = Texture {
}
Left = Texture {
}
fitTextWidthPadding = 40
Text = btn_test6Text {
}
Middle = Texture {
}
fitTextCanWidthDecrease = true
}
btn_test7 = btn_test7 {
Right = Texture {
}
Left = Texture {
}
fitTextWidthPadding = 40
Text = btn_test7Text {
}
Middle = Texture {
}
fitTextCanWidthDecrease = true
}
img_sword = zle_img1 {
PixelSnapDisabled = true
texture = Texture {
}
}
t1 = Texture {
PixelSnapDisabled = true
}
(*temporary) = nil
(*temporary) = zle_cp {
name = “Zelda Loot”
}
(*temporary) = “attempt to call global ‘InterfaceOptions_AddCategory’ (a nil value)”
zle_version = “4.0”
check1 = cb1 {
Text = cb1Text {
}
text = cb1Text {
}
}
check3 = cb3 {
Text = cb3Text {
}
text = cb3Text {
}
}
check4 = cb4 {
Text = cb4Text {
}
text = cb4Text {
}
}
check5 = cb5 {
Text = cb5Text {
}
text = cb5Text {
}
}
check6 = cb6 {
Text = cb6Text {
}
text = cb6Text {
}
}
check7 = cb7 {
Text = cb7Text {
}
text = cb7Text {
}
}
check8 = cb8 {
Text = cb8Text {
}
text = cb8Text {
}
}
check9 = cb9 {
Text = cb9Text {
}
text = cb9Text {
}
}
check10 = cb10 {
Text = cb10Text {
}
text = cb10Text {
}
}
check11 = cb11 {
Text = cb11Text {
}
text = cb11Text {
}
}
check12 = cb12 {
Text = cb12Text {
}
text = cb12Text {
}
}
check13 = cb13 {
Text = cb13Text {
}
text = cb13Text {
}
}
check14 = cb14 {
Text = cb14Text {
}
text = cb14Text {
}
}
check15 = cb15 {
Text = cb15Text {
}
text = cb15Text {
}
}
check16 = cb16 {
Text = cb16Text {
}
text = cb16Text {
}
}
check17 = cb17 {
Text = cb17Text {
}
text = cb17Text {
}
}
green_dropdown = dd_green {
Right = dd_greenRight {
}
Left = dd_greenLeft {
}
selectedID = 5
Button = dd_greenButton {
}
Icon = dd_greenIcon {
}
Middle = dd_greenMiddle {
}
Text = dd_greenText {
}
}
blue_dropdown = dd_blue {
Right = dd_blueRight {
}
Left = dd_blueLeft {
}
selectedID = 5
Button = dd_blueButton {
}
Icon = dd_blueIcon {
}
Middle = dd_blueMiddle {
}
Text = dd_blueText {
}
}
purple_dropdown = dd_purple {
Right = dd_purpleRight {
}
Left = dd_purpleLeft {
}
selectedID = 5
Button = dd_purpleButton {
}
Icon = dd_purpleIcon {
}
Middle = dd_purpleMiddle {
}
Text = dd_purpleText {
}
}
orange_dropdown = dd_orange {
Right = dd_orangeRight {
}
Left = dd_orangeLeft {
}
selectedID = 5
Button = dd_orangeButton {
}
Icon = dd_orangeIcon {
}
Middle = dd_orangeMiddle {
}

That changed to using the new Settings API. The change was highlighted with the Dragonflight API changes. See the Settings API section at:
https://warcraft.wiki.gg/wiki/Patch_10.0.0/API_changes

but I had no issues with display in Dragonflight. anything pertaining to DF is not really necessary because I could open it, and adjust everything. So now the issue im having is that it doesnt show with this patch.

When Blizz changes something that will break an old API version (function) they commonly create wrapper function of the old version that use the new way of doing things.

These wrappers usually only last until the end of an expansion to give authors time to adjust to the new way.

If you download a copy of the 10.2.7 API (https://github.com/Gethe/wow-ui-source/releases/tag/10.2.7) you can find the wrapper function in the Blizzard_Deprecated addon.

I’m still fairly new to this. simply because much of the stuff was already pre-written. I’m not sure what exactly i should be looking for other than interface menu.

If you download the zip file and extract it.

Go the the folder wow-ui-source-10.2.7\Interface\AddOns\Blizzard_Settings_Shared
and open the Blizzard_Deprecated.lua file.

You will see the function containing the new code that was used through Dragonflight to replace InterfaceOptions_AddCategory.

You can adapt that code to your addon to replace the function.

would i have to copy that whole text or one specific thing?

For now, at the top of the .lua file with the call to InterfaceOptions_AddCategory you could probably just add:

local InterfaceOptions_AddCategory = InterfaceOptions_AddCategory
if not InterfaceOptions_AddCategory then
	InterfaceOptions_AddCategory = function(frame, addOn, position)
		-- cancel is no longer a default option. May add menu extension for this.
		frame.OnCommit = frame.okay;
		frame.OnDefault = frame.default;
		frame.OnRefresh = frame.refresh;

		if frame.parent then
			local category = Settings.GetCategory(frame.parent);
			local subcategory, layout = Settings.RegisterCanvasLayoutSubcategory(category, frame, frame.name, frame.name);
			subcategory.ID = frame.name;
			return subcategory, category;
		else
			local category, layout = Settings.RegisterCanvasLayoutCategory(frame, frame.name, frame.name);
			category.ID = frame.name;
			Settings.RegisterAddOnCategory(category);
			return category;
		end
	end
end

Just a guess not knowing the addon.

1 Like

Should just be able to register an options menu with a simple canvas layout. An example from the wiki. The background this sets it to is purple and I personally removed it to keep the default options menu background.

local frame = CreateFrame("Frame")
local background = frame:CreateTexture()
background:SetAllPoints(frame)
background:SetColorTexture(1, 0, 1, 0.5)

local category = Settings.RegisterCanvasLayoutCategory(frame, "My AddOn")
Settings.RegisterAddOnCategory(category)
1 Like

Show how much I use the game menu for my settings :rofl:

I have only basic understanding, just enough to get things to work usually. I was able to edit the Hide Quick Join addon from 2016 and get rid of that error by simply replacing InterfaceOptions_AddCategory with

local category = Settings.RegisterCanvasLayoutCategory(Options, "Hide Quick Join")
Settings.RegisterAddOnCategory(category)

The frame was already created so I’m guessing the old way was similar to a canvas layout.

none of it worked. Still cannot show the addon in settings. The addon is doing what its supposed to do and play the sounds. But it will now show up in settings.

Did you replace the InterfaceOptionsFrame_OpenToCategory function as well?

This is what I’ve been using to fix mine.

local category, layout = Settings.RegisterCanvasLayoutCategory(configFrame, configFrame.name, configFrame.name);
category.ID = configFrame.name;
Settings.RegisterAddOnCategory(category);

replace all instances configFrame with whatever the frame name is that was being passed to InterfaceOptions_AddCategory(configFrame)

1 Like

can you explain this to me a bit further?

Wherever you see configFrame in the code I posted, replace that with whatever is inside the () of the InterfaceOptions_AddCategory() call on the addon you’re replacing that line in.

If you still can’t figure it out, post the line of code that includes InterfaceOptions_AddCategory