-
Posted by bastyra on Wed, 21 Dec 2011 03:36:02
So the problem, I don't want to be an auto guild inviter that just spams everyone all the time. I find it distasteful and annoying, so my solution is to use TBA to announce and alter a party whisper invite mod to do the invite as soon as they decide to ask for an invite.
I chose TBA as a good choice because it catalogues all the people whispered and will not whisper for another 2 weeks(if they're still un-guilded).
The addon I've chosen to modify is WhisperInviter because its very simple and i figured I could single out the command pretty easily to change in order to get it to do a guild invite instead of party/raid invite. I've was successful in one aspect of the modification, removing the group size/leadership requirements, but the ultimate goal was still not met.
my current script looks like:
local addonName, WhisperGuildInvite = ...; WhisperGuildInvite.name = addonName; WhisperGuildInvite.version = GetAddOnMetadata(addonName, "Version"); function WhisperInvite:GuildInvite(name) if not self.settings.enabled then return false, "disabled"; end -- 0 when no one else is in the same party local partyMemberCount = GetRealNumPartyMembers(); -- 0 when not in a raid local raidMemberCount = GetRealNumRaidMembers(); if raidMemberCount == 0 then -- Not in raid if partyMemberCount == 0 then -- Solo GuildInviteUnit(name); return true; end end; end; --[[ Event Management ]] function WhisperGuildInvite:RegisterEvents(eventList) for event, handler in pairs(eventList) do self.eventFrame:RegisterEvent(event); end end; function WhisperGuildInvite:UnregisterEvents(eventList) for event, handler in pairs(eventList) do self.eventFrame:UnregisterEvent(event); end end; --[[ Frame Event Handling ]] WhisperGuildInvite.events = { ["VARIABLES_LOADED"] = function (self) if not WhisperGuildInvite_Persistent then WhisperGuildInvite_Persistent = { enabled = true; autoconvert = true; keyword = "invite"; }; end; self.settings = WhisperInvite_Persistent; end; ["PLAYER_LOGIN"] = function (self) end; ["PLAYER_REGEN_DISABLED"] = function (self) end; ["PLAYER_REGEN_ENABLED"] = function (self) end; ["CHAT_MSG_WHISPER"] = function (self, message, sender) if string.lower(message) == self.settings.keyword then local success, reason = self:GuildInvite(sender); if not success then SendChatMessage("Invite Error: "..reason, "WHISPER", nil, sender); end; end end; ["CHAT_MSG_SYSTEM"] = function (self, message, sender) local sender = string.match(message, self.errAlreadyInGroup); if sender then SendChatMessage("Invite Error: ".."already in group", "WHISPER", nil, sender); end end; } WhisperGuildInvite.OnEvent = function (frame, event, ...) local self = WhisperGuildInvite; -- Static Method if self.events[event] then self.events[event](self, ...); else self:Message("WhisperInvite Error: Unknown Event"); end; end; --[[ Slash Commands]] WhisperGuildInvite.slashCommands = { ["enable"] = function (self) self.settings.enabled = true; self:Message("WhisperInvite enabled"); end; ["disable"] = function (self) self.settings.enabled = false; self:Message("WhisperInvite disabled"); end; ["keyword"] = function (self, keyword) self.settings.keyword = string.lower(keyword); self:Message("WhisperGuildInvite keyword set to "..self.settings.keyword); end; }; WhisperGuildInvite.OnSlashCommand = function (msg) local self = WhisperGuildInvite; -- Static Method local cmd, arg = string.match(msg, "^(%a*)%s*(.*)$"); if cmd then cmd = string.lower(cmd); if self.slashCommands[cmd] then self.slashCommands[cmd](self, arg); else self:Message("WhisperGuildInvite:") self:Message("/whisperguildinvite enable|disable"); self:Message("/whisperguildinvite keyword <keyword>"); end; end; end; -- [[ Misc ]] function WhisperInvite:Message(msg) DEFAULT_CHAT_FRAME:AddMessage(msg); end; -- [[ Load Event Handling ]] function WhisperInvite:Load() -- Slash command SlashCmdList["WHISPERGUILDINVITE"] = self.OnSlashCommand; SLASH_WHISPERGUILDINVITE1 = "/whisperguildinvite"; -- Events self.eventFrame = CreateFrame("Frame", nil, UIParent); self.eventFrame:SetScript("OnEvent", self.OnEvent); self:RegisterEvents(self.events); end; WhisperGuildInvite.errAlreadyInGroup = string.gsub(ERR_ALREADY_IN_GROUP_S, "%%s", "(%%a*)"); WhisperGuildInvite:Load();
Basically I got rid of the LUA errors at the expense of nothing happening at all. Not sure where to look for fixes.
I apologize in advance, this is the first bit of coding that I've ever attempted so its definatly a crude way to modify i'm sure.
Thanks again,
Chris
-
Posted by jnwhiteh on Thu, 22 Dec 2011 14:27:24
I'm not sure what to tell you =) If you have an error or a specific question, I can try to help!