アプリビレッジ

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

【モンスト】手軽に運極を量産できるマルチ周回の自動化マクロ!【UWSC】

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

モンストで運極を目指してるんだけど、正直、面倒くさいわ。難しいクエストでもないし、適当にやっていてもクリアできるんだから自動化できないかしら?

という悩みを解決します。

モンストの運極マラソンはまあ、面倒くさいですよね。通常のモンスターならだらだらやっていればいつか完成しますが、期間限定のイベントキャラだと、ガッツリと時間を使わないと厳しいです。でも、面倒くさくて回りたくない。

もうモンストやめちゃえば?と言われそうですけど、やめたくはないんですよね。とにかく楽がしたい。と言う方は今回紹介するマクロを、ぜひ導入してみてくださいね。

    今回使用するツール――

  • マクロツールのUWSC
  • モンストが実行できるエミュの「BlueStacks
  • 上記2つのツールを動かせるWindowsPC

多少は古くても構わないので、WindowsPCさえあれば、マクロが作れますよ。

UWSCの使い方やBlueStacksのインストールについては、「ゲームを自動化して遊ぼう・マクロについての基礎知識【UWSC】」を、ご覧ください。

BlueStacksは公式サイトにアクセスし、インストールするだけです。詳しく紹介してあるサイトもあるかと思いますので、Googleで検索してください。

さらに今回は画像のあいまい検索も使用します。「あいまい検索とはなんぞや?」と言う人は、「マクロで画像がうまく認識できない場合の対処方法」をご覧ください。

以下はUWSCとBlueStacksは、それとあいまい検索が普通に使えるという人向けの記事になります。

それではさっそくマクロを作っていきましょう。

モンストのマルチ周回の自動化マクロ

モンストの自動化でもっとも頭を悩ませるのが、なぜか毎回微妙に動いているのか、画像をうまく認識してくれないんですよね。ちょっとの状況変化でOKをクリックしてくれなかったり、反応しなかったりと、1ピクセルのズレも許してくれないUWSCのマクロだと、失敗してしまいます。

そこを解決してくれるのが、「画像のあいまい検索」。あいまい検索のおかげで安定した自動周回ができるようになりました。あいまい検索については他のページで紹介してありますので、そちらを見て、導入方法を見ておいてくださいね。

モンストのマルチ自動化マクロの準備

BlueStacksにモンストをインストールするのは当然ですが、さらにモンストのマルチ募集はGameWithが出している「モンスト マルチ掲示板 & 攻略情報」を利用します。

ios版とAndroid版がありますので、もしも、まだ導入されていない人はBlueStacksにインストールしておいてください。

もしも、参加するクエストを違う方法で決めたい人は、環境に合わせてマクロを書き換えればOKです。

それでは、マクロを作りましょう。まずはモンストを立ち上げた状態で、UWSCを起動し、画面をタップして、マクロファイルを作りましょう。ウインドウサイズや場所などはこの段階までに決めておくと、その後の作業が楽になります。

ACW(GETID("BlueStacks"),横位置,縦位置,横幅,縦幅,0)

保存したファイルから、上記の部分以外、すべて削除して構いません。ACWの横位置、縦位置などに、ご自身の環境に合わせた数字が入っていれば大丈夫です。

もしも、ここまでの話で意味がわからないようであれば、UWSCの勉強をした方がいいかもしれません。「ゲームを自動化するために覚えておきたいプログラミング【uwsc】」を参考にしてみてください。

ACWを1行目にできたら、保存したマクロファイル(UWS)がある場所に「ChkImgX.dll」「ChkImgX.uws」「NekoAddon.dll」の3つファイルをコピーしましょう。

ここで意味不明なら、「マクロで画像がうまく認識できない場合の対処方法【あいまい検索】」を参考にあいまい検索の準備を整えてください。

できましたら、プログラムを書き込んでいきます。

まずは、ACW(GETID("BlueStacks"),横位置,縦位置,横幅,縦幅,0)の下に以下を追加してください。

id = GETID(GET_ACTIVE_WIN)
x1 = STATUS(id, ST_X) //始点X座標を返す
y1 = STATUS(id, ST_Y) //始点Y座標を返す
x2 = x1 + STATUS(id, ST_CLWIDTH) //終点X座標を返す
y2 = y1 + STATUS(id, ST_CLHEIGHT)//終点Y座標を返す

これで、x1とy1には、BlueStacksが配置されている左上の座業が入り、x2とy2には右下の座標が入ります。画像あいまい検索をする際のウインドウ指定になりますので、忘れずに入れておきましょう。

