魔兽世界聊天帧过滤器冲突

时间:2012-08-19 20:07:14

标签: lua world-of-warcraft

我有一个我试图启动的WoW / LUA脚本,但它似乎与Stubby插件冲突,我相信它是Auctioneer插件的一部分。这是我收到的消息:

  

发生错误:Stubby Count:1消息:错误:原始呼叫失败   运行挂钩后:ChatFrame_OnEvent用法:   SendChatMessage(text [,type] [,language] [,targetPlayer])Debug:
  (尾巴召唤): [string“:OnEvent”]:1:         [string“:OnEvent”]:1

现在,冲突插件中唯一发生的事情是:

ChatFrame_AddMessageEventFilter("CHAT_MSG_PARTY", partyMsg)

partyMsg中的代码也非常简单:

local function partyMsg(msg,author,language,lineID,senderGUID)
  if (store ~= msg) then
    SendChatMessage(msg,"SAY",nil,nil);
  end
  store = msg;
end

这个错误是由于两个插件都试图过滤聊天框架吗?如果是这样,怎么办呢?对我来说,暴雪会有一个如此简单而又重要的概念仅限于一个插件,这似乎很奇怪。

2 个答案:

答案 0 :(得分:1)

我想我看到这里发生了什么。

您使用的引用Events/Communication仅显示特定事件的特定参数,无论上下文如何。

上下文通常是OnEvent处理程序。

ChatFrame_AddMessageEventFilter功能允许您使用聊天框架的OnEvent处理程序而不是您自己的聊天框架事件,并为您添加的过滤器定义了明确的参数。

OnEvent处理程序可能如下所示:

function Foo_OnEvent(self, event, ...)

对于前两个参数,'ChatFrame'过滤器必须如下所示:

function Foo_ChatFrameFilter(self, event, msg, ...)

ChatFrame过滤器是特定的。但是对于OnEvent,你可以制作一个Lua'处理程序',它不关心它来自哪个框架:

<OnEvent>
    MyEventHandler(event, ...)
</OnEvent>

答案 1 :(得分:0)

为了完成,我将包含此插件的完整来源:

local function partyMsg(someTable,msgType,msg,user,language,...)
  if (store ~= msg) then
      SendChatMessage(user .. " just said: ".. msg .. " using that sneaky " .. language .. " language.");
  end
  store = msg;
  return false;
end

ChatFrame_AddMessageEventFilter("CHAT_MSG_PARTY", partyMsg)
ChatFrame_AddMessageEventFilter("CHAT_MSG_PARTY_LEADER",partyMsg)

原始代码存在一些问题:

1)我使用WoWWiki来获取我的信息,首先,我读错了。 lineID和senderGUID不是第4和第5个参数。然后,除此之外,WoWWiki在这个页面上总体上是不正确的。上面列出了正确的参数。第一个论点,一个表,我不确定它的目的。无论如何,这段代码现在可以完全运行。