vanilla-wow-addons – Rev 1
?pathlinks?
--[[
InviteOMatic is a BG Group inviter
@author Gof
@version 29-03-06
]]--
----------------------------------------------------------------------
-- Saved variable
----------------------------------------------------------------------
InviteOMaticOptions = {};
----------------------------------------------------------------------
-- Strings used in this mod
----------------------------------------------------------------------
local IOM_VERSION = "v1.16";
local IOM_IOM = "[InviteOMatic]";
local IOM_LOADED = IOM_IOM.." "..IOM_VERSION.." Loaded!";
local IOM_FIRST_INVITE_SPAM_DEFAULT = IOM_IOM.." Please leave your groups, i have the raid group, (Or at least Promote me so i can help invite =)";
local IOM_ERROR_AIG_DEFAULT = IOM_IOM.." Since you appear to already be grouped you could not be auto-invited to the raid. If you want to join the raid, please leave your group and send me a whisper with the word: invite";
local IOM_INVITE_REG_EXP = "[iI][nN][vV][iI][tT][eE]"; -- Regular expression for magic word.
----------------------------------------------------------------------
-- Local variables used to capture state
----------------------------------------------------------------------
local IOM_WHOIS = false; -- Are we doing a /who lookup?
local IOM_NAME_BY_WHO = "----"; -- The name we are currently looking up over /Who
local IOM_NAME_BY_WHO_INVITER = "----"; -- The name of the person starting the lookup over /who
local IOM_BG_ACTIVE = false; -- Are we active in a BG, or just handling group outside BG
local IOM_BG_ACTIVE_INDEX = -1; -- The index of the active BG
local IOM_INVITE_WAIT = 1; -- Time to back off before sending invites again, (in seconds)
-- local IOM_FIRST_SCHED_TIME = 2; -- Time to wait from joining BG, to sending the first invite
local IOM_LAST_INVITE = 0; -- Time since last invite cycle, to prevent spamming of invites
local IOM_INVITE_FIRST = true; -- Is this the first invite cycle in this BG?
local IOM_READY = false;
local IOM_AIG = {};
local IOM_AIG_ERROR = {};
local IOM_DECLINE = {};
local IOM_IGNORE = {};
local IOM_GROUPBUG = {};
local IOM_PURGE_TIMER = 0;
local IOM_INVITE_TIMER = 0;
local IOM_UPDATE_PURGE_TIMER = false;
local IOM_UPDATE_INVITE_TIMER = false;
----------------------------------------------------------------------
-- This function is called when the mod is first loaded.
----------------------------------------------------------------------
function InviteOMatic_OnLoad()
this:RegisterEvent("VARIABLES_LOADED"); -- Saved variables loaded
this:RegisterEvent("UPDATE_BATTLEFIELD_STATUS"); -- Register event that fires when BG status changes
this:RegisterEvent("CHAT_MSG_WHISPER"); -- Register event that fires when player receives a whisper
end
----------------------------------------------------------------------
-- Called when an event occurs (That we have registered to hear)
--
-- @param event The event that occured
----------------------------------------------------------------------
function InviteOMatic_OnEvent()
if( event == "VARIABLES_LOADED" ) then
InviteOMatic_VariablesLoaded();
elseif( event == "CHAT_MSG_WHISPER" ) then
InviteOMatic_WhisperEvent(arg1, arg2);
elseif( event == "UPDATE_BATTLEFIELD_STATUS" ) then
InviteOMatic_BGEvent();
elseif( event == "WHO_LIST_UPDATE" ) then
InviteOMatic_WhoEvent();
elseif( event == "CHAT_MSG_SYSTEM" ) then
InviteOMatic_ChannelSystem(arg1);
end
end
function InviteOMatic_VariablesLoaded()
if( InviteOMaticOptions == nil ) then
InviteOMaticOptions = {};
end
if( type(InviteOMaticOptions) ~= "table" ) then
InviteOMaticOptions = {};
end
if( InviteOMaticOptions["autoInvite"] == nil ) then
InviteOMaticOptions["autoInvite"] = true;
InviteOMatic_KhaosSetKey("InviteOMatic", "InviteAutoInvite", "checked", InviteOMaticOptions["autoInvite"]);
end
if( InviteOMaticOptions["whisperInvite"] == nil ) then
InviteOMaticOptions["whisperInvite"] = true;
InviteOMatic_KhaosSetKey("InviteOMatic", "InviteWhisperInvite", "checked", InviteOMaticOptions["whisperInvite"]);
end
if( InviteOMaticOptions["autoPurge"] == nil ) then
InviteOMaticOptions["autoPurge"] = true;
InviteOMatic_KhaosSetKey("InviteOMatic", "InviteAutoPurge", "checked", InviteOMaticOptions["autoPurge"]);
end
if( InviteOMaticOptions["debug"] == nil ) then
InviteOMaticOptions["debug"] = false;
InviteOMatic_KhaosSetKey("InviteOMatic", "InviteDebug", "checked", InviteOMaticOptions["debug"]);
end
if( InviteOMaticOptions["ignoreList"] == nil ) then
InviteOMaticOptions["ignoreList"] = {};
end
if( InviteOMaticOptions["aigttl"] == nil ) then
InviteOMaticOptions["aigttl"] = 10;
InviteOMatic_KhaosSetKey("InviteOMatic", "InviteAIGRetry", "slider", InviteOMaticOptions["aigttl"]);
end
if( InviteOMaticOptions["declinettl"] == nil ) then
InviteOMaticOptions["declinettl"] = 1;
InviteOMatic_KhaosSetKey("InviteOMatic", "InviteDeclineRetry", "slider", InviteOMaticOptions["declinettl"]);
end
if( InviteOMaticOptions["ignorettl"] == nil ) then
InviteOMaticOptions["ignorettl"] = 1;
InviteOMatic_KhaosSetKey("InviteOMatic", "InviteIgnoreRetry", "slider", InviteOMaticOptions["ignorettl"]);
end
if( InviteOMaticOptions["sendInviteSpam"] == nil ) then
InviteOMaticOptions["sendInviteSpam"] = true;
InviteOMatic_KhaosSetKey("InviteOMatic", "InviteSendSpam", "checked", InviteOMaticOptions["sendInviteSpam"]);
end
if( InviteOMaticOptions["sendAIGSpam"] == nil ) then
InviteOMaticOptions["sendAIGSpam"] = true;
InviteOMatic_KhaosSetKey("InviteOMatic", "InviteSendAIGSpam", "checked", InviteOMaticOptions["sendAIGSpam"]);
end
if( InviteOMaticOptions["inviteDelay"] == nil ) then
InviteOMaticOptions["inviteDelay"] = 10;
InviteOMatic_KhaosSetKey("InviteOMatic", "InviteDelay", "slider", InviteOMaticOptions["inviteDelay"]);
end
if( InviteOMaticOptions["purgeDelay"] == nil ) then
InviteOMaticOptions["purgeDelay"] = 10;
InviteOMatic_KhaosSetKey("InviteOMatic", "PurgeDelay", "slider", InviteOMaticOptions["purgeDelay"]);
end
if( InviteOMaticOptions["inviteMsg"] == nil ) then
InviteOMaticOptions["inviteMsg"] = IOM_FIRST_INVITE_SPAM_DEFAULT;
InviteOMatic_KhaosSetKey("InviteOMatic", "InviteSpamMsg", "value", InviteOMaticOptions["inviteMsg"]);
end
if( InviteOMaticOptions["aigMsg"] == nil ) then
InviteOMaticOptions["aigMsg"] = IOM_ERROR_AIG_DEFAULT;
InviteOMatic_KhaosSetKey("InviteOMatic", "InviteAIGSpamMsg", "value", InviteOMaticOptions["aigMsg"]);
end
if( InviteOMaticOptions["magicWord"] == nil ) then
InviteOMaticOptions["magicWord"] = IOM_INVITE_REG_EXP;
InviteOMatic_KhaosSetKey("InviteOMatic", "InviteMagicWord", "value", InviteOMaticOptions["magicWord"]);
end
InviteOMatic.log(IOM_LOADED);
SlashCmdList["IOM"] = InviteOMatic_SlashHandler;
SLASH_IOM1 = "/iom";
IOM_READY = true;
InviteOMatic_RegisterKhaos();
end
----------------------------------------------------------------------
-- Slash command handler
----------------------------------------------------------------------
function InviteOMatic_SlashHandler(msg)
if( not IOM_READY ) then
return;
end
if( InviteOMatic_IsDisabled() ) then
return;
end
local oldmsg = msg;
msg = string.lower(msg);
InviteOMatic.debug("Slashcommand: ("..msg..")");
_, _, option, value = string.find(msg, "(%w*)%s*(%w*)");
InviteOMatic.debug("Option: ("..option.."), Value: ("..value..")");
if( option == "autoinvite" ) then
if( value == "on" ) then
InviteOMaticOptions["autoInvite"] = true;
elseif( value == "off" ) then
InviteOMaticOptions["autoInvite"] = false;
else
InviteOMaticOptions["autoInvite"] = not InviteOMaticOptions["autoInvite"];
end
InviteOMatic.log("Auto invite set to: "..tostring(InviteOMaticOptions["autoInvite"]));
InviteOMatic_KhaosSetKey("InviteOMatic", "InviteAutoInvite", "checked", InviteOMaticOptions["autoInvite"]);
if( IOM_BG_ACTIVE ) then
IOM_UPDATE_INVITE_TIMER = InviteOMaticOptions["autoInvite"];
end
elseif( option == "whisperinvite" ) then
if( value == "on" ) then
InviteOMaticOptions["whisperInvite"] = true;
elseif( value == "off" ) then
InviteOMaticOptions["whisperInvite"] = false;
else
InviteOMaticOptions["whisperInvite"] = not InviteOMaticOptions["whisperInvite"];
end
InviteOMatic.log("Whisper invite set to: "..tostring(InviteOMaticOptions["whisperInvite"]));
InviteOMatic_KhaosSetKey("InviteOMatic", "InviteWhisperInvite", "checked", InviteOMaticOptions["whisperInvite"]);
elseif( option == "autopurge" ) then
if( value == "on" ) then
InviteOMaticOptions["autoPurge"] = true;
elseif( value == "off" ) then
InviteOMaticOptions["autoPurge"] = false;
else
InviteOMaticOptions["autoPurge"] = not InviteOMaticOptions["autoPurge"];
end
InviteOMatic.log("Auto purge set to: "..tostring(InviteOMaticOptions["autoPurge"]));
InviteOMatic_KhaosSetKey("InviteOMatic", "InviteAutoPurge", "checked", InviteOMaticOptions["autoPurge"]);
if( IOM_BG_ACTIVE ) then
IOM_UPDATE_PURGE_TIMER = InviteOMaticOptions["autoPurge"];
end
elseif( option == "spam" ) then
if( value == "on" ) then
InviteOMaticOptions["sendInviteSpam"] = true;
elseif( value == "off") then
InviteOMaticOptions["sendInviteSpam"] = false;
else
InviteOMaticOptions["sendInviteSpam"] = not InviteOMaticOptions["sendInviteSpam"];
end
InviteOMatic.log("Invite spam set to: "..tostring(InviteOMaticOptions["sendInviteSpam"]));
InviteOMatic_KhaosSetKey("InviteOMatic", "InviteSendSpam", "checked", InviteOMaticOptions["sendInviteSpam"]);
elseif( option == "debug" ) then
if( value == "on" ) then
InviteOMaticOptions["debug"] = true;
elseif( value == "off") then
InviteOMaticOptions["debug"] = false;
else
InviteOMaticOptions["debug"] = not InviteOMaticOptions["debug"];
end
InviteOMatic.log("Debug messages set to: "..tostring(InviteOMaticOptions["debug"]));
InviteOMatic_KhaosSetKey("InviteOMatic", "InviteDebug", "checked", InviteOMaticOptions["debug"]);
elseif( option == "ignore" ) then
if( value ~= nil ) then
local lowerName = string.lower(value);
InviteOMaticOptions["ignoreList"][lowerName] = lowerName;
else
InviteOMatic.log("You need to specify a playername you wish to add to the ignore-list, /iom ignore playername");
end
InviteOMatic.log(value.." added to ignore list");
elseif( option == "removeignore" ) then
if( value ~= nil ) then
local lowerName = string.lower(value);
InviteOMaticOptions["ignoreList"][lowerName] = nil;
else
InviteOMatic.log("You need to specify a playername you wish to remove from the ignore-list, /iom ignore playername");
end
InviteOMatic.log(value.." removed from ignore list");
elseif( option == "spammsg" ) then
if( value == "default" ) then
InviteOMaticOptions["inviteMsg"] = IOM_FIRST_INVITE_SPAM_DEFAULT;
InviteOMatic.log("First spam msg set to default: "..InviteOMaticOptions["inviteMsg"]);
InviteOMatic_KhaosSetKey("InviteOMatic", "InviteSpamMsg", "value", InviteOMaticOptions["inviteMsg"]);
return;
end
sS, sE = string.find(msg, "\".*\"");
if( not sS ) then
InviteOMatic.log("You need to specify a new message ex. /iom spammsg \"newmsg\"");
return;
end
newmsg = string.sub(oldmsg, sS+1, sE-1);
InviteOMatic.debug("New message is: ("..newmsg..")");
InviteOMaticOptions["inviteMsg"] = newmsg;
InviteOMatic.log("First spam msg set to: "..InviteOMaticOptions["inviteMsg"]);
InviteOMatic_KhaosSetKey("InviteOMatic", "InviteSpamMsg", "value", InviteOMaticOptions["inviteMsg"]);
elseif( option == "aigmsg" ) then
if( value == "default" ) then
InviteOMaticOptions["aigMsg"] = IOM_ERROR_AIG_DEFAULT;
InviteOMatic.log("AIG spam msg set to default: "..InviteOMaticOptions["aigMsg"]);
InviteOMatic_KhaosSetKey("InviteOMatic", "InviteAIGSpamMsg", "value", InviteOMaticOptions["aigMsg"]);
return;
end
sS, sE = string.find(msg, "\".*\"");
if( not sS ) then
InviteOMatic.log("You need to specify a new message ex. /iom aigmsg \"newmsg\"");
return;
end
newmsg = string.sub(oldmsg, sS+1, sE-1);
InviteOMatic.debug("New message is: ("..newmsg..")");
InviteOMaticOptions["aigMsg"] = newmsg;
InviteOMatic.log("AIG spam msg set to: "..InviteOMaticOptions["aigMsg"]);
InviteOMatic_KhaosSetKey("InviteOMatic", "InviteAIGSpamMsg", "value", InviteOMaticOptions["aigMsg"]);
elseif( option == "magicword" ) then
if( value == "default" ) then
InviteOMaticOptions["magicWord"] = IOM_INVITE_REG_EXP;
InviteOMatic.log("Magic word set to default: "..InviteOMaticOptions["magicWord"]);
InviteOMatic_KhaosSetKey("InviteOMatic", "InviteMagicWord", "value", InviteOMaticOptions["magicWord"]);
return;
end
sS, sE = string.find(msg, "\".*\"");
if( not sS ) then
InviteOMatic.log("You need to specify a new magic word ex. /iom aigmsg \"[iI][nN][vV]\"");
return;
end
newmsg = string.sub(oldmsg, sS+1, sE-1);
InviteOMatic.debug("New magic word is: ("..newmsg..")");
InviteOMaticOptions["magicWord"] = newmsg;
InviteOMatic.log("Magic word set to: "..InviteOMaticOptions["magicWord"]);
InviteOMatic_KhaosSetKey("InviteOMatic", "InviteMagicWord", "value", InviteOMaticOptions["magicWord"]);
elseif( option == "resetaiglist" ) then
InviteOMatic_ResetAIG();
InviteOMatic.log("Already in group list reset");
elseif( option == "promote" ) then
InviteOMatic_PromoteAll();
elseif( option == "demote" ) then
InviteOMatic_DemoteAll();
elseif( option == "aigttl" ) then
if( value ) then
local num = tonumber(value);
if( num ) then
if( num >= 0 and num <= 20 ) then
InviteOMaticOptions["aigttl"] = num;
InviteOMatic.log("Already in group retries set to: "..InviteOMaticOptions["aigttl"]);
InviteOMatic_KhaosSetKey("InviteOMatic", "InviteAIGRetry", "slider", InviteOMaticOptions["aigttl"]);
else
InviteOMatic.log("Number must be between 0 and 20");
end
end
end
elseif( option == "ignorettl" ) then
if( value ) then
local num = tonumber(value);
if( num ) then
if( num >= 0 and num <= 10 ) then
InviteOMaticOptions["ignorettl"] = num;
InviteOMatic.log("Ignore retries set to: "..InviteOMaticOptions["ignorettl"]);
InviteOMatic_KhaosSetKey("InviteOMatic", "InviteIgnoreRetry", "slider", InviteOMaticOptions["ignorettl"]);
else
InviteOMatic.log("Number must be between 0 and 10");
end
end
end
elseif( option == "declinettl" ) then
if( value ) then
local num = tonumber(value);
if( num ) then
if( num >= 0 and num <= 10 ) then
InviteOMaticOptions["declinettl"] = num;
InviteOMatic.log("Decline retries set to: "..InviteOMaticOptions["declinettl"]);
InviteOMatic_KhaosSetKey("InviteOMatic", "InviteDeclineRetry", "slider", InviteOMaticOptions["declinettl"]);
else
InviteOMatic.log("Number must be between 0 and 10");
end
end
end
else
InviteOMatic.log("Unknown option: "..option);
InviteOMatic.log("Usage: /iom option value");
InviteOMatic.log("Options:");
InviteOMatic.log(" autoinvite on|off -- Turns autoinvite on/off");
InviteOMatic.log(" autopurge on|off -- Turns autopurge on/off");
InviteOMatic.log(" whisperinvite on|off -- Turns whisperinvite on/off");
InviteOMatic.log(" debug on|off -- Turns debug messages on/off");
InviteOMatic.log(" spam on|off -- Turns the invite spam on/off");
InviteOMatic.log(" spammsg default|\"newmsg\" -- Sets invite msg to newmsg");
InviteOMatic.log(" aigmsg default|\"newmsg\" -- Sets AIG msg to newmsg");
InviteOMatic.log(" magicword default|\"word\" -- Sets the magic invite word (REGEXP)");
InviteOMatic.log(" resetaiglist -- Resets the already in group list");
InviteOMatic.log(" ignore playername -- Puts the player on the ignorelist (Will not be invited)");
InviteOMatic.log(" removeignore playername -- Puts the player on the ignorelist (Will not be invited)");
InviteOMatic.log(" promote -- Promotes all members of the raidgroup");
InviteOMatic.log(" demote -- Demotes all members of the raidgroup");
InviteOMatic.log(" aigttl num -- Set number of already in group retries to num");
InviteOMatic.log(" ignorettl num -- Set number of ignore retries to num");
InviteOMatic.log(" declinettl num -- Set number of decline retries to num");
end
end
function InviteOMatic_KhaosSetKey(set, key, type, value)
if(Khaos) then
if(Khaos.getSetKey(set,key)) then
Khaos.setSetKeyParameter(set, key, type, value);
end
end
end
----------------------------------------------------------------------
-- Should this person be invited? (Do checks)
----------------------------------------------------------------------
function InviteOMatic_ShouldInvite(name)
if( not IOM_READY ) then
return;
end
if( InviteOMatic_IsDisabled() ) then
return;
end
if( name ~= nil ) then
local lowerName = string.lower(name);
if( InviteOMaticOptions["ignoreList"][lowerName] ~= nil ) then
-- This player is ignored, so dont invite
InviteOMatic.debug("Player "..charname.." is on ignore list, so will not get invited");
return false;
end
-- Do checks on this specefic name (Will only reject, not accept)
if( IOM_AIG[name] and IOM_AIG[name] >= InviteOMaticOptions["aigttl"] ) then
if( not IOM_AIG_ERROR[name] ) then
IOM_AIG_ERROR[name] = true;
if( InviteOMaticOptions["sendAIGSpam"] ) then
SendChatMessage(InviteOMaticOptions["aigMsg"], "WHISPER",this.language,name);
end
end
return false;
end
if( IOM_DECLINE[name] and IOM_DECLINE[name] >= InviteOMaticOptions["declinettl"] ) then
return false;
end
if( IOM_IGNORE[name] and IOM_IGNORE[name] >= InviteOMaticOptions["ignorettl"] ) then
return false;
end
end
--Do general checks( Accept and reject )
-- If raid officer or leader then ok
if( IsRaidLeader() or IsRaidOfficer() or IsPartyLeader() ) then
return true;
elseif( IOM_BG_ACTIVE and ((GetNumPartyMembers() > 0) or (GetNumRaidMembers() > 0)) ) then
--We are in a BG, but not able to invite
return false;
end
return true;
end
----------------------------------------------------------------------
-- Invite the player with the given name, if its ok
----------------------------------------------------------------------
function InviteOMatic_InvitePlayer(name)
if( InviteOMatic_IsDisabled() ) then
return;
end
if( name == nil ) then
return;
end
local lowerName = string.lower(name);
if( InviteOMaticOptions["ignoreList"][lowerName] ~= nil ) then
-- This player is ignored, so dont invite
InviteOMatic.debug("Player "..lowerName.." is on ignore list, so will not get invited");
return;
end
InviteOMatic.debug("Checking invite: ("..name..")");
local ok = InviteOMatic_ShouldInvite(name);
if( ok ) then
InviteOMatic.debug("("..name..") checked ok, inviting");
if( IOM_GROUPBUG[name] ~= nil ) then
InviteOMatic.debug("Group bug2 maybee found. Uninviting first...");
UninviteByName(name);
end
InviteByName(name);
IOM_GROUPBUG[name] = true;
else
InviteOMatic.debug("("..name..") failed check!");
end
end
----------------------------------------------------------------------
-- Convert to Raid
----------------------------------------------------------------------
function InviteOMatic_MakeRaid()
if( InviteOMatic_IsDisabled() ) then
return;
end
local raidMembers = GetNumRaidMembers();
local isLeader = IsPartyLeader();
if( (raidMembers == 0) and isLeader ) then
InviteOMatic.debug("Converting to raid...");
ConvertToRaid();
end
end
----------------------------------------------------------------------
-- Function to handle enter world event
----------------------------------------------------------------------
function InviteOMatic_BGEvent()
InviteOMatic.debug("Battlefield status changed...");
NUMBER_OF_BATTLEFIELDS = 3;
if( not IOM_BG_ACTIVE ) then
for i=1,NUMBER_OF_BATTLEFIELDS do
status, mapName, instanceID = GetBattlefieldStatus(i);
InviteOMatic.debug("Status: "..status..", MapName: "..mapName..", InstanceID: "..instanceID);
if( status == "active" ) then
InviteOMatic_EnteredBG(i);
end
end
else
status, mapName, instanceID = GetBattlefieldStatus(IOM_BG_ACTIVE_INDEX);
if( status ~= "active" ) then
-- You have left BG
InviteOMatic_LeftBG(IOM_BG_ACTIVE_INDEX);
end
end
end
----------------------------------------------------------------------
-- Function to handle whisper events
----------------------------------------------------------------------
function InviteOMatic_WhisperEvent(text, name)
if( InviteOMatic_IsDisabled() ) then
return;
end
InviteOMatic.debug("Tell recieved...");
--If whisper invites isnt enabled, just return
if( not InviteOMaticOptions["whisperInvite"] ) then
return;
end
--Check if tell contains the magic word invite
sStart, sEnd = string.find(text, InviteOMaticOptions["magicWord"], 1);
if( sStart ~= nil ) then
--Check if the word just after invite is a player
sStart2, sEnd2 = string.find(text, "%s[^%s%?%.!]+", sEnd);
if( sStart2 ~= nil ) then
local foundName = string.lower( string.sub(text, sStart2+1, sEnd2) );
if( foundName == "me" or foundName == "please" or foundName == "plz" or foundName == "plez" or foundName == "pleaz") then
IOM_AIG[name] = nil;
IOM_AIG_ERROR[name] = nil;
IOM_IGNORE[name] = nil;
IOM_DECLINE[name] = nil;
InviteOMatic.invite(name);
else
InviteOMatic.debug(name.." wants you to invite ("..foundName..")");
IOM_WHOIS = true;
this:RegisterEvent("WHO_LIST_UPDATE");
FriendsFrame:UnregisterEvent("WHO_LIST_UPDATE");
SetWhoToUI(1);
-- Do lookup via Who command.
IOM_NAME_BY_WHO = string.lower(foundName);
IOM_NAME_BY_WHO_INVITER = name;
SendWho("n-\""..foundName.."\"");
end
else
IOM_AIG[name] = nil;
IOM_AIG_ERROR[name] = nil;
IOM_IGNORE[name] = nil;
IOM_DECLINE[name] = nil;
InviteOMatic.invite(name);
end
end
end
----------------------------------------------------------------------
-- Function to handle who events
----------------------------------------------------------------------
function InviteOMatic_WhoEvent()
if( IOM_WHOIS ) then
InviteOMatic.debug("WHO_LIST_UPDATED - ("..IOM_NAME_BY_WHO..")");
local invited = false;
-- We saw our who, so reset everything back
SetWhoToUI(0);
FriendsFrame:RegisterEvent("WHO_LIST_UPDATE");
this:UnregisterEvent("WHO_LIST_UPDATE");
IOM_WHOIS = false;
-- Now process the who list
local length = GetNumWhoResults();
for i=1,length do
charname, guildname, level, race, class, zone, unknown = GetWhoInfo(i);
InviteOMatic.debug("Found: "..charname);
charname = string.lower(charname);
if( charname == IOM_NAME_BY_WHO ) then
if( InviteOMaticOptions["ignoreList"][charname] ~= nil ) then
-- This player is ignored, so dont invite
InviteOMatic.log("Player "..charname.." is on ignore list, so will not get invited");
return;
end
IOM_AIG[IOM_NAME_BY_WHO] = nil;
IOM_AIG_ERROR[IOM_NAME_BY_WHO] = nil;
IOM_IGNORE[IOM_NAME_BY_WHO] = nil;
IOM_DECLINE[IOM_NAME_BY_WHO] = nil;
InviteOMatic.invite(IOM_NAME_BY_WHO);
invited = true;
end
end
if( not invited ) then
if( InviteOMaticOptions["ignoreList"][IOM_NAME_BY_WHO_INVITER] ~= nil ) then
-- This player is ignored, so dont invite
InviteOMatic.log("Player "..charname.." is on ignore list, so will not get invited");
return;
end
IOM_AIG[IOM_NAME_BY_WHO_INVITER] = nil;
IOM_AIG_ERROR[IOM_NAME_BY_WHO_INVITER] = nil;
IOM_IGNORE[IOM_NAME_BY_WHO_INVITER] = nil;
IOM_DECLINE[IOM_NAME_BY_WHO_INVITER] = nil;
InviteByName(IOM_NAME_BY_WHO_INVITER);
end
-- Done processing, reset IOM_NAME_BY_WHO, IOM_NAME_BY_WHO_INVITER
IOM_NAME_BY_WHO = "----";
IOM_NAME_BY_WHO_INVITER = "----";
end
end
----------------------------------------------------------------------
-- Called when InviteOMatic detects that you have entered a BG
--
-- Sets up the events we want to listen for while in BG, and starts invite script
----------------------------------------------------------------------
function InviteOMatic_EnteredBG(index)
IOM_BG_ACTIVE_INDEX = index;
IOM_BG_ACTIVE = true;
status, mapName, instanceID = GetBattlefieldStatus(index);
local runtime = GetBattlefieldInstanceRunTime();
InviteOMatic.debug("You entered "..mapName.." Runtime: "..runtime);
if( InviteOMaticOptions["autoInvite"] ) then
IOM_UPDATE_INVITE_TIMER = true;
end
if( InviteOMaticOptions["autoPurge"] ) then
IOM_UPDATE_PURGE_TIMER = true;
end
this:RegisterEvent("CHAT_MSG_SYSTEM");
end
----------------------------------------------------------------------
-- This function purges players that are offline or has left the BG
----------------------------------------------------------------------
function InviteOMatic_DoPurge()
if( InviteOMatic_IsDisabled() ) then
return;
end
if( not InviteOMaticOptions["autoPurge"] ) then
return;
end
for i=1,GetNumRaidMembers() do
--do som check for each member determing if he is online, if he isnt, purge him
end
end
----------------------------------------------------------------------
-- Promotes all memebers of a raid group
----------------------------------------------------------------------
function InviteOMatic_PromoteAll()
if( InviteOMatic_IsDisabled() ) then
return;
end
for i=1,GetNumRaidMembers() do
local name = GetRaidRosterInfo(i);
if( IsRaidLeader() ) then
PromoteToAssistant(name);
end
end
end
----------------------------------------------------------------------
-- Demotes all memebers of a raid group
----------------------------------------------------------------------
function InviteOMatic_DemoteAll()
if( InviteOMatic_IsDisabled() ) then
return;
end
for i=1,GetNumRaidMembers() do
local name = GetRaidRosterInfo(i);
if( IsRaidLeader() ) then
DemoteAssistant(name);
end
end
end
----------------------------------------------------------------------
-- Disbands the raid group uninviting every member
----------------------------------------------------------------------
function InviteOMatic_DisbandRaidGroup()
if( InviteOMatic_IsDisabled() ) then
return;
end
for i=1,GetNumRaidMembers() do
--Remove player from raid
local name = GetRaidRosterInfo(i);
if( IsRaidLeader() or IsRaidOfficer() or IsPartyLeader() ) then
UninviteByName(name);
end
end
for i=1,GetNumPartyMembers() do
--Remove player from group
end
end
----------------------------------------------------------------------
-- This function tries to invite everyone that is not already in our group
----------------------------------------------------------------------
function InviteOMatic_SendInvites()
if( InviteOMatic_IsDisabled() ) then
return;
end
if( not InviteOMaticOptions["autoInvite"] ) then
return;
end
local bfCount = GetNumBattlefieldPositions();
if( bfCount == 0 ) then
return;
end
InviteOMatic.debug("Sending invites - InviteOMatic_SendInvites()");
if( not IOM_BG_ACTIVE ) then
InviteOMatic.debug("Not in a BG");
return;
end
local now = GetTime();
local delta = now - IOM_LAST_INVITE;
if( delta < IOM_INVITE_WAIT ) then
InviteOMatic.debug("Wait a little longer...("..delta..")");
return;
end
if( not InviteOMatic_ShouldInvite(nil) ) then
-- We got a negative from ShouldInvite, so we stop here
return;
end
if( IOM_INVITE_FIRST ) then
IOM_INVITE_FIRST = false;
if( InviteOMaticOptions["sendInviteSpam"] ) then
SendChatMessage(InviteOMaticOptions["inviteMsg"], "SAY");
end
end
-- Convert to raid if any members is in party
InviteOMatic_MakeRaid();
local count = GetNumBattlefieldPositions(); -- Number of players not in our raid
if( (count > 4) and (GetNumRaidMembers() == 0) ) then
-- Not a raid yet so only invite 4 people
count = 5 - GetNumPartyMembers();
end
for i=1,count do
posX, posY, name = GetBattlefieldPosition(i);
InviteOMatic.invite(name);
end
IOM_LAST_INVITE = GetTime();
end
----------------------------------------------------------------------
-- Function to handle system messages
----------------------------------------------------------------------
function InviteOMatic_ChannelSystem(arg1)
if( InviteOMatic_IsDisabled() ) then
return;
end
local name = "";
if( string.find(arg1, "has joined the battle") ) then
sS, sE = string.find(arg1, "%[");
sS2, sE2 = string.find(arg1, "%]");
name = string.sub(arg1,sS+1,sS2-1);
InviteOMatic_PlayerJoinedBattle(name);
elseif( string.find(arg1, "has left the battle") ) then
sS, sE = string.find(arg1, "[^%s%!%?]+");
name = string.sub(arg1,sS,sE);
InviteOMatic_PlayerLeftBattle(name);
elseif( string.find(arg1, "declines your group invitation") ) then
sS, sE = string.find(arg1, "[^%s%!%?]+");
name = string.sub(arg1,sS,sE);
InviteOMatic_PlayerDeclined(name);
elseif( string.find(arg1, "is ignoring you") ) then
sS, sE = string.find(arg1, "[^%s%!%?]+");
name = string.sub(arg1,sS,sE);
InviteOMatic_PlayerIgnores(name);
elseif( string.find(arg1, "is already in a group") ) then
sS, sE = string.find(arg1, "[^%s%!%?]+");
name = string.sub(arg1,sS,sE);
InviteOMatic_PlayerAlreadyGrouped(name);
elseif( string.find(arg1, "joins the party") ) then
sS, sE = string.find(arg1, "[^%s%!%?]+");
name = string.sub(arg1,sS,sE);
InviteOMatic_PlayerJoinedGroup(name);
elseif( string.find(arg1, "has joined the raid group") ) then
sS, sE = string.find(arg1, "[^%s%!%?]+");
name = string.sub(arg1,sS,sE);
InviteOMatic_PlayerJoinedGroup(name);
elseif( string.find(arg1, "You have invited") ) then
sS, sE = string.find(arg1, "You have invited");
sS2, sE2 = string.find(arg1, "[^%s%!%?]+", sE+1);
name = string.sub(arg1,sS2,sE2);
InviteOMatic_PlayerInvitedEvent(name);
else
InviteOMatic.debug("Unhandled sysmsg: "..arg1);
end
end
----------------------------------------------------------------------
-- Remove this player from the groupbug table
----------------------------------------------------------------------
function InviteOMatic_PlayerInvitedEvent(name)
InviteOMatic.debug("You invited: ("..name..")");
IOM_GROUPBUG[name] = nil;
end
----------------------------------------------------------------------
-- Resets AIG list
----------------------------------------------------------------------
function InviteOMatic_ResetAIG()
if( InviteOMatic_IsDisabled() ) then
return;
end
InviteOMatic.debug("Resetting AIG list...");
IOM_AIG = {};
IOM_AIG_ERROR = {};
end
----------------------------------------------------------------------
-- Resets DECLINE list
----------------------------------------------------------------------
function InviteOMatic_ResetDecline()
if( InviteOMatic_IsDisabled() ) then
return;
end
InviteOMatic.debug("Resetting Decline list...");
IOM_DECLINE = {};
end
----------------------------------------------------------------------
-- Resets IGNORE list
----------------------------------------------------------------------
function InviteOMatic_ResetIgnore()
if( InviteOMatic_IsDisabled() ) then
return;
end
InviteOMatic.debug("Resetting Ignore list...");
IOM_IGNORE = {};
end
----------------------------------------------------------------------
-- Player Joined Group
----------------------------------------------------------------------
function InviteOMatic_PlayerJoinedGroup(name)
if( IOM_BG_ACTIVE ) then
InviteOMatic_MakeRaid();
IOM_AIG[name] = nil;
IOM_AIG_ERROR[name] = nil;
IOM_IGNORE[name] = nil;
IOM_DECLINE[name] = nil;
end
end
----------------------------------------------------------------------
-- Player Joined Battle
----------------------------------------------------------------------
function InviteOMatic_PlayerJoinedBattle(name)
if( InviteOMaticOptions["autoInvite"] ) then
InviteOMatic.invite(name);
end
end
----------------------------------------------------------------------
-- Player Left Battle
----------------------------------------------------------------------
function InviteOMatic_PlayerLeftBattle(name)
-- If purge is enabled, then uninvite this player
if( InviteOMaticOptions["autoPurge"] ) then
if( IsRaidLeader() or IsRaidOfficer() or IsPartyLeader() ) then
for i=1,GetNumRaidMembers() do
--Remove player from raid
local name2 = GetRaidRosterInfo(i);
if( name == name2 ) then
UninviteByName(name);
return;
end
end
if( GetNumRaidMembers() == 0 ) then
UninviteByName(name);
end
end
end
end
----------------------------------------------------------------------
-- Player Declined
----------------------------------------------------------------------
function InviteOMatic_PlayerDeclined(name)
-- Player declined our group invite
if( IOM_DECLINE[name] == nil ) then
IOM_DECLINE[name] = 1;
else
IOM_DECLINE[name] = IOM_DECLINE[name] + 1;
if( IOM_DECLINE[name] > InviteOMaticOptions["declinettl"] ) then
IOM_DECLINE[name] = InviteOMaticOptions["declinettl"];
end
end
InviteOMatic.debug(name.." declined invitation "..(InviteOMaticOptions["declinettl"] - IOM_DECLINE[name]).." retries left");
end
----------------------------------------------------------------------
-- Player Ignores
----------------------------------------------------------------------
function InviteOMatic_PlayerIgnores(name)
-- Player ignored you
if( IOM_IGNORE[name] == nil ) then
IOM_IGNORE[name] = 0;
else
IOM_IGNORE[name] = IOM_IGNORE[name] + 1;
if( IOM_IGNORE[name] > InviteOMaticOptions["ignorettl"] ) then
IOM_IGNORE[name] = InviteOMaticOptions["ignorettl"];
end
end
InviteOMatic.debug(name.." ingored you "..(InviteOMaticOptions["ignorettl"] - IOM_IGNORE[name]).." retries left");
end
----------------------------------------------------------------------
-- Player Already in group
----------------------------------------------------------------------
function InviteOMatic_PlayerAlreadyGrouped(name)
-- Player is already grouped
if( IOM_AIG[name] == nil ) then
IOM_AIG[name] = 0;
else
IOM_AIG[name] = IOM_AIG[name] + 1;
if( IOM_AIG[name] > InviteOMaticOptions["aigttl"] ) then
IOM_AIG[name] = InviteOMaticOptions["aigttl"];
end
end
InviteOMatic.debug(name.." was already in group "..(InviteOMaticOptions["aigttl"] - IOM_AIG[name]).." retries left");
end
----------------------------------------------------------------------
-- Called when InviteOMatic detects that you have left a BG
----------------------------------------------------------------------
function InviteOMatic_LeftBG()
IOM_BG_ACTIVE_INDEX = -1;
IOM_BG_ACTIVE = false;
IOM_LAST_INVITE = 0;
IOM_INVITE_FIRST = true;
IOM_AIG = {};
IOM_AIG_ERROR = {};
IOM_DECLINE = {};
IOM_IGNORE = {};
IOM_GROUPBUG = {};
InviteOMatic.debug("You left the BattleGround");
IOM_UPDATE_PURGE_TIMER = false;
IOM_UPDATE_INVITE_TIMER = false;
this:UnregisterEvent("CHAT_MSG_SYSTEM");
end
----------------------------------------------------------------------
-- Called On_Update
----------------------------------------------------------------------
function InviteOMatic_OnUpdate(dt)
if( InviteOMatic_IsDisabled() ) then
return;
end
if( dt == nil ) then
return;
end
if( not IOM_READY ) then
return;
end
if( IOM_UPDATE_INVITE_TIMER ) then
IOM_INVITE_TIMER = IOM_INVITE_TIMER - dt;
if( IOM_INVITE_TIMER <= 0 ) then
InviteOMatic.debug("Invite Timer fired...");
IOM_INVITE_TIMER = InviteOMaticOptions.inviteDelay;
if( InviteOMaticOptions.autoInvite ) then
InviteOMatic_SendInvites();
end
end
end
if( IOM_UPDATE_PURGE_TIMER ) then
IOM_PURGE_TIMER = IOM_PURGE_TIMER - dt;
if( IOM_PURGE_TIMER <= 0 ) then
InviteOMatic.debug("Purge Timer fired...");
IOM_PURGE_TIMER = InviteOMaticOptions.purgeDelay;
if( InviteOMaticOptions.autoPurge ) then
InviteOMatic_DoPurge();
end
end
end
end
----------------------------------------------------------------------
-- Logs the msg to the default chat frame
--
-- @param msg The message to output
----------------------------------------------------------------------
function IOM_PrintMsg(msg)
if( InviteOMatic_IsDisabled() ) then
return;
end
if (DEFAULT_CHAT_FRAME) then
DEFAULT_CHAT_FRAME:AddMessage(msg);
end
end
----------------------------------------------------------------------
-- Logs the debug msg to the default chat frame
--
-- @param msg The message to output
----------------------------------------------------------------------
function IOM_PrintDebugMsg(msg)
if( InviteOMaticOptions["debug"] ) then
InviteOMatic.log("IOM Debug - "..msg);
end
end
----------------------------------------------------------------------
-- Checks if addon has been disabled in Khaos, and disables addon accordingly :)
----------------------------------------------------------------------
function InviteOMatic_IsDisabled()
if( Khaos ) then
return false;
-- return not Khaos.getSetEnabled("InviteOMatic");
else
-- InviteOMatic.log("Khaos not detected, so cant check status");
return false;
end
end
----------------------------------------------------------------------
-- Register a Khaos config
----------------------------------------------------------------------
function InviteOMatic_RegisterKhaos()
if( Khaos ) then
Khaos.registerFolder(
{
id = "invite";
text = "Invite";
helptext = "Invite helpers";
difficulty = 1;
}
);
local optionSet =
{
id="InviteOMatic";
text="InviteOMatic";
helptext="Invite Helper, with a twist!";
difficulty=1;
options = {
{
id="InviteHeader";
text="InviteOMatic Settings";
helptext="InviteOMatic";
type = K_HEADER;
};
{
id="InviteAutoInvite";
text="Auto Invite";
helptext="Automatically invites everyone in a BG instance.";
type = K_TEXT;
check = true;
callback = InviteOMatic_InviteAutoInviteCheck;
feedback = function(state) end;
default = {
checked = true;
};
disabled = {
checked = false;
};
};
{
id="InviteAutoPurge";
text="Auto Purge";
helptext="Automatically purges offline players, and players that leaves the BG.";
type = K_TEXT;
check = true;
callback = InviteOMatic_InviteAutoPurgeCheck;
feedback = function(state) end;
default = {
checked = true;
};
disabled = {
checked = false;
};
};
{
id="InviteWhisperInvite";
text="Whisper Invite";
helptext="Automatically invites people whispering you the magic word 'invite'";
type = K_TEXT;
check = true;
callback = InviteOMatic_InviteWhisperCheck;
feedback = function(state) end;
default = {
checked = true;
};
disabled = {
checked = false;
};
};
{
id="InviteDelay";
key="InviteDelay";
value=true;
text="Time between invites:";
helptext="This value represents the time InviteOMatic will wait between each invite cycle, the value is in seconds.";
type = K_SLIDER;
check = false;
setup = {
sliderMin = 1;
sliderMax = 20;
sliderLowText = "Fast";
sliderHighText = "Slow";
sliderStep = 1;
sliderText = "Invite Cycle";
sliderDisplayfunc = function (state) return state.slider; end;
};
callback = InviteOMatic_InviteCycleSliderCallback;
feedback = function(state) end;
default = {
slider = 10;
};
disabled = {
slider = 10;
};
};
{
id="PurgeDelay";
key="PurgeDelay";
value=true;
text="Time between purges:";
helptext="This value represents the time InviteOMatic will wait between each purge cycle, the value is in seconds.";
type = K_SLIDER;
check = false;
setup = {
sliderMin = 1;
sliderMax = 20;
sliderLowText = "Fast";
sliderHighText = "Slow";
sliderStep = 1;
sliderText = "Purge Cycle";
sliderDisplayfunc = function (state) return state.slider; end;
};
callback = InviteOMatic_PurgeCycleSliderCallback;
feedback = function(state) end;
default = {
slider = 10;
};
disabled = {
slider = 10;
};
};
{
id="InviteRetryHeader";
text="InviteOMatic Retry Settings";
helptext="InviteOMatic";
type = K_HEADER;
};
{
id="InviteAIGRetry";
value=true;
text="Already in group retries:";
helptext="Number of retries to invite people that are already in group.";
type = K_SLIDER;
check = false;
setup = {
sliderMin = 0;
sliderMax = 20;
sliderLowText = "None";
sliderHighText = "Many";
sliderStep = 1;
sliderText = "Number of Retries";
sliderDisplayfunc = function (state) return state.slider; end;
};
callback = InviteOMatic_InviteAIGRetry;
feedback = function(state) end;
default = {
slider = 10;
};
disabled = {
slider = 10;
};
};
{
id="InviteDeclineRetry";
key="InviteDeclineRetry";
value=true;
text="Decline retries:";
helptext="Number of retries to invite people that decline an invitation.";
type = K_SLIDER;
check = false;
setup = {
sliderMin = 0;
sliderMax = 10;
sliderLowText = "None";
sliderHighText = "Many";
sliderStep = 1;
sliderText = "Number of Retries";
sliderDisplayfunc = function (state) return state.slider; end;
};
callback = InviteOMatic_InviteDeclineRetry;
feedback = function(state) end;
default = {
slider = 1;
};
disabled = {
slider = 1;
};
};
{
id="InviteIgnoreRetry";
key="InviteIgnoreRetry";
value=true;
text="Ignore retries:";
helptext="Number of retries to invite people that are ignoring you.";
type = K_SLIDER;
check = false;
setup = {
sliderMin = 0;
sliderMax = 10;
sliderLowText = "None";
sliderHighText = "Many";
sliderStep = 1;
sliderText = "Number of Retries";
sliderDisplayfunc = function (state) return state.slider; end;
};
callback = InviteOMatic_InviteIgnoreRetry;
feedback = function(state) end;
default = {
slider = 1;
};
disabled = {
slider = 1;
};
};
{
id="InviteMagicHeader";
text="InviteOMatic Magic Word";
helptext="InviteOMatic";
type = K_HEADER;
};
{
id="InviteMagicWord";
value={IOM_INVITE_REG_EXP};
text="Magic Word (REGEXP)";
helptext="A reqular expression for the magic invite word.";
type = K_EDITBOX;
callback = InivteOMatic_InviteMagicWord;
feedback = function(state) end;
setup = {
callOn = {"enter"};
multiLine = true;
};
default = {
value = IOM_INVITE_REG_EXP;
};
disabled = {
value = "";
};
};
{
id="InviteMsgHeader";
text="InviteOMatic Messages";
helptext="InviteOMatic";
type = K_HEADER;
};
{
id="InviteSendSpam";
text="Send spam message at invite";
helptext="Should the addon send a spam message over SAY when doing first invite.";
type = K_TEXT;
check = true;
callback = InviteOMatic_SendSpamOption;
feedback = function(state) end;
default = {
checked = true;
};
disabled = {
checked = false;
};
};
{
id="InviteSpamMsg";
value={IOM_FIRST_INVITE_SPAM_DEFAULT};
text="Invite Spam Message";
helptext="Message to spam when doing first invite round.";
type = K_EDITBOX;
callback = InivteOMatic_InviteSpamMsg;
feedback = function(state) end;
setup = {
callOn = {"enter"};
multiLine = true;
};
default = {
value = IOM_FIRST_INVITE_SPAM_DEFAULT;
};
disabled = {
value = "";
};
};
{
id="InviteSendAIGSpam";
text="Send AIG spam";
helptext="Should a message be sent to a player who has reached the max number of Already in group retries.";
type = K_TEXT;
check = true;
callback = InviteOMatic_SendAIGSpamOption;
feedback = function(state) end;
default = {
checked = true;
};
disabled = {
checked = false;
};
};
{
id="InviteAIGSpamMsg";
value={IOM_ERROR_AIG_DEFAULT};
text="AIG Spam Message";
helptext="Message to send to a player who reaches the maximum number of Already in group retries.";
type = K_EDITBOX;
callback = InivteOMatic_AIGSpamMsg;
feedback = function(state) end;
setup = {
callOn = {"enter"};
multiLine = true;
};
default = {
value = IOM_ERROR_AIG_DEFAULT;
};
disabled = {
value = "";
};
};
{
id="InviteDebug";
text="Show debug messages";
helptext="Disable/Enable showing of debug strings, messages. (Mostly used for development)";
type = K_TEXT;
check = true;
callback = InviteOMatic_InviteDebugCheck;
feedback = function(state) end;
default = {
checked = false;
};
disabled = {
checked = false;
};
};
{
id="InviteClearHeader";
text="InviteOMatic Clear Lists";
helptext="InviteOMatic";
type = K_HEADER;
};
{
id="InviteResetAIG";
text="Reset Already in group";
helptext="Resets the list of players that are already in a group";
type = K_BUTTON;
callback = InviteOMatic_ResetAIG;
setup={buttonText="Reset AIG"};
};
{
id="InviteResetDecline";
text="Reset Decline";
helptext="Resets the list of players that declined the invite";
type = K_BUTTON;
callback = InviteOMatic_ResetDecline;
setup={buttonText="Reset Declines"};
};
{
id="InviteResetIgnore";
text="Reset Ignore";
helptext="Resets the list of players that ignored you";
type = K_BUTTON;
callback = InviteOMatic_ResetIgnore;
setup={buttonText="Reset Ignores"};
};
};
default = true;
};
Khaos.registerOptionSet(
"invite", optionSet
);
else
InviteOMatic.debug("Khaos not found");
end
end
function InviteOMatic_InviteAutoInviteCheck(state)
if( state.checked ) then
InviteOMatic.debug("Auto invite enabled");
InviteOMaticOptions["autoInvite"] = true;
if( IOM_BG_ACTIVE ) then
IOM_UPDATE_INVITE_TIMER = true;
end
else
InviteOMatic.debug("Auto invite disabled");
InviteOMaticOptions["autoInvite"] = false;
IOM_UPDATE_INVITE_TIMER = false;
end
end
function InviteOMatic_InviteWhisperCheck(state)
if( state.checked ) then
InviteOMatic.debug("Whisper invite enabled");
InviteOMaticOptions["whisperInvite"] = true;
else
InviteOMatic.debug("Whisper invite disabled");
InviteOMaticOptions["whisperInvite"] = false;
end
end
function InviteOMatic_InviteAutoPurgeCheck(state)
if( state.checked ) then
InviteOMatic.debug("Auto purge enabled");
InviteOMaticOptions["autoPurge"] = true;
if( IOM_BG_ACTIVE ) then
IOM_UPDATE_PURGE_TIMER = true;
end
else
InviteOMatic.debug("Auto purge disabled");
InviteOMaticOptions["autoPurge"] = false;
IOM_UPDATE_PURGE_TIMER = false;
end
end
function InviteOMatic_InviteIgnoreRetry(state)
InviteOMatic.debug("Ignore retries set to: "..state.slider);
InviteOMaticOptions["ignorettl"] = state.slider;
-- Update old TTL values, if one is bigger
end
function InviteOMatic_InviteDeclineRetry(state)
InviteOMatic.debug("Decline retries set to: "..state.slider);
InviteOMaticOptions["declinettl"] = state.slider;
-- Update old TTL values, if one is bigger
end
function InviteOMatic_InviteAIGRetry(state)
InviteOMatic.debug("Already in group retries set to: "..state.slider);
InviteOMaticOptions["aigttl"] = state.slider;
-- Update old TTL values, if one is bigger
end
function InviteOMatic_SendAIGSpamOption(state)
if( state.checked ) then
InviteOMatic.debug("Sending spam message when max aig retries is reached.");
InviteOMatic.sendAIGSpam = true;
else
InviteOMatic.debug("Not sending spam message when max aig retries is reached.");
InviteOMatic.sendAIGSpam = false;
end
end
function InviteOMatic_SendSpamOption(state)
if( state.checked ) then
InviteOMatic.debug("Sending spam message at first invite");
InviteOMaticOptions["sendInviteSpam"] = true;
else
InviteOMatic.debug("Not sending spam message at first invite");
InviteOMaticOptions["sendInviteSpam"] = false;
end
end
function InviteOMatic_InviteDebugCheck(state)
if( state.checked ) then
InviteOMatic.debug("Debug output enabled.");
InviteOMaticOptions["debug"] = true;
else
InviteOMatic.debug("Debug output disabled.");
InviteOMaticOptions["debug"] = false;
end
end
function InviteOMatic_PurgeCycleSliderCallback(state)
InviteOMatic.debug("Purge Cycle set to: "..state.slider.." seconds");
InviteOMaticOptions["purgeDelay"] = state.slider;
IOM_PURGE_TIMER = InviteOMaticOptions["purgeDelay"];
end;
function InviteOMatic_InviteCycleSliderCallback(state)
InviteOMatic.debug("Invite Cycle set to: "..state.slider.." seconds");
InviteOMaticOptions["inviteDelay"] = state.slider;
IOM_INVITE_TIMER = InviteOMaticOptions["inviteDelay"];
end;
function InivteOMatic_InviteMagicWord(state)
InviteOMaticOptions["magicWord"] = state.value;
InviteOMatic.debug("Magic word regexp set to: "..InviteOMaticOptions["magicWord"]);
end;
function InivteOMatic_InviteSpamMsg(state)
InviteOMaticOptions["inviteMsg"] = state.value;
InviteOMatic.debug("First spam message set to: "..InviteOMaticOptions["inviteMsg"]);
end;
function InivteOMatic_AIGSpamMsg(state)
InviteOMaticOptions["aigMsg"] = state.value;
InviteOMatic.debug("AIG spam message set to: "..InviteOMaticOptions["aigMsg"]);
end;
InviteOMatic = {
log = IOM_PrintMsg,
debug = IOM_PrintDebugMsg,
invite = InviteOMatic_InvitePlayer,
sendInvites = InviteOMatic_SendInvites,
disbandGroup = InviteOMatic_DisbandRaidGroup,
}