では、その下の行にあいまい検索を行うためのプラグイン「ChkImgX」を追加します。

//ChkImgXをインクルード
CALL ChkImgX.uws

これで「STARTUP_CHKIMGX()」~「SHUTDOWN_CHKIMGX()」と囲うことで、画像のあいまい検索ができるようになります。

モンストのマルチ自動化マクロ作成

準備ができたら、いよいよモンストから必要な画像ファイルを取り出していきましょう。まずはホーム画面の画像からになるのですが、誤動作を防ぐために、立ち上げておくのはモンスト&GameWithの募集アプリだけでそれ以外は落としておきましょう。

募集アプリの⓪部分にある「マルチ」を選択して、募集リストが出るようにしておいてください。それができたら、モンストのホーム画面を表示させましょう。その状態で①のホーム画面をしめすスケジュールの時計の画像を保存し、上部にあるタスク切り替えのアイコン画像を保存します。

タスクの切り替えアイコンをクリックすると一番右の画像のようになるので、もう一度切り替えボタンをクリックさせれば、GameWithの募集アプリに移動します。マクロは以下の形です。

//ホーム画面の確認
IFB CHKIMG("①の画像")
SLEEP(0.1)
//ホーム画面ならGameWithへ切り替える
IFB CHKIMG("②の画像")
SLEEP(0.1)
BTN(LEFT, CLICK, G_IMG_X+10, G_IMG_Y+10)
SLEEP(1)
BTN(LEFT, CLICK, G_IMG_X+10, G_IMG_Y+10)
ENDIF
ENDIF

SLEEP(1)で1秒待ってから、再度クリックさせるのがコツです。さあ、これで募集アプリに切り替わりました。すでに「マルチ」のページになっていると思いますので、周回させたいクエストのアイコンを保存してください。

wheel関数でスクロールも可能ですが、誤動作&エラーの原因になりますので、すぐに表示されるクエストにした方が無難です。

アイコンが毎回同じ場所に表示されれば、いつも通りでも問題ありませんが、状況により上下してしまいます。普通の画像検索では見つけられない場合がありますので、あいまい検索を利用します。

//gamewithでターゲット選択
IFB ChkimgX("③の画像",0,x1,y1,x2,y2,0,3,-1)
SLEEP(0.5)
BTN(LEFT, CLICK, G_IMGX_X+200, G_IMGX_Y+10)
ENDIF

以後、説明はしませんが「STARTUP_CHKIMGX()」~「SHUTDOWN_CHKIMGX()」で全体を囲うことと画像ファイルに拡張子(.bmpなど)をつけることを忘れないでください。

アイコンを直接クリックすると、攻略ページに移動してしまうため、X方向に200ほどずらしてあります。自身のウインドウサイズによってG_IMGX_Xの+X200の部分を調整して「順番待ち」に移行できるようにしましょう。

順番になったら、画面遷移しますが、この時2パターンあります。それぞれの画像を取っておいてください。

募集主がきちんと見つかったら④の「クエスト名」の部分。見つからなかったら再検索の⑤の部分です。

まずは見つからなかった場合からやっていきましょう。再検索をクリックしてもいいですが、見つからなかった場合、再検索をしても高い確率で見つかりません。ですので、この場合は、また戻って参加からやり直した方が早いです。

ですので、最初に作った『//ホーム画面の確認』の「IFB CHKIMG("①の画像")」部分に付け足す形で

IFB CHKIMG("①の画像") or CHKIMG("⑤の画像")

としましょう。

これで再検索を見つけた場合、ホーム画面と同じ動きをし、GameWithの募集アプリに切り替わります。

普通なら再び順番待ちになるのですが、最近gamewithのマルチ募集では、クエスト終了後に以下のような広告が出るようになりました。

再検索でも出るのはひどいですよね。マクロが止まるのでサクッと消すようにします。

//gamewithで稀に広告画面
IFB CHKIMG("⑥の画像")
SLEEP(0.1)
BTN(LEFT, CLICK, G_IMG_X+10, G_IMG_Y+10)
ENDIF

⑥のバツの部分をクリックすれば広告が消えて、またマルチ募集の画面に戻り、自動で順番待ちになります。

広告に関しては、今後変更があるでしょう。動かなくなったら、また広告を消す部分をクリックするように、自身の手でマクロをバージョンアップしてくださいね。

