diff --git a/Heimdall.lua b/Heimdall.lua index 0043c28..4011918 100644 --- a/Heimdall.lua +++ b/Heimdall.lua @@ -128,6 +128,7 @@ local function init() --/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}} --/run Heimdall_Data.config = {inviter={enabled=true,keyword="+++"},deathReporter={enabled=true},spotter={enabled=true,everyone=true}} + --/run Heimdall_Data.config.inviter.enabled = true data.config = { spotter = { enabled = data.GetOrDefault(Heimdall_Data, { "config", "spotter", "enabled" }, true), diff --git a/Inviter.lua b/Inviter.lua index e4c1c0d..f4920c3 100644 --- a/Inviter.lua +++ b/Inviter.lua @@ -9,35 +9,58 @@ function data.Inviter.Init() return end + ---@type table + local channelMembers = {} + local channelRosterFrame = CreateFrame("Frame") + channelRosterFrame:RegisterEvent("CHANNEL_ROSTER_UPDATE") + channelRosterFrame:SetScript("OnEvent", function(self, event, index) + local count = select(5, GetChannelDisplayInfo(index)) + channelMembers = {} + for i = 1, count do + local name = GetChannelRosterInfo(index, i) + if name then + channelMembers[name] = true + end + end + end) + ---@param channelName string ---@return table - local function GetChannelMembers(channelName) + local function UpdateChannelMembers(channelName) + local friendsFrame = _G["FriendsFrame"] local channelFrame = _G["ChannelFrame"] - channelFrame:Show() + OpenFriendsFrame() + _G["FriendsFrameTab3"]:Click() + _G["ChannelButton2"]:Click() for i = 1, 40 do local button = _G["ChannelButton" .. i] if not button then break end local text = button:GetText() - if text == channelName then + if string.find(text, channelName) then button:Click() break end end - local index = GetSelectedDisplayChannel() - local count = select(5, GetChannelDisplayInfo(index)) - local res = {} - for i = 1, count do - local name = GetChannelRosterInfo(index, i) - if name then - res[name] = true - end - end - channelFrame:Hide() - return res + friendsFrame:Hide() + return channelMembers end + C_Timer.NewTicker(30, function() + UpdateChannelMembers(data.config.inviter.listeningChannel) + end) + +-- print("pls joomp") +-- hooksecurefunc("JumpOrAscendStart", function() +-- print("JOOMP") +-- UpdateChannelMembers(data.config.inviter.listeningChannel) +-- local foo = channelMembers +-- for name, _ in pairs(foo) do +-- print(name) +-- end +-- end) + local inviterGroupFrame = CreateFrame("Frame") local nextUpdate = 0 inviterGroupFrame:RegisterEvent("GROUP_ROSTER_UPDATE") @@ -50,7 +73,7 @@ function data.Inviter.Init() if nextUpdate >= GetTime() then return end nextUpdate = GetTime() + data.config.inviter.updateInterval - for name, _ in pairs(GetChannelMembers(data.config.inviter.listeningChannel)) do + for name, _ in pairs(channelMembers) do PromoteToAssistant(name, true) end