【Arduino Leonardo】競り自動化【ポケモンSV】
はじめに
Arduino LeonardoでポケモンSVの競りを自動化しました。画像認識は使用しておらず1つの店の品を無差別に競り落とします。
ライブラリはNintendoSwitchControll-masterを使用しています。導入方法等はこちらでは説明しませんのでリンク先や他サイトを参考にしてください。
ポケモンSVは処理落ちやエラー落ち等発生する場合があるため長時間放置するのは自己責任でお願いいたします。
プログラムについて
競りに指定時間参加した後にセーブして日付を1日進めて再起動します。競りに時間が掛かった場合はセーブできませんが再起動で競りの内容が変わるので詰むことはありません。
事前準備
Switchの本体設定で「インターネットで時間をあわせる」を「OFF」にしてください。ゲーム内設定で「話のはやさ」を「はやい」にしてください。店の前、話しかけられる位置からプログラムを実行してください。
3店あるので場所はお好みで。画像のお店は努力値下げきのみや羽根の出品があるので少しお得な気がします。(すぐカンストしますが…)
プログラム(コード)
以下コピペしてください。日付変更はライブラリ内のプログラムをほぼ転用させていただいています。競り参加時間(A連打回数)はお好みで、待機時間は環境によって調整してください。
#include <auto_command_util.h>
void setup() {
pushButton(Button::ZL, 500, 5);//switchに認識させる為に無駄打ちをしておく
}
//メニューを開きレポートを書く
void svSave(){
pushButton(Button::X, 1200);
pushButton(Button::R, 1200);
pushButton(Button::A, 2800);
pushButton(Button::B, 400, 2);
}
//ホーム画面~日付設定画面まで
void FromHomeToDay(){
// ホーム画面 > 設定
pushButton(Button::HOME, 450);
pushHatButton(Hat::DOWN, 20);
pushHatButton(Hat::RIGHT, 20, 5);
pushButton(Button::A, 480);
// 設定 > 本体 > 日付と時刻
pushHatButtonContinuous(Hat::DOWN, 1600);
pushHatButton(Hat::RIGHT, 20);
pushHatButton(Hat::DOWN, 20, 4);
pushButton(Button::A, 280);
// 日付と時刻 > 現在の日付と時刻
pushHatButton(Hat::DOWN, 20, 2);
}
//日付を1日進める
void DayAdvance(){
pushButton(Button::A, 200);
pushHatButton(Hat::RIGHT, 20, 2);
pushHatButton(Hat::UP, 20);
pushButton(Button::A, 20, 3);
pushButton(Button::A, 110);
}
void loop() {
pushButton(Button::A, 400, 160);//約80秒競りに参加
pushButton(Button::B, 400, 3);//メッセージ送り
svSave();//メニューを開きレポートを書く
//日付変更
FromHomeToDay();//ホーム画面~日付設定画面まで
DayAdvance();//日付を1日進める
pushButton(Button::HOME, 1000);//ホーム画面に戻る
pushButton(Button::Y, 500);//ユーザー切り替え
pushButton(Button::A, 5000);//YES
pushButton(Button::A, 20000);//ユーザー選択
pushButton(Button::A, 300, 3);//スタート
delay(20000);//画面表示まで待つ
}
その他(解説等)
投稿するにあたり手直ししましたがこのコードで動作確認していないのでうまく動かなかったら教えてください。コンパイルはできたのでたぶん大丈夫だと思いますが…。(PC起動が面倒なのでそのままぶん投げる)
手直し前ので自分は一晩放置で問題なく動いてました。一晩で大体500~600万程溶けるので大会周回(A連打)と交互に行うことをおすすめします。