見つからなかったときの処理ができたので、今度はうまく相手が見つかった場合の処理を作ります。

④の画像のクエスト名の部分をクリックするようにマクロを組みましょう。この時、上のマクロをまんまコピーして「"⑥の画像"」を「"④の画像"」に変更するのが楽です。以後は特に指示がなければ、上記の形をベースとし、コピペして画像の部分のみを変更して追加していってください。

//相手が見つかった
IFB CHKIMG("④の画像")
SLEEP(0.1)
BTN(LEFT, CLICK, G_IMG_X+10, G_IMG_Y+10)
ENDIF

クリックすると今度はパーティ選択画面が出ます。⑦の出撃部分の画像は特に問題ないので、上記のマクロをコピペして画像の部分だけ変更してください。問題がなければ、パーティ画面になり、募集主のタイミングでクエストに出発します。

悲しい話ですが、相手が見つかっても既に満員などが原因でクエストに参加できない場合があります。その場合、画像⑧の「OK」をクリックして検索に戻ることになるのですが、「OK」は汎用性が高いので、あいまい検索で登録しておきましょう。

//OKをクリック
IFB ChkimgX("⑧の画像",0,x1,y1,x2,y2,0,2,-1)
SLEEP(0.5)
BTN(LEFT, CLICK, G_IMGX_X+10, G_IMGX_Y+10)
ENDIF

以後はあいまい検索は上記の形をベースとし、コピペして画像の部分だけ変更して使いまわしてください。これで出発までの準備は終わりました。ここからは実際にクエストでモンスターを弾く動作をマクロで自動化していきます。

モンストのマルチで自動的に弾くマクロ

まず注意点ですが、弾く動作を自動化するのは簡単ですが、マルチプレイ中にマクロを組もうとすると行動が遅くなり、おそらく周りに迷惑をかけます。そのため、弾くプログラムの部分だけはソロで試して、問題がないと判断後に導入するようにしてください。

クエスト中かどうかを判断するのは「HP」(画像⑨)の部分になります。で、クエスト中なら弾くようにするのですが、弾く方向や長さを決めるのは、手作業では面倒です。UWSCのマクロ記録ボタンを押して、上記画像の緑の枠内でポチポチと2箇所、クリックしてください。それを適当なファイル名で保存して開けば、始点と終点が得られます。

BTN(LEFT,CLICK,横座標1,縦座標1,時間1)
BTN(LEFT,CLICK,横座標2,縦座標2,時間2)

このままでは、クリックしただけですので、弾けるように変更します。

BTN(LEFT,DOWN,横座標1,縦座標1,0)
MMV(横座標2,縦座標2)
BTN(LEFT,UP,横座標2,縦座標2,500)

始点の「CLICK」を「DOWN」に変更し、時間を0にします。終点の「CLICK」を「UP」に変更し、時間を500にします。そして、2つの間にMMVを入れて、終点と同じ座標すれば、キャラを引っ張ってくれるようになります。

時間を500にするのは「ゲージショット」をするためですが、1巡目で完璧なタイミングで行うので、毎回だとちょっとうさん臭いですよね……(笑)

気になるようなら、ちょっと早めの480くらいで調整してください。

始点と終点を出したマクロファイルを上記のように書き換えて実行すれば、動きを確認することができます。うまくキャラを引っ張って、弾いてくれれば成功です。

ちなみに座標で引っ張っているので、BlueStacksを動かすと変な場所を引っ張るようになってしまいます。座標とサイズを合わせるため、自動化マクロと同じACWの値に書き換えてください。変な場所を引っ張る場合には、自動化マクロを一度実行して、ウインドウを動かしてから、始点と終点の値を取るようにすれば、解決するはずです。

うまく引っ張れるようになったら、HPの画像⑨と合わせてマクロを組みましょう。

IFB ChkimgX("⑨の画像",0,x1,y1,x2,y2,0,2,-1)
BTN(LEFT,DOWN,横座標1,縦座標1,0)
MMV(横座標2,縦座標2)
BTN(LEFT,UP,横座標2,縦座標2,500)
ENDIF

あいまい検索を使っています。これでクエスト中はずっと同じ方向に引っ張り続けてくれます。……毎回、同じ方向に完璧なタイミングで引っ張り続けるプレイヤー。あ、やっぱり気になりますか? どう考えても怪しいですよね。

いくつかのパターンからランダムで弾くようにもできます。

