Raid没有收到C_ChatInfo.SendAddonMessage

我正在制作一个插件,必须将我的打断冷却时间发送到团队。

问题在于,每当我向团队发送消息时,我是唯一一个收到消息的人。

这是发送消息的代码:

C_ChatInfo.SendAddonMessage("KickRotation",string.format( "%0.2f",remainingCd ), "RAID")

这是事件处理程序:

frame:RegisterEvent("PLAYER_ENTERING_WORLD")
frame:RegisterEvent("CHAT_MSG_ADDON")
frame:SetScript("OnEvent", function(self, event, ...)
    local prefix, msg, msgType, sender = ...;
    if event == "CHAT_MSG_ADDON" then
        if prefix == "KickRotation" then
            print("[KickRotation]" ..tostring(sender) .." potrà interrompere tra: " ..msg);
        end
    end
    if event == "PLAYER_ENTERING_WORLD" then
        print("[KickRotation] v0.1 by Galfrad")
    end
end)

基本上,当消息被发送时,只有我收到了消息。

点赞
用户7652095
用户7652095

网络消息由服务器处理并传递给接收频道(在本例中为副本团)。你之所以能在本地看到该消息,但其他人看不到,是因为该消息会在本地系统(发送方)处理,以减少数据传输的重复。

服务器只接受并发送已注册到其中的消息。因此,您必须先向服务器注册您的插件消息,以便在请求的频道中其他玩家能够接收它。

首先,使用您已经给出的名称注册您的插件消息(但是请确保每个客户端只调用一次注册方法):

local success = C_ChatInfo.RegisterAddonMessagePrefix("KickRotation") -- Addon name.

接下来,请检查您的消息是否被接受并注册到服务器。如果success设置为false(失败),您可能需要处理适当的警告消息和通知给用户。如果失败,则表示服务器已禁用插件消息或您已达到插件消息注册的限制。

最后,请再次发送您的消息并检查是否没有失败。

if not C_ChatInfo.SendAddonMessage("KickRotation",string.format( "%0.2f",remainingCd ), "RAID") then
    print("[KickRotation] Failed to send add-on message, message rejected by the server.")
end
2020-05-12 22:00:41