強化/分解を考える(分解編:高レア)

周知の通り低レアを自動分解任せで処理していってもいずれ星3以上の人形が積みあがれば倉庫はパンクします
想像するだけで面倒くさい処理になりそうですが0-2を念頭にしているなら避けられませんね

procedure P_retire(list[])
//	list[] 分解対象人形の顔写真ファイル名を羅列した配列
	list_count = length(list)	//要素数
	P_adb_BTN(G_IMGX_X + delta_X , G_IMGX_Y + delta_Y ,100,"Feed set")
	tim = gettime() + 15	//人形在庫が無いと画面遷移しないのでタイムオーバー判定する
	repeat
		sleep(2)
		ifb tim < gettime() then
			print "Maybe there is no rare to retire"
			exit
		endif
	until chkimgx("cancel2.bmp", NOXid, 40, 25, 105, 105,  1, 10, -1)
//	選択開始
	for i = 0 to list_count - 1	//0 based index
		Hit_count = chkimgx(list[i], NOXid, 0, 0, 0, 0, -1, 15, -1)
		Select_count = 0
		while Hit_count > Select_count
			P_adb_BTN(ALL_IMGX_X[Select_count] + delta_X ,ALL_IMGX_Y[Select_count] + delta_Y ,0,"Select " + list[i])
			sleep(1)
			Select_count = Select_count + 1
		wend 
		print list[i] + " : " + Hit_count
	next
	//決定して実行
	ifb chkimgx("confirm.bmp",NOXid, 1170, 620, 1220, 690,  1, 10, -1) then	//確認ボタンがある=1人は対象設定している
		P_adb_BTN(G_IMGX_X + delta_X , G_IMGX_Y + delta_Y ,100,"Apply")
		repeat
			sleep(1)
		until chkimgx("retire.bmp",NOXid, 1135, 865, 1245, 925,  1, 10, -1)
		P_adb_BTN(G_IMGX_X + delta_X , G_IMGX_Y + delta_Y ,100,"Retire Go")
		repeat
			sleep(1)
		until chkimgx("retire_warning.bmp",NOXid, 590, 370, 660, 415,  1, 10, -1)
		ifb chkimgx("confirm_go.bmp", NOXid, 715, 590, 820, 675,  1, 10, -1) then
			P_adb_BTN(G_IMGX_X + delta_X , G_IMGX_Y + delta_Y ,100,"Retire warning Go")
		else
print "Unexpected situation"
			exitexit
		endif
		repeat
			sleep(1)
		until chkimgx("feed_set.bmp", NOXid, 325, 175, 400, 255,  1, 10, -1)	//処理対象がクリアされたのを確認する
		
	elseif chkimgx("cancel2.bmp", NOXid, 40, 25, 105, 105,  1, 10, -1) then	//分解対象の高レアがいなかった
print "対象なし"
		P_adb_BTN(G_IMGX_X + delta_X , G_IMGX_Y + delta_Y ,100,"Select cancel")
	else	//どちらでもない時は即時停止
print "Unexpected situation"
		exitexit
	endif
fend

今回は指名手配リストを引数に対象を選別して選択する仕様を考えてみました
配列から顔写真ファイル名を順に引っ張ってきてマッチした座標をクリックしていきます
マッチ結果も複数を想定して選択操作をヒット数でループさせています
あとは対象が選べなかった場合と高レア自体がいなかった場合の挙動に対応して完了です
画面遷移上ありえない状況に落ちた場合は異常終了でスクリプト自体を停止させています
エラー対応としてはもう少し丁寧に作るべきかもしれません

この辺から操作と結果による画面遷移のパターンを見落としやすくなります
今回のサンプルでは見落としてるケースがあるかもしれません、動かしながらの調整は避けられないと思います