IFB ChkimgX("⑨の画像",0,x1,y1,x2,y2,0,2,-1)
R = 0
R = RANDOM(4)
//パターン1
IFB R = 0
BTN(LEFT,DOWN,横座標1,縦座標1,0)
MMV(横座標2,縦座標2)
BTN(LEFT,UP,横座標2,縦座標2,500)
//パターン2
ELSEIF R = 1
BTN(LEFT,DOWN,横座標1,縦座標1,0)
MMV(横座標2,縦座標2)
BTN(LEFT,UP,横座標2,縦座標2,500)
//パターン3
ELSEIF R = 2
BTN(LEFT,DOWN,横座標1,縦座標1,0)
MMV(横座標2,縦座標2)
BTN(LEFT,UP,横座標2,縦座標2,500)
//パターン4
ELSEIF R = 3
BTN(LEFT,DOWN,横座標1,縦座標1,0)
MMV(横座標2,縦座標2)
BTN(LEFT,UP,横座標2,縦座標2,500)
ENDIF
ENDIF

RANDOM(4)で4つのパターンから選べるようになります。パターンを増やしたり、減らしたりしたい場合には、4の数字を変更してください。パターンの作り方は最初と同じで、記録ボタンを押して、始点と終点をポチポチとクリックして、保存するだけです。これで毎回弾き方が違うプレイヤーになれますね!

ここまでをソロでテストして、問題がなければ、自動化マクロに書き足して導入しましょう。これでマルチ参加から、クエスト終了まで自動で行えるようになりました。あとは、クエスト終了から再度参加までを作るだけです。

モンストのマルチ自動化マクロのクエスト終了設定

これまでのマクロが正しく入力されていれば、止まるのは以下の3箇所。

それぞれをあいまい検索でマクロを組みます。画像⑪の獲得メダル画面はベースとなる以下のマクロで問題ありません。

//OKをクリック
IFB ChkimgX("⑪の画像",0,x1,y1,x2,y2,0,2,-1)
SLEEP(0.5)
BTN(LEFT, CLICK, G_IMGX_X+10, G_IMGX_Y+10)
ENDIF

スペシャル報酬画面⑩もフレンド情報⑫もそれぞれ画像の部分を切り取ればクリックはしてくれますが、同じ画面なのでまとめてしまいましょう。⑩の画像部分から⑫の画像まで横方向(X)と縦方向(Y)の距離をピクセル定規などで求めて、あいまい検索に追加します。

//OKをクリック
IFB ChkimgX("⑩の画像",0,x1,y1,x2,y2,0,2,-1)
SLEEP(0.5)
BTN(LEFT, CLICK, G_IMGX_X+横距離, G_IMGX_Y+縦距離)
ENDIF

距離がよく分からないという事であれば、⑪をベースに⑩と⑫の分を作れば大丈夫です。その場合、⑫が緑だけだと、再検索と同じ色で誤動作を起こす可能性があるので、OKにかかるように画像を切り抜いてください。

ここまで出来たら、後は「WHILE TRUE」と「WEND」で囲ってしまえば完成です。

モンストのマルチ周回の自動化マクロ作成のまとめ

モンストのマルチ周回の自動化マクロ作成はどうだったでしょうか?

再現性が低いので紹介はしませんでしたが、稀に以下のメッセージが出て止まってしまいます。

緑の「再検索」ということで、あいまい検索を使って、⑤の画像とまとめてしまおうとすると、④の画像の再検索と引っかかって誤動作の原因になります。必ず別枠の通常画像検索でクリックするようにマクロを組んでください。このエラーに関しては、「接続エラー」が原因となるので、発生は避けられません。

他にも思いがけないエラーで、マクロが止まることがあれば、都度、対処してくださいね。

プログラムが長くなりましたので、マクロの全文を載せておきます。コピペして画像と座標を入力すれば自動化できますので、ご利用ください。

ACW(GETID("BlueStacks"),横位置,縦位置,横幅,縦幅,0)
id = GETID(GET_ACTIVE_WIN)

x1 = STATUS(id, ST_X) // X座標を返す
y1 = STATUS(id, ST_Y) // Y座標を返す
x2 = x1 + STATUS(id, ST_CLWIDTH) //
y2 = y1 + STATUS(id, ST_CLHEIGHT)

//CHKIMGX関数をインクルード
CALL CHKIMGX.uws

WHILE TRUE
STARTUP_CHKIMGX() //CHKIMGX関数開始

