アプリビレッジ

おすすめのゲーム・スマホアプリの情報やストーリーなどの濃い話(ネタバレ含む)、面白い口コミまでもひっそりと公開中!

ゲーム自動化から今流行のプログラミングを学んでいこう。これだけ読めば簡単なマクロなら自分で作れるようになるぞ!

公開:2021年05月12日(最終更新:2022年02月18日)

ゲームをマクロで自動化させたくて、このページに辿り着いた方に朗報です。前回はゲーム自動化を行うマクロについての基礎知識をお送りしましたが、今回はいよいよ実践編になります。

前回作ったゲーム自動化のファイルを利用しますので、UWSCについてよくわからない人は前回の記事から読まれることをおすすめします。

前回のマクロでは細かいところに手が届かず、何度も実行を押さなければいけない陳腐なものでした。今回はそれに手を加えて、延々とループをさせたり、条件によってクリックする場所を変えたりして、放置しておいてもどんどんクエストを回るように改造していきます。

今流行のプログラミングの基礎知識にもなりますので、興味のある方はぜひ続きを読んでくださいね。それではいきましょう。

ゲーム自動化のためのファイル操作

まずは前回使ったUWSCのファイルを開ける状態にしましょう。ファイルの場所が分からないという人は、UWSCを立ち上げてもう1度ファイルを作ってください。できましたか。

前回はファイルの場所などはどこでも良かったですが、これからはファイルの場所は常に把握しておいてください。そうでなければ、これからマクロを作っていく上で……いえ、プログラミングを覚える上で絶対に挫折してしまいます。プログラミングの最初の難関がファイルの指定だからです。

UWSCでもファイルの指定を行います。画像ファイルを認識させて、同じファイルをクリックさせることが出来るので、ゲーム自動化を行う上でかなり重要な技術となります。ですので、これから触るファイルの場所は必ず覚えておいてくださいね。

ファイルが覚えにくい場所にあるなら、覚えやすい場所に移動させましょう。

ファイルを開くためのアプリを指定する

それではファイルを開いて中身を覗いてみましょう。ダブルクリックすると、おそらく関連付けされていないので、以下の画面が出てくると思います。

その他を選び、「メモ帳」などのテキストエディタを指定しましょう。テキストエディタはいろいろと種類がありますので、自分が使いやすいモノを選んでください。おすすめは文字コードも指定でき、シンプルに使える「TeraPad」です。

ファイルを開いてコードを確認する

テキストエディタでファイルを開くと「MMV」「BTN」「ACW」で始まる文字列が並んでいるはずです。まずはこれが何を意味するのかを説明しますね。

「MMV」=マウスの場所を示す。
「BTN」=マウスがクリックした場所を示す。
「ACW」=クリックしたウインドウの名前を示す。

カッコの中にはそれぞれの位置や属性が入っています。ここまでは問題ありませんよね。では、中身をいじっていきましょう。まずは「MMV」で始まるものはカッコを含めてすべて削除してください。
※例:MMV(839,763,16)

マウスのカーソルが乗ることでボタンが表示されるなど、特殊な状況以外では「MMV」は必要ありません。遠慮なく削除しましょう。全て終わったら、「ACW」で始まる一行といくつかの「BTN」の塊になるはずです。

UWSCの設定から「記録方法」→「低レベル記録」→「余計な時間、マウス移動は記録しない」にチェックを入れるとMMVは記録されなくなります。

では、「ACW」と「BTN」の詳しい説明に入りましょう。ACWではどのウインドウをクリックし、どのような大きさだったのかを記録します。

具体的に説明すると

ACW(GETID("ウィンドウのID"), 横, 縦, 幅, 高さ, ms)

横と縦がウインドウの位置で、幅と高さがウインドウサイズになります。

最後のmsは変更までの時間になります。即時変更で問題なければ0で問題ありません。ウインドウのIDに関しては、完全一致の必要がありますので、ウインドウが動かないようであれば、IDを短くするなど工夫が必要になります。ID内の後ろ側にある「,””」の部分を削除して省略すれば動く場合が多いです。※上の画像で言うところの「,"chrome_widgetwin_1"」の部分になります。

BTNはマウスクリックに関する指示です。

BTN(押すボタン, 状態, 横, 縦, ms)

msに関してはACWのところでも説明したように待ち時間を示していますので省略します。今後もmsとなっているものは、基本的に操作までの待ち時間だと考えてください。特別な場合を除き説明しません。

押すボタンに関しては、左クリックなら「LEFT」、右クリックなら「RIGNT」、中央のボタンなら「MIDDLE」、中央ボタンのスクロールなら「WHEEL」になります。

