Das funktioniert grundsätzlich eigentlich ganz einfach. Am Beispiel von Phanx-Code grob erklärt:
Zuerst erstellst Du einfach ein Frame das später in den Blizzard Interfaceoptionen eingeblendet wird wenn jemand die Optionen für Dein Addon aufruft.
Lua Code:
local Options = CreateFrame("Frame", ADDON.."Options", InterfaceOptionsFramePanelContainer)
Und dann fügst Du dieses Frame den Interfaceoptionen hinzu.
Lua Code:
Options.name = GetAddOnMetadata(ADDON, "Title") or ADDON
InterfaceOptions_AddCategory(Options)
Addon.OptionsPanel = Options
Jetzt musst Du Dein Options-Frame nur noch mit den gewünschten Einstellungselementen füllen und diese entsprechend der aktuellen Einstellungen konfigurieren.
Lua Code:
Options:SetScript("OnShow", function()
--hier werden verschiedene Elemente erstellt und konfiguriert. zum Beispiel ein Titel:
local Title = Options:CreateFontString("$parentTitle", "ARTWORK", "GameFontNormalLarge")
Title:SetPoint("TOPLEFT", 16, -16)
Title:SetText(Options.name)
--danach werden dann Unterkategorien erstellt. Aber ich würde sagen Du versuchst erstmal Optionen ohne Unterkategorien/Registerkarten zu bauen bevor Du Dich damit beschäftigst. :)
-- und dann kommen noch die Funktionen für die Standardbuttons die es bei den Optionen für jede Addon gibt (Ok, Abbrechen, Reset)
function Options.okay()
--was auch immer bei denen Optionen passieren soll wenn jemand auf ok klickt
end
function Options.cancel()
--was auch immer bei denen Optionen passieren soll wenn jemand auf abbrechen klickt
end
--und mit dieser Funktion werden die einzelnen optionselemente bei der anzeige aktualisiert
function Options.refresh()
--deine optionselemente entsprechend der aktuellen Einstellungen konfigurieren
end
end)
Und zum Schluss wird dann noch ein Slash-Befehl registriert der das Optionsfenster öffnet:
Lua Code:
SLASH_CLEANCOMPARE1 = "/ccompare"
SlashCmdList.CLEANCOMPARE = function() InterfaceOptionsFrame_OpenToCategory(Options) end
Ich hoffe das erhellt die Sache ein wenig. Ansonsten frag einfach noch mal nach.