変数を使った高速のハート送信プログラムです。ランキング最下位から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]
この画像の場合は座標桃枠574と576の間(=575)がy値です。これを基準y値とします。ここでズレた画像は使わずぴったり位置のものを使用してください。
プログラム実行中に一番上のハート位置をシステム変数(@lastmatch.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)等で出力プログラムを作成し、送信プログラムの後に実行します。
手動の場合は、大抵のアプリで[長押し]→[貼付]でクリップボードのテキストが貼り付けできます。
実際の送信の様子
※音量にご注意ください
【P10liteでの送信例】送信ログ:101H-3R-2E-5’31”
ランキング人数101人-自分=100人送信
送信時間:5分31秒(端末の性能と通信環境により変わります)
ハートタップ101回、再確認からのハートタップ3回、エラー処理2回
101位:OKタップ失敗→再確認
101位:送信確認失敗→ハイスコアタップ→再確認→エラー処理
95位:送信確認失敗→エラー処理
60位:送信確認失敗→ハイスコアタップ→再確認
1位:ビヨーン待ち時間が少ないことによる重複ハートタップ→ハイスコアタップ→ミッションタップで復帰
※音量にご注意ください
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のプログラム
プログラムの説明
1.[変数]-送信ログ作成の為のものです。
ログに関して詳しくはこちら→【送信ログ作成】文字列作成
2.[待機]1.0秒–直前のプログラムからの予備待機です。
3.[変数]-[Hposi=num:580]ズレ補正スワイプの為の変数セット
ハート位置不明の場合に短スワイプを選択できる様に、基準y値よりも大きい値をセットします。スワイプ後は毎回変数をセットして前回のHposi値を上書きします。
4.[ハート送信ループ]-4回
5.[SW]-スイッチ
■システム変数@loop=0の時=つまりループ1回目→プログラム6[4ハート画像認識]へ分岐
■ループ2回目→プログラム7[3ハート画像認識]へ分岐
■ループ3回目→プログラム8[2ハート画像認識]へ分岐
■ループ4回目→プログラム9[1ハート画像認識]へ分岐
■その他→プログラム16[ハート再確認]へ分岐
6.[(4)ハート画像認識]-検索範囲は上から4つ目ハート1つ分のみを指定、スクショあり
7.[(3)ハート画像認識]-検索範囲は上から3つ目ハート1つ分のみを指定、スクショなし
8.[(2)ハート画像認識]-検索範囲は上から2つ目ハート1つ分のみを指定、スクショなし
9.[(1)ハート画像認識]-検索範囲は上から1つ目ハート1つ分のみを指定、スクショなし
10.[変数]-[Hposi=num:@lastmatch.y]
1つ目ハートがあった場合にそのy位置を変数Hposiにセットします。
[@lastmatch]は直近の画像認識位置で[矩形]です。
[@lastmatch.y]は[@lastmatch]の中のy値で[数値]です。
変数作成の際は[@lastmatch.y]をそのまま自分で入力、又は矩形から[最終マッチ位置]を指定後に[.y]を追加しその後で矩形→数値に変更で作成できます。(数値にしないとエラーになる為注意)
11.[OKタップ]–間隔0.6~1.0秒(待機後タップ)
[20190809]修正 OKタップ位置を[K]辺りの位置に変更しました。タイミングだけでタップしている為、位置を変更しておかないとプログラムが止まる可能性があります。
詳細はこちら→OKリトライの画像認識とタップを修正
12.[ミッションタップ]–間隔1.0秒~1.3秒(待機後タップ)
13.[変数]-ハートタップ回数をカウント:送信ログ作成用
14.[待機]0.1秒-スクショ無しの為タイミングが合わない場合は調整
次のハートがエラーなくタップ出来る様に待機時間を調整します。
15.[ハート送信ループ]-4回終了
16.[ハート再確認ループ]-15回
17.[ALLハート画像認識]-検索範囲はハート4つ分、スクショあり
4~15[ハート送信ループ]でエラー等によりハートが残った場合に送信します。再確認でハートが無ければランキング画像認識に分岐します。
18.[変数]-再確認ハートタップ回数をカウント:送信ログ作成用
19.[OKタップ]–間隔0.6~1.0秒(待機後タップ)
[20190809]修正 こちらは念の為、11.[OKタップ]と同じにしました。
20.[ミッションタップ]–間隔1.0秒~1.3秒(待機後タップ)
21.[ハート再確認ループ]-15回終了
22.[ランキング画像認識]←詳細はこちらを確認
23.[1位画像認識]←詳細はこちらを確認
24.[IF]scroll判定-[Hposi>560]ならば短スワイプへ、違うならば長スワイプへ分岐
基準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%に変更しました。
33.[各種とじる画像認識]←詳細はこちらを確認
34.[ランキング画像認識]←詳細はこちらを確認
ランキング画面になればプログラム16[ハート再確認]に戻ります。
35.[エラー処理ループ]終了–15回
36.[スクリーンショット]←詳細はこちらを確認
37.[中断]
38.[完了]
39.[変数]-送信ログ作成用
ログに関して詳しくはこちら→【送信ログ作成】文字列作成
40.[クリップボード]-送信ログ作成用
まとめと修正情報
以上で高速ハート送信プログラムの完成です。
[2019.04.04]送信ログに関する記述を若干修正しました。
[20190809]修正
1.OKリトライ画像認識の判定を80%→93%に変更しました。
2.OKタップ位置(2ヵ所)を[K]辺りの位置に変更しました。
もっと速く送信をしたい方はこちらをご覧ください。
【超速ハート送信Sv2】…coming soon
コメント
No.11のOKタップとNo.19のOK Tapの座標が異なりますが、No.19はどこの画面のOKをタップするのでしょうか。
記事にもあります通り、こちらのプログラムは初心者レベルではありませんので、ある程度は説明も省略して解説させて頂いておりますm(__)m
No.11のOKタップとNo.19のOK Tapは同じものです。コピペせずに手動で作成した為に座標が若干ズレたものと思われます。
ご回答ありがとうございます。
承知いたしました。
10.変数の項目で@lastmatch.yの
【.y】の入力が出来ません。設定が何か間違っているのでしょうか?
記事内に記載の通りですが、【数値】にしていますか?矩形にしてある場合は【数値】に変更が必要です。
>変数作成の際は[@lastmatch.y]をそのまま自分で入力、又は矩形から[最終マッチ位置]を指定後に[.y]を追加しその後で矩形→数値に変更で作成できます。(数値にしないとエラーになる為注意)
返信ありがとうございます。
書いてある通り入力して適用すると、【.y】が反映されず[num:@lastmatch]になってしまいます。
では、[@lastmatch.y]をそのまま自分で入力すればよろしいかと思います(^^)
矩形にはせず、@から全て手入力すれば反映されるはずです。
ご丁寧にありがとうございました
こんにちは。たいへんお世話になっております。
一番上のハートのY値ですが、桃枠の中では幅が2になっているのに、画像上(黄色の枠)はそれよりかなり幅があるように見えます。
どこをy値とすれば良いでしょうか。
サイト内画像の黄色枠そのものの縦幅が大きいというご指摘で宜しいでしょうか?
画像が不鮮明でわかり難いですが、黄色枠の中に「ハート画像認識テストしてマッチした部分(緑線)」があります。その緑枠の中央がx値y値となります。
実際にはご自分の端末で画像認識のテストで得られた値の中央値をご使用ください。
当記事には【中央値】という言葉が無かったのでわかり難かったかもしれませんね。記事を修正しておきます。
コメント失礼します。
3番の変数の詳細を見たいのですが可能でしょうか?
記事にあります通り[Hposi=num:580]の1行のみです。
ご教授ありがとうございます。
また、高速で組んだ場合に、自分のランキングより12くらい高い人のところで止まっている時があります。
止まっている画面はいつもルビー購入画面なのですが原因などわかりますでしょうか??
ご教授ありがとうございます。
高速でフルオートを組むと、たまにハート送信中に止まっていることがあります。
場所は自分のランキングより12番高い方のあたりで止まっており、失敗時のスクショにはいつもルビー購入画面になっております。
何か原因はわかりますでしょうか??
こちらのプログラムは初心者レベルではありませんので、うまく動かない場合はご自分で修正お願い致します。
※一応、アドバイスするなら…
当方はルビー購入画面になったことがないので、原因を探るなら下記当りでしょうか?
1.画像認識の検索範囲が失敗している 2.タップ位置が失敗している 3.止まる方の名前やプロフ画像等で引っかかっている 4.同じ人数で何か止まる要因がある 5.1位画像認識が止まる箇所当りで誤動作している 等々
どこをタップしたらルビー購入画面になるのかをしっかり考えて、ご自身のプログラムを調べてください。