ホイールの書き方は例外です。

BTN(WHEEL, 距離, ms)

横や縦の指定がない代わりに、距離を指定することになります。

距離の指定に関して、上方向がプラスで、下方向がマイナスです。下に少しスクロールさせたいなら「BTN(WHEEL, -10)」と「-10」くらいから指定して下さい。数字が大きいと思いがけないほど移動します。

ホイールはマウスカーソルが乗っているウインドウをスクロールさせるので、使用する場合にはマウスカーソルの位置に気をつけましょう。

ゲーム自動化の基本である座標指定

さて、ここからはプログラミングぽくなっていく話ですが、LEFTの後ろにある部分を見てください。CLICKだけでなく、DOWNやUPになっていませんでしょうか? もしもなっているのであれば、それはマウスボタンをクリックして、離すまでの間にマウスを動かしたことになります。このような場合にDOWNやUPとなります。

つまり、クリックしたまま、カーソルを移動させて、ボタンを離したということですね。これをうまく使えば、ドラッグしたまま、ファイルの移動なんかも可能になります。通常のクリックするだけなら、CLICKだけで問題ありません。

横と縦については座標を示すものになっています。マクロの記録を使えば座標は分かりますが、アプリで対応したいという人は無料で使える「MPP Utility」がおすすめです。

座標に関してはUWSCの設定で絶対座標と相対座標で指定できるようになっており、絶対座標はMPP Utilityの示す値で問題ありませんが、相対座標はウインドウ内の場所指定になるため、数字が異なります。相対座標で指定すれば、ウインドウの場所を変えてもうまくクリック出来る反面、座標の指定が難しくなります。相対座標の時はマクロの記録を使って値を取るのが一番ですね。

以上が記録を押して作れるマクロの簡単な説明です。色々と頭を使うことで、自分好みのマクロに仕上がります。プログラミングの基本とも言える部分ですので、ぜひ自分で入力して試してみてくださいね。

画像で判断してゲームの自動化をしたい

座標でクリックする場所を決めるのもいいですが、正直座標を設定するのが面倒ですよね。読み込みの時間が遅いと、全く違うモノをクリックしたりと面倒なことになります。間違って課金などされた日には最悪です。

そうならないためにおすすめなのが、画像で判断してクリックさせる方法になります。これから紹介するプログラムに変更していくことで、目標の画像を見つけたらクリックするようになり、誤動作が驚くほど減りますよ。

IFB CHKIMG("画像ファイル名")
BTN(LEFT, CLICK, G_IMG_X+10, G_IMG_Y+10)
ENDIF

プログラムぽくなってきましたね。まずはBTNですが、新しい「G_IMG」というものが出てきました。これはその上の「IFB」でチェックした画像の座標を自動で入れるという意味です。さらにその後ろにある「+10」はその画像の座標から+10した場所を指定したいときに使います。画像の上にマウスカーソルが乗ると、画像の識別ができない場合ありますので、念のため、XとYで+10ずつずらすカタチになっています。

さて、問題となるのは新しく出てきた「IFB CHKIMG("画像ファイル名")」の部分ですね。これはIF文といって、プログラムで条件の分岐をしたいときに使われるコードになります。IFBは条件分岐の開始を示しており、今回は画像を使った分岐なので「CHKIMG("画像ファイル名")」が追加されているわけです。

最後にある「ENDIF」で条件分岐の終わりを示します。IFBを使ったら、必ず最後にENDIFを入れてください。抜けているとエラーになりプログラムが止まりますので注意してくださいね。

画像ファイルの指定方法

サクッと進みましたが、プログラミング初心者の方もいると思いますので、画像ファイル名の指定についてお話しします。ファイルの指定は相対パスになっており、UWSファイルが中心になります。つまり、同じフォルダにある画像であれば、そのまま画像ファイル名を入れるだけですし、下層フォルダにあるなら、「フォルダ名/画像ファイル名」という形になります。

例:imgというフォルダ名で、gazouという画像ファイル名なら「img/gazou」です。

相対パスの指定さえ完璧にやれば、実際はどこに画像があっても読み込めます。しかし、UWSCでは常にUWSのマクロファイルがある場所からの指定になりますので、ファイルのそばに画像ファイルを置いておくのが、管理する上で1番簡単です。

ファイルの指定が始めての人はこの機会にぜひ覚えておきましょう。

ゲーム自動化をするための画像を用意しよう

