World of Warcraftの仕事でluaの2つのエモートのコンボをどのように作成しますか?

StackOverflow https://stackoverflow.com/questions/1024960

  •  06-07-2019
  •  | 
  •  

質問

World of Warcraftの仕事でluaの2つのエモートのコンボをどのように作成しますか?

function Button2_OnClick()
    PlaySoundFile("Interface\\Addons\\Fart\\common_fart[1].wav");
    DoEmote("moon");
    DoEmote("sit");
    DoEmote("dance");
    DoEmote("beckon");
end

Wow Addon Studioを使用して、Wowでオナラアプリケーションを作成しています。 この機能を使用すると、座り動作のみが表示され、招きと月はチャットウィンドウにのみ表示されました。ダンスの感情表現はどこにも現れませんでした。

役に立ちましたか?

解決

Blizzardは、金鉱採掘または粉砕ボットの作成に不可欠な成分であるため、luaを待機または一時停止させるために使用できるものを明示的に禁止しています。

すべてのCPUを使用せずにluaを待機させるネイティブ(つまり、luaのみ)の方法はありません。 WOWクライアントの外部では、 win.sleep またはホストアプリケーションまたはオペレーティングシステムのスレッド関数を呼び出す他のサードパーティAPI呼び出し。

頻繁なイベント(テキストがチャットウィンドウに到着するなど)でコードを実行し、イベントハンドラーで次のコマンドの実行を許可するのに十分な時間が経過したかどうかを確認することにより、待機をシミュレートすることができる場合がありますシーケンス。これはおそらく非常に正確なタイマーではなく、コマンドのシーケンス、それぞれのタイミング、現在のコマンドなどを保持するデータ構造を作成する必要があるため、かなり複雑になります。

他のヒント

これは、ゲームの自動化(ボット)を防ぐためのAPIの意図的な制限である可能性があります。

私のために働いたのは、ループを通してインクリメントされるグローバル変数を持つことです。など

Integer count = 0;
function Button2_OnClick()
    i++
    switch
    case(1)
        PlaySoundFile("Interface\\Addons\\Fart\\common_fart[1].wav");
    case(2)
         DoEmote("moon");
    case(3)
         DoEmote("sit");
    case(4)
         DoEmote("dance");
    case(5)
         DoEmote("beckon");
    default
         i=0;
    end
end

その後、ボタンを複数回クリックする必要がありますが、目的の効果が得られます。

次のエモートを行う前に、しばらく待つことをお勧めします。私が知る限り、サーバーは、スパムが多すぎると切断します。この可能性がありますは、それを時々トリガーするだけです。

それ以外に、クライアントがそれを防ぐ方法を持っていると思いますか?どちらの場合でも、エモート間に何らかの秒の遅延を追加することをお勧めします。

乾杯、
アミット・ロン

最後の2つは座っている間にできないのでしょうか?

infact、 integer i = 0 。整数「count」を定義してからiを使用するのは正しくないためです。 :)

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top