vanilla-wow-addons – Rev 1
?pathlinks?
AutoInviteOptions = {};
local Realm;
local Player;
local version = "0.5";
local default_invite = "invite";
function AutoInvite_OnLoad()
this:RegisterEvent("CHAT_MSG_WHISPER");
this:RegisterEvent("PLAYER_ENTERING_WORLD");
SlashCmdList["AutoInvite"] = AutoInvite_SlashHandler;
SLASH_AutoInvite1 = "/AutoInvite";
SLASH_AutoInvite2 = "/ai";
DEFAULT_CHAT_FRAME:AddMessage("AutoInvite (redux) v"..version.." loaded. Type /ai for usage.",0,0,1);
DEFAULT_CHAT_FRAME:AddMessage("Type \'/ai alist\' to auto invite everyone in the A-list",0,0,1);
DEFAULT_CHAT_FRAME:AddMessage("Type \'/ai blist\' to auto invite everyone in the B-list",0,0,1);
end
function AutoInvite_InitializeSetup()
Player = UnitName("player");
Realm = GetRealmName();
if AutoInviteOptions == nil then AutoInviteOptions = {} end;
if(AutoInviteOptions[Realm] == nil) then AutoInviteOptions[Realm] = {} end;
if(AutoInviteOptions[Realm][Player] == nil) then AutoInviteOptions[Realm][Player] = {} end;
if(AutoInviteOptions[Realm][Player]["Invite"] == nil) then AutoInviteOptions[Realm][Player]["Invite"] = default_invite end;
if(AutoInviteOptions[Realm][Player]["Status"] == nil) then AutoInviteOptions[Realm][Player]["Status"] = "On" end;
if(AutoInviteOptions[Realm][Player]["Type"] == nil) then AutoInviteOptions[Realm][Player]["Type"] = "Party" end;
end
function AutoInvite_OnEvent(event)
if(event == "PLAYER_ENTERING_WORLD") then
AutoInvite_InitializeSetup();
elseif(event == "CHAT_MSG_WHISPER") then
if(AutoInviteOptions[Realm][Player]["Status"] == "On") then
local what = arg1;
local who = arg2;
local invite = AutoInvite_CheckMessage(what);
if(invite) then AutoInvite_Invite(who) end;
end
end
end
function InviteAList()
for j = 1, 50 do
if (AList[j]) then
numgroup = GetNumRaidMembers();
if(numgroup == 0) then --Not currently in a raid
numparty = GetNumPartyMembers();
if(numparty == 0) then InviteByName(AList[j]) --Nobody in the party? Start a new one!
elseif(numparty < 4) then
if(IsPartyLeader()) then InviteByName(AList[j]) --4 or less party members? Invite if you can.
else return DEFAULT_CHAT_FRAME:AddMessage("Can't invite "..AList[j].." right now, you're not the party leader.") end;
elseif(GetNumPartyMembers() == 4)then --if you've got a 5-man party (GetNumPartyMembers excludes yourself) convert to raid.
if(IsPartyLeader()) then
DEFAULT_CHAT_FRAME:AddMessage("Raid mode enabled: Converting your group to a raid.")
ConvertToRaid();
InviteByName(AList[j]);
else
DEFAULT_CHAT_FRAME:AddMessage("Can't invite "..AList[j].." right now, you're not the party leader.");
end
end
elseif((IsRaidLeader() or IsRaidOfficer()) and numgroup < 40) then InviteByName(AList[j])
else
if(numgroup > 39) then return DEFAULT_CHAT_FRAME:AddMessage("Can't invite "..AList[j].." right now, raid is full.");
else return DEFAULT_CHAT_FRAME:AddMessage("Can't invite "..AList[j].." right now, you're not the raid leader.") end;
end
end
end
end
function InviteBList()
for j = 1, 39 do
if (BList[j]) then
numgroup = GetNumRaidMembers();
if(numgroup == 0) then --Not currently in a raid
numparty = GetNumPartyMembers();
if(numparty == 0) then InviteByName(BList[j]) --Nobody in the party? Start a new one!
elseif(numparty < 4) then
if(IsPartyLeader()) then InviteByName(BList[j]) --4 or less party members? Invite if you can.
else return DEFAULT_CHAT_FRAME:AddMessage("Can't invite "..BList[j].." right now, you're not the party leader.") end;
elseif(GetNumPartyMembers() == 4)then --if you've got a 5-man party (GetNumPartyMembers excludes yourself) convert to raid.
if(IsPartyLeader()) then
DEFAULT_CHAT_FRAME:AddMessage("Raid mode enabled: Converting your group to a raid.")
ConvertToRaid();
InviteByName(BList[j]);
else
DEFAULT_CHAT_FRAME:AddMessage("Can't invite "..BList[j].." right now, you're not the party leader.");
end
end
elseif((IsRaidLeader() or IsRaidOfficer()) and numgroup < 40) then InviteByName(BList[j])
else
if(numgroup > 39) then return DEFAULT_CHAT_FRAME:AddMessage("Can't invite "..BList[j].." right now, raid is full.");
else return DEFAULT_CHAT_FRAME:AddMessage("Can't invite "..BList[j].." right now, you're not the raid leader.") end;
end
end
end
end
function AutoInvite_SlashHandler(msg)
if(msg ~= "") then msg = string.lower(msg) end;
if(msg == "" or msg == "status") then
DEFAULT_CHAT_FRAME:AddMessage("AutoInvite status: |c00ffff00"..AutoInviteOptions[Realm][Player]["Status"].."|r (change with /ai on | off)");
DEFAULT_CHAT_FRAME:AddMessage("AutoInvite keyword: |c00ffff00"..AutoInviteOptions[Realm][Player]["Invite"].."|r (change with /ai text)");
DEFAULT_CHAT_FRAME:AddMessage("AutoInvite party type: |c00ffff00"..AutoInviteOptions[Realm][Player]["Type"].."|r (change with /ai party | raid)");
elseif(msg == "on") then
AutoInviteOptions[Realm][Player]["Status"] = "On";
DEFAULT_CHAT_FRAME:AddMessage("AutoInvite: Now issuing automatic invites on keyword[s]: |c00ffff00"..AutoInviteOptions[Realm][Player]["Invite"].."|r");
elseif(msg == "off") then
AutoInviteOptions[Realm][Player]["Status"] = "Off";
DEFAULT_CHAT_FRAME:AddMessage("AutoInvite: No longer issuing automatic invites." ,1,1,1);
elseif(msg == "party") then
AutoInviteOptions[Realm][Player]["Type"] = "Party";
DEFAULT_CHAT_FRAME:AddMessage("AutoInvite: Invite checking for 5-man party only." ,1,1,1);
elseif(msg == "alist") then
DEFAULT_CHAT_FRAME:AddMessage("AutoInvite: Starting Invites of Priority List." ,1,1,1);
InviteAList();
elseif(msg == "blist") then
DEFAULT_CHAT_FRAME:AddMessage("AutoInvite: Starting Invites of Secondary List." ,1,1,1);
InviteBList();
elseif(msg == "raid") then
AutoInviteOptions[Realm][Player]["Type"] = "Raid";
DEFAULT_CHAT_FRAME:AddMessage("AutoInvite: Invite checking for 40-man raid groups." ,1,1,1);
else
AutoInviteOptions[Realm][Player]["Invite"] = msg;
DEFAULT_CHAT_FRAME:AddMessage("AutoInvite: changed automatic invite keyword[s] to: |c00ffff00"..AutoInviteOptions[Realm][Player]["Invite"].."|r");
end
end
function AutoInvite_CheckMessage(what)
return string.find(string.lower(what), AutoInviteOptions[Realm][Player]["Invite"], 1, true);
end
function AutoInvite_Invite(who)
local numgroup;
local gtype = AutoInviteOptions[Realm][Player]["Type"];
if(gtype == "Party") then
numgroup = GetNumPartyMembers();
if((IsPartyLeader() and numgroup < 4) or (numgroup == 0)) then InviteByName(who)
else
if(numgroup >= 4) then return DEFAULT_CHAT_FRAME:AddMessage("Can't invite "..who.." right now, party is full.");
else return DEFAULT_CHAT_FRAME:AddMessage("Can't invite "..who.." right now, you're not the party leader.") end;
end
elseif(gtype == "Raid") then
numgroup = GetNumRaidMembers();
if(numgroup == 0) then --Not currently in a raid
numparty = GetNumPartyMembers();
if(numparty == 0) then InviteByName(who) --Nobody in the party? Start a new one!
elseif(numparty < 4) then
if(IsPartyLeader()) then InviteByName(who) --4 or less party members? Invite if you can.
else return DEFAULT_CHAT_FRAME:AddMessage("Can't invite "..who.." right now, you're not the party leader.") end;
elseif(GetNumPartyMembers() == 4)then --if you've got a 5-man party (GetNumPartyMembers excludes yourself) convert to raid.
if(IsPartyLeader()) then
DEFAULT_CHAT_FRAME:AddMessage("Raid mode enabled: Converting your group to a raid.")
ConvertToRaid();
InviteByName(who);
else
DEFAULT_CHAT_FRAME:AddMessage("Can't invite "..who.." right now, you're not the party leader.");
end
end
elseif((IsRaidLeader() or IsRaidOfficer()) and numgroup < 40) then InviteByName(who)
else
if(numgroup > 39) then return DEFAULT_CHAT_FRAME:AddMessage("Can't invite "..who.." right now, raid is full.");
else return DEFAULT_CHAT_FRAME:AddMessage("Can't invite "..who.." right now, you're not the raid leader.") end;
end
end
end
Generated by GNU Enscript 1.6.5.90.