class DiscordLink name: "DiscordLink" variableVersion: 1 defaults: { InviteCodes: {} } InitializeSavedVariables: () => @savedVariables = ZO_SavedVars\NewAccountWide(@name .. "Vars", @variableVersion, nil, @defaults) if not @savedVariables.InviteCode return table.insert(@savedVariables.InviteCodes, @savedVariables.InviteCode) @savedVariables.InviteCode = nil CreateCommands: () => for k,v in pairs @savedVariables.InviteCodes continue if v == nil or v == "" SLASH_COMMANDS["/d" .. k] = () -> StartChatInput("https://discord.gg/" .. v) SLASH_COMMANDS["/discord"] = () -> if @savedVariables.InviteCodes[1] == nil or @savedVariables.InviteCodes[1] == "" then return d("Add an invite code to your addon settings first") SLASH_COMMANDS["/d1"]() Initialize: () => @CreateCommands! LAM = LibAddonMenu2 panelName = @name .. "Panel" panelData = { type: "panel", name: "Discord Link", author: "@Jarva [EU]", registerForDefaults: true } panel = LAM\RegisterAddonPanel(panelName, panelData) optionsData = {} for i = 1,5 table.insert(optionsData, { type: "editbox", name: "Invite Code " .. i, getFunc: () -> @savedVariables.InviteCodes[i], setFunc: (value) -> @savedVariables.InviteCodes[i] = value @CreateCommands! }) LAM\RegisterOptionControls(panelName, optionsData) onAddonLoaded: (_, addonName) -> if addonName == DiscordLink.name EVENT_MANAGER\UnregisterForEvent(DiscordLink.name, EVENT_ADD_ON_LOADED) DiscordLink\InitializeSavedVariables! DiscordLink\Initialize! EVENT_MANAGER\RegisterForEvent(DiscordLink.name, EVENT_ADD_ON_LOADED, DiscordLink.onAddonLoaded)