Implement inviter
This commit is contained in:
		
							
								
								
									
										17
									
								
								Heimdall.lua
									
									
									
									
									
								
							
							
						
						
									
										17
									
								
								Heimdall.lua
									
									
									
									
									
								
							@@ -8,6 +8,9 @@ local addonname, data = ...
 | 
				
			|||||||
-- Maybe even make an alert when someone does too much damage to someone else...
 | 
					-- Maybe even make an alert when someone does too much damage to someone else...
 | 
				
			||||||
-- But that would not be trivial as of now, I can't think of a way to do it sensibly
 | 
					-- But that would not be trivial as of now, I can't think of a way to do it sensibly
 | 
				
			||||||
-- TODO: Implement auto grouping via agent, maybe find "+" or something
 | 
					-- TODO: Implement auto grouping via agent, maybe find "+" or something
 | 
				
			||||||
 | 
					-- TODO: Implement some sort of automatic grouping feature...
 | 
				
			||||||
 | 
					-- Don't know how to elect leader yet... Who invites?
 | 
				
			||||||
 | 
					-- Maybe we can just make it agent #6, have him always be the group leader?
 | 
				
			||||||
 | 
					
 | 
				
			||||||
local function init()
 | 
					local function init()
 | 
				
			||||||
    ---@class Heimdall_Data
 | 
					    ---@class Heimdall_Data
 | 
				
			||||||
@@ -34,6 +37,7 @@ local function init()
 | 
				
			|||||||
    ---@field Messenger { Init: fun() }
 | 
					    ---@field Messenger { Init: fun() }
 | 
				
			||||||
    ---@field Spotter { Init: fun() }
 | 
					    ---@field Spotter { Init: fun() }
 | 
				
			||||||
    ---@field DeathReporter { Init: fun() }
 | 
					    ---@field DeathReporter { Init: fun() }
 | 
				
			||||||
 | 
					    ---@field Inviter { Init: fun() }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    --- Config ---
 | 
					    --- Config ---
 | 
				
			||||||
    ---@class HeimdallConfig
 | 
					    ---@class HeimdallConfig
 | 
				
			||||||
@@ -41,6 +45,7 @@ local function init()
 | 
				
			|||||||
    ---@field who HeimdallWhoConfig
 | 
					    ---@field who HeimdallWhoConfig
 | 
				
			||||||
    ---@field messenger HeimdallMessengerConfig
 | 
					    ---@field messenger HeimdallMessengerConfig
 | 
				
			||||||
    ---@field deathReporter HeimdallDeathReporterConfig
 | 
					    ---@field deathReporter HeimdallDeathReporterConfig
 | 
				
			||||||
 | 
					    ---@field inviter HeimdallInviterConfig
 | 
				
			||||||
    ---@field whisperNotify table<string, string>
 | 
					    ---@field whisperNotify table<string, string>
 | 
				
			||||||
    ---@field stinkies table<string, boolean>
 | 
					    ---@field stinkies table<string, boolean>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -73,6 +78,11 @@ local function init()
 | 
				
			|||||||
    ---@field zoneOverride string?
 | 
					    ---@field zoneOverride string?
 | 
				
			||||||
    ---@field duelThrottle number
 | 
					    ---@field duelThrottle number
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    ---@class HeimdallInviterConfig
 | 
				
			||||||
 | 
					    ---@field enabled boolean
 | 
				
			||||||
 | 
					    ---@field listeningChannel string
 | 
				
			||||||
 | 
					    ---@field keyword string
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    --- Data ---
 | 
					    --- Data ---
 | 
				
			||||||
    ---@class HeimdallMessengerData
 | 
					    ---@class HeimdallMessengerData
 | 
				
			||||||
    ---@field queue table<string, Message>
 | 
					    ---@field queue table<string, Message>
 | 
				
			||||||
