Thread Tools Display Modes
03-21-21, 04:48 AM   #1
hamunaptra
A Murloc Raider
Join Date: Oct 2009
Posts: 4
Question SendAddonMessage to Channel not working

As a followup to my previous post about sending messages around...

It seems that using SendAddonMessage with a custom channel doesn't work (or I'm doing something totally wrong).

If I send a message with SendAddonMessage to a party, it works fine, but if I do it to a (custom) channel, nothing get's received.

Sample project attached. What am I doing wrong? It looks right...

Code:
SLASH_ZSCT1 = "/zsct"

SlashCmdList["ZSCT"] = function(msg)
    print("Sent message through party ...")
    C_ChatInfo.SendAddonMessage(prefix, "sent using party")
    print("Sent message through channel (" .. channelid .. ") ...")
    C_ChatInfo.SendAddonMessage(prefix, "sent using channel", "CHANNEL", channelid)
end

local function zSendChatTest_EventHandler(self, event, pre, msg, distribution, sender)
    if pre == prefix then
        print("Received message " .. msg)
    end
end

channelname = "zsendchattest"
prefix = "zsendchattest"
password = "secret"

JoinChannelByName(channelname, password)
channelid = GetChannelName(channelname)

C_ChatInfo.RegisterAddonMessagePrefix(prefix)

zSendChatTest_Frame = CreateFrame("Frame")
zSendChatTest_Frame:SetScript("OnEvent",  zSendChatTest_EventHandler)
zSendChatTest_Frame:RegisterEvent("CHAT_MSG_ADDON")

print("ZSCT Loaded")
Results:
Client 1 ("master")


Client 2 ("slave")
Attached Files
File Type: zip zSendChatTest.zip (1,000 Bytes, 105 views)
  Reply With Quote
03-25-21, 07:47 AM   #2
Ketho
A Pyroguard Emberseer
 
Ketho's Avatar
AddOn Author - Click to view addons
Join Date: Mar 2010
Posts: 1,026
This works for me fine on Retail (I didn't bother writing code to join a specific chat channel and get the index from that)

I also didn't test it with another player or account, just with myself
Lua Code:
  1. local prefix = "SomePrefix123"
  2. local playerName = UnitName("player")
  3.  
  4. local function OnEvent(self, event, ...)
  5.     if event == "CHAT_MSG_ADDON" then
  6.         print(event, ...)
  7.     elseif event == "PLAYER_ENTERING_WORLD" then
  8.         local isInitialLogin, isReloadingUi = ...
  9.         if isInitialLogin or isReloadingUi then
  10.             C_ChatInfo.RegisterAddonMessagePrefix(prefix)
  11.             C_ChatInfo.SendAddonMessage(prefix, "Hello world!", "CHANNEL", 5)
  12.         end
  13.     end
  14. end
  15.  
  16. local f = CreateFrame("Frame")
  17. f:RegisterEvent("CHAT_MSG_ADDON")
  18. f:RegisterEvent("PLAYER_ENTERING_WORLD")
  19. f:SetScript("OnEvent", OnEvent)
  Reply With Quote
03-25-21, 11:40 AM   #3
hamunaptra
A Murloc Raider
Join Date: Oct 2009
Posts: 4
Hm... that also works across different chars on different accounts, so yeay .

I think the problem is/was, that my program was joining the channel too early in the loading process (immediately instead of after entering the world). With that change, it now works in my bigger addon, as well.

Thank you!
  Reply With Quote

WoWInterface » Developer Discussions » Lua/XML Help » SendAddonMessage to Channel not working

Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

vB code is On
Smilies are On
[IMG] code is On
HTML code is Off