強化/分解を考える(分解編:高レア)
周知の通り低レアを自動分解任せで処理していってもいずれ星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今回は指名手配リストを引数に対象を選別して選択する仕様を考えてみました
配列から顔写真ファイル名を順に引っ張ってきてマッチした座標をクリックしていきます
マッチ結果も複数を想定して選択操作をヒット数でループさせています
あとは対象が選べなかった場合と高レア自体がいなかった場合の挙動に対応して完了です
画面遷移上ありえない状況に落ちた場合は異常終了でスクリプト自体を停止させています
エラー対応としてはもう少し丁寧に作るべきかもしれません
この辺から操作と結果による画面遷移のパターンを見落としやすくなります
今回のサンプルでは見落としてるケースがあるかもしれません、動かしながらの調整は避けられないと思います