@@ -114,6 +124,7 @@ local function init()
 | 
				
			|||||||
    --/run Heimdall_Data.config = {deathReporter={enabled=true}}
 | 
					    --/run Heimdall_Data.config = {deathReporter={enabled=true}}
 | 
				
			||||||
    --/run Heimdall_Data.config = {deathReporter={enabled=false},spotter={enabled=false}}
 | 
					    --/run Heimdall_Data.config = {deathReporter={enabled=false},spotter={enabled=false}}
 | 
				
			||||||
    --/run Heimdall_Data.config = {deathReporter={enabled=false},spotter={enabled=true,everyone=true}}
 | 
					    --/run Heimdall_Data.config = {deathReporter={enabled=false},spotter={enabled=true,everyone=true}}
 | 
				
			||||||
 | 
					    --/run Heimdall_Data.config = {inviter={enabled=true},deathReporter={enabled=true},spotter={enabled=true,everyone=true}}
 | 
				
			||||||
    data.config = {
 | 
					    data.config = {
 | 
				
			||||||
        spotter = {
 | 
					        spotter = {
 | 
				
			||||||
            enabled = data.GetOrDefault(Heimdall_Data, { "config", "spotter", "enabled" }, true),
 | 
					            enabled = data.GetOrDefault(Heimdall_Data, { "config", "spotter", "enabled" }, true),
 | 
				
			||||||
@@ -226,6 +237,11 @@ local function init()
 | 
				
			|||||||
            ["Чмодвенк"] = true,
 | 
					            ["Чмодвенк"] = true,
 | 
				
			||||||
            ["Шпек"] = true,
 | 
					            ["Шпек"] = true,
 | 
				
			||||||
        }),
 | 
					        }),
 | 
				
			||||||
 | 
					        inviter = {
 | 
				
			||||||
 | 
					            enabled = data.GetOrDefault(Heimdall_Data, { "config", "inviter", "enabled" }, false),
 | 
				
			||||||
 | 
					            listeningChannel = data.GetOrDefault(Heimdall_Data, { "config", "inviter", "listeningChannel" }, "Agent"),
 | 
				
			||||||
 | 
					            keyword = data.GetOrDefault(Heimdall_Data, { "config", "inviter", "keyword" }, "+"),
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    data.raceMap = {
 | 
					    data.raceMap = {
 | 
				
			||||||
@@ -314,6 +330,7 @@ local function init()
 | 
				
			|||||||
    data.Messenger.Init()
 | 
					    data.Messenger.Init()
 | 
				
			||||||
    data.Spotter.Init()
 | 
					    data.Spotter.Init()
 | 
				
			||||||
    data.DeathReporter.Init()
 | 
					    data.DeathReporter.Init()
 | 
				
			||||||
 | 
					    data.Inviter.Init()
 | 
				
			||||||
    print("Heimdall loaded!")
 | 
					    print("Heimdall loaded!")
 | 
				
			||||||
end
 | 
					end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -11,4 +11,5 @@ Spotter.lua
 | 
				
			|||||||
Whoer.lua
 | 
					Whoer.lua
 | 
				
			||||||
Messenger.lua
 | 
					Messenger.lua
 | 
				
			||||||
DeathReporter.lua
 | 
					DeathReporter.lua
 | 
				
			||||||
 | 
					Inviter.lua
 | 
				
			||||||
Heimdall.lua
 | 
					Heimdall.lua
 | 
				
			||||||
							
								
								
									
										53
									
								
								Inviter.lua
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										53
									
								
								Inviter.lua
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,53 @@
 | 
				
			|||||||
 | 
					local addonname, data = ...
 | 
				
			||||||
 | 
					---@cast data HeimdallData
 | 
				
			||||||
 | 
					---@cast addonname string
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					data.Inviter = {}
 | 
				
			||||||
 | 
					function data.Inviter.Init()
 | 
				
			||||||
 | 
						if not data.config.inviter.enabled then
 | 
				
			||||||
 | 
							print("Heimdall - Inviter disabled")
 | 
				
			||||||
 | 
							return
 | 
				
			||||||
 | 
						end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						local inviterGroupFrame = CreateFrame("Frame")
 | 
				
			||||||
 | 
						inviterGroupFrame:RegisterEvent("GROUP_ROSTER_UPDATE")
 | 
				
			||||||
 | 
						inviterGroupFrame:SetScript("OnEvent", function(self, event, ...)
 | 
				
			||||||
 | 
							if not UnitIsGroupLeader("player") then return end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							if not IsInRaid() then
 | 
				
			||||||
 | 
								ConvertToRaid()
 | 
				
			||||||
 | 
							end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							if not IsEveryoneAssistant() then
 | 
				
			||||||
 | 
								SetEveryoneIsAssistant(true)
 | 
				
			||||||
 | 
							end
 | 
				
			||||||
 | 
						end)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						local inviterChannelFrame = CreateFrame("Frame")
 | 
				
			||||||
 | 
						inviterChannelFrame:RegisterEvent("CHAT_MSG_CHANNEL")
 | 
				
			||||||
 | 
						inviterChannelFrame:SetScript("OnEvent", function(self, event, msg, sender, ...)
 | 
				
			||||||
 | 
							local channelId = select(6, ...)
 | 
				
			||||||
 | 
							local channelname = ""
 | 
				
			||||||
 | 
							---@type any[]
 | 
				
			||||||
 | 
							local channels = { GetChannelList() }
 | 
				
			||||||
 | 
							for i = 1, #channels, 2 do
 | 
				
			||||||
 | 
								---@type number
 | 
				
			||||||
 | 
								local id = channels[i]
 | 
				
			||||||
 | 
								---@type string
 | 
				
			||||||
 | 
								local name = channels[i + 1]
 | 
				
			||||||
 | 
								if id == channelId then
 | 
				
			||||||
 | 
									channelname = name
 | 
				
			||||||
 | 
								end
 | 
				
			||||||
 | 
							end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							if channelname ~= data.config.inviter.listeningChannel then
 | 
				
			||||||
 | 
								return
 | 
				
			||||||
 | 
							end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							if msg == data.config.inviter.keyword then
 | 
				
			||||||
 | 
								InviteUnit(sender)
 | 
				
			||||||
 | 
							end
 | 
				
			||||||
 | 
						end)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						print("Heimdall - Inviter loaded")
 | 
				
			||||||
 | 
					end
 | 
				
			||||||
		Reference in New Issue
	
	Block a user