ゲームの画像を手に入れるには、押したいボタンがある画面でキーボードにある「Print Screen」キーを押してください。キーボードによっては「PrtSc」などと違う言葉になっている場合もあります。ボタンを押した瞬間、デスクトップ上の状態をクリップボードに保存します。ファイルにするためにはwindowアクセサリの中にある「プリント」を使用します。

Windows上の左下にあるWindowsマークを左クリックし、全てのアプリから探せるはずです。基本ツールですので、入っていないということはまずありませんので慎重に探してみてください。アプリを立ち上げると以下のような画面が出てきます。

出てきたらキーボードの「Ctrl」キー+「V」キーを押してください。ゲームの画面がプリントアプリに貼り付けられるはずです。

他の方法としては[Windows]+[Shift]+[S]キーを同時に押すと切り取り画面を出せます。欲しい画像の部分をなぞると、画面は元に戻りますがクリップボードにコピーされています。

あとはペイントアプリに「Ctrl」+「V」で貼り付ければOK。人によってはプリントスクリーンよりもこちらの方が使いやすいかも知れません。

画像認識は非常に優秀ですので、同じものがなければ同色かつスゴく小さいパーツでも問題ありません。どの部分が良いのかはご自身で試してみてください。何度も言いますがかなり小さな画像でも正確に認識してくれます。

そして、クリックする基準となるのは見つけた画像の一番左上です。中央ではありませんのでご注意ください。クリック場所をずらしたいときは「G_IMG_X+10, G_IMG_Y+10」の10を変更するだけです。

①の「選択」を押して、取り込みたい部分を指定し、②の「トリミング」を押せば、画像が切り抜かれます。できましたら、左上にある「ファイル」→「名前をつけて保存(A)」→BMP画像をクリックして保存します。

ゲーム自動化に使う画像につきまして、1ピクセルでも色が違っていれば別モノと判断されるくらい、ものすごくシビアな判定になります。JPGやPNGなどの圧縮ファイルだと認識できないので、画像の保存は必ずBMPで行ってください。

IFをうまく繋いでいけば、画像が表示されるたびにクリックしてくれるようになり、サーバーの読み込み速度に影響されなくなります。画像認識はゲーム自動化だけでなく、他の実務的なプログラムの応用にも使えるので、ぜひ覚えておきましょう。

画像認識を増やす度に同じプログラムが増えていく問題を解決

画像を認識くれない場合

何度も言いますが1ピクセルでもズレるとうまく認識しないで、背景が透けている透過画像の場合、画像認識が動かないことが多いですね。

曖昧な色を判断してくれるようになる「chkimgX」というプラグインがあります。「ねたバンク」というサイトに詳しい使い方が載っています。

もしも、興味があるなら「あいまい検索」の別記事を参考にしてください。

ループ機能を追加してゲームの完全自動化を目指す

クリックしたい画像を使って、いくつかのIF文を作れば、自動でクリックしてくれるようになります。ただし、今までのプログラムの書き方だと、1度動いたらストップしてしまいます。何度もUWSCの実行を押すくらいなら、自分でゲーム内のアイコンをタップした方が早いですよね。

ってことで、プログラムに「ループ処理」を追加しましょう。

「ACW」の下に「WHILE TRUE」と入れて、一番下に「WEND」と入れましょう。これであなたが「STOP」と押すか、ALT+F2を押すまでひたすらチェックし続けます。おめでとうございます。これでゲームの自動化の開始です。

たまに自動化が止まってしまう例

順調に動いていたけど、何かの拍子に自動化が止まっていることがあります。これはカーソルがボタンの上に乗った際に画像が変化するゲームに起こりえることです。つまり、ボタンにカーソルが乗るから、別の画像になり、認識出来なくなるのです。

このような状態を避けるためには、カーソルを乗せた後の画像で、もうひとつ画像認識の条件文を追加しておくことで避けられます。プログラム的には長くなりますが、放置しておいてゲームが止まっているよりマシですので、念のため、作っておくと安心ですね。

他にもサーバーのアップデートやレベルアップなど、自動化していると思いがけないウインドウが出てきて、ゲームの自動化がストップします。それらの状況を想定して、対応していくのがプログラミングの基本となります。様々な状況に対応できるようになっていきましょう。

UWSCで使える他のコードなどは次回紹介します。待ち時間を決めたり、指定回数回った後、メールを送ったりと色々便利になっていきますのでご期待下さい。

ゲーム自動化のプログラミング応用編はこちら

前の記事

次の記事

あなたにおすすめ

よく読まれている記事

同時に読まれている記事

書き込みはこちらから