Opencv

OpenCVが敷居が高いという場合はUWSCが簡単かも?

より簡単にADB SHELLを使用したいという方に、UWSCがおすすめ
自身が作成したFFGMの自動レベル上げを参考に添付
※画像は配布していません。ご自身でがんばってみてください

プログラムの流れは下記

スマフォのスクリーンショット撮影

PCに画像コピー

画像を開く

画像サイズをスマフォ解像度の約半分にACWで指定し、背面でも操作可能にMORG設定

ループ処理

スマフォのSS(ry

特定のクエストを、画像判別して選択

ゲームクリアが表示されていたらクリアをクリック

報酬画面の閉じるを認識したら閉じるをクリック

敵が3体いたら全体攻撃

敵が1体の場合は単体攻撃

戦闘終了画面を判別したら画面をクリックしリザルトを飛ばす

上記状態に当てはまらない状態では、クエストMobのサーチ、センタリングから移動、戦闘に移行

ループ

//携帯画面サイズ 720x1280
// half 360x640

DOSCMD("adb shell screencap -p /sdcard/screen.png")
DOSCMD("adb pull /sdcard/screen.png")
   
sleep(0.5)
DOSCMD("C:\*****screen.png")
sleep(0.5)

id = GETID("- Windows フォト ビューアー")
ACW(id, 0, 0, 374, 768 )
MouseOrg(id, 2,MORG_BACK)

While True

DOSCMD("adb shell screencap -p /sdcard/screen.png")
DOSCMD("adb pull /sdcard/screen.png")

sleep(1)

//Quest Select
ifb CHKIMG("quest_select.bmp",0)
//print "quest_select"
sleep(2)
DOSCMD( "adb shell input touchscreen tap 250 580")
sleep(2.5) 
DOSCMD( "adb shell input touchscreen tap 301 1077")
sleep(5)
DOSCMD("adb shell screencap -p /sdcard/screen.png")
DOSCMD("adb pull /sdcard/screen.png")
sleep(5)
endif

// clear
ifb CHKIMG("clear.bmp",-1)
//print "clear"
sleep(0.5)
DOSCMD( "adb shell input touchscreen tap 150 180")
sleep(3)
endif

// close
ifb CHKIMG("close.bmp",0)
//print "close"
sleep(0.5)
DOSCMD( "adb shell input touchscreen tap 364 825")
sleep(10)
DOSCMD("adb shell screencap -p /sdcard/screen.png")
DOSCMD("adb pull /sdcard/screen.png")
sleep(5)
endif

// Battle 3
ifb (CHKIMG("left_skel.bmp",1)=true) AND (CHKIMG("right_skel.bmp",1)=true)
//print "Battle3-1"
sleep(0.4)
DOSCMD( "adb shell input touchscreen tap 430 1000")
sleep(1.2)
endif

// Battle 1
//ifb (CHKIMG("center_skel.bmp",1)=TRUE) AND (CHKIMG("TP100.bmp",1,0,0,300,50)=TRUE)
//print "Battle1-1"
//sleep(0.4)
//DOSCMD( "adb shell input touchscreen tap 300 1000")
//endif

// Battle 1-2
ifb CHKIMG("center_skel.bmp",1)
//print "Battle1-2"
sleep(0.4)
DOSCMD( "adb shell input touchscreen tap 60 1000")
sleep(1.2)
endif

// Battle end
ifb CHKIMG("bend.bmp",0)
//print "Battle end"
sleep(0.5)
DOSCMD( "adb shell input touchscreen tap 360 645 ")
sleep(1)
endif

// Serch
ifb (CHKIMG("name.bmp",0)=true) AND (CHKIMG("center_skel.bmp",0)=false) AND (CHKIMG("quest_select.bmp",0)=false) AND (CHKIMG("left_skel.bmp",0)=false) AND (CHKIMG("right_skel.bmp",0)=false) AND (CHKIMG("clear.bmp",0)=false) AND (CHKIMG("close.bmp",0)=false)
//print "Serch"
DOSCMD( "adb shell input touchscreen tap 250 90")
sleep(2.5)
DOSCMD( "adb shell input touchscreen tap 360 645")
sleep(1)
endif

Wend




上記にて、FFGMでひたすら敵を狩り続けるマクロを作成することが出来た
FFGMもすでに引退気味のため、自動化を試してみたところうまく動作させることが出来たが、UWSCの場合画像認識のマッチング率を指定出来ず、1dotでもずれると判別が出来なくなるため、OpernCVを用いた方があいまい判別が出来、画像処理だけに関しては楽に処理できると感じた

星のドラゴンクエストやFF BRAVE EXVIUSでも自動化は可能だが、スタミナがあるゲームのためあまり自動狩りのメリットは感じられない

一番効率が良い使い方として、リセットマラソン・通称リセマラをする場合、UWSCやOpenCVを用いた自動処理が有効だと思われる

例)☆5が出るまでひたすらリセマラを繰り返す
  ☆5が出たらPC音源を鳴らして知らせたり、メールを送って知らせることも可能