什么时候可以在登录后使用SendChatMessage?

登录后,我想向公会频道发送聊天消息。 目前我正在监听以下事件: PLAYER_ENTERING_WORLD GUILD_ROSTER_UPDATE

一旦这些事件发生了(按顺序),我想发送聊天消息。然而,它从未发送成功。 代码:

print("应该发送")
SendChatMessage(msgToSend, "GUILD");

值得注意的是,如果我手动触发此操作,它可以正常工作。 每次都会在默认聊天窗口中看到“应该发送”的打印语句-因为这是预期的。我也检查了“msgToSend”包含的内容-并且少于255个字符。

那么,什么时候可以调用SendChatMessage?

点赞
用户714557
用户714557

你可能需要为事件设置标志,然后在另一个事件中稍后打印。

你可以在看到欢迎消息或欢迎消息被发布后的任何时候发送聊天消息。这很快就能让你从你的帧中接收事件。


这是我完成类似任务的方法:

首先把你的发送代码放在宏中进行测试。不要担心消息的定时,直到你在宏中看到它起作用为止。

你可以创建自己的打印函数将通用消息发送到聊天窗口,类似于:

function MyPrint( msg, r, g, b, frame, id)
    (frame or DEFAULT_CHAT_FRAME):AddMessage(msg, r or 1, g or 1, b or 0, id or 0)
end

-- 放这些在你的事件处理程序中
MyPrint("event PLAYER_ENTERING_WORLD")

MyPrint("event GUILD_ROSTER_UPDATE")

然后用它进行调试。

你需要分解和解决问题,因为有很多事情可能都是错误的,导致你的问题,没有人能真正提供一个明确的答案。

我知道,如果你在欢迎消息之前尝试用print写入聊天消息,它至少过去是行不通的。我记得以前会延迟消息直到某个特定的事件触发,然后再打印它们。

2018-09-13 22:49:00
用户3012708
用户3012708

为了能够向公会发送聊天消息,您需要等待“CLUB_STREAM_SUBSCRIBED”事件发生。

这是因为公会频道成为一种“社区”频道 - 以前似乎不需要。

因此,添加事件监听器:

frame:RegisterEvent("CLUB_STREAM_SUBSCRIBED");

可以解决这个问题。

2018-09-14 06:11:51