FRep

プログラム【高速ハート送信Hv2】ズレ補正スワイプ

変数を使った高速のハート送信プログラムです。ランキング最下位から1位に向かって1つずつ順番にハート送信していきます。

こちらのプログラムは初心者レベルではありませんので、ある程度は説明も省略して解説しますが、下記の順番に内容を理解しながらプログラムを作成されるとわかりやすいかと思います。
基本ハート送信v2
■高速ハート送信Hv2(こちらの記事です)
■超速ハート送信Sv2…coming soon

内容を理解しないままのプログラム作成は不具合が発生しやすくなります。うまく動かない場合はご自分で修正出来る方にお勧めするプログラムです。

尚、高速化についてプログラム以外の事や具体的な送信時間の違いについては、こちらをご覧ください。

 

スポンサーリンク

概要と特徴

ハートの画像認識はスクリーンショット1回を使いまわしてハート4つ分のタップをします。

つまり、最初のハートを見つけたら後は設定したタイミング通りに[OK]→[ミッションタップ]→[ハート]→[OK]→[ミッションタップ]…とタップしていくだけです。

そして、【基本ハート送信v2】はスワイプ後に4つのハートを「上から」送信していますが、【高速Hv2】【超速Sv2】プログラムではスイッチ機能を使用して、スワイプ後に「下から」送信していきます。

但し、ミキピョン等によりエラーが出た場合は画面にある4つ分のハートタップが終わってからのリカバリとなる為、ハートタップの順番が狂うこともあります。

【基本ハート送信v2】と同一部分

ランキング画像認識、エラー処理ループ、強制ポップアップ対応[v2]については【基本ハート送信v2】と同じです。

ズレ補正あり4人分スワイプ

このプログラムは4つのハートをそれぞれ画像認識している為、スワイプのズレ補正が必須となります。

長スワイプ(4.01~4.1人分)と短スワイプ(3.9~3.99人分)の2つのスワイプを用意しておき、ハート位置を判定して長短スワイプを使い分ける事で少しずつズレを補正していきます。

ハート画像認識作成後にテストをして、一番上のハートのy値を予め調べておきます。

画像認識で成功した矩形(lastmatch)の中央値がx,y値です。
[x=(left+right)/2][y=(top+bottom)/2]

FRep高速Hv2プログラム

この画像の場合は座標桃枠574と576の間(=575)がy値です。これを基準y値とします。ここでズレた画像は使わずぴったり位置のものを使用してください。

プログラム実行中に一番上のハート位置をシステム変数(@lastmatch.y)によって抽出(=変数Hposiにセット)し、基準y値と比べます。

■Hposiが基準y値よりも小さい=ハートが上にずれている=長スワイプを選択
■Hposiが基準y値よりも大きい=ハートが下にずれている=短スワイプを選択
■スワイプは長めよりも短い方が送信漏れしない=ハート位置不明の場合は短スワイプを選択

ビヨーン待ちの待機不足

4位以内からのスワイプの場合、1位が通常位置よりも低い位置(2位の辺り)まで一旦移動した後に定位置に戻る動作=ビヨーンがあります。

基本ハート送信では、ビヨーン待ち0.2秒+画像認識前0.5秒=0.7秒の待機がありました。

しかし、当プログラムでは画像認識前の待機が全くない為、ビョーン待ち0.2秒では足りていません。ですが、毎スワイプ毎に待機するよりも、1位近辺でエラーが出る事を想定した上で[27.待機]を0.2秒に設定しました。

その為、1位近辺ではハート画像のずれが生じエラーが起こりますが、ハート再確認で解消でき、1位画像認識にも問題はないと思います。

エラーを出したくない場合は、[27.待機]を0.5秒以上で設定してみてください。

送信ログ作成

変数を使用して送信ログを作成し、テキストとしてクリップボードに出力します。MacroDroidのTwitterやメール機能でログを出力する場合はそのまま使用できます。

ハングアウトなどにログを出力したい場合は、FRep操作の記録(Rec)等で出力プログラムを作成し、送信プログラムの後に実行します。

手動の場合は、大抵のアプリで[長押し]→[貼付]でクリップボードのテキストが貼り付けできます。

 

実際の送信の様子

高速ハート送信Hv2

※音量にご注意ください

【P10liteでの送信例】送信ログ:101H-3R-2E-5’31”
ランキング人数101人-自分=100人送信
送信時間:5分31秒(端末の性能と通信環境により変わります)
ハートタップ101回、再確認からのハートタップ3回、エラー処理2回

101位:OKタップ失敗→再確認
101位:送信確認失敗→ハイスコアタップ→再確認→エラー処理
95位:送信確認失敗→エラー処理
60位:送信確認失敗→ハイスコアタップ→再確認
1位:ビヨーン待ち時間が少ないことによる重複ハートタップ→ハイスコアタップ→ミッションタップで復帰

高速Hv2エラー部分スローモーション

※音量にご注意ください

