1

開始しようとしている WoW/LUA スクリプトがありますが、Auctioneer アドオンの一部である Stubby アドオンと競合しているようです。これが私が受け取るメッセージです:

エラーが発生しました: スタビー カウント: 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

このエラーは、2 つのアドオンが両方ともチャット フレームをフィルタリングしようとしていることが原因ですか? もしそうなら、どうすればこれを行うことができますか?Blizzard がこれほどシンプルでありながら重要なコンセプトを 1 つのアドオンに限定しているのは、私には奇妙に思えます。

4

2 に答える 2

1

ここで何が起こったのかがわかったと思います。

使用していた参考文献Events/Communicationは、コンテキストに関係なく、特定のイベントの特定のパラメーターのみを示しています。

通常、コンテキストは OnEvent ハンドラです。

ChatFrame_AddMessageEventFilter関数を使用すると、チャット フレーム イベント用に独自のハンドラーではなくチャット フレームの OnEvent ハンドラーを使用でき、追加するフィルター用に適切に定義されたパラメーターがあります

OnEvent ハンドラーは次のようになります。

function Foo_OnEvent(self, event, ...)

最初の 2 つのパラメーターについて、「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 に答える