//ホーム画面の確認
IFB CHKIMG("①の画像") or CHKIMG("⑤の画像")
SLEEP(0.1)
//ホーム画面ならGameWithへ切り替える
IFB CHKIMG("②の画像")
SLEEP(0.1)
BTN(LEFT, CLICK, G_IMG_X+10, G_IMG_Y+10)
SLEEP(1)
BTN(LEFT, CLICK, G_IMG_X+10, G_IMG_Y+10)
ENDIF
ENDIF

//gamewithでターゲット選択
IFB ChkimgX("③の画像",0,x1,y1,x2,y2,0,3,-1)
SLEEP(0.5)
BTN(LEFT, CLICK, G_IMGX_X+200, G_IMGX_Y+10)
ENDIF

//gamewithで稀に広告画面
IFB CHKIMG("⑥の画像")
SLEEP(0.5)
BTN(LEFT, CLICK, G_IMG_X+10, G_IMG_Y+10)
ENDIF

//相手が見つかった
IFB CHKIMG("④の画像")
SLEEP(0.5)
BTN(LEFT, CLICK, G_IMG_X+10, G_IMG_Y+10)
ENDIF

//出撃
IFB CHKIMG("⑦の画像")
SLEEP(0.5)
BTN(LEFT, CLICK, G_IMG_X+10, G_IMG_Y+10)
ENDIF

//OKをクリック
IFB ChkimgX("⑧の画像",0,x1,y1,x2,y2,0,2,-1)
SLEEP(0.5)
BTN(LEFT, CLICK, G_IMGX_X+10, G_IMGX_Y+10)
ENDIF

//接続エラー
IFB CHKIMG("⑬の画像")
SLEEP(0.5)
BTN(LEFT, CLICK, G_IMG_X+10, G_IMG_Y+10)
ENDIF

//自分の番
IFB CHKIMGX("⑨の画像",0,x1,y1,x2,y2,0,20,-1)
R = 0
R = RANDOM(4)
IFB R = 0
BTN(LEFT,DOWN,横座標1,縦座標1)
MMV(横座標2,縦座標2)
BTN(LEFT,UP,横座標2,縦座標2,500)
ELSEIF R = 1
BTN(LEFT,DOWN,横座標1,縦座標1)
MMV(横座標2,縦座標2)
BTN(LEFT,UP,横座標2,縦座標2,500)
ELSEIF R = 2
BTN(LEFT,DOWN,横座標1,縦座標1)
MMV(横座標2,縦座標2)
BTN(LEFT,UP,横座標2,縦座標2,500)
ELSEIF R = 3
BTN(LEFT,DOWN,横座標1,縦座標1)
MMV(横座標2,縦座標2)
BTN(LEFT,UP,横座標2,縦座標2,500)
ENDIF
ENDIF

//スペシャル報酬画面
IFB CHKIMGX("⑩の画像",0,x1,y1,x2,y2,0,2,-1)
SLEEP(0.5)
BTN(LEFT, CLICK, G_IMGX_X+横距離, G_IMGX_Y+縦距離)
ENDIF
//メダル獲得
IFB CHKIMGX("⑪の画像",0,x1,y1,x2,y2,0,2,-1)
SLEEP(0.5)
BTN(LEFT, CLICK, G_IMGX_X+10, G_IMGX_Y+10)
ENDIF

SHUTDOWN_CHKIMGX() //CHKIMGX関数停止
WEND

いくつか画像と座標を持ってくるだけですので、誰にでも簡単にモンストマルチ自動化が実現できると思います。

問題点としては、自動化している間、パソコンが使えなくなることですね。しかも、クエストの最中はマウスもろくに使えません。咄嗟の対応が必要なときはキーボードの「ALT」+「F2」でマクロをストップさせてください。

最後になりますが、orを利用すると、いくつかのプログラムをまとめられます。

例えば、④と⑦は画像の部分が違うだけで、その後は同じですよね。この部分を以下のようにまとめられます。

//相手が見つかった&出撃
IFB CHKIMG("④の画像") or CHKIMG("⑦の画像")
SLEEP(0.5)
BTN(LEFT, CLICK, G_IMG_X+10, G_IMG_Y+10)
ENDIF

マクロ作成になれてきたら、ぜひアレンジにもチャレンジしてみてください。ただし、処理が重くなったり、エラーが発生したりと思わぬトラブルも出てきます。バックアップは忘れずに取っておきましょうね。

イベント等でハムスターのような周回をしている人の助けになれば幸いです。

前の記事

次の記事

あなたにおすすめ

よく読まれている記事

同時に読まれている記事

書き込みはこちらから