7

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

私はWowAddonStudioを使用してWowでおならアプリケーションを作成しています。この機能を使用すると、座る動作のみが表示され、チャットウィンドウには手招きと月のみが表示されました。ダンスエモートはどこにも現れませんでした。

4

6 に答える 6

5

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

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

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

于 2009-06-30T00:44:43.150 に答える
3

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

于 2009-06-22T21:52:37.383 に答える
3

私にとってうまくいったのは、ループを介してインクリメントされるグローバル変数を持つことです。そのような

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

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

于 2010-01-04T19:50:03.693 に答える
2

次のエモートを実行する前に、しばらく待つことをお勧めします。私の知る限り、スパムが多すぎるとサーバーはあなたを切断します。これは時々それを引き起こすかもしれません。

それに加えて、おそらくクライアントはそれを防ぐ方法を持っていると思いますか?いずれの場合も、エモート間にある種の1秒未満の遅延を追加することをお勧めします。

乾杯、
アミット・ロン

于 2009-06-22T21:30:29.193 に答える
1

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

于 2009-09-03T03:35:26.460 に答える
1

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

于 2010-01-26T23:31:29.713 に答える