ゲームに限らず、パソコンの世界では単純作業は自動化することが良くあります。このゲームでのメダル稼ぎを自動化するとこんな感じになりますってのを紹介します。
最初にちょっと注意点:
ゲームの世界 (特に MMORPG やソーシャルゲーム) ではこういった自動化が利用規約を違反する場合も少なくありません。
熱帯楽園 (AquaFish) に関しては、これを明示的に違反と記した利用規約が見つからなかったんですが、こういった方法は開発者が意図したゲーム バランスを崩す原因となるのであまりおすすめしません。
(このゲームに関しては、現実世界と同様、時間をかけてじっくりと育てるのが楽しみの一つなので)
この情報はどちらかというと、ゲームを入口にプログラミングや自動化の勉強をする目的でこの情報を使ってもらえるとうれしいです。
マウス ポインター操作のためのツール (UWSC) のダウンロード
今回はマウス操作の自動化するツールを利用します。ウェブ上では色々と出回っていますが、今回は UWSC を使ってみます。 (Google 等で UWSC を検索したら Vector などからダウンロードできます)
このツールは Windows の操作をあらかじめ登録しておき、それを再現してくれます。スクリプトで細かいところを変種することもできます。
難しいことをやろうとすると結構大変ですが、今回は単純にマウス操作を再現するだけなのでそれほど難しくありません。
プレイタイムボーナスをクリック
ツールになれるためにもまずは簡単な処理をやってみましょう。まずは単純にプレイタイム ボーナスの無料ボタンをクリックして 50 メダルを取得ところだけを再現します。
以下のようにメダルの画面をひらいた状態にして準備しておきます。
UWSC を開くとこんな感じの画面が開きます。これの右から二つ目のボタンを押すと、マウス操作を記憶してくれるようになります。
では、UWSC の右から二つ目のボタンを押して記録を開始します。
上のように [記録中] になったら、無料ボタンを押して 50 メダルを獲得します。今回はこれだけで OK なので STOP ボタンで記録を止めましょう。
これで無料ボタンを押すという動作を記録したので再生するたびに同じ動作を繰り返してくれます。
再生をするためには下の画像の真ん中のボタンを押すだけです。
プレイタイム ボーナスが 5 分後にまた押せる状態になったら、再生してきっちりと押してくれることを確認してください。
ボタン クリックを 5 分間隔でループさせる
とりあえずボタンを押す操作ができるようになったので、次はこれを繰り返し実行するようにしていきます。
今回したい処理は:
- AquaFish の画面を最前面に持ってくる
- 無料ボタンをクリックする
- 5分間待つ
- 1.-3 を繰り返す
これにはスクリプトを少し編集する必要があります。
まずは左から二つ目のボタンを押して、さっき記憶した処理をファイルに書き出しましょう。
.uws という拡張子のついたファイルとして保存されますが、メモ帳で開けます。開くとおそらくそのファイルの中には以下のような文字が並んでいるはず。
MMV(4881,868,16) MMV(4881,869,15) ACW(GETID("熱帯楽園®","ApplicationFrameWindow"),4299,443,1426,1217,0) BTN(LEFT,CLICK,4881,869,547) MMV(4881,869,17625) MMV(4869,818,15) MMV(4829,691,16) |
これが命令文です。簡単に説明をするとこういう処理をしています。
- MMV はマウスを動かす操作で ( ) の中にある数字がその場所を表します。
- ACW は Active Window の略で最前面に持ってくる画面を指定しています。
- BTN はクリック操作を表します。
この ACW で AquaFish の画面を最前面にもってきて、BTN で無料ボタンをクリックできているので、あとは 5 分間待ってから繰り返し実行するようにするだけです。
出来上がりを見た方がわかりやすいと思うので、実際にそれをするスクリプトがこちら。
while true ACW(GETID("熱帯楽園®","ApplicationFrameWindow"),4299,443,1426,1217,0) BTN(LEFT,CLICK,4881,869,547) Sleep(300) wend |
2 行目と 3 行目はそのまま前のをコピー。4 行目の Sleep で 300 秒待つように命令。これを 1 行目と 5 行目の間に挟む事により繰り返し実行するようになる。
これでスクリプトができたので、ファイルを保存して、UWSC の一番左のボタンでそれを読み込みます。
読み込んだら後は真ん中のボタンで再生するだけ。これで 5 分間隔で無料ボタンを自動的にクリックしてくれるようになりました。
さらに効率化!動画もみよう
ここまでで 5 分間隔で 50 メダルが増えるようになりましたが、せっかくなので動画もみるようにしましょう。
さっきと同じようにマウスでクリックする場所を見つけて、クリックする感覚を Sleep で指定するだけですが、クリックする場所が複数あります。
まずはクリックするボタンの場所を整理しましょう。
① 動画を見るのボタン
②動画を見終わった後の xClose ボタン。動画を閉じないと進まない
③動画を閉じると水槽の初期画面に戻ってしまいます。右上のメダルを再度クリックしないとダメ
④ 無料ボタンの位置 2 つ目。動画を見終わると無料ボタンの場所が変わるので、この場所も記憶しないとだめ。
以上 ①②③④ をクリックする BTN 命令を見つけます。これには一つずつ UWSC で実際にクリックするところを記録して、ファイルに落とすのが一番簡単です。
おまじないとして BTN の直前の ACW 命令も一緒にコピーしておくといいでしょう。
①②③④ の ACW と BTN の命令をすべてコピーできたら、あとはこんな感じの流れで繰り返し実行すればうまくいくはずです。
- 左側の無料ボタンを押す
- 真ん中の無料ボタンを押す
- 動画を再生する
- 動画が終わるのを待つ
- 動画が終わったら xClose を押して動画画面を閉じる
- 水槽のトップに戻っているので、メダルボタンを再度押す
- 1. もしくは 2. を押してから 5 分が経過していたら、再度 1. から繰り返す
ちょっと説明をしておくと:
- 無料ボタンが左側にあるのか真ん中にあるのかは判別する必要はありません。他のボタンとかぶる事はないので、とりあえず両方おしちゃえばOK。
- 動画の再生時間はまちまち。長いのもあるので、4. とりあえず 2 分待つことにする
出来上がりはこんな感じになる。
while true //無料ボタン(左) ACW(GETID("熱帯楽園®","ApplicationFrameWindow"),4299,443,1426,1217,0) BTN(LEFT,CLICK,4881,869,547) Sleep(10) //無料ボタン(中) ACW(GETID("熱帯楽園®","ApplicationFrameWindow"),4098,305,1426,1217,0) BTN(LEFT,CLICK,5004,733,500) Sleep(10) //動画を見るボタン ACW(GETID("熱帯楽園®","ApplicationFrameWindow"),4098,305,1426,1217,0) BTN(LEFT,CLICK,5252,748,1000) Sleep(120) //動画を閉じるボタン ACW(GETID("熱帯楽園®","ApplicationFrameWindow"),4098,305,1426,1217,0) BTN(LEFT,CLICK,5415,401,562) Sleep(10) //メダルボタン ACW(GETID("熱帯楽園®","ApplicationFrameWindow"),4098,305,1426,1217,0) BTN(LEFT,CLICK,5455,583,250) Sleep(10) //時間調整 Sleep(150) wend |
どうせ 5 分待たないとダメなので、 処理の間に 10 秒ずつ待つようにしてあります。
あと、Sleep の時間をすべて足すと 310 秒になります。これは、 300 秒だと多少の時差がありクリックが早すぎる事があるので、確実に押せるように 10 秒余分に待つようにしているからです。
以上で 5 分に一回確実 50 メダルは確保でき、動画も見れたらその分も上乗せで手に入るようになりました。
作り方はいいからとりあえず自動化だけをしたい
自分で作り方を勉強したいわけじゃない人のための手順。ACW もコピーしてあるので、これでも動かせるはず。
- ここから .uws ファイルをダウンロード (中身は上で書いたスクリプトと同じです)
- ダウンロードした UWSC を実行して一番左のボタンで 1. のファイルを読み込む
- AquaFish を起動して、メダルを押して以下の状態にする (動画が出ていてもでいなくても OK)
-
UWSC の真ん中のボタンを押して再生。
これで動くはずだけど、マルチウィンドウのしかも右側で uws ファイルを作っちゃったので、シングルモニタの人だと画面内に収まらないかも。。。