2016-04-11 9 views
1

DoEmote("slap", "X")私はxを初期のemoteメッセージを送信している人のために何らかの議論にしたいです。 私はarg2、arg12、送信者などを試しましたWorld of Warcraft Addon API Beginner at Lua

私はあなたがemoterをターゲットにして/ slapで反応するようにすることも試みました。しかしどちらもうまくいかない。ほとんどすべての他のすごいAPI関数として

local p3 = CreateFrame("Frame") 
p3:RegisterEvent("CHAT_MSG_TEXT_EMOTE", arg1, arg2, arg12) 
p3:SetScript("OnEvent", function(self, event, arg1, arg2) 
    if event == ("CHAT_MSG_TEXT_EMOTE") 
     and strfind(arg1, "laughs") 
     and strfind(arg1, "you.") 
     and name == ("Zalíssa") 
     then DoEmote("slap", "") 
    end 
    end) 
+0

「どちらもうまくいかない」 - どのようにテストしましたか?エラーはありましたか?試したすべてのケースで偽である可能性がある巨大なIF条件を持っているように見えます。したがって、DoEmoteの部分に障害がないように見えても、コードは機能していないようです。 DoEmoteには届いていますか?そうであれば、どのパラメータが送信者名であるはずですか?あなたは変数を表示して、盲目的に作業するのではなく、参照してください。あなたがすでにこの情報を知っていれば、それを共有してください。 :) – Rochet2

答えて

3

DoEmoteは、2番目のパラメータとしてUnitIdを受け入れます。彼らがあなたのパーティーや襲撃に参加している場合、あなたは個々のプレイヤーの名前を使用することができます(そしてそれらに行動する)。

希望のプレイヤーがあなたのターゲットになっている場合は、単にDoEmote("slap", "target")とすることができます。そうでない場合は、あなたのパーティー/レイドメンバーtargettargettarget、およびfocusユニットをスキャンして、いずれかがあなたの希望のプレイヤーであるかどうかを調べることができます。UnitNameが返されたものを比較し、DoEmoteに対応するIDを使用してください。

あなたのプレイヤーが有効なUnitIdに対応していない場合、つまり自分自身を含むあなたの襲撃者/党員の誰かが集中している/ターゲットとしていない/連鎖していない場合、あなたは何もできません。あなたは、IDに対応するユニットでしか行動できません。

SendChatMessageEMOTEチャンネルを「slapsZalíssa」と書いてみてください。最後の手段としての議論として。これは、すべての欠点を持つ/eチャットコマンドと同じ効果があります。テキストはそのまま送信されます。クライアントの他の言語では翻訳が実行されません。エモートアニメーションやサウンドは再生されず、プレーヤー名は無効/拒否されません。それが重要な言語で

関連する問題