つきなみなブログ

ポケモンなど

【ポケモンSV】競りオシャボ自動回収プログラム

自動で競りのオシャボを所持金が尽きるまで回収してまわるプログラムです。

競りの自動化は既にいくつかありますが、下記のぽけ太さんのプログラムを参考に、環境差考慮、高速化、安定化などを目指して作成したものになります。(ご本人様許諾済)

3店舗を回りながらオシャボの有無を確認するので、初期位置がしっかりしていればだいたい10~12時間でカンストしたお金を使い切ると思います。使い切ると止まります。

 

本記事は、Nintendo Switchの自動化支援ソフトであるPoke-Controllerをすでに導入済の方向けの内容となります。導入がまだの方はご注意ください。

https://github.com/KawaSwitch/Poke-Controller

 

 

 

更新履歴

2023/1/19:商品判別・購入機能を修正しました。ボールの種類毎に識別し、それぞれの累計入手個数を表示するようにしました。誤商品購入がほぼなくなりました。(SV_seri_gantetsu_v2.py)

 

使い方

プログラムと識別用の画像フォルダをそれぞれ指定位置に配置する

ダウンロード先

drive.google.com

 

SV_seri_gantetsu_v2.py

ImageProcessingOnly

の中にコピー。

 

image_SV_auctionをフォルダごと

Template

の中にコピー。

 

 

事前準備

所持金を多めに確保しておく。

インターネットから時間を合わせるをオフにする。

話す速度:はやい

オシャボ一つ購入のたびに日付が1日進みます。カンストしたお金を使い切るような長時間稼働をさせる場合、日付を31日ある月の1日目の0:00から始めてください。

二回商品名を唱えるおばさんの前に正対し、なるべくカメラワークを真正面にしてスタート(床の木目を見て調整するとよいです)

初期角度は継続動作のためにかなり重要なので何度か試して感覚をつかんでみてください。

 



プログラムを開始する

 Poke-ControllerのCommandから「SV競りオシャボ回収ver2」を選び、Startを押す。

プログラムファイルを入れてあるのに「SV競りオシャボ回収ver2」が出てこない場合はStartの左のReloadを押す。

 

注意点等

・環境によって隣の店に進む際、走るケースと歩くケースがあるようです。

歩く場合はデフォルトのままで大丈夫ですが、走る場合はプログラム32行目の
move_time = 0.85にしてください。

(それでもうまくいかない場合は、移動距離から逆算して値を調整してください)

move_time = 2.725

走ってしまう場合は、回を積むごとに立ち位置にずれが生じる可能性が高まります。そのための位置の微調整機能を追加しており、なるべく継続動作するよう試行しています。

 

・リピートボールなどをスピードボールと誤認識してしまう場合の対応:

環境によって認識精度に差があり、誤認識するケースがあるようです。
167行目、オシャボを判別・購入する関数
if self.isContainTemplate(os.path.join("image_SV_auction/item", name), 0.8, show_value=False):

show_value=Falseを
show_value=True
としてください。
ログに各ボール画像とのマッチング率が表示されるようになります。その一つ前の0.8は購入するかどうかの閾値です。
ご自身の環境でスピードボールとのマッチング率がいくつになるかを確認し、それより少し大きな値に閾値を0.8から変更してみてください。

よくわからなかったら0.85-0.9くらいにしてみてください。

おわりに

参考にさせていただいたぽけ太さん、動作検証、画像提供いただいたとりにくさんにこの場を借りて感謝申し上げます。

時間帯による陽のあたり加減?とかで稀に安物を買ってしまっていることもあるみたいです。このあたり改良したら追記させていただきます。→2023/1/19修正・追記しました。

 

使ってみたご意見等あればTwitter@Nishinaka_pokeまでお願いします。