vanilla-wow-addons – Rev 1
?pathlinks?
WP_Registered = nil;
function myWhoPinged_OnLoad()
if(not whopinged_cfg) then
whopinged_cfg = {};
whopinged_cfg["zone"] = 1;
whopinged_cfg["IGNORE"] = {};
end
wpversion = "0.3";
theypinged = nil;
theypinged2 = nil;
whospinging = nil;
this:RegisterEvent("MINIMAP_PING");
this:RegisterEvent("VARIABLES_LOADED");
SlashCmdList["WHOPINGED"] = myWhoPinged_SlashHandler;
SLASH_WHOPINGED1 = "/wp";
WP_Registered = 0;
-- hook minimap ping event to show who pinged
myWhoPinged_original_Minimap_OnEvent = Minimap_OnEvent;
Minimap_OnEvent = myWhoPinged_Minimap_OnEvent;
-- hook sound event to assist in ignoring pings
myWhoPinged_original_PlaySound = PlaySound;
PlaySound = myWhoPinged_PlaySound;
-- DEFAULT_CHAT_FRAME:AddMessage("WhoPinged " .. wpversion .. " loaded. type /wp help to see a list of commands.");
end
function myWhoPinged_PlaySound(argument1)
if(argument1 == "MapPing" and event == "MINIMAP_PING" and arg1 ~= nil) then
if(myWhoPinged_IsInList(string.lower(UnitName(arg1)))) then
return;
end
end
myWhoPinged_original_PlaySound(argument1);
end
function myWhoPinged_SlashHandler(cmd)
if(cmd ~= nil) then
cmd = string.lower(cmd);
end
if(string.find(cmd, " ")) then
local sep = string.find(cmd, " ");
local wparg1 = string.sub(cmd, 1, (sep -1));
sep = (sep + 1);
wparg2 = string.sub(cmd, sep);
cmd = wparg1;
end
if(cmd == "last") then
myWhoPinged_WhoPinged()
elseif(cmd == "") then
myWhoPinged_WhosPinging()
elseif(cmd == "ignore") then
myWhoPinged_IgnorePing(wparg2);
elseif(cmd == "unignore") then
myWhoPinged_UnIgnorePing(wparg2);
elseif(cmd == "list") then
myWhoPinged_ListIgnored();
elseif(cmd == "zone") then
myWhoPinged_ZoneToggle();
else
myWhoPinged_ShowHelp();
end
wparg2 = nil;
end
function myWhoPinged_ZoneToggle()
if(whopinged_cfg["zone"] == 1) then
DEFAULT_CHAT_FRAME:AddMessage("|cffffff00DISABLED display of pinging player's name in zone field|r");
whopinged_cfg["zone"] = 0;
MinimapZoneText:SetText(GetMinimapZoneText());
else
DEFAULT_CHAT_FRAME:AddMessage("|cffffff00ENABLED display of pinging player's name in zone field|r");
whopinged_cfg["zone"] = 1;
end
end
function myWhoPinged_ListIgnored()
if(whopinged_cfg["IGNORE"] ~= nil and table.getn(whopinged_cfg["IGNORE"]) > 0) then
DEFAULT_CHAT_FRAME:AddMessage("|cffffff00Minimap pings ignored from players:|r");
table.foreach(whopinged_cfg["IGNORE"], function(k,v) DEFAULT_CHAT_FRAME:AddMessage("-" .. v) end);
else
DEFAULT_CHAT_FRAME:AddMessage("|cffffff00Ignore list is empty.|r");
end
end
function myWhoPinged_ShowHelp()
DEFAULT_CHAT_FRAME:AddMessage("|cffffff00WhoPinged " .. wpversion .. " Help:|r");
DEFAULT_CHAT_FRAME:AddMessage("|cff00ff00/wp|r: toggles on/off automatic ping identifying. can create lots of spam");
DEFAULT_CHAT_FRAME:AddMessage("|cff00ff00/wp last|r: shows the last two players to ping the map");
DEFAULT_CHAT_FRAME:AddMessage("|cff00ff00/wp ignore <player>|r: ignores a player's minimap pings");
DEFAULT_CHAT_FRAME:AddMessage("|cff00ff00/wp unignore|r <player>|r: removes a player from your minimap ping ignore list");
DEFAULT_CHAT_FRAME:AddMessage("|cff00ff00/wp list|r: lists players whose pings you're ignoring");
DEFAULT_CHAT_FRAME:AddMessage("|cff00ff00/wp zone|r: toggle to show the pinging player's name in the zone field above the minimap");
DEFAULT_CHAT_FRAME:AddMessage("|cff00ff00/wp help|r: shows this list of commands");
end
function myWhoPinged_UnIgnorePing(ipname)
if(ipname ~= nil) then
if(myWhoPinged_RemoveFromList(ipname)) then
DEFAULT_CHAT_FRAME:AddMessage("|cffffff00No longer ignoring " .. ipname .. "'s pings.|r");
else
DEFAULT_CHAT_FRAME:AddMessage("|cffffff00" .. ipname .. " not found in ignore list.|r");
end
else
myWhoPinged_ShowHelp();
end
end
function myWhoPinged_IgnorePing(ipname)
if(ipname ~= nil) then
if(not myWhoPinged_AddToList(ipname)) then
DEFAULT_CHAT_FRAME:AddMessage("|cffffff00Already ignoring " .. ipname .. "'s pings.|r");
else
DEFAULT_CHAT_FRAME:AddMessage("|cffffff00Now ignoring " .. ipname .. "'s pings.|r");
end
else
myWhoPinged_ListIgnored();
end
end
function myWhoPinged_WhoPinged()
if(theypinged ~= nil) then
if(theypinged2 ~= nil) then
DEFAULT_CHAT_FRAME:AddMessage(theypinged .. " and " .. theypinged2 .. " last pinged the minimap.");
else
DEFAULT_CHAT_FRAME:AddMessage(theypinged .. " last pinged the minimap.");
end
else
DEFAULT_CHAT_FRAME:AddMessage("no recorded minimap pings.");
end
end
function myWhoPinged_IsInList(ipname)
ipname = string.lower(ipname);
if(whopinged_cfg["IGNORE"] ~= nil) then
for i, v in whopinged_cfg["IGNORE"] do
if(v == ipname) then
return i;
end
end
return false;
else
return false;
end
end
function myWhoPinged_AddToList(ipname)
ipname = string.lower(ipname);
if(not myWhoPinged_IsInList(ipname)) then
table.insert(whopinged_cfg.IGNORE, ipname)
return true;
else
return false;
end
end
function myWhoPinged_RemoveFromList(ipname)
ipname = string.lower(ipname);
tempo = myWhoPinged_IsInList(ipname);
if(tempo) then
table.remove(whopinged_cfg.IGNORE, tempo);
return true;
else
return false;
end
tempo = nil;
end
function WP_RegisterUltimateUI()
UltimateUI_RegisterConfiguration(
"UUI_WHOPINGED",
"SECTION",
"WhoPinged",
"Find out who pinged the minimap!"
);
UltimateUI_RegisterConfiguration(
"UUI_WHOPINGED_SEPARATOR",
"SEPARATOR",
"WhoPinged",
"Find out who pinged the minimap!"
);
UltimateUI_RegisterConfiguration(
"UUI_SELFCAST_ENABLE",
"CHECKBOX",
"Enable SelfCast",
"Check this box to enable WhoPinged.",
myWhoPinged_WhosPinging,
0
);
UltimateUI_RegisterConfiguration(
"UUI_SELFCAST_ZONE",
"CHECKBOX",
"Zone output",
"Will show who pinged in the minimap zone text area.",
myWhoPinged_ZoneToggle,
0
);
UltimateUI_RegisterConfiguration(
"UUI_SELFCAST_LISTIGNORED",
"BUTTON",
"",
"",
myWhoPinged_ListIgnored,
0,
0,
0,
0,
"List Ignored"
);
UltimateUI_RegisterConfiguration(
"UUI_SELFCAST_COMMANDS",
"BUTTON",
"",
"",
myWhoPinged_ShowHelp,
0,
0,
0,
0,
"Command List"
);
WP_Registered = 1;
end
function myWhoPinged_Minimap_OnEvent()
--if(event == "VARIABLES_LOADED" ) then
if( WP_Registered == 0 ) then
if ( UltimateUI_RegisterButton ) then
WP_RegisterUltimateUI();
end
end
--end
if(event == "MINIMAP_PING" and arg1 ~= nil) then
if(myWhoPinged_IsInList(string.lower(UnitName(arg1)))) then
return;
end
end
myWhoPinged_original_Minimap_OnEvent();
if(event == "MINIMAP_PING" and arg1 ~= nil) then
if(whopinged_cfg["zone"] == 1) then
MinimapZoneText:SetText(UnitName(arg1));
end
if(theypinged ~= nil and theypinged ~= UnitName(arg1)) then
theypinged2 = theypinged;
theypinged = UnitName(arg1);
if(whospinging == 1) then
DEFAULT_CHAT_FRAME:AddMessage(theypinged .. " pinged the minimap!");
end
else
theypinged = UnitName(arg1);
if(whospinging == 1) then
DEFAULT_CHAT_FRAME:AddMessage(theypinged .. " pinged the minimap!");
end
end
end
end
function myWhoPinged_WhosPinging()
if(whospinging == nil) then
whospinging = 1;
DEFAULT_CHAT_FRAME:AddMessage("|cffffff00ENABLED minimap ping identifying. type /wp to disable|r");
else
whospinging = nil;
DEFAULT_CHAT_FRAME:AddMessage("|cffffff00DISABLED minimap ping identifying. type /wp to enable|r");
end
end
Generated by GNU Enscript 1.6.5.90.