101位~95位までのスロー再生です。エラーが多いので、どの様な動きでハート送信とエラー回避をしているのかがわかりやすいかと思います。
橙枠のFrepパネル(見えにくいですが)に、再確認では「17」の文字が、エラー処理ループでは「エラー」文字が表示されています。

【FRepの動き】—→【実際の動き】
101位ハートタップ→101位ハートタップ
101位OKタップ—-→失敗
101位ミッション(M)タップ→失敗
100位ハートタップ→失敗
100位OKタップ—-→101位OKをタップ
100位Mタップ—–→101位Mタップ失敗
099位ハートタップ→101位Mをタップ
099位OKタップ—-→ハイスコア表示
099位Mタップ—–→ハイスコアとじる
再確認ハートタップ→99位ハートタップ
再確認OKタップ—-→99位OKタップ
再確認Mタップ—–→99位Mタップ
再確認ハートタップ→100位ハートタップ
再確認OKタップ—-→100位OKタップ
再確認Mタップ—–→100位Mタップ失敗
エラー処理ループ–→100位Mタップ
再確認ハート無し&ランキング画像成功
スワイプ———–→スワイプ

 

FRepのプログラム

FRep高速ハート送信プログラム

FRep高速ハート送信プログラム

FRep高速ハート送信プログラム

FRep高速ハート送信プログラム

FRep高速ハート送信プログラム

 

プログラムの説明

1.[変数]-送信ログ作成の為のものです。
ログに関して詳しくはこちら→【送信ログ作成】文字列作成
FRep高速Hv2プログラム

2.[待機]1.0秒–直前のプログラムからの予備待機です。

3.[変数]-[Hposi=num:580]ズレ補正スワイプの為の変数セット
ハート位置不明の場合に短スワイプを選択できる様に、基準y値よりも大きい値をセットします。スワイプ後は毎回変数をセットして前回のHposi値を上書きします。

4.[ハート送信ループ]-4回

5.[SW]-スイッチ
FRep高速Hv2プログラム
■システム変数@loop=0の時=つまりループ1回目→プログラム6[4ハート画像認識]へ分岐
■ループ2回目→プログラム7[3ハート画像認識]へ分岐
■ループ3回目→プログラム8[2ハート画像認識]へ分岐
■ループ4回目→プログラム9[1ハート画像認識]へ分岐
■その他→プログラム16[ハート再確認]へ分岐

6.[(4)ハート画像認識]-検索範囲は上から4つ目ハート1つ分のみを指定、スクショあり
FRep高速Hv2プログラム
FRep高速Hv2プログラム

7.[(3)ハート画像認識]-検索範囲は上から3つ目ハート1つ分のみを指定、スクショなし
FRep高速Hv2プログラム

8.[(2)ハート画像認識]-検索範囲は上から2つ目ハート1つ分のみを指定、スクショなし
FRep高速Hv2プログラム

9.[(1)ハート画像認識]-検索範囲は上から1つ目ハート1つ分のみを指定、スクショなし
FRep高速Hv2プログラム
FRep高速Hv2プログラム

10.[変数]-[Hposi=num:@lastmatch.y]
1つ目ハートがあった場合にそのy位置を変数Hposiにセットします。
FRepプログラム高速Hv2
[@lastmatch]は直近の画像認識位置で[矩形]です。
[@lastmatch.y]は[@lastmatch]の中のy値で[数値]です。
変数作成の際は[@lastmatch.y]をそのまま自分で入力、又は矩形から[最終マッチ位置]を指定後に[.y]を追加しその後で矩形→数値に変更で作成できます。(数値にしないとエラーになる為注意)

11.[OKタップ]–間隔0.6~1.0秒(待機後タップ)
[20190809]修正 OKタップ位置を[K]辺りの位置に変更しました。タイミングだけでタップしている為、位置を変更しておかないとプログラムが止まる可能性があります。
詳細はこちら→OKリトライの画像認識とタップを修正

FRepツムツムOKのタップ位置

12.[ミッションタップ]–間隔1.0秒~1.3秒(待機後タップ)

13.[変数]-ハートタップ回数をカウント:送信ログ作成用

14.[待機]0.1秒-スクショ無しの為タイミングが合わない場合は調整
次のハートがエラーなくタップ出来る様に待機時間を調整します。

15.[ハート送信ループ]-4回終了

16.[ハート再確認ループ]-15回

17.[ALLハート画像認識]-検索範囲はハート4つ分、スクショあり
4~15[ハート送信ループ]でエラー等によりハートが残った場合に送信します。再確認でハートが無ければランキング画像認識に分岐します。
FRepプログラム高速Hv2

18.[変数]-再確認ハートタップ回数をカウント:送信ログ作成用

19.[OKタップ]–間隔0.6~1.0秒(待機後タップ)
[20190809]修正 こちらは念の為、11.[OKタップ]と同じにしました。

20.[ミッションタップ]–間隔1.0秒~1.3秒(待機後タップ)

21.[ハート再確認ループ]-15回終了

22.[ランキング画像認識]←詳細はこちらを確認
FRepプログラム高速Hv2

23.[1位画像認識]←詳細はこちらを確認
FRepプログラム高速Hv2

24.[IF]scroll判定-[Hposi>560]ならば短スワイプへ、違うならば長スワイプへ分岐
FRepプログラム高速Hv2
基準y値は575でしたが、私はなるべく短スワイプを選択したいので少し短めの560を基準にしました。長スワイプが若干長過ぎたのと、短スワイプが3.99だった為。これは好みですのでピッタリ575にしても問題ありません。
スワイプ完了後は[次へ]ではなく[27待機]へ分岐しますので、短長どちらかのスワイプのみが実行されます。

25.[短3.9人スワイプ]–1位に向かってスクロールするスワイプです。[27待機]へ

26.[長4.1人スワイプ]–1位に向かってスクロールするスワイプです。[27待機]へ

27.[待機]0.2秒–その後の待機が全くない為、ビョーン待ちは0.2秒では足りていません。待機後はプログラム3へいきます。

28.[エラー処理ループ]15回

29.[変数]-エラー回数をカウント:送信ログ作成用

30.[ミッションタップ]–間隔0.5秒(待機後タップ)

31.[エラー待機]0.5秒-[待機スキップ/延長用パネルを表示]にチェック

32.[OKリトライ画像認識]←詳細はこちらを確認

[20190809]修正
OKリトライ画像認識の判定を80%→93%に変更しました。

FRepリトライOK画像認識

33.[各種とじる画像認識]←詳細はこちらを確認
FRepプログラム高速Hv2

34.[ランキング画像認識]←詳細はこちらを確認
ランキング画面になればプログラム16[ハート再確認]に戻ります。
FRepプログラム高速Hv2

35.[エラー処理ループ]終了–15回

36.[スクリーンショット]←詳細はこちらを確認
FRepプログラム高速Hv2

37.[中断]

38.[完了]

39.[変数]-送信ログ作成用
ログに関して詳しくはこちら→【送信ログ作成】文字列作成

40.[クリップボード]-送信ログ作成用

 

まとめと修正情報

以上で高速ハート送信プログラムの完成です。

[2019.04.04]送信ログに関する記述を若干修正しました。

[20190809]修正
1.OKリトライ画像認識の判定を80%→93%に変更しました。
2.OKタップ位置(2ヵ所)を[K]辺りの位置に変更しました。

 

もっと速く送信をしたい方はこちらをご覧ください。

【超速ハート送信Sv2】…coming soon

コメント

  1. 自動化奮闘中 より:

    No.11のOKタップとNo.19のOK Tapの座標が異なりますが、No.19はどこの画面のOKをタップするのでしょうか。

  2. かのんかのん より:

    記事にもあります通り、こちらのプログラムは初心者レベルではありませんので、ある程度は説明も省略して解説させて頂いておりますm(__)m

    No.11のOKタップとNo.19のOK Tapは同じものです。コピペせずに手動で作成した為に座標が若干ズレたものと思われます。

    • 自動化奮闘中 より:

      ご回答ありがとうございます。
      承知いたしました。

  3. 鹿 より:

    10.変数の項目で@lastmatch.yの
    【.y】の入力が出来ません。設定が何か間違っているのでしょうか?

    • かのんかのん より:

      記事内に記載の通りですが、【数値】にしていますか?矩形にしてある場合は【数値】に変更が必要です。

      >変数作成の際は[@lastmatch.y]をそのまま自分で入力、又は矩形から[最終マッチ位置]を指定後に[.y]を追加しその後で矩形→数値に変更で作成できます。(数値にしないとエラーになる為注意)

      • 鹿 より:

        返信ありがとうございます。
        書いてある通り入力して適用すると、【.y】が反映されず[num:@lastmatch]になってしまいます。

        • かのんかのん より:

          では、[@lastmatch.y]をそのまま自分で入力すればよろしいかと思います(^^)

          矩形にはせず、@から全て手入力すれば反映されるはずです。

  4. くぼた より:

    こんにちは。たいへんお世話になっております。
    一番上のハートのY値ですが、桃枠の中では幅が2になっているのに、画像上(黄色の枠)はそれよりかなり幅があるように見えます。
    どこをy値とすれば良いでしょうか。

    • かのんかのん より:

      サイト内画像の黄色枠そのものの縦幅が大きいというご指摘で宜しいでしょうか?
      画像が不鮮明でわかり難いですが、黄色枠の中に「ハート画像認識テストしてマッチした部分(緑線)」があります。その緑枠の中央がx値y値となります。
      実際にはご自分の端末で画像認識のテストで得られた値の中央値をご使用ください。

      当記事には【中央値】という言葉が無かったのでわかり難かったかもしれませんね。記事を修正しておきます。

スポンサーリンク
タイトルとURLをコピーしました