放置少女の育成はあまりにも時間がかかりすぎるので、育成の自動化スクリプトを作ってみました。
入手や使い方の説明などはこちらから。
cover1sea / houchi_auto_ikusei
→zipダウンロード(v2.5)
過去バージョン
zipダウンロード(v1.1)
zipダウンロード(v1.2)
zipダウンロード(v1.3)
→zipダウンロード(v1.4)
→zipダウンロード(v1.5)
→zipダウンロード(v1.6)
→zipダウンロード(v2.0)
→zipダウンロード(v2.1)
→zipダウンロード(v2.2)
→zipダウンロード(v2.3)
→zipダウンロード(v2.4)
WindowsからNoxを介して動かすことを想定しています。
環境設定が面倒なのでちょっと敷居は高いかも。
機能としては、設定した育成方法(C級~A級)、ステータス重み、育成回数に応じた自動育成と、ステータスの増加量記録機能を実装しています。
クロップだけしてOCRに通しているせいか、たまに数値の誤認識が起きるので完全放置せずときどき様子見たほうが良いです。
追記:OCRに通す前の前処理を加えて精度改善しました。
私の環境では誤認識が起きなくなりましたが環境によるかも?
なお、放置少女の規約は読んでいないのでどうなのか知りませんが、スマホゲームにおいてマクロや自動化ツールなどはアウトなこともあるので使用は自己責任でお願いします。
調べた感じだとこんなQAをみつけました。
「不正な動作」が曖昧な表現ではありますが、鯖に極端な負荷をかけるわけでもなく、他プレイヤーに不利益も与えない育成自動化くらいは許されるとは思います。
ただし、運営の匙加減なのでコッソリ使うくらいにとどめたほうがよいです。
※Lobi終了のため上記QAの運営回答を本文にコピーしておきます。
便利なツールありがとうございます。
引数にある重み付けの設定値の意味について教えて下さい。
筋力増加量*重み1+敏捷増加量*重み2+知力増加量*重み3+体力増加量*重み4
を計算して、結果が正の場合に育成確定する、という感じです。
あけましておめでとうございます。
うまいこと使えないのですが、質問しても大丈夫ですか?
ご迷惑になるようでしたら諦めます。
あけましておめでとうございます。
解決できるかはわからないですが、質問はご自由にどうぞ。
ありがとうございます。
コマンド起動を掛けた所、画像の状態で育成が走りませんでした。
一番下のPython -Vはパスを通すのにミスがあったのか心配だったので走らせただけです。
何かわかりましたらご教授お願いします。
申し訳ないです。
アップローダーのURL貼り付けてありますので、お手数ですがそちらから画像の確認をお願いします。
画像ありがとうございます。
ファイルパスに問題がありそうなので、以下をご確認ください。
・main.pyがあるディレクトリに、「tmp」という名前のディレクトリはありますか?なければ作成してください。
・main.pyまでのファイルパスに日本語が入らないようにしてください。
H:\文字化け\houchi_~←この文字化け部が駄目そうなので、Hドライブ直下に置くなど。
使用できました!
2番目作業 文字化け部分が原因だったようです。
フォルダ名を英語変更で改善しました。
お手数おかけしてしまい申し訳ありません。
ありがとうございました。
解決したようでよかったです。
大変便利なツールありがとうございます。
一応使った感じを残しておきます。
1.自分の環境では1回育成4-5秒程度時間がかかりました。
2.認識ミスは見ている限りありませんでした。
3.WIFI環境ですが、たまに2~5秒のローディングが入るとOCR認識できないのか、スクリプトが落ちて育成が停止しました。そのため、たまに停止を見る必要があります。
レビューありがとうございます。助かります。
1.育成確定後のステータス上昇表示の待ち時間がボトルネックとなっています。時間効率が悪いのでどうにかしたいと思うところ。
3.これはちょっと改善案が思いついたので改善試してみます。
お世話になっております。
Python初心者であまり理解できていないのですが、実行の仕方に問題があるのでしょうか。
C:\Program Files (x86)\Nox\bin>python main.py c|b 10000 10000 10000 10000 500
‘b’ は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。
オプションの指定の問題ですね。
c|bはcもしくはbどちらか一方という意味です。
C級ならc、b級ならbを指定ください。
あと、重み値が大きすぎるとオーバーフローが怖いので、小さめの方がいいかもです。
(10000くらいなら大丈夫だとは思いますが)
提示頂いたコマンド例では全ステータスを均等育成となるので、すべて1で指定しても同様の結果が得られます。
例:B級の均等育成500回
python main.py b 1 1 1 1 500
ありがとうございます無事実行できました。
全くPyhonというかプログラミング関連に詳しくなくて悪戦苦闘しながら、どうにか導入までできたのですが、最後の育成バッチがうまく動きません
エラーで「NotADirectoryError: [WinError 267] ディレクトリ名が無効です。」と出てしまっています
わからないことだらけなので、ご教示いただけますと幸いです
NotADirectoryErrorなのでディレクトリ設定にミスがあるのだと思います。
以下ご確認ください。
1.main.py 13行目「F:\\Nox\bin」が「自身のNoxインストールディレクトリ\bin」になっているか
2.main.pyがあるディレクトリに「tmp」ディレクトリがあるか(無ければ作成)
お返事遅くなり、申し訳ございません
ディレクトリ設定については改善したのですが、今度はIndexErrorが発生してしまいました…
1080p
b’Physical size: 1080×1920\r\n’
Traceback (most recent call last):
File “C:\houchi_auto_ikusei-1.3\main.py”, line 282, in
main(sys.argv)
File “C:\houchi_auto_ikusei-1.3\main.py”, line 251, in main
for i in range(int(args[6])):
IndexError: list index out of range
と表示されています
参照範囲エラーというのは理解できるのですが、どこを直すべきなのかがわかりません…
お手数をおかけしますが、ご教示いただけますと幸いです
確認してみたところ、githubで改行コードが自動変換されることが原因でbatファイルが正常に動かないようです。
応急策として、batファイルの一行目(SET STR=)を削除してみてください。
お返事ありがとうございます
いただいた応急策を実施したのですが、エラー内容に変更ありませんでした…
申し訳ありません
一行目の改行まで削除されていますか?
一行目の改行まで削除し「SET /P STR=”育成回数:”」が一行目になるようにすると、
「育成回数:」で表示が止まって育成回数が指定できるようになるかと思います。
これで不可能な場合、batファイルの「%STR%」が育成回数の指定なので、ここを任意の数値に直接書き換えて実行するしかないかもしれません…
お返事ありがとうございます
もう一回、ダウンロードし直して、一番上の行を削除しましたら解決しました!
ありがとうございました!
お世話になっております。
順番通りにやってみた結果、うまく動かないので大変恐縮ではございますが質問させていただきます。
C:\Users\guone>python main.py c 1 1 1 1 3
err: ss_dir not exist
C:\Users\guone\tmp
上記のような結果になりました。「guone」はユーザー名です。
なぜそこのtmpを参照しようとするのかわかりません。。
どうすればうまく動くようになるか、思い当たる節がございましたらご指導のほどをよろしくお願いいたします。
パソコン再起動したらできるようになっていたようです。お騒がせしましたm(_ _)m
こんばんは。こちらに記述された手順に則ってコマンドを使用したのですが、「python: can’t open file ‘main.py’: [Errno 2] No such file or directory」と出てしまい使用できませんでした。お手数をおかけしますが、ご教示いただけますと幸いです。
エラー文通り、ファイルがない
→main.pyがないディレクトリで実行しています。
main.pyのあるディレクトリに移動して実行すればよいかと思います。
便利だ、元々クイズ目当てで拝見していましたが、これは礼を言わざるをえない。
素晴らしいツール有難うございます。
大変便利なツールありがとうございます。
C:\Users\user\Desktop\houchi_auto_ikusei-1.5>python main.py c 0 0 0 1 11
Traceback (most recent call last):
File “main.py”, line 7, in
import cv2
ModuleNotFoundError: No module named ‘cv2’
このエラーはどういう意味でしょうか?
大変失礼しました。
先ほどのエラーは自己解決できました。
こんばんは。
以下のようになってしまって動作しません。
C:\houchi_auto_ikusei-1.5>SET /P STR=”育成回数:”
育成回数:10000
C:\houchi_auto_ikusei-1.5>python main.py b 1 0 0.1 1 10000
Traceback (most recent call last):
File “C:\houchi_auto_ikusei-1.5\main.py”, line 20, in
tool = pyocr.get_available_tools()[10000]
IndexError: list index out of range
IndexErrorの対処方法を調べてはみたもののわかりませんでした…なにか思いつくものがあればお願いします。上記の%STR%を任意の値にしても変化はありませんでした。
原因不明ですが、プログラムが書き換わってしまっているように見えます。
main.pyをメモ帳などで開いたとき、20行目のコードはどうなっていますか?
以下の通りになっていなければ以下に書き換えてください。
tool = pyocr.get_available_tools()[0]
C:\houchi_auto_ikusei-1.5>SET /P STR=”育成回数:”
育成回数:20
C:\houchi_auto_ikusei-1.5>python main.py b 1 0 0 0 20
Traceback (most recent call last):
File “C:\houchi_auto_ikusei-1.5\main.py”, line 20, in
tool = pyocr.get_available_tools()[0]
IndexError: list index out of range
C:\houchi_auto_ikusei-1.5>PAUSE
上記の結果になりました。
素早い返信してくださっていたのに遅れて申し訳ないです
Tesseract-OCRはインストールされていますか?
(初期設定の3.)
インストール済の場合、デフォルトのインストールディレクトリ以外の場所にTesseract-OCRがインストールされているかと思いますので、19行目のファイルパスを自身のインストールディレクトリにあわせて変更してみてください。
インストール先を変えた覚えがない…という場合は
C:\Program Files (x86)\Tesseract-OCR\にインストールされている可能性が高いです。
↑にtesseract.exeがあれば
pyocr.tesseract.TESSERACT_CMD = r”C:\\Program Files\\Tesseract-OCR (x86)\\tesseract.exe”
となります。
Tesseract-OCRのインストール方法が間違っていたようです。アンインストールして再度インストールしたところ問題なく動きました!ありがとうございます!!
とても便利です。ありがとうございます。
いくつか質問させてください。
MAX_OCR_RETRY =
NUM_ARGS =
NUM_ARGS_DEV =
SEC_WAIT_TAP =
SEC_WAIT_GET_STATUS =
SEC_RETRY_GET_STATUS_INTERVAL =
SEC_RETRY_OCR_INTERVAL =
SEC_WAIT_SIGINT =
それぞれの意味合いを教えていただけますでしょうか?
また、ステータスが読み込めない際、再読み込みと時と、次に進んでしまう時があります。
どのような設定をしたらよろしいでしょうか?
あまりスクリプト内のパラメータを変更することは想定していませんが、一応各パラメータについて説明します。
MAX_OCR_RETRY:
OCRで読み込んだ数値が異常に小さい/大きいことを検知した時のリトライ回数上限です。
上限を超えるとリトライをあきらめて、いったん育成を確定します。
NUM_ARGS =
main.pyのデフォルトの引数の数です。
NUM_ARGS_DEV =
noxが複数窓の場合のmain.pyの引数の数です。
IP:portの指定が必要になるためNUM_ARGS+1になります。
SEC_WAIT_TAP =
画面タップ後の待機時間(秒)
SEC_WAIT_GET_STATUS =
育成画面をキャプチャしたあとの待機時間(秒)
PCのスペックによってはキャプチャ画像の保存がOCR読み込ませるまでに間に合わなさそうだったためとりあえず用意したパラメータです。
私の環境では0でも動くためとりあえず0になっています。
SEC_RETRY_GET_STATUS_INTERVAL =
OCRで読み込んだステータスがそもそも数値ではない場合の待機時間です。
これはラグでボタンが押せていない、画面遷移ができていないことが要因であることがほとんどであるため、
一定時間待機後に「やめる/保存」ボタンが出ているのか「C級育成/B級育成」のボタンが出ているかを判定し、それに応じて状態遷移しています。
SEC_RETRY_OCR_INTERVAL =
OCRで読み込んだ数値が異常に小さい/大きいことを検知した時のリトライまでの待機時間です。
SEC_WAIT_SIGINT =
スクリプトがSIGINT(Ctrl+C)を受け取ったとき、つまりはユーザがスクリプトを強制終了したときの育成結果画面表示でエラーを起こさないようにするための待機時間です。
>また、ステータスが読み込めない際、再読み込みと時と、次に進んでしまう時があります。
想定動作のため特に問題はないかと思います。
ステータスが読み込めない場合がまず2パターンあり、それぞれで処理が変わります。
・読み込んだ数値の大きさがおかしい場合:
MAX_OCR_RETRYで書いた説明の通りです。
・読み込んだものがそもそも数値として認識できなかった場合:
SEC_RETRY_GET_STATUS_INTERVALで書いた説明の通りです。
丁寧に説明していただき、本当にありがとう御座います!
お陰様で安定させられるようになりました。
以前から自動育成を使わせていただいています。
本日使用しようとしたら、以下のように表示されて突然使用できなくなりました。
err: number of args not matched.
どのように対処したら良いかご教授お願いします。
お騒がせしてすみません。
自己解決しました。
コマンドの指定方法が間違っていたようです。
レス遅れてしまいましたが解決したようで良かったです。
初めて使用させて頂きました
難しそうだったのですが手順道理でうまく動いているようです。
ありがとうございます。
質問ですが敏捷と体力を上げつつ
筋力+13 敏捷-1 体力-1
このような場合も保存したいのですが
無理でしょうか?
コマンドの実行時に指定できます。
python main.py b A B C D 100
(~.batファイルを使っている場合、batファイルをメモ帳で開くとこのコマンドの編集ができます。
このコマンドの時、
Δ筋力×A + Δ敏捷×B + Δ知力×C + Δ体力×D
の計算結果がプラスになったときに育成を保存、という動きB級育成で100回行います。
(Δ~、は変化量の意味)
コメントの方式であれば、例えば
A=0.3、B=1、C=0、D=1
とすると
13×0.3 + (-1)×1 + 0×0 + (-1)×1 = 1.9
となり保存されるようになります。
C:\Users\yukir\Desktop\houchi_auto_ikusei-1.5\houchi_auto_ikusei-1.5>SET /P STR=”育成回数:”
育成回数:10
C:\Users\yukir\Desktop\houchi_auto_ikusei-1.5\houchi_auto_ikusei-1.5>python main.py b 1 0 0.1 1 10
C:\Users\yukir\Desktop\houchi_auto_ikusei-1.5\houchi_auto_ikusei-1.5>PAUSE
上記の結果になりました。
どこが問題があるのはわかりませんので、どのような対処すればいいでしょうか。
スクリプトが実行されれば何かしらメッセージは出るはずなので、前提からコケているのかなという感じがします。
コマンドプロンプトを開いて、
python -V
を実行したときの表示はどうなっているでしょうか?
Python 2.×.×というような表記であればPythonのバージョンが古いため更新が必要です。
(参考までに、動作確認はPython 3.9.7で行っています)
Pythonのバージョンが問題なさそうであれば原因の見当がつかないです…
Pythonを再インストールして、今は下記の結果になりました。
C:\houchi_auto_ikusei-1.5>SET /P STR=”育成回数:”
育成回数:10
C:\houchi_auto_ikusei-1.5>python main.py b 1 0 0.1 1 10
Traceback (most recent call last):
File “C:\houchi_auto_ikusei-1.5\main.py”, line 7, in
import cv2
ModuleNotFoundError: No module named ‘cv2’
C:\houchi_auto_ikusei-1.5>PAUSE
ちなみにPythonのバージョンは3.10.5です
必要なライブラリが不足しています。
githubページの初期設定をご参照ください。
python -m pip install opencv-python
python -m pip install pyocr
すみません、再インストールの時忘れました。
今はこうなっています
C:\houchi_auto_ikusei-1.5>SET /P STR=”育成回数:”
育成回数:1
C:\houchi_auto_ikusei-1.5>python main.py b 1 0 0.1 1 1
Traceback (most recent call last):
File “C:\houchi_auto_ikusei-1.5\main.py”, line 298, in
main(sys.argv)
File “C:\houchi_auto_ikusei-1.5\main.py”, line 64, in main
init(args)
File “C:\houchi_auto_ikusei-1.5\main.py”, line 78, in init
dev_str = subprocess.check_output([“nox_adb”, “devices”])
File “C:\Python310\lib\subprocess.py”, line 420, in check_output
return run(*popenargs, stdout=PIPE, timeout=timeout, check=True,
File “C:\Python310\lib\subprocess.py”, line 501, in run
with Popen(*popenargs, **kwargs) as process:
File “C:\Python310\lib\subprocess.py”, line 969, in __init__
self._execute_child(args, executable, preexec_fn, close_fds,
File “C:\Python310\lib\subprocess.py”, line 1438, in _execute_child
hp, ht, pid, tid = _winapi.CreateProcess(executable, args,
FileNotFoundError: [WinError 2] The system cannot find the file specified
C:\houchi_auto_ikusei-1.5>PAUSE
nox_adbのパスが通っていないと思います。
(初期設定4.)
成功しました。
ありがとうございます。
有益なツールを公開して頂きありがとうございます。面倒なポチポチから解放されて育成が捗ります。
質問させて頂きます。
例えば筋力+体力の育成で両パラメータがプラスの場合のみ育成、どちらか一方でもマイナスならキャンセルしたいのですが可能でしょうか。
計算式の関係上、その動作はできませんね。
ただ、細かい計算は失念しましたが以前試算したときに、どちらかマイナスであればキャンセルの育成方法は育成丹の効率があまり良くなかったと記憶しています。
自分が求めるパラメータ比に近づける重みを決めかねている場合は、育成シミュレータも用意しているので是非…
https://cover1sea.net/houchi_sim/
ありがとうございます。育成シミュレータも活用させて頂きます。
素敵なツールを公開していただき、ありがとうございます。
コマンドを走らせたところ、pythonと返答が来て終了してしまいます。
どうすればいいでしょうか?
具体的な情報が不明なので、まずはコマンドプロンプトの画面をコピペしてもらえますか?
コマンドプロンプトで「python -V」を実行したときの表示も欲しいです。
C:\Users\○○>python -V
Python
C:\Users\○○>
こうなってしまいます。○○は漢字のユーザー名です。
このあたりですかね。
https://www.out48.com/archives/5720/
https://happy-tenshoku.com/post-6679/
ありがとうございます。
無事起動しました!!
C:\Users\name\Documents\houchi_auto_ikusei-main>SET /P STR=”育成回数:”
育成回数:1000
C:\Users\name\Documents\houchi_auto_ikusei-main>python main.py b 1 0 0 0 1000
Traceback (most recent call last):
File “C:\Users\name\Documents\houchi_auto_ikusei-main\main.py”, line 20, in
tool = pyocr.get_available_tools()[0]
IndexError: list index out of range
C:\Users\name\Documents\houchi_auto_ikusei-main>PAUSE
続行するには何かキーを押してください . . .
となって起動できないです…。
github記載の初期設定3
tesseract-OCRをインストールしていないか、インストールしたフォルダがデフォルトでないかのどちらかです。
デフォルトの場所にインストールしていない場合はmain.pyの19行目のパスを編集してください。
神ツール公開ありがとうございます
ポチポチで腱鞘炎になりかけてたので助かりました
初コメント失礼します!
以前に二善三福鯖でお世話になっていたことがあり、一方的に存じ上げておりました。
私もSikulixというRPAツールを用いて育成の自動化をやっており、同士を見つけて嬉しくなりました。
デスクトップ画面を介さず、NOXの画面に直接アクセスしてスクリーンショットを撮り、OCRに回すことができるんですね。勉強になります!
しかも、それを一般化して配布できる状態に整えるとは。。。尊敬します。私は自分の環境でしか動くものが作れないので。
OCRの数値認識についてですが、私も最初精度が悪くて苦労しました。今は、NOXのウィンドウそのものを大きくするという無理矢理な方法でやっています。
python×Tesseract-OCRも少しやったことがあり、今は大量の願い返しの画像を処理するのに使っています。画像の二極化処理はされていると思いますが、縦横比を少し変えることで精度が良くなったことがありました。(https://twitter.com/lynx_houchi/status/1455501697808158724)ご存知かもしれませんが、一応共有させていただきます。
バージョンアップ・質問対応等お疲れ様です! 陰ながら応援しております。
コメントありがとうございます。
画像処理はど素人で手探りでやっているので全然ノウハウを持っておらず、情報助かります!
初期は無加工&負荷下げるために最低解像度前提、みたいな作りをしていたのでかなり精度ガバガバでした…
私も最初はデスクトップ画面をキャプチャしてマウス操作、みたいな動作させていたのですが、画面の一部とマウスのコントロールを占有されるのが耐えられなかったので今の方式に落ち着きました。
結果的に配布時にユーザ間の環境差分もある程度吸収できたので一石二鳥でしたね。
初めまして。
偶然この記事にたどり着き、便利なスクリプトを公開してくださっていて感激しました!
自分はブラウザ版でプレイしているのですが、NoxにChromeをインストールして、メニュー→アプリのインストールでインストールを行い、こちらのスクリプトを走らせてみたところ、現状は上手く動作しました!
取り急ぎご報告まで。
なるほど、nox上でブラウザ版を動かす発想はありませんでした笑
情報ありがとうございます。
このエラーの意味はわかりますでしょうか
C:\Users\Nagi4\OneDrive\Desktop\新しいフォルダー\houchi_auto_ikusei-2.1>python main.py c 0.01 1 0 1 100
1080p
b’Physical size: 1080×1920\r\n’
[ WARN:0@1.511] global D:\a\opencv-python\opencv-python\opencv\modules\imgcodecs\src\loadsave.cpp (239) cv::findDecoder imread_(‘C:\Users\Nagi4\OneDrive\Desktop\譁ー縺励>繝輔か繝ォ繝繝シ\houchi_auto_ikusei-2.1\tmp\screen_1.png’): can’t open/read file: check file path/integrity
Traceback (most recent call last):
File “C:\Users\Nagi4\OneDrive\Desktop\新しいフォルダー\houchi_auto_ikusei-2.1\main.py”, line 377, in
main(sys.argv)
File “C:\Users\Nagi4\OneDrive\Desktop\新しいフォルダー\houchi_auto_ikusei-2.1\main.py”, line 80, in main
init(args)
File “C:\Users\Nagi4\OneDrive\Desktop\新しいフォルダー\houchi_auto_ikusei-2.1\main.py”, line 104, in init
resolution_adjustment()
File “C:\Users\Nagi4\OneDrive\Desktop\新しいフォルダー\houchi_auto_ikusei-2.1\main.py”, line 204, in resolution_adjustment
if isClientV2(res_x, res_y):
File “C:\Users\Nagi4\OneDrive\Desktop\新しいフォルダー\houchi_auto_ikusei-2.1\main.py”, line 250, in isClientV2
if img[clv2xy[1]][clv2xy[0]][2]*res_y/1920 > 100 and img[clv2xy[1]][clv2xy[0]][1]*res_x/1080 > 100 :
TypeError: ‘NoneType’ object is not subscriptable
パスを半角英数字のみにしてください。
この例の場合「新しいフォルダー」をリネームする必要があります。
ありがとうございます
今まで利用できていましたがエラーが出るようになりました。
対処方法を教えて頂けますか。
下記エラーログは敏捷主ステのキャラを育成した時の物です。
主ステが筋力のキャラを育成すると筋力の部分の数値がおかしくなっており、主ステの部分で誤検知が出ているようです。
C:\Program Files\ho>python main.py b 0 1 0.1 1 700
1080p
b’Physical size: 1080×1920\r\n’
Houchi client V.2-
—script start—
1/700
筋力(0.00):7 (73311 -> 73318)
敏捷(1.00):92453 (10273 -> 102726)
知力(0.10):15 (74303 -> 74318)
体力(1.00):6 (96001 -> 96007)
warn: OCR誤認識検知、ステータスを再読み込みします…1
筋力(0.00):7 (73311 -> 73318)
敏捷(1.00):92453 (10273 -> 102726)
知力(0.10):15 (74303 -> 74318)
体力(1.00):6 (96001 -> 96007)
warn: OCR誤認識検知、ステータスを再読み込みします…2
筋力(0.00):7 (73311 -> 73318)
敏捷(1.00):92453 (10273 -> 102726)
知力(0.10):15 (74303 -> 74318)
体力(1.00):6 (96001 -> 96007)
warn: OCR誤認識検知、ステータスを再読み込みします…3
ちょうど今、その問題の対応版(v2.2)をアップロードしました。
お手数ですが、v2.2をご利用ください。
はじめまして。自動育成50~100回したあたりからpre_status0などの画像が真っ黒になり、それ以降失敗することが多々あります。原因は何でしょうか?
返信遅くなりすみません。
こちらで再現できないので憶測になってしまいますが、画像処理が追い付いていないのかな?と思います。
main.pyをメモ帳で開き、下記の行を変更すると改善するかもしれません。
SEC_WAIT_GET_STATUS = 0
↓
SEC_WAIT_GET_STATUS = 3
なお、この変更をするとキャプチャ取る度に3秒ディレイが生まれるようになるので、育成速度は遅くなります…
お世話になります。ver.2.0 から利用させていただいてます!
さきほど2.2を試してみたら、このようなエラーが出ました。どう対処すればよいでしょうか?
Noxの設定は、900×1600, 1080dpiです。
なお2.0は、たまに認識エラーが出る以外は問題なく動作しています。ご多忙中申し訳ありませんがよろしくお願いいたします。
——————–
> python main.py c 4 1 10 7 5
900p
b’Physical size: 900×1600\r\n’
Traceback (most recent call last):
File “E:\src\houchi_auto_ikusei-2.2\main.py”, line 386, in
main(sys.argv)
File “E:\src\houchi_auto_ikusei-2.2\main.py”, line 81, in main
init(args)
File “E:\src\houchi_auto_ikusei-2.2\main.py”, line 105, in init
resolution_adjustment()
File “E:\src\houchi_auto_ikusei-2.2\main.py”, line 205, in resolution_adjustment
if isClientV2(res_x, res_y):
File “E:\src\houchi_auto_ikusei-2.2\main.py”, line 251, in isClientV2
if img[clv2xy[1]][clv2xy[0]][2]*res_y/1920 > 100 and img[clv2xy[1]][clv2xy[0]][1]*res_x/1080 > 100 :
IndexError: index 1685 is out of bounds for axis 0 with size 1600
すみません、どうやらREADMEの文言を読み違えてたようで、解像度の設定をやり直したら動きました!おさわがせしました。
返信遅くなりすみません。
エラー出ているあたりにバグがあったので、修正します。
お返事ありがとうございます。
間隔をあけても1度失敗するとそれ以降をNOX再起動するまで解決できませんでした。
nox側のキャプチャ機能がうまく動いていない、というのが原因だと思うので、他に疑うとすればnoxのバージョンや設定などの環境差分くらいでしょうか…
動作確認している環境で、影響ありそうなパラメータを列挙してみます。
・Noxバージョン:7.0.3.8
・Androidバージョン:7.1.2
・グラフィックスレンダリングモード:OpenGL+
・フレームレート:60
・解像度:1080×1920
OpenGL+では放置少女の画面表示に不具合がでるのでDirectXで起動していました。
その不具合から見直してみます。
便利なツールありがとうございます!
ひたすらボタンを押す詰まらない作業から解放されます!
私の環境では1回あたり10秒以上かかりましたが以下修正して3.5秒くらいに短縮できました。ご参考まで
1.Noxの設定見直し
「NoxPlayerを高速化する対処法」で検索。それに合わせて設定変更。(複数起動のためパフォーマンスを低にしてたのが悪かった。5秒短縮)
2.プログラム修正
①Noxのスクショをpngで保存→②保存したファイルを開いてステータス値の表示のある個所を切り抜いて保存→③保存したファイルを開いてステータス値をOCRで読み込み。となっているので①Noxのスクショをrawデータのままメモリ読み込み→②メモリ上のスクショからステータス値をOCRで読みこみとした。(2秒短縮)
pipe = subprocess.Popen(“nox_adb -s %s exec-out screencap ” % (dev_addr), stdin=subprocess.PIPE, stdout=subprocess.PIPE, shell=True)
image_bytes = pipe.stdout.read()
return Image.frombuffer(‘RGBA’, (size_x, size_y), image_bytes, ‘raw’, ‘RGBX’, 0, 1)
img_region = img.crop(([statusxy[i][2], statusxy[i][0], statusxy[i][3], statusxy[i][1]]))
param.append(tool.image_to_string(img_region,lang=”eng”, builder=builder).replace(“.”, “”))
ファイルI/Oが速度のネックになっていそうでどうにかならないかな~と思ってたのですが、パイプで受け取れるんですね。
参考になります。ありがとうございます。
有益な情報ありがとうございます。
「2.プログラム修正」部分、具体的にどこの部分を置き換えれば良いのかご教示いただけないでしょうか。
素人な質問で大変お恥ずかしいのですが、よろしくお願いいたします。。。
よこから失礼します
Githubの最新ソースに組み込まれているように見えます。
・ImageSS_PIL の実装
・getStatus箇所で
img = ImageSS_PIL()
・calcStatus 内の修正
ページトップの
「→zipダウンロード(v2.5)」
からダウンロードしてみてはどうでしょうか
お任せ育成が実装されて少し遠のいていたのですが、久しぶりに利用してみたところ筋力と敏捷で誤認識が多発するようになりました。
※知力と体力は問題なし、”2″を”7″や”9″に誤認識することが多い
育成自動化スクリプトとTesseractのバージョンを色々変えて試してみましたが改善はしませんでした。
ふと、中間ファイルを見てみたところ筋力・敏捷と知力・体力でトリミングの座標が異なっている事に気付きました。
そこで、y軸だけ次のように変えてみたところ誤認識が発生しなくなりました。
preStatusxy = [
[385, 415, #y1, y2
140, 200], #x1, x2
[415, 445,
140, 200],
[445, 475,
140, 200],
[475, 505,
140, 200]
]
statusxy = [
[385, 415, #y1, y2
352, 419], #x1, x2
[415, 445,
352, 419],
[445, 475,
352, 419],
[475, 505,
352, 419]
]
1080×1920のスクリーンショットから座標を割り出しましたので他の解像度ではどうなるか分かりませんが、何かの参考になりましたら幸いです。
今回のUI改変で、また微調整が必要になりそうですね・・・
申し訳ないですが、育成スクリプトの更新は停止します。
別途通知の記事を投稿しておきました。
とてもよくできたツールでこれまで使わせていただき感謝いたします。更新停止されるとのことで残念ですが仕方ありませんね。2023年5月の大幅GUI更新で使えなくなってましたが、5/25に「やめる」「保存」の位置が元の位置に近くなる修正がされたので、以下の変更により一応動いてますのでご参考までに。
preStatusxy = [
[366, 393, #y1, y2
125, 185], #x1, x2
[398, 425,
125, 185],
[431, 458,
125, 185],
[464, 491,
125, 185]
]
statusxy = [
[366, 393, #y1, y2
368, 428], #x1, x2
[398, 425,
368, 428],
[431, 458,
368, 428],
[464, 491,
368, 428]
]
・・・
tapxy=[
[200, 720], #c級/cancel
[380, 720], #b級/accept
[521, 283] #課金ポップアップ×
]
課金ポップアップは未検証
匿名さん、助かります!
私のほうでも動作いけました!
※私も課金ポップアップは未検証デス…
有益な情報ありがとうございます。
「2.プログラム修正」部分、具体的にどこの部分を置き換えれば良いのかご教示いただけないでしょうか。
素人な質問で大変お恥ずかしいのですが、よろしくお願いいたします。。。
main.py というファイルがあると思います。これをコピーして違う名前でバックアップをとって、main.pyをメモ帳などで開き、42行目から61行目、および67行目から71行目の数値を変更すればOKです。コピー&ペーストで行けるのではないかと思います。参考になれば。
「2.プログラム修正」部分、というのは2023年4月29日 18:31のコメントに対する質問でしたか?であれば回答になっていませんでした。
有難うございます。動きました!
作者さんと匿名さんに感謝
更新停止されたようですが、今でも動いてる人いますか?
プログラムは全くわからないので試行錯誤してなんとか動くようになったものの、丹を使用した後で、
warn: 育成ステータスが読み込めません…1
と出て何もしてくれません(´;ω;`)