【Poke-Controller】レジェンズアルセウスのフィールド色違い探し自動化(純白の凍土ver)
はじめに
色違いヒスイポケモンをゲットしたい!(オヤブンじゃなくてもいい!)
そんな思いから、Poke-Controllerを使ったレジェンズアルセウスのフィールド色違い探し自動化プログラムを作成しました。
前回の記事で紅蓮の湿地verを作りましたが、今回は純白の凍土verです。
使い方などは前回と同様ですが、オプション設定を一部変更しています。
カメラ感度を2にして実行してください!
プログラムは下記に格納しています。
2023/4/30追記:
v3.0に修正しました。夜盗と戦闘せずリセットするようになっています。
(戦闘すると、博士に図鑑の報告をして止まってしまうため)
また、テンプレートマッチング未使用版を作成しました。
何が出来るの?
純白の凍土エリアで 、次のポケモンがいるルートを自動移動します。
・ゾロア、バスラオ、ワシボン、ニューラ、クレベース、オドシシ
色違いのポケモンを検知するまで、プログラムが動き続けます。
色違いに会うまでの所要時間は、平均40分くらいです(光るおまもり所持)ただ、最長で2時間くらい色違いが出ないこともありました
捕獲は手動です!逃げられないように注意してください!
注意事項
PokeCon3.6(Python3.6)でのみ動作確認しています
Poke-Controllerの環境設定が必要です。
(pyaudioというライブラリをインストールする必要があります)
事前準備
Poke-Controllerの環境設定(pyaudioのインストール)
前回の記事に記載している内容を参考にしてください。
(人によって環境が違うため、記載のやり方ではできないかもしれません)
プログラムの格納
1. ダウンロードしたファイル「ArceusFieldShinyv2_0_Junpaku_JPN.py」を格納する
下記フォルダに格納してください
パス:Poke-Controller-master\SerialController\Commands\PythonCommands
2. ダウンロードしたフォルダ「Arceus_Tree」を格納する
下記フォルダに格納してください
パス:Poke-Controller-master\SerialController\Template\
レジェンズアルセウスの設定
下記の状態であることを確認してください
(1)オプションで「話の速さ」を「速い」にする
(2)カメラ感度を「2」にする
(2)オプションで「BGM」と「鳴き声」を「0」にする
(3)「純白の凍土」の「氷山ベース」へ移動する
(4)ライドポケモンは、ウォーグルにカーソルを合わせる
(5)低確率で夜盗に襲われるため、A連打でユキノオーを倒せるポケモンを手持ちに入れ、カーソルを合わせる
(6)レポートを書いておく(おまかせレポートはオフにする)
※プログラムの誤動作で主人公が倒れてアイテムロストするかもしれません、念のためレポート重要です
動作の流れ
純白の凍土の「氷山ベース」に移動した後、レポートを書いてから、プログラムを実行してください
ウォーグルに乗って、下記2通りのルートを自動で移動します
色違いが見つからなかった場合は、キャンプに戻る→村に戻る→純白の凍土に移動して、また先ほどの移動を繰り返します。
色違いが見つかった場合は、CAPTUREボタンを長押しして動画を撮影した後、HOMEボタンを押してプログラムを終了します。
プログラムが終了したら、撮影された動画を確認してください。
動画を見れば、色違いがどこに発生したのか分かります。
※動画に映っていない場所で色違いが発生することもあります!
地下にいる色違いゾロアを検知した場合は下記のようになります
ゲームを再開するときは、まずレポートを書きましょう。
(逃げられたらリセット!)
その後、動画の情報をもとに色違いのポケモンを探してましょう。
見つからない場合は、一度キャンプに戻ってから同じ場所へ行ってみてください。
もう一度、色違い出現の演出を見ることができるため、確認しやすいです。
※キャンプで朝まで休んだり、時間帯が変わったりで色違いのポケモンが消えることがある気がします(詳細不明。キャンプに戻るだけなら消えなかったです)
※ポケモンの捕獲は手動で頑張ってください!(油断すると逃げられます…)
上手く動かないときは
1.interruptでプログラムが終了する場合
画像認識に失敗していることが多いです。
直前で読み取っているpngファイルを、ご自身で取得しなおしたものに差し替えることで上手く動くかもしれません。
2.いつの間にか天冠の山麓に移動している場合
「古の隠れ里」が解放されていないセーブデータだとフィールドへの移動が上手くいきません。
フィールドへ移動する処理「toField()」の中にある処理「self.press(Hat.TOP,0.1, 0.7)」を1つ削除すると上手く動くかもしれません。
あとがき
自動化を推進してくださっている先人の方々、いつも本当にありがとうございます…!
このプログラムがどなたかの喜びに繋がればうれしいです。
プログラムが無事に動いたこと、上手くいかなかったことなどあれば、
記録として残していただけると大変ありがたいです。
他の方が調べたときに、その記録がきっと役に立ちます・・・!
あと個人的に私が喜びます。