今回は、ポケモン剣盾のカンムリ雪原で遊べるダイマックスアドベンチャーの「エンドレスモード」を自動化していきたいと思います。
ポケモンの特性を夢特性に変える『とくせいパッチ』は需要があるのにもかかわらず、『マックスこうせき』が200個も必要ということで、尻込みしてしまっている方も多いと思います。ですが、そんな心配も今日で終わりにしましょう!
マイコンで自動化するコードを紹介していきます。
この記事をご覧になる前に
マイコンをまだ導入していない方は、以下の記事を参考に導入してみてください。このブログでは、『Arduino Leonardo』というマイコンを使っているため、異なる種類のものではうまく動かない可能性があります。
マイコンと呼ばれるものをご存知でしょうか? Switchに接続するだけで様々な作業を "自動" で行ってくれるというものです。 導入すれば作業が楽になるだけでなく、寝てる間に色々稼ぐこともできちゃう便利なアイテムなわけですね! […]
今回のコードは「NintendoSwitchControlLibrary」を使用しています。まだダウンロードされていない方は、解凍したフォルダを『Arduino』フォルダの中にある『libraries』フォルダの中にコピーしておいてください。
A library for microcontrollers that uses Arduino to automate…
今回のコードについて
ダイマックスアドベンチャーを自動化するアルゴリズムについては、あずき(@Azukiss_poke)氏のブログを参考にさせてもらいました。
サムネ画像 ※なんと ますたー氏のブログ『ますたーの備忘録』でこの記事を参照していただきました。ありがとうございます。 …
この記事ではマクロコンを使って自動化を行っているということですが、こちらの手順をマイコンに落とし込んだものにも需要があると考えました。
改善案も求められているようなので、コードを検証しつつ効率よく回すアイデアが見つかれば、報告してあげると良いかもしれません。
ソースコード
実際に書いたコードはこちらになります。
コードの改良に成功したため、コードを更新しました。
15時間ほど回してみましたが、1時間あたり平均22個の「マックスこうせき」を稼ぐことができました。(元のコードは平均19個)
変更点は主に2つです。
・1サイクルあたりの周期をやや短くしました。
・ループ破綻を回避するために組まれている↓キーのせいで、「たたかう」を選択すべき状況であっても「ポケモン」や「にげる」を開いてしまうことがあるのですが、そこにハマってしまう確率を少し下げました。
- 『元のコード』を確認したい方はこちらをクリック
-
/** * 初期条件は以下の通り * 1.エキスパンションパスを購入済みであること * 2.ダイマックスアドベンチャーの「エンドレスモード」を解放済みであること * 3.「マックスダイ巣穴」内の清掃員前で待機していること * 4.オフライン状態であること * 5.無線のコントローラーが接続されていないこと * 6.「設定」から「話の速さ」を「速い」にしておくこと * 7.モンスターボールを大量に用意し、ボールの先頭に設定しておくこと */ // ライブラリを読み込むためのコード #include <NintendoSwitchControlLibrary.h> // マイコンのセット時に1度だけ行われる処理 void setup() { // Switchがマイコンを認識するまでは信号を受け付けないため、適当な処理をさせておく pushButton(Button::B, 500, 5); } // ここに記述した内容がループされ続ける void loop() { pushHat(Hat::DOWN, 2000); pushButton(Button::A, 2000, 5); delay(2000); pushHat(Hat::DOWN, 2000); pushButton(Button::A, 2000); pushHat(Hat::DOWN, 2000); pushButton(Button::A, 2000, 2); pushHat(Hat::DOWN, 2000); pushButton(Button::A, 2000, 2); pushButton(Button::B, 3000); holdButton(Button::B, 1500); }
/**
* ダイマックスアドベンチャーを自動周回するスケッチ
*
* 初期条件は以下の通り
* 1.エキスパンションパスを購入済みであること
* 2.ダイマックスアドベンチャーの「エンドレスモード」を解放済みであること
* 3.「マックスダイ巣穴」内の清掃員前で待機していること
* 4.オフライン状態であること
* 5.無線のコントローラーが接続されていないこと
* 6.「設定」から「話の速さ」を「速い」に、「戦闘アニメ」を「みない」にしておくこと
* 7.モンスターボールを大量に用意し、ボールの先頭に設定しておくこと
* 8.ちょいらくモードが「しない」であること
*/
// ライブラリを読み込むためのコード
#include <NintendoSwitchControlLibrary.h>
// マイコンのセット時に1度だけ行われる処理
void setup() {
// Switchがマイコンを認識するまでは信号を受け付けないため、適当な処理をさせておく
pushButton(Button::B, 500, 5);
}
// ここに記述した内容がループされ続ける
void loop() {
pushHat(Hat::DOWN, 2000);
pushButton(Button::A, 2000);
pushButton(Button::A, 2000);
pushButton(Button::A, 2000);
pushButton(Button::A, 2000);
pushButton(Button::A, 2000);
delay(1800);
pushHat(Hat::DOWN, 2000);
pushButton(Button::A, 800);
pushHat(Hat::DOWN, 2000);
pushButton(Button::A, 2000);
pushButton(Button::A, 800);
pushHat(Hat::DOWN);
pushButton(Button::A, 1000);
pushButton(Button::A, 1000);
pushButton(Button::B, 2800);
holdButton(Button::B, 1400);
}
設定の確認
マイコンを繋げる前に、以下の状態になっていることを確認してください。
2022年5月12日追記:必要な設定を一部追加しました。
- エキスパンションパスを購入済みであること
- ダイマックスアドベンチャーの「エンドレスモード」を解放済みであること
-
「マックスダイ巣穴」内の清掃員前で待機していること
- オフライン状態であること(機内モード推奨)
- 無線のコントローラー(プロコンなど)が接続されていないこと
- 「設定」から「話の速さ」を「速い」に、「戦闘アニメ」を「みない」にしておくこと
- モンスターボールを大量に用意し、ボールの先頭に設定しておくこと
- ちょいらくモードが「しない」であること
ほとんどの設定はいつもどおりですが、「モンスターボールを大量に用意し、ボールの先頭に設定しておくこと」は絶対に忘れないでください。
これを怠ると、マスターボールやガンテツボールといった希少なボールを投げてしまうことに繋がります。
さいごに
このコードを回していると、各所に無駄な動作が見受けられるかと思いますが、ループから抜けないことを優先しているためにこのような形となっています。
自身でもこのコードは検証していますが、ループから抜けてしまうような自体には遭遇していないので、放置しながら稼ぐのにはすごく重宝しそうです。
また、伝説のポケモンについては「エンドレスモード」では捕まえることができないため、勝手に捕まえてしまう心配がないのもうれしいところですね!