-- multi api compat local compat = pfQuestCompat SLASH_PFDB1, SLASH_PFDB2, SLASH_PFDB3, SLASH_PFDB4 = "/db", "/shagu", "/pfquest", "/pfdb" SlashCmdList["PFDB"] = function(input, editbox) local params = {} local meta = { ["addon"] = "PFDB" } if (input == "" or input == nil) then DEFAULT_CHAT_FRAME:AddMessage("|cff33ffccpf|cffffffffQuest (v" .. pfQuestConfig.version .. "):") DEFAULT_CHAT_FRAME:AddMessage("|cff33ffcc/db|cffffffff lock |cffcccccc - " .. pfQuest_Loc["Lock map tracker"]) DEFAULT_CHAT_FRAME:AddMessage("|cff33ffcc/db|cffffffff tracker |cffcccccc - " .. pfQuest_Loc["Show map tracker"]) DEFAULT_CHAT_FRAME:AddMessage("|cff33ffcc/db|cffffffff journal |cffcccccc - " .. pfQuest_Loc["Show quest journal"]) DEFAULT_CHAT_FRAME:AddMessage("|cff33ffcc/db|cffffffff arrow |cffcccccc - " .. pfQuest_Loc["Show quest arrow"]) DEFAULT_CHAT_FRAME:AddMessage("|cff33ffcc/db|cffffffff show |cffcccccc - " .. pfQuest_Loc["Show database interface"]) DEFAULT_CHAT_FRAME:AddMessage("|cff33ffcc/db|cffffffff config |cffcccccc - " .. pfQuest_Loc["Show configuration interface"]) DEFAULT_CHAT_FRAME:AddMessage("|cff33ffcc/db|cffffffff locale |cffcccccc - " .. pfQuest_Loc["Display addon locales"]) DEFAULT_CHAT_FRAME:AddMessage("|cff33ffcc/db|cffffffff track |cffcccccc - " .. pfQuest_Loc["Show available tracking lists"]) DEFAULT_CHAT_FRAME:AddMessage("|cff33ffcc/db|cffffffff unit |cffcccccc - " .. pfQuest_Loc["Search unit"]) DEFAULT_CHAT_FRAME:AddMessage("|cff33ffcc/db|cffffffff object |cffcccccc - " .. pfQuest_Loc["Search object"]) DEFAULT_CHAT_FRAME:AddMessage("|cff33ffcc/db|cffffffff item |cffcccccc - " .. pfQuest_Loc["Search loot"]) DEFAULT_CHAT_FRAME:AddMessage("|cff33ffcc/db|cffffffff vendor |cffcccccc - " .. pfQuest_Loc["Search item vendors"]) DEFAULT_CHAT_FRAME:AddMessage("|cff33ffcc/db|cffffffff quest |cffcccccc - " .. pfQuest_Loc["Show specific quest"]) DEFAULT_CHAT_FRAME:AddMessage("|cff33ffcc/db|cffffffff quests |cffcccccc - " .. pfQuest_Loc["Show all quests on map"]) DEFAULT_CHAT_FRAME:AddMessage("|cff33ffcc/db|cffffffff clean |cffcccccc - " .. pfQuest_Loc["Clean Map"]) DEFAULT_CHAT_FRAME:AddMessage("|cff33ffcc/db|cffffffff reset |cffcccccc - " .. pfQuest_Loc["Reset Map"]) DEFAULT_CHAT_FRAME:AddMessage("|cff33ffcc/db|cffffffff scan |cffcccccc - " .. pfQuest_Loc["Scan the server for custom items"]) DEFAULT_CHAT_FRAME:AddMessage("|cff33ffcc/db|cffffffff query |cffcccccc - " .. pfQuest_Loc["Query the server for completed quests"]) return end local commandlist = { } local command for command in compat.gfind(input, "[^ ]+") do table.insert(commandlist, command) end local arg1, arg2 = commandlist[1], "" -- handle whitespace mob- and item names correctly for i in pairs(commandlist) do if (i ~= 1) then arg2 = arg2 .. commandlist[i] if (commandlist[i+1] ~= nil) then arg2 = arg2 .. " " end end end -- argument: debug if (arg1 == "debug") then pfQuest_config.debug = not pfQuest_config.debug DEFAULT_CHAT_FRAME:AddMessage("|cff33ffccpf|cffffffffQuest Debug Mode: " .. ( pfQuest_config.debug and "|cff33ff33ON" or "|cffff3333OFF" )) pfQuest:Debug("Debug Mode Changed") return end -- argument: item if (arg1 == "item") then local maps = pfDatabase:SearchItem(arg2, meta, "LOWER") pfMap:ShowMapID(pfDatabase:GetBestMap(maps)) return end -- argument: vendor if (arg1 == "vendor") then local maps = pfDatabase:SearchVendor(arg2, meta, "LOWER") pfMap:ShowMapID(pfDatabase:GetBestMap(maps)) return end -- argument: unit if (arg1 == "unit") then local maps = pfDatabase:SearchMob(arg2, meta, "LOWER") pfMap:ShowMapID(pfDatabase:GetBestMap(maps)) return end -- argument: object if (arg1 == "object") then local maps = pfDatabase:SearchObject(arg2, meta, "LOWER") pfMap:ShowMapID(pfDatabase:GetBestMap(maps)) return end -- argument: quest if (arg1 == "quest") then local maps = pfDatabase:SearchQuest(arg2, meta, "LOWER") pfMap:ShowMapID(pfDatabase:GetBestMap(maps)) return end -- argument: quests if (arg1 == "quests") then local maps = pfDatabase:SearchQuests(meta) pfMap:UpdateNodes() return end -- argument: track if (arg1 == "track" or arg1 == "meta") then local list = commandlist[2] -- show available lists if not list or list == "" then local available = nil for list in pairs(pfDB["meta"]) do available = (available and available .. ", " or "") .. "\"|cff33ffcc"..list.."|r\"" end DEFAULT_CHAT_FRAME:AddMessage(string.format(pfQuest_Loc["Available tracking targets are: %s. Or type \"|cff33ffcc/db track clean|r\" to untrack all."], available)) return end -- clean all tracking results if commandlist[2] == "clean" then for list in pairs(pfDB["meta"]) do pfDatabase:TrackMeta(list, false) end return end -- load arguments into state local state = { min = commandlist[3], max = commandlist[4], faction = commandlist[3], } -- read skill for auto mines if (list == "mines" and commandlist[3] == "auto") then state.max = pfDatabase:GetPlayerSkill(186) or 0 state.min = state.max - 100 end -- read skill for auto herbs if (list == "herbs" and commandlist[3] == "auto") then state.max = pfDatabase:GetPlayerSkill(182) or 0 state.min = state.max - 100 end -- clean specific list if commandlist[3] == "clean" then state = nil end -- perform tracking local maps = pfDatabase:TrackMeta(list, state) pfMap:ShowMapID(pfDatabase:GetBestMap(maps)) return end -- warn about deprecated arguments local deprecated = { ["chests"] = true, ["taxi"] = true, ["flights"] = true, ["rares"] = true, ["mines"] = true, ["herbs"] = true } if deprecated[arg1] then DEFAULT_CHAT_FRAME:AddMessage(string.format(pfQuest_Loc["|cffffcc00WARNING:|r The command \"|cff33ffcc/db %s|r\" is deprecated and will be removed soon. Please use the \"|cff33ffcc/db track %s|r\" instead to achieve the same functionality."], arg1, arg1)) end -- argument: chests (deprecated) if (arg1 == "chests") then local state = true if commandlist[2] == "clean" then state = nil end local maps = pfDatabase:TrackMeta("chests", state) pfMap:ShowMapID(pfDatabase:GetBestMap(maps)) return end -- argument: taxi (deprecated) if (arg1 == "flights" or arg1 == "taxi") then local state = { faction = commandlist[2], } if commandlist[2] == "clean" then state = nil end local maps = pfDatabase:TrackMeta("flight", state) pfMap:ShowMapID(pfDatabase:GetBestMap(maps)) return end -- argument: rares (deprecated) if (arg1 == "rares") then local state = { min = commandlist[2], max = commandlist[3], } if commandlist[2] == "clean" then state = nil end local maps = pfDatabase:TrackMeta("rares", state) pfMap:ShowMapID(pfDatabase:GetBestMap(maps)) return end -- argument: mines (deprecated) if (arg1 == "mines") then local state = { min = commandlist[2], max = commandlist[3], } if (arg2 == "auto") then state.max = pfDatabase:GetPlayerSkill(186) or 0 state.min = state.max - 100 end if commandlist[2] == "clean" then state = nil end state = commandlist[2] == "clean" and nil or state local maps = pfDatabase:TrackMeta("mines", state) pfMap:ShowMapID(pfDatabase:GetBestMap(maps)) return end -- argument: herbs (deprecated) if (arg1 == "herbs") then local state = { min = commandlist[2], max = commandlist[3], } if (arg2 == "auto") then state.max = pfDatabase:GetPlayerSkill(182) or 0 state.min = state.max - 100 end if commandlist[2] == "clean" then state = nil end state = commandlist[2] == "clean" and nil or state local maps = pfDatabase:TrackMeta("herbs", state) pfMap:ShowMapID(pfDatabase:GetBestMap(maps)) return end -- argument: clean if (arg1 == "clean") then pfMap:DeleteNode("PFDB") pfMap:UpdateNodes() return end -- argument: reset if (arg1 == "reset") then pfQuest:ResetAll() return end -- argument: show if (arg1 == "show") then if pfBrowser then pfBrowser:Show() end return end -- argument: tracker if (arg1 == "tracker") then if pfQuest.tracker then pfQuest.tracker:Show() end return end -- argument: lock if (arg1 == "lock") then pfQuest_config.lock = not pfQuest_config.lock DEFAULT_CHAT_FRAME:AddMessage("|cff33ffccpf|cffffffffQuest Tracker: " .. ( pfQuest_config.lock and "Locked" or "Unlocked" )) return end -- argument: journal if (arg1 == "journal") then if pfJournal then pfJournal:Show() end return end -- argument: arrow if (arg1 == "arrow") then if pfQuest_config["arrow"] == "1" then pfQuest_config["arrow"] = "0" pfQuest.route.arrow:Hide() else pfQuest_config["arrow"] = "1" end return end -- argument: show if (arg1 == "config") then if pfQuestConfig then pfQuestConfig:Show() end return end -- argument: locale if (arg1 == "locale") then DEFAULT_CHAT_FRAME:AddMessage("|cff33ffcc" .. pfQuest_Loc["Locales"] .. "|r:" .. pfDatabase.dbstring) return end -- argument: scan if (arg1 == "scan") then pfDatabase:ScanServer() return end -- argument: query if (arg1 == "query") then pfDatabase:QueryServer() return end -- argument: if (type(arg1)=="string") then if pfBrowser then pfBrowser:Show() pfBrowser.input:SetText((string.gsub(string.format("%s %s",arg1,arg2),"^%s*(.-)%s*$", "%1"))) end return end end