📄 gatherer.lua
字号:
-- Gatherer
-- Written by Chandora
GATHERER_VERSION="<%version%>";
-- Revision: $Id: Gatherer.lua 279 2006-08-27 20:18:05Z islorgris $
--
-- Look, seriously a full half of this code is from MapNotes.
-- The only reason I pinched it and put it in here is I couldn't
-- work out how to extend MapNotes to do what I wanted it to do
-- without actually editing the MapNotes files.
--
-- Full credit to the MapNotes guys
--
if (GATHERER_VERSION == "<%version%>") then
GATHERER_VERSION = "2.2.3.1";
end
-- Global variables
GATHERNOTE_UPDATE_INTERVAL = 0.25;
GATHERNOTE_CHECK_INTERVAL = 5.0;
GATHERER_MAXNUMNOTES = 25;
GATHERER_LOADED = false;
GATHERER_CLOSESTCHECK=0.4;
Gatherer_RecordFlag=0;
Gatherer_currentNode="";
Gatherer_currentAction="";
GatherMap_InCity = false;
Gatherer_LoadCount = 0;
Gatherer_MapOpen = false;
Gatherer_UpdateWorldMap = -1;
Gatherer_InWorld = false;
GatherItems = { };
GatherSkills = { };
GatherConfig = {useMinimap = true, maxDist = 20, number = 10, useMinimapText = "on", iconSet = "shaded", miniIconDist = 40, filter = "all"};
GatherZoneData = { };
GatherMainMapItem = { };
-- UI variables
Gatherer_WorldMapDetailFrameWidth = 0;
Gatherer_WorldMapDetailFrameHeight = 0;
Gatherer_WorldMapPlayerFrameLevel = 0;
Gather_Player = UnitName("player");
StaticPopupDialogs["GATHERER_VERSION_DIALOG"] = {
text = TEXT(GATHERER_VERSION_WARNING),
button1 = TEXT(OKAY),
showAlert = 1,
timeout = 0,
};
--- ************************************************************************
-- Utilities
function Gatherer_Round(x)
if( x - math.floor(x) > 0.5) then
x = x + 0.5;
end
return math.floor(x);
end
function Gatherer_GetMenuName(inputName)
local name, info;
if (inputName) then
name = inputName;
local iconName, _ = Gatherer_GetDB_IconByGatherName(inputName);
iconName = iconName or inputName;
for _, rareMatch in Gather_RareMatch do
if (iconName == rareMatch) then
name = name.." ["..TYPE_RARE.."]";
break;
end
end
if (Gather_SkillLevel[iconName]) then
name = name.." ["..Gather_SkillLevel[iconName].."]";
end
end
return name, info;
end
-- *************************************************************************
-- Init and command line handler
function Gatherer_OnLoad()
this:RegisterEvent("WORLD_MAP_UPDATE");
this:RegisterEvent("CLOSE_WORLD_MAP"); -- never triggered apparently
this:RegisterEvent("LEARNED_SPELL_IN_TAB"); -- follow current skills
this:RegisterEvent("SPELLS_CHANGED"); -- follow current skills
this:RegisterEvent("SKILL_LINES_CHANGED"); -- follow current skills
this:RegisterEvent("SPELLCAST_START");
this:RegisterEvent("SPELLCAST_STOP");
this:RegisterEvent("SPELLCAST_FAILED");
-- Events for off world non processing
this:RegisterEvent("PLAYER_ENTERING_WORLD");
this:RegisterEvent("PLAYER_LEAVING_WORLD");
this:RegisterEvent("ADDON_LOADED");
Gatherer_LoadZoneData();
SLASH_GATHER1 = "/gather";
SLASH_GATHER2 = "/gatherer";
SlashCmdList["GATHER"] = function(msg)
Gatherer_Command(msg);
end
end
function Gatherer_Command(command)
local i,j, cmd, param = string.find(command, "^([^ ]+) (.+)$");
if (not cmd) then cmd = command; end
if (not cmd) then cmd = ""; end
if (not param) then param = ""; end
if ((cmd == "") or (cmd == "help")) then
local useMinimap = "Off";
if (GatherConfig.useMinimap) then useMinimap = "On"; end
local useMainmap = "Off";
if (GatherConfig.useMainmap) then useMainmap = "On"; end
local mapMinder = "Off";
if (GatherConfig.mapMinder) then mapMinder = "On"; end
local minderTime = "5s";
if (GatherConfig.minderTime) then minderTime = GatherConfig.minderTime.."s"; end
Gatherer_ChatPrint("Usage:");
Gatherer_ChatPrint(" |cffffffff/gather (on|off|toggle)|r |cff2040ff["..useMinimap.."]|r - turns the gather minimap display on and off");
Gatherer_ChatPrint(" |cffffffff/gather mainmap (on|off|toggle)|r |cff2040ff["..useMainmap.."]|r - turns the gather mainmap display on and off");
Gatherer_ChatPrint(" |cffffffff/gather minder (on|off|toggle|<n>)|r |cff2040ff["..mapMinder.."]|r - turns the gather map minder on and off (remembers and reopens your last open main map; within "..minderTime..")");
Gatherer_ChatPrint(" |cffffffff/gather dist <n>|r |cff2040ff["..GatherConfig.maxDist.."]|r - sets the maximum search distance for display (0=infinite(default), typical=10)");
Gatherer_ChatPrint(" |cffffffff/gather num <n>|r |cff2040ff["..GatherConfig.number.."]|r - sets the maximum number of items to display (default=10, up to 25)");
Gatherer_ChatPrint(" |cffffffff/gather fdist <n>|r |cff2040ff["..GatherConfig.fadeDist.."]|r - sets a fade distance (in units) for the icons to fade out by (default = 20)");
Gatherer_ChatPrint(" |cffffffff/gather fperc <n>|r |cff2040ff["..GatherConfig.fadePerc.."]|r - sets the percentage for fade at max fade distance (default = 80 [=80% faded])");
Gatherer_ChatPrint(" |cffffffff/gather theme <name>|r |cff2040ff["..GatherConfig.iconSet.."]|r - sets the icon theme: original, shaded (default), iconic or iconshade");
Gatherer_ChatPrint(" |cffffffff/gather idist <n>|r |cff2040ff["..GatherConfig.miniIconDist.."]|r - sets the minimap distance at which the gather icon will become iconic (0 = off, 1-60 = pixel radius on minimap, default = 40)");
Gatherer_ChatPrint(" |cffffffff/gather herbs (on|off|toggle|auto)|r |cff2040ff["..Gatherer_GetFilterVal("herbs").."]|r - select whether to show herb data on the minimap");
Gatherer_ChatPrint(" |cffffffff/gather mining (on|off|toggle|auto)|r |cff2040ff["..Gatherer_GetFilterVal("mining").."]|r - select whether to show mining data on the minimap");
Gatherer_ChatPrint(" |cffffffff/gather treasure (on|off|toggle|auto)|r |cff2040ff["..Gatherer_GetFilterVal("treasure").."]|r - select whether to show treasure data on the minimap");
Gatherer_ChatPrint(" |cffffffff/gather options|r - show/hide UI Options dialog.");
Gatherer_ChatPrint(" |cffffffff/gather report|r - show/hide report dialog.");
Gatherer_ChatPrint(" |cffffffff/gather search|r - show/hide search dialog.");
Gatherer_ChatPrint(" |cffffffff/gather loginfo (on|off)|r - show/hide logon information.");
Gatherer_ChatPrint(" |cffffffff/gather filterrec (herbs|mining|treasure)|r - link display filter to recording for selected gathering type");
elseif (cmd == "options" ) then
if ( GathererUI_DialogFrame:IsVisible() ) then
GathererUI_HideOptions();
else
GathererUI_ShowOptions();
end
elseif (cmd == "report" ) then
showGathererInfo(1);
elseif (cmd == "search" ) then
showGathererInfo(2);
elseif (cmd == "loginfo" ) then
local value;
if (not param or param == "") then value = "on"; else value = param; end
Gatherer_ChatPrint("Setting log information display to "..value);
GatherConfig.logInfo = value;
elseif ( cmd == "filterrec" ) then
local value=-1;
if (not param) then
return;
end;
if ( param == "treasure" ) then
value = 0;
elseif ( param == "herbs" ) then
value = 1;
elseif ( param == "mining" ) then
value = 2;
end
if ( value > -1 )
then
if ( GatherConfig.users[Gather_Player].filterRecording[value] )
then
GatherConfig.users[Gather_Player].filterRecording[value] = nil;
Gatherer_ChatPrint("Turned filter/recording link for "..param.." off.");
else
GatherConfig.users[Gather_Player].filterRecording[value] = 1;
Gatherer_ChatPrint("Turned filter/recording link for "..param.." on.");
end
end
elseif (cmd == "on") then
GatherConfig.useMinimap = true;
Gatherer_OnUpdate(0, true);
GatherConfig.useMinimapText = "on";
Gatherer_ChatPrint("Turned gather minimap display on");
elseif (cmd == "off") then
GatherConfig.useMinimap = false;
GatherConfig.useMinimapText = "off";
Gatherer_OnUpdate(0, true);
Gatherer_ChatPrint("Turned gather minimap display off (still collecting)");
elseif (cmd == "toggle") then
GatherConfig.useMinimap = not GatherConfig.useMinimap;
Gatherer_OnUpdate(0, true);
if (GatherConfig.useMinimap) then
Gatherer_ChatPrint("Turned gather minimap display on");
GatherConfig.useMinimapText = "on";
else
Gatherer_ChatPrint("Turned gather minimap display off (still collecting)");
GatherConfig.useMinimapText = "off";
end
elseif (cmd == "dist") then
local i,j, value = string.find(param, "(%d+)");
if (not value) then value = 0; else value = value + 0.0; end
if (value <= 0) then
GatherConfig.maxDist = 0;
else
GatherConfig.maxDist = value + 0.0;
end
Gatherer_ChatPrint("Setting maximum note distance to "..GatherConfig.maxDist);
Gatherer_OnUpdate(0, true);
elseif (cmd == "fdist") then
local i,j, value = string.find(param, "(%d+)");
if (not value) then value = 0; else value = value + 0.0; end
if (value <= 0) then
GatherConfig.fadeDist = 0;
else
GatherConfig.fadeDist = value + 0.0;
end
Gatherer_ChatPrint("Setting fade distance to "..GatherConfig.fadeDist);
Gatherer_OnUpdate(0, true);
elseif (cmd == "fperc") then
local i,j, value = string.find(param, "(%d+)");
if (not value) then value = 0; else value = value + 0.0; end
if (value <= 0) then
GatherConfig.fadePerc = 0;
else
GatherConfig.fadePerc = value + 0.0;
end
Gatherer_ChatPrint("Setting fade percent at fade distance to "..GatherConfig.fadePerc);
Gatherer_OnUpdate(0, true);
elseif ((cmd == "idist") or (cmd == "icondist")) then
local i,j, value = string.find(param, "(%d+)");
if (not value) then value = 0; else value = value + 0; end
if (value <= 0) then
GatherConfig.miniIconDist = 0;
else
GatherConfig.miniIconDist = value + 0;
end
Gatherer_ChatPrint("Setting iconic distance to "..GatherConfig.miniIconDist);
Gatherer_OnUpdate(0, true);
elseif (cmd == "theme") then
if (Gather_IconSet[param]) then
GatherConfig.iconSet = param;
Gatherer_ChatPrint("Gatherer theme set to "..GatherConfig.iconSet);
else
Gatherer_ChatPrint("Unknown theme: "..param);
end
Gatherer_OnUpdate(0, true);
elseif ((cmd == "num") or (cmd == "number")) then
local i,j, value = string.find(param, "(%d+)");
if (not value) then value = 0; else value = value + 0; end
if (value < 0) then
GatherConfig.number = 10;
elseif (value <= GATHERER_MAXNUMNOTES) then
GatherConfig.number = math.floor(value + 0);
else
GatherConfig.number = GATHERER_MAXNUMNOTES;
end
if (GatherConfig.number == 0) then
GatherConfig.useMinimap = false;
GatherConfig.useMinimapText = "off";
Gatherer_OnUpdate(0, true);
Gatherer_ChatPrint("Turned gather minimap display off (still collecting)");
else
if ((GatherConfig.number > 0) and (GatherConfig.useMinimap == false)) then
GatherConfig.useMinimap = true;
GatherConfig.useMinimapText = "on";
Gatherer_ChatPrint("Turned gather minimap display on");
end
Gatherer_ChatPrint("Displaying "..GatherConfig.number.." notes at once");
Gatherer_OnUpdate(0, true);
end
elseif (cmd == "mainmap") then
if ((param == "false") or (param == "off") or (param == "no") or (param == "0")) then
GatherConfig.useMainmap = false;
elseif (param == "toggle") then
GatherConfig.useMainmap = not GatherConfig.useMainmap;
else
GatherConfig.useMainmap = true;
end
if (GatherConfig.useMainmap) then
Gatherer_ChatPrint("Displaying notes in main map");
Gatherer_WorldMapDisplay:SetText("Hide Items");
else
Gatherer_ChatPrint("Not displaying notes in main map");
Gatherer_WorldMapDisplay:SetText("Show Items");
end
if (GatherConfig.useMainmap and GatherConfig.showWorldMapFilters and GatherConfig.showWorldMapFilters == 1) then
GathererWD_DropDownFilters:Show();
end
elseif (cmd == "minder") then
if ((param == "false") or (param == "off") or (param == "no") or (param == "0")) then
GatherConfig.mapMinder = false;
elseif (param == "toggle") then
GatherConfig.mapMinder = not GatherConfig.mapMinder;
elseif (param == "on") then
GatherConfig.mapMinder = true;
else
local i,j, value = string.find(param, "(%d+)");
if (not value) then value = 0; else value = value + 0; end
if (value <= 0) then
GatherConfig.mapMinder = false;
GatherConfig.minderTime = 0;
else
GatherConfig.mapMinder = true;
GatherConfig.minderTime = value + 0;
end
Gatherer_ChatPrint("Setting map minder timeout to "..GatherConfig.minderTime);
end
if (GatherConfig.mapMinder) then
Gatherer_ChatPrint("Map minder activated at "..GatherConfig.minderTime);
else
Gatherer_ChatPrint("Not minding your map");
end
elseif ((cmd == "herbs") or (cmd == "mining") or (cmd == "treasure")) then
if ((param == "false") or (param == "off") or (param == "no") or (param == "0")) then
Gatherer_SetFilter(cmd, "off");
Gatherer_ChatPrint("Not displaying "..cmd.." notes in minimap");
elseif (param == "on" or param == "On" ) then
Gatherer_SetFilter(cmd, "on");
Gatherer_ChatPrint("Displaying "..cmd.." notes in minimap");
elseif (param == "toggle" or param == "") then
local cur = Gatherer_GetFilterVal(cmd);
if ((cur == "on") or (cur == "auto")) then
cur = "off";
Gatherer_SetFilter(cmd, "off");
Gatherer_ChatPrint("Not displaying "..cmd.." notes in minimap");
else
cur = "on";
Gatherer_SetFilter(cmd, "on");
Gatherer_ChatPrint("Displaying "..cmd.." notes in minimap");
end
else
Gatherer_SetFilter(cmd, "auto");
Gatherer_ChatPrint("Displaying "..cmd.." notes in minimap based on ability");
end
Gatherer_OnUpdate(0, true);
GatherMain_Draw();
end
end
-- *************************************************************************
-- Events Handler
function Gatherer_OnEvent(event)
--ChatFrame1:AddMessage(event);
if (not event) then return; end;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -