2021/05/01

【MHRise×Arduino02】溶岩洞ツアーでのカムラポイント稼ぎ自動化(10万pt/h)


※本記事は、モンスターハンターライズ(MHRise)の溶岩洞探索ツアーにて、特産品の採取によるカムラポイント+金稼ぎを自動化するプログラムについて解説した記事です。MHRiseの操作をArduino Leonardoで自動化しております。「Arduinoって何?」って方はポケモン剣盾自動化の00回目の記事を、Arduinoの環境構築(ライブラリ含む)は01回目の記事をご覧ください。


本記事では、このプログラム(スケッチ)でできることや原理を解説したうえで、スケッチを配布しています。とにかくスケッチが欲しいという方は下へと読み飛ばしてください。


 

きっかけ、動機

前回の自動化にて、クエスト回数消費、隠密隊、交易船の自動化を行いました。投稿後に、外出中8時間放置し続けたところ、薬草ハチミツ各1000個程度と錬金素材5×20回程度が回収できました

意外と錬金素材も手に入るので思っていたよりも使い道がある一方、カムラポイント4万程度を消費するため、カムラポイントを稼ごうと思いました。採取ポイントでA連打するだけでも稼げますが、効率が悪いのでもう少し複雑な操作で効率を上げました

普段はポケモン剣盾について自動化プログラムを作成しておりますが、今回は同じノリでモンハンの自動化を行っております。Arduino(マイコン)やプログラムについて知りたい方は、ポケモン剣盾用の記事を参考にお願いします。

 


これで何ができるの?

集会所上位の溶岩洞探索ツアーへ行き、回収しやすい3か所の特産品を採取するという動作を繰り返します。動かしてみたところ、1周約2分で3000~5000ポイント、1時間で10万ポイント程度稼げました。また、同額の金も稼げます。

いわゆる連射コンでのA連打の違いとして、
①3か所の採取ポイントを回る、②環境情報(特産品の増殖)が変わらないので1回あたりの採取量が約3倍、という2点で効率が良くなっています。もちろん人力によるマラソン 10分でウン万ポイントには敵いませんが、こちらは寝ている間にできます(6h睡眠なら毎日60万)。


原理、おおまかな流れ

概要

モンハンライズでは、マカ錬金や交易船のアイテム交換、隠密隊などの設備の使用にカムラポイントを必要とします。錬金だけならそこまで不足しないのですが、アイテム交換その他に色々つぎ込むと枯渇します。(もちろん現金も枯渇します)

 

本プログラムでは

集会所上位の溶岩洞探索ツアーへ行き、回収しやすい3か所の特産品を採取する

という動作を繰り返します。

メインやサブのキャンプ近くにある特産品を3か所採取します。(その他の場所は歩く距離が長く、座標がずれる恐れがあるので断念)


プログラム開始前の準備について

①特産品の増殖について

本プログラムでは約2分ごとに探索ツアーへと出発します。

2分ごと、つまりは5分以内にクエストを終える利点として、食事や環境情報などが更新されないというメリットがあります。

環境情報とは、探索クエストごとに「モンスターの大量発生」「採取アイテムの増殖」が設定されているものを指します(クエスト受注時2ページ目上段に表示)。環境情報は時間経過や他クエストのクリア(or失敗)とともに変更されますが、探索クエストを5分以内にクリアした場合はクエスト回数として数えられず、変更されません

アイテムの増殖は草や鉱石などの他、「特産品」の増殖があります。 この時には、通常1個の特産品が3個手に入るため、効率が約3倍となります。

本プログラムでは、自動化開始前に環境情報が「特産品の増殖」にしておくことをおすすめします。1度調整しておくことで、プログラム実行中何時間でも増殖した状態で採取ができます。環境情報は他のクエストを進めることで変化するので、自分でクエストに行くなり、前回の自動化を利用するなりしてください。


②食事について

食事は基本的に必要ありません。多少走りますが、スタミナ100で足ります。

ただし、お団子換算術がつけられる場合はつけることをおすすめします。日替わりの団子の1つであり、特産品のポイントが1.2倍になるようです。自動化開始前に食べておけば自動化している間は続きます。

もっとも、クエストごとに変化するので、①の環境情報を優先し、運よくお団子があったら食べる程度で問題ありません。3倍>1.2倍です。

 

③装備について

装備について、必要なスキルは地質学Lv2以上です。これにより特産品の採取できる個数が増えます(1枠分追加)。2枠→3枠になるので、1.5倍の効率となります。

その他のスキルについては特に必要ありません。モンスターと会うこともないので、防御力も要りません。レザー装備あたりで地質学のみ忘れずに付けてください。


プログラムの流れについて

本プログラムでの実際の動きは、
①集会所のクエストカウンターに話しかけてクエスト選択(上位溶岩洞ツアー)
②メインキャンプから出てすぐの「竜骨の化石」を採取
③サブキャンプ1へファストトラベル
④サブキャンプ1からすぐの「虹色の鉱石」を採取
⑤その近くにある「焼けた鉱石」を採取
⑥メニューから「クエストクリア」を選択し、集会所へ戻る

となります。

今回採取を行う3か所は、初期位置(トラベル位置)から行きやすく座標が合わせやすい、モンスターが出現しないといった理由で選んでおります。さらに他のアイテムも回収した方が効率は上がるでしょうが、安定性を損ないそうあと面倒くさいなので今回はやりません。


作成したスケッチ

作成したスケッチは以下のようになります。スケッチのファイルこちら


 なお、執筆者がスケッチを作成するにあたり使用した環境は以下のようになります。

・パッケージ版、日本語設定(DL版ではロード時間が違う可能性があります)

ロード時間などによる操作のずれが考えられますので、適宜調整してください。


本スケッチを実際に使用した動画はこちら↓


  
/**
* モンハンライズ、カムラポイント回収のための溶岩洞特産品の採取自動化
*
* 初期条件は以下の通り
* 1. 設定はオートセーブ有(執筆者環境のコンフィグ等で設定しているため、適宜スケッチ改変を推奨)
* 2. 可能であれば溶岩洞ツアー特産品の増殖であることを推奨、さらにお団子換算術があれば食事を。
* 3. 集会所へ移動(オフライン)し、マップを開ける状態でマイコンを挿してスタート
*/


#include <auto_command_util.h>


// 溶岩洞ツアー~特産品収集~集会所に戻る
void pointGetter(){
    // 集会所初期位置~受付話しかけ
    SwitchController().pressButton(Button::R);
    SwitchController().setStickTiltRatio(-100, -100, 0, 0);
    delay(1000);
    pushButton(Button::A, 100,2);
    pushButton(Button::A, 1000);
    SwitchController().setStickTiltRatio(0, 0, 0, 0);
    SwitchController().releaseButton(Button::R);
    // 上位溶岩洞探索ツアー選択
    pushButton(Button::A, 300);
    pushHatButton(Hat::UP, 200);
    pushButton(Button::A, 1000);
    pushHatButton(Hat::UP, 200);
    pushButton(Button::A, 300, 2);
    pushButton(Button::A, 1700);
    // クエスト開始
    pushButton(Button::ZR, 300);
    pushButton(Button::A, 3000);
    pushButton(Button::B, 100, 5);
    // キャンプすぐの釣り場まで走る
    SwitchController().pressButton(Button::R);
    SwitchController().setStickTiltRatio(0, -100, 0, 0);
    delay(20500);
    // 虫移動
    SwitchController().pressButton(Button::ZL);
    pushButton(Button::A, 1500);
    pushButton(Button::A, 200, 2);
    SwitchController().releaseButton(Button::ZL);
    // 移動方向を少し左へ変更
    SwitchController().setStickTiltRatio(-20, -100, 0, 0);
    delay(9000);
    // 釣り場から後ろに動き、竜骨化石を採取
    SwitchController().setStickTiltRatio(-30, 100, 0, 0);
    delay(1000);
    pushButton(Button::A, 200, 10);
    SwitchController().setStickTiltRatio(0, 0, 0, 0);
    SwitchController().releaseButton(Button::R);
    delay(4000);
    // サブキャンプ1へ移動
    SwitchController().pressButton(Button::MINUS);
    delay(800);
    SwitchController().releaseButton(Button::MINUS);
    pushButton(Button::A, 300);
    pushHatButton(Hat::DOWN, 300);
    pushButton(Button::A, 200);
    pushButton(Button::A, 8500);
    // 後ろへ走って虹色の鉱石採取
    SwitchController().pressButton(Button::R);
    SwitchController().setStickTiltRatio(0, 100, 0, 0);
    delay(1000);
    pushButton(Button::A, 200, 10);
    // 左前へ進み焼けた鉱石採取
    SwitchController().setStickTiltRatio(-100, -100, 0, 0);
    delay(7500);
    SwitchController().setStickTiltRatio(-10, 100, 0, 0);
    pushButton(Button::A, 200, 10);
    SwitchController().setStickTiltRatio(0, 0, 0, 0);
    SwitchController().releaseButton(Button::R);
    // クエストクリアで帰還
    pushButton(Button::PLUS, 200);
    pushHatButton(Hat::RIGHT, 200);
    pushHatButton(Hat::DOWN, 200, 4);
    pushButton(Button::A, 300);
    pushHatButton(Hat::LEFT, 200);
    pushButton(Button::A, 14500);
    // オトモのアイテムがあれば売却(おそらくハッカの実)
    pushHatButton(Hat::UP, 200);
    pushHatButton(Hat::RIGHT, 200);
    pushButton(Button::A, 300);
    pushHatButton(Hat::LEFT, 200);
    pushButton(Button::A, 300,5);
    // 集会所へ帰還(集会所でつっかえた場合のみ、ここでマップ移動コマンド)
    pushButton(Button::B, 100, 10);
    pushButton(Button::RCLICK, 300);
    pushButton(Button::A, 300,2);
    pushButton(Button::B, 100, 5);
    SwitchController().pressButton(Button::MINUS);
    delay(800);
    SwitchController().releaseButton(Button::MINUS);
    pushHatButton(Hat::UP, 300);
    pushButton(Button::A, 1000);
    // 移動コマンドに約6.5sec,しばらく待機
    delay(11000);
}


void setup(){
    pushButton(Button::B, 500, 8);  // 最初の数回の入力はswitchが認識しない場合があるので、無駄打ちをしておく
    pushButton(Button::A, 500);  // USBコントローラーとして決定
    delay(1300);
    // 集会所入り口へマップ移動のコマンド入力
    SwitchController().pressButton(Button::MINUS);
    delay(800);
    SwitchController().releaseButton(Button::MINUS);
    pushHatButton(Hat::UP, 300);
    pushButton(Button::A, 300);
    pushButton(Button::B, 100, 3);
}

void loop(){
  pointGetter();
}
 

 

最後に

本スケッチを使用することで、カムラポイントの収集が自動でできます。交易船のアイテム交換で消耗品を大量購入するほか、前回の自動化と合わせることでポイントをモンスター素材(=錬金素材)に変えることができます。この2つのプログラムを合わせることで、消耗アイテムに困ることがほとんどなくなるかと思います。

また、今回のプログラムでは金策にもなるので、寝ている時間などに回すことでお金には困らなくなるかと思います。


プログラムの不備、改善点などありましたらコメントやお問い合わせからお願いいたします。 


念のため書きますが、使用マイコンはArduino Leonardoです。最もメジャーなUnoなどでは本プログラムは使えませんのでご注意を。

Arduino Arduino Leonardo (ピンソケット・ピンヘッダ実装済) 【A000057】
by カエレバ

 

0 件のコメント:

コメントを投稿

【ポケモンSV×arduino06】道具プリンター乱数自動化(藍の円盤)

 ※本記事は、ポケモンSVの藍の円盤(DLC)にて、 道具プリンター を決まった日時に起動することで 特定のアイテム、ボールを狙って量産する操作を自動化 するプログラムについて解説した記事です。ポケモンSVの操作をArduino Leonardoで自動化しております。 本記事の内...