1

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

错误发生在:存根计数:1 消息:错误:运行挂钩后原始调用失败:ChatFrame_OnEvent 用法:SendChatMessage(text [,type] [,language] [,targetPlayer]) 调试:(
尾调用) :?[字符串“ :OnEvent”]:1:[字符串“: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

这个错误是因为两个插件都试图过滤聊天框吗?如果是这样,如何做到这一点?对我来说,暴雪将一个如此简单但重要的概念限制在一个插件上,这对我来说似乎很奇怪。

4

2 回答 2

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>
于 2012-08-20T19:30:22.170 回答
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 通常在此页面上是不正确的。正确的论点在上面的源代码中列出。第一个参数,一个表,我不确定它的用途。无论如何,此代码现在可以完全正常工作。

于 2012-08-19T23:59:34.360 回答