SikuliXによるスマホゲーム自動化

無料のRPAツールを使ってスマホゲームを自動化するためのサイトです

6.オクトラのリセマラを自動化する(2/2)

このページの目的

  • サイラスを求めてオクトラのリセマラを自動化する記事の後半です。
  • モンスターとの戦闘画面以降の処理を自動化します。

自動化する手順

  • 手順①:戦闘シーン
  • 手順②:戦闘後〜旅団入力前まで
  • 手順③:旅団名入力〜チュートリアル終了
  • 手順④:手紙等を回収〜ガチャを選択

コードの画像

f:id:sikulix:20210321153953p:plain f:id:sikulix:20210321154012p:plain f:id:sikulix:20210321154029p:plain f:id:sikulix:20210321154042p:plain f:id:sikulix:20210321154058p:plain

コードの内容

#手順①
click(Pattern("1616237575845.png").targetOffset(259,-53))
wait("1616237622001.png",30)
click(Pattern("1616237575845.png").targetOffset(311,-223))
click(Pattern("1616237672556.png").similar(0.81))
wait("1616240877531.png",30)
click(Pattern("1616237575845.png").targetOffset(311,-223))
click(Pattern("1616237575845.png").targetOffset(311,-223))
click(Pattern("1616237672556.png").similar(0.83))
sleep(2)
click(Pattern("1616237575845.png").targetOffset(281,-344))
dragDrop(Pattern("1616236244111.png").targetOffset(77,-314),Pattern("1616236244111.png").targetOffset(233,-318))
click(Pattern("1616237575845.png").targetOffset(267,-61))
wait("1616237900862.png",10)
click(Pattern("1616237575845.png").targetOffset(311,-223))
click(Pattern("1616237575845.png").targetOffset(311,-223))
click(Pattern("1616237672556.png").similar(0.83))
click(Pattern("1616237575845.png").targetOffset(267,-61))
try:
    for i3 in range(20):
        wait("1616237958258.png",30)
        click(Pattern("1616237575845.png").targetOffset(267,-61))
except:
    click(Pattern("1616236244111.png").targetOffset(-3,-123))
    
#手順②
for i6 in range(50):    
    for i5 in range(10):
        click(Pattern("1616236244111.png").targetOffset(-3,-123))
        click(Pattern("1616236244111.png").targetOffset(315,-403))
        click(Pattern("1616236244111.png").targetOffset(78,-152))
    if exists("1616238609597.png"):
        break
    sleep(1)

#手順③
click("1616238609597.png")
click("1616238634432.png")
click("1616238651178.png")
click("1616238665487.png")
click("1616238676885.png")
for i6 in range(50):    
    for i5 in range(10):
        click(Pattern("1616236244111.png").targetOffset(-3,-123))
        click(Pattern("1616236244111.png").targetOffset(315,-403))
        click(Pattern("1616236244111.png").targetOffset(78,-152))
    if exists("1616250673676.png"):
        break
    sleep(1)

#手順④
click("1616250692289.png")
click("1616250704896.png")
sleep(2)
click(Pattern("1616250751619.png").targetOffset(201,-6))
try:
    for i7 in range(10):
        click("1616250777171.png")
except:
    click(Pattern("1616250795130.png").similar(0.84))
click("1616250816390.png")
click("1616250830547.png")
click("1616250999541.png")

click("1616250860668.png")
click(Pattern("1616250795130.png").similar(0.84))
sleep(2)
click("1616250888746.png")
try:
    for i7 in range(10):
        click("1616250777171.png")
except:
    click(Pattern("1616250795130.png").similar(0.84))
click("1616250943191.png")
sleep(3)
click("1616250954534.png")
sleep(2)
click("1616250972284.png")
click("1616250999541.png")
click(Pattern("1616250795130.png").similar(0.84))
sleep(2)
click("1616250888746.png")
click("1616251047230.png")
click("1616251062495.png")
click("1616252286759.png")
click("1616250999541.png")
sleep(2)
click(Pattern("1616250795130.png").similar(0.84))
sleep(2)
click("1616250888746.png")
click("1616289001842.png")
wait("1616289021182.png",10)
click("1616289032414.png")

コードのポイント解説

  • 手順①:戦闘シーン。鬱陶しい解説画面を閉じつつ、攻撃を続ける。ブーストはdragDropで動作しました。攻撃の繰り返し処理はfor文で実行
  • 手順②:戦闘後はひたすら3点タップを繰り返し(前半記事参照)。シナリオ選ぶ場面がありますが、私のタップ位置だと権力が選ばれます(嫌ならタップ位置を工夫するなどの考慮要)。「はい」「いいえ」の選択箇所があるので、「はい」が表示される場所をタップ箇所に含めておくことが必要。
  • 手順③:旅団名を決める必要があるので、キーボードから「あ」を選択してしているだけ。特に複雑な点はないです。その後は3点タップを繰り返し。
  • 手順④:手紙からもらえるルビーが298で10連ガチャに微妙に足りないので、オススメ装備で功績から5ルビーをもらいつつ、サイラスガチャを選択する。特に工夫の点はなく、一個ずつボタンを押していくだけです。この辺から作りが適当になりますがどうせ1日しか使わないので、動けばいいかと……

動作する様子


オクトラのリセマラ自動化(2/2)

最後に

無事サイラスをゲットしました。15回目ぐらいだったかな……。最後はなぜか☆4☆5のサイラス二枚抜きでした。

f:id:sikulix:20210321154656j:plain