--[[ * Wykkyd's [ Group Tools ] * Sponsored & Supported by: Mostly Harmless (mostly-harmless-guild.com) * Author: Wykkyd, aka Wykkyd Gaming (wykkyd.gaming@gmail.com) * Special Thanks To: Zenimax Online Studios & Bethesda for The Elder Scrolls Online ]]-- WYK_GroupTools = {} WYK_GroupTools._v = {} WYK_GroupTools._v.major = 1 WYK_GroupTools._v.monthly = 8 WYK_GroupTools._v.daily = 4 WYK_GroupTools._v.minor = 1 WYK_GroupTools.Version = WYK_GroupTools._v.major .."."..WYK_GroupTools._v.monthly .."."..WYK_GroupTools._v.daily .."."..WYK_GroupTools._v.minor WYK_GroupTools.MAJOR = WYK_GroupTools._v.major.."."..WYK_GroupTools._v.monthly.."."..WYK_GroupTools._v.daily WYK_GroupTools.MINOR = WYK_GroupTools._v.minor WYK_GroupTools.Name = "wykkydsGroupTools" WYK_GroupTools.DisplayName = "Wykkyd's Group Tools" WYK_GroupTools.SettingsName = "|cFF2222Wykkyd's|r Config" WYK_GroupTools.SavedVariableVersion = 3 WYK_GroupTools.Player = GetUnitName("player"):gsub("%^%a+","") WYK_GroupTools.Settings = {} WYK_GroupTools.GlobalSettings = {} WYK_GroupTools.LoadSavedVariables = function( self ) if wykkydsGroupToolsGlobal == nil then wykkydsGroupToolsGlobal = {} end if wykkydsGroupToolsGlobal[self.SavedVariableVersion] == nil then wykkydsGroupToolsGlobal[self.SavedVariableVersion] = {} end if wykkydsGroupToolsGlobal[self.SavedVariableVersion][self.Player] == nil then wykkydsGroupToolsGlobal[self.SavedVariableVersion][self.Player] = {} end if wykkydsGroupToolsGlobal[self.SavedVariableVersion]["global"] == nil then wykkydsGroupToolsGlobal[self.SavedVariableVersion]["global"] = {} end self.Settings = wykkydsGroupToolsGlobal[self.SavedVariableVersion][self.Player] self.GlobalSettings = wykkydsGroupToolsGlobal[self.SavedVariableVersion]["global"] end WYK_GroupTools.LoadSettingsMenu = function( self ) self:CreateMenu() self:AddMenuAddonLabel() self:AddMenuBoolWithChildGroup( self.Settings, { { label = "|cFF2222GROUP LISTENER IS ON/OFF|r", settingKey = "enabled", defaultValue = false, typeOf = "checkbox", childWinName = "Quest Tracker Options" }, { label = "Group Tools Listen Channels", settingKey = "not used", typeOf = "header", }, { label = " ... Zone", settingKey = "channel - Zone", defaultValue = false, typeOf = "checkbox", }, { label = " ... Whisper", settingKey = "channel - Whisper", defaultValue = false, typeOf = "checkbox", }, { label = " ... Yell", settingKey = "channel - Yell", defaultValue = false, typeOf = "checkbox", }, { label = " ... Guild 1", settingKey = "channel - Guild 1", defaultValue = false, typeOf = "checkbox", }, { label = " ... Guild 2", settingKey = "channel - Guild 2", defaultValue = false, typeOf = "checkbox", }, { label = " ... Guild 3", settingKey = "channel - Guild 3", defaultValue = false, typeOf = "checkbox", }, { label = " ... Guild 4", settingKey = "channel - Guild 4", defaultValue = false, typeOf = "checkbox", }, { label = " ... Guild 5", settingKey = "channel - Guild 5", defaultValue = false, typeOf = "checkbox", }, }, function( val, settingKey ) self.Settings[settingKey] = val if settingKey == "enabled" then if val then self:RegisterEvent( EVENT_CHAT_MESSAGE_CHANNEL, WYK_GroupTools.WatchChat, false ) else self:UnregisterEvent( EVENT_CHAT_MESSAGE_CHANNEL ) end end end, "Channels >>" ) self:AddMenuSlider( "Group Size", nil, 2, 24, 1, function() return self:GetOrDefault( 4, self.Settings["group size"] ) end, function( val ) self.Settings["group size"] = val end ) self:AddMenuEditBox( "Listen Text", nil, false, function() return self:GetOrDefault( "invite x", self.Settings["listen text"] ) end, function( val ) self.Settings["listen text"] = val end ) end WYK_GroupTools.Initialize = function( self ) if self:GetOrDefault( false, self.Settings["enabled"] ) then self:RegisterEvent( EVENT_CHAT_MESSAGE_CHANNEL, WYK_GroupTools.WatchChat, false ) end end REGISTER_WYKKYD_FACTORY( WYK_GroupTools, false, true, function( self ) WYK_GroupTools:LoadSavedVariables() end, function( self ) WYK_GroupTools:LoadSettingsMenu() end, function( self ) WYK_GroupTools:Initialize() end ) WYK_GroupTools.channel = {} WYK_GroupTools.channel.ZONE = function() return GetChatChannelId("zone") end WYK_GroupTools.channel.WHISPER = function() return GetChatChannelId("whisper") end WYK_GroupTools.channel.YELL = function() return GetChatChannelId("yell") end WYK_GroupTools.channel.GUILD = {} WYK_GroupTools.channel.GUILD[1] = function() return CHAT_CHANNEL_GUILD_1 end WYK_GroupTools.channel.GUILD[2] = function() return CHAT_CHANNEL_GUILD_2 end WYK_GroupTools.channel.GUILD[3] = function() return CHAT_CHANNEL_GUILD_3 end WYK_GroupTools.channel.GUILD[4] = function() return CHAT_CHANNEL_GUILD_4 end WYK_GroupTools.channel.GUILD[5] = function() return CHAT_CHANNEL_GUILD_5 end WYK_GroupTools.IsLead = function() return IsUnitGroupLeader("player") end WYK_GroupTools.IsGrouped = function() return IsUnitGrouped("player") end WYK_GroupTools.CanInvite = function() return (WYK_GroupTools.IsLead() or not WYK_GroupTools.IsGrouped()) end WYK_GroupTools.WatchChat = function( eventCode, messageType, fromName, text ) --if not WYK_GroupTools:GetOrDefault( false, WYK_GroupTools.Settings["listener"] ) then return end local size, msg = WYK_GroupTools:GetOrDefault( 4, WYK_GroupTools.Settings["group size"] ), WYK_GroupTools:GetOrDefault( "invite x", WYK_GroupTools.Settings["listen text"] ) if GetGroupSize() >= size or GetGroupSize() >= 24 then --WYK_GroupTools.Settings["listener"] = false --WYK_GroupTools:UnregisterEvent( EVENT_CHAT_MESSAGE_CHANNEL ) return end local checkMessage = false if WYK_GroupTools:GetOrDefault( true, WYK_GroupTools.Settings["channel - Zone"] ) and WYK_GroupTools.channel.ZONE() == messageType then checkMessage = true end if WYK_GroupTools:GetOrDefault( false, WYK_GroupTools.Settings["channel - Whisper"] ) and WYK_GroupTools.channel.WHISPER() == messageType then checkMessage = true end if WYK_GroupTools:GetOrDefault( false, WYK_GroupTools.Settings["channel - Yell"] ) and WYK_GroupTools.channel.YELL() == messageType then checkMessage = true end if WYK_GroupTools:GetOrDefault( false, WYK_GroupTools.Settings["channel - Guild 1"] ) and WYK_GroupTools.channel.GUILD[1]() == messageType then checkMessage = true end if WYK_GroupTools:GetOrDefault( false, WYK_GroupTools.Settings["channel - Guild 2"] ) and WYK_GroupTools.channel.GUILD[2]() == messageType then checkMessage = true end if WYK_GroupTools:GetOrDefault( false, WYK_GroupTools.Settings["channel - Guild 3"] ) and WYK_GroupTools.channel.GUILD[3]() == messageType then checkMessage = true end if WYK_GroupTools:GetOrDefault( false, WYK_GroupTools.Settings["channel - Guild 4"] ) and WYK_GroupTools.channel.GUILD[4]() == messageType then checkMessage = true end if WYK_GroupTools:GetOrDefault( false, WYK_GroupTools.Settings["channel - Guild 5"] ) and WYK_GroupTools.channel.GUILD[5]() == messageType then checkMessage = true end local lT = string.len(msg) if checkMessage and string.sub(string.lower(text),1,lT) == string.lower(msg) and fromName ~= nil and fromName ~= "" then GroupInvite(fromName:gsub("%^%a+","")) GroupInviteByName(fromName:gsub("%^%a+","")) end end