vanilla-wow-addons – Rev 1
?pathlinks?
BGvar_save = {}
BGvar_declined = {}
BGvar_hideingroup = {}
BGvar_hideinvite = {}
BGvar_nothere = {}
BGvar_ingroup = {}
BGvar_dropgroupmessagesent = {}
BGvar_blacklist = {}
BGvar_timers_convertspam = GetTime()
BGvar_save.purge = "disabled"
BGvar_save.auto = "disabled"
BGvar_save.magicword = "invite"
BGvar_version = "2.0 alpha"
function BGinvite_OnLoad()
this:RegisterEvent("PARTY_MEMBERS_CHANGED")
this:RegisterEvent("CHAT_MSG_SYSTEM")
this:RegisterEvent("VARIABLES_LOADED")
this:RegisterEvent("CHAT_MSG_WHISPER")
this:RegisterEvent("ZONE_CHANGED_NEW_AREA")
Pre_BGinvite_ChatFrame_OnEvent = ChatFrame_OnEvent
ChatFrame_OnEvent = BGinvite_hidealreadyingroupmsg
SLASH_BGINVITE1 = "/bginvite";
SlashCmdList["BGINVITE"] = function ( msg )
BGinvite_SlashCmdHandler(msg);
end
end
function BGinvite_OnEvent(event)
if (event == "CHAT_MSG_SYSTEM") then
if string.find(arg1, BGlocal_BLANK_DECLINES_YOUR_INVITATION) then
local _, _, player = string.find(arg1, BGlocal_BLANK_DECLINES_YOUR_INVITATION_FIND)
BGvar_declined[player] = GetTime()
BGvar_ingroup[player] = nil
BGvar_dropgroupmessagesent[player] = 1 -- because they aren't going to want to be told to drop group if they previously declined your invite
elseif string.find(arg1, BGlocal_BLANK_IS_IGNORING_YOU) then
local _, _, player = string.find(arg1, BGlocal_BLANK_IS_IGNORING_YOU_FIND)
BGvar_declined[player] = GetTime()
BGvar_ingroup[player] = nil
elseif string.find(arg1, BGlocal_BLANK_HAS_JOINED_THE_RAID) then
local _, _, player = string.find(arg1, BGlocal_BLANK_HAS_JOINED_THE_RAID_FIND)
BGvar_ingroup[player] = nil
elseif string.find(arg1, BGlocal_BLANK_HAS_JOINED_THE_PARTY) then
local _, _, player = string.find(arg1, BGlocal_BLANK_HAS_JOINED_THE_PARTY_FIND)
BGvar_ingroup[player] = nil
elseif string.find(arg1, BGlocal_BLANK_IS_ALREADY_IN_GROUP) then
local _, _, player = string.find(arg1, BGlocal_BLANK_IS_ALREADY_IN_GROUP_FIND)
if BGvar_dropgroupmessagesent[player] == nil then
if (BGinvite_DominantGroup() == true) then
BGinvite_localizevarvar(GetLocale())
SendChatMessage(BGlocal_LEAVE_GROUP_WHISPER, "WHISPER", this.language, player)
BGvar_dropgroupmessagesent[player] = 1
end
end
elseif (arg1 == BGlocal_YOU_JOINED_RAID_GROUP) and (BGvar_restofinvitespending == 1) then
BGinvite_autoinvites()
BGvar_restofinvitespending = 0
elseif string.find(arg1, BGlocal_SOMEONE_JOINED_BG) then
BGinvite_autoinvites()
-- debug BGinvite_print("someone joined the BG! invite!") -- debug
elseif string.find(arg1, BGlocal_SOMEONE_LEFT_BG) then
local _, _, player = string.find(arg1, BGlocal_SOMEONE_LEFT_BG_FIND)
-- debug BGinvite_print(player.." left the BG! kick him!")
if (BGvar_save.purge == "disabled") then return end
if IsRaidLeader() or IsRaidOfficer() then
SendChatMessage(BGlocal_YOU_APPEAR_GONE, "WHISPER", this.language, name)
UninviteByName(name)
end
end
elseif (event == "VARIABLES_LOADED") then
BGinvite_localize(GetLocale())
BGinvite_print(BGlocal_MOD_LOADED)
BGinvite_autoinvites()
elseif (event == "CHAT_MSG_WHISPER") then
if string.find(string.lower(arg1), BGvar_save.magicword) and (strlen(arg1) <= (strlen(BGvar_save.magicword) + 8)) then
if BGvar_blacklist[arg2] ~= 1 then
InviteByName(arg2)
end
end
elseif (event == "ZONE_CHANGED_NEW_AREA") then
BGvar_declined = {}
BGvar_nothere = {}
BGvar_hideinvite = {}
BGvar_ingroup = {}
BGvar_messageinsay = 0
BGvar_dropgroupmessagesent = {}
end
end
function BGinvite_SlashCmdHandler(msg)
if strlen(msg) <= 1 then
BGInviteUI:Show()
elseif string.lower(msg) == "purge on" then
BGvar_save.purge = "enabled"
BGInviteAutoPurgeEnable:SetChecked(1)
BGinvite_print(BGlocal_NOW_PURGING)
elseif string.lower(msg) == "purge off" then
BGvar_save.purge = "disabled"
BGinvite_print(BGlocal_NOT_PURGING)
BGInviteAutoPurgeEnable:SetChecked(0)
elseif (string.lower(msg) == "auto on") then
BGvar_save.auto = "enabled"
BGinvite_autoinvites()
BGinvite_print(BGlocal_AUTO_INVITING)
BGInviteAutoInviteEnable:SetChecked(1)
elseif (string.lower(msg) == "auto off") then
BGvar_save.auto = "disabled"
BGinvite_print(BGlocal_NOT_AUTO_INVITING)
BGInviteAutoInviteEnable:SetChecked(0)
elseif (string.lower(msg) == "promote all") then
BGinvite_promoteall()
elseif (string.lower(msg) == "demote all") then
BGinvite_demoteall()
elseif (string.lower(msg) == "invite") then
BGinvite_sendinvite()
elseif (string.lower(msg) == "blacklist") then
BGinvite_print(BGlocal_BLACKLISTED_PLAYERS)
table.foreach(BGvar_blacklist, BGinvite_displayblacklist)
elseif (strsub(string.lower(msg), 1, 13) == "blacklist add") then
local name = string.upper(strsub(msg, 15, 15))..string.lower(strsub(msg, 16))
BGinvite_blacklistadd(name)
elseif (strsub(string.lower(msg), 1, 16) == "blacklist remove") then
local name = string.upper(strsub(msg, 18, 18))..string.lower(strsub(msg, 19))
BGinvite_blacklistremove(name)
elseif (strsub(string.lower(msg), 1, 9) == "magicword") then
BGvar_save.magicword = string.lower(strsub(msg, 11))
BGinvite_magicwordchanged()
elseif (string.lower(msg) == "help") then
BGinvite_help()
elseif (string.lower(msg) == "version") then
BGinvite_print(BGlocal_VERSION_STR)
else
BGinvite_print(BGlocal_HELP_ERR)
end
end
function BGinvite_sendinvite()
local status = BGinvite_GetBattlefieldStatus()
if (BGvar_messageinsay == 0) and (status == "active") then
SendChatMessage(BGlocal_SAY_INVITING, "SAY")
BGvar_messageinsay = 1
end
if (GetNumRaidMembers() == 0) and (GetNumBattlefieldPositions() >= 5) then
for i=1,5 do
local x, y, name = GetBattlefieldPosition(i)
if (not BGvar_declined[name]) and (name) then
if BGvar_blacklist[name] ~= 1 then
InviteByName(name)
end
end
end
else
for i=1,GetNumBattlefieldPositions() do
local x, y, name = GetBattlefieldPosition(i)
if (not BGvar_declined[name]) then
if BGvar_blacklist[name] ~= 1 then
InviteByName(name)
end
end
end
end
end
function BGinvite_ConvertToRaid()
BGinvite_print(BGlocal_CONVERTING_TO_RAID)
ConvertToRaid()
BGvar_restofinvitespending = 1
end
--function BGinvite_purge()
-- if (BGvar_save.purge == "disabled") then return end
-- if IsRaidLeader() or IsRaidOfficer() then
-- BGinvite_print(BGlocal_PURGING_PLAYERS)
-- if GetBattlefieldScore(1) == nil then
-- BGinvite_print(BGlocal_ERROR_SCANNING)
-- elseif GetBattlefieldScore(1) ~= nil then
-- for i=1,GetNumRaidMembers() do
-- local name = GetRaidRosterInfo(i)
-- BGvar_inbg = false
-- if (BGinvite_inbattleground(name) ~= true) then
-- SendChatMessage(BGlocal_YOU_APPEAR_GONE, "WHISPER", _, name)
-- UninviteByName(name)
-- end
-- end
-- end
-- end
--end
function BGinvite_inbattleground(name)
for i=1,80 do
local bgname = GetBattlefieldScore(i)
if (bgname == name) then
BGvar_inbg = true
end
end
if BGvar_inbg == false then
if (BGvar_nothere[name]) then
BGvar_nothere[name] = BGvar_nothere[name] + 1
if BGvar_nothere[name] >= 2 then
return false
end
else
BGvar_nothere[name] = 1
return true
end
elseif BGvar_inbg == true then
BGvar_nothere[name] = 0
return true
end
end
function BGinvite_autoinvites()
if (BGvar_save.auto == "disabled") then return end
if IsRaidLeader() then
if (GetNumRaidMembers() == 0) and (GetNumBattlefieldPositions() >= 5) then
for i=1,5 do
local x, y, name = GetBattlefieldPosition(i)
if (not BGvar_declined[name]) then
if BGvar_blacklist[name] ~= 1 then
BGvar_hideingroup[name] = 1
BGvar_hideinvite[name] = 1
InviteByName(name)
end
end
end
else
for i=1,GetNumBattlefieldPositions() do
local x, y, name = GetBattlefieldPosition(i)
if (not BGvar_declined[name]) then
if BGvar_blacklist[name] ~= 1 then
BGvar_hideingroup[name] = 1
BGvar_hideinvite[name] = 1
InviteByName(name)
end
end
end
end
end
BGvar_timers_BGAUTOINVITE = GetTime() + 3
end
function BGinvite_hidealreadyingroupmsg(event)
if (event == "CHAT_MSG_SYSTEM") then
if string.find(arg1, BGlocal_BLANK_IS_ALREADY_IN_GROUP) then
local _, _, player = string.find(arg1, BGlocal_BLANK_IS_ALREADY_IN_GROUP_FIND)
if (BGvar_hideingroup[player] == 1) then
BGvar_hideingroup[player] = 0
else
Pre_BGinvite_ChatFrame_OnEvent(event)
end
elseif string.find(arg1, BGlocal_YOU_HAVE_INVITED) then
local _, _, player = string.find(arg1, BGlocal_YOU_HAVE_INVITED_FIND)
if (BGvar_hideinvite[player] == 1) then
BGvar_hideinvite[player] = 0
else
Pre_BGinvite_ChatFrame_OnEvent(event)
end
else
Pre_BGinvite_ChatFrame_OnEvent(event)
end
else
Pre_BGinvite_ChatFrame_OnEvent(event)
end
end
function BGinvite_displayblacklist(name)
if BGvar_blacklist[name] == 1 then
BGinvite_print(name)
end
end
function BGinvite_OnUpdate()
if BGvar_timers_BGAUTOINVITE then
if BGvar_timers_BGAUTOINVITE <= GetTime() then
BGinvite_autoinvites()
BGvar_timers_BGAUTOINVITE = GetTime() + 3
end
end
if (GetNumPartyMembers() > 0) and (GetNumRaidMembers() == 0) and (BGvar_timers_convertspam <= GetTime()) and (IsRaidLeader()) then
local status = BGinvite_GetBattlefieldStatus()
if (status == "active") then
BGvar_timers_convertspam = GetTime()+3
BGinvite_ConvertToRaid()
end
end
end
function BGinvite_DominantGroup()
local numpeople_notingroup = GetNumBattlefieldPositions()
local numpeople_ingroup = GetNumRaidMembers()
if numpeople_notingroup < numpeople_ingroup then
return true
else
return false
end
end
function BGinvite_print(msg)
ChatFrame1:AddMessage(msg, 0, .5, 1)
end
function BGinvite_promoteall()
for i=1, GetNumRaidMembers() do
local name = GetRaidRosterInfo(i)
PromoteToAssistant(name)
end
end
function BGinvite_demoteall()
for i=1, GetNumRaidMembers() do
local name = GetRaidRosterInfo(i)
DemoteAssistant(name)
end
end
function BGinvite_help()
BGinvite_print(BGlocal_HELP_1)
BGinvite_print(BGlocal_HELP_2)
BGinvite_print(BGlocal_HELP_3)
BGinvite_print(BGlocal_HELP_4)
BGinvite_print(BGlocal_HELP_5)
BGinvite_print(BGlocal_HELP_6)
BGinvite_print(BGlocal_HELP_7)
BGinvite_print(BGlocal_HELP_8)
BGinvite_print(BGlocal_HELP_9)
BGinvite_print(BGlocal_HELP_10)
end
function BGinvite_magicwordchanged()
BGinvite_localizevarvar(GetLocale())
BGinvite_print(BGlocal_MAGICWORD_CHANGE)
end
function BGinvite_blacklistremove(name)
if (BGvar_blacklist[name]) then
BGvar_blacklist[name] = nil
BGinvite_print(name..BGlocal_HAS_BEEN_REMOVED)
else
BGinvite_print(name..BGlocal_WASNT_ON_BLACKLIST)
end
end
function BGinvite_blacklistadd(name)
if (BGvar_blacklist[name]) then
if BGvar_blacklist[name] == 1 then
BGinvite_print(name..BGlocal_IS_ALREADY_BLACKLISTED)
elseif BGvar_blacklist[name] ~= 1 then
BGvar_blacklist[name] = 1
BGinvite_print(name..BGlocal_HAS_BEEN_ADDED_BLACKLIST)
end
else
BGvar_blacklist[name] = 1
BGinvite_print(name..BGlocal_HAS_BEEN_ADDED_BLACKLIST)
end
end
function BGinvite_GetBattlefieldStatus()
for i=1,MAX_BATTLEFIELD_QUEUES do
if GetBattlefieldStatus(i) == "active" then
local status = "active"
end
end
if status == "active" then
return "active"
else
return "none"
end
end
Generated by GNU Enscript 1.6.5.90.