local DEBUG = function() end -- d local function _tr(str) return str end RPFlagger = {} RPFlagger.LAM = LibStub:GetLibrary("LibAddonMenu-2.0") RPFlagger.name = "RPFlagger" RPFlagger.loadedAddons = {} -- We can't rely on string.find and a pattern entirely, because we need a lazy match for -- start and end, rather than a greedy match function RPFlagger:GetSingleTag(text, tagName) -- '-' seems to have a special meaning local tagName = string.gsub(tagName, "-", ".") local start = string.find(text, "##" .. tagName .. ": ") if not start then return nil end local stop = string.find(text, " ##", start+1) if not stop then return nil end start = start + string.len(tagName) + 4 return start, stop, string.sub(text, start, stop) end function RPFlagger:GetCharacterRPInfo(accountName, characterName, fun) -- Targeted an NPC if not accountName or accountName == "" then return nil end for i = 1, #self.guildList, 1 do local guildId = self.guildList[i] local memberIndex = GetGuildMemberIndexFromDisplayName(guildId, accountName) if memberIndex then local _, note = GetGuildMemberInfo(guildId, memberIndex) local rpInfoTxt = fun(characterName, note) if rpInfoTxt then return rpInfoTxt end end end return nil end function RPFlagger:help() -- CHAT_SYSTEM:AddMessage("/im listrules - list the rules currently defined") -- CHAT_SYSTEM:AddMessage("/im dryrun - show what the currently defined rules would do to your inventory") end function RPFlagger:SlashCommand(argv) local options = {} local searchResult = { string.match(argv,"^(%S*)%s*(.-)$") } for i,v in pairs(searchResult) do if (v ~= nil and v ~= "") then options[i] = string.lower(v) end end if #options == 0 or options[1] == "help" then self:help() else CHAT_SYSTEM:AddMessage("Unknown parameter '" .. argv .. "'") end end RPFlagger.UI = { } RPFlagger.UI.Settings = { } local Settings = RPFlagger.UI.Settings function RPFlagger:InitializeUI() local panelData = { type = "panel", name = "RPFlagger", registerForRefresh = true, --boolean (optional) (will refresh all options controls when a setting is changed and when the panel is shown) } local mainPanel = { { type = "description", text = GetString(SI_RPF_EXPLANATION1) .. "\n\n" .. GetString(SI_RPF_EXPLANATION2) .. "\n\n" .. GetString(SI_RPF_EXPLANATION3), }, { type = "submenu", name = GetString(SI_RPF_SETTINGS), tooltip = GetString(SI_RPF_SETTINGS_TT), --(optional) controls = Settings:GetControls(), }, } self.UI.panel = self.LAM:RegisterAddonPanel("iwontsayRPFlagger", panelData) self.LAM:RegisterOptionControls("iwontsayRPFlagger", mainPanel) end function RPFlagger:Init() self.charDefaults = { ["guildList"] = { 1,2,3,4,5 } } self.charVariables = ZO_SavedVars:New( "RPFSavedVars", 1, nil, self.charDefaults) self.guildList = self.charVariables.guildList self:InitializeUI() -- CHAT_SYSTEM:AddMessage(self.name .. " Addon Loaded.") -- CHAT_SYSTEM:AddMessage("Use /rpf help for an overview") end local function OnAddOnLoaded(eventCode, addonName) if addonName == RPFlagger.name then RPFlagger:Init() else RPFlagger.loadedAddons[addonName] = true end end local function OnPCCreated() Settings:PopulateUI() end EVENT_MANAGER:RegisterForEvent(RPFlagger.name, EVENT_ADD_ON_LOADED, OnAddOnLoaded) -- SLASH_COMMANDS["/rpf"] = function(argv) RPFlagger:SlashCommand(argv) end CALLBACK_MANAGER:RegisterCallback("LAM-PanelControlsCreated", OnPCCreated)