FRep

プログラム【回復待ちハート送信】

ツムツムのハートは前の送信から60分経過すると送信できる様になります。

通常は送信周期を[60分+猶予]にすることで、前の送信でのミキピョンやランキング順位の変動などに対応しますが、あまりにも通信状況が悪い場合や、もっと送信周期を短くしたい場合等には回復待ちプログラムにすることでも対応できます。

回復待ちプログラムは[送信の順番になっても60分経過しておらずハートが青いまま]の場合に、60分経過するまで待ちつつ複数回の回復待ちのアクションをする事でハートを桃色にして送信します。

回復待ちのアクションとは次のことを指します。
■スワイプして一旦ハートが見えない位置に移動する(1人分以上のスワイプが必要)
■通信する(別の人にハート送信・ハイスコア表示・メールボックス表示など)

ハートの回復についてはこちらをご覧ください。

 

このプログラムは初心者レベルではありませんので、詳細な説明は省略して解説します。ある程度は知識が必要な為うまく動かない場合はご自身で修正出来る方にお勧めします。こちらを読んでご自分なりのプログラムに作り替えてご使用ください。

尚、「回復待ち」プログラムは「あぶり出し」プログラムと呼ばれることもあります。

 

スポンサーリンク

概要

このプログラムではランキングの送信位置を下記の様に指します。これは変数[end]で設定した値と同じです。

ランキング最下段:【91】
ランキング下から2番目:【92】
ランキング下から3番目:【93】
ランキング下から4番目:【94】※変数なし
ランキング2位~最下段4番目:【99】

回復待ちアクション

回復待ちのアクションは【1人分以上のスワイプ】を採用します。【通信する】ことでも回復待ちはできますが、そもそも回復待ちをしたい状況は「あまりにも通信状況が悪い場合」が多いです。通信状況が悪い場合に更に【通信する】のでは、ますますミキピョンが増える原因にもなります。

スワイプならば通信せずにハートを回復する事が可能です。

但し、スワイプの場合はズレが発生する可能性があります。20回以上回復待ちスワイプしてもズレがない様にスワイプを作成しましょう。

回復待ちはあまりスワイプが速すぎても意味がないので、筆者は敢えてRecは使わずにタッチ操作のスワイプを採用しました。また、スワイプのループが○回で何秒かも把握し、回復待ちが多かった場合に次の送信を何秒遅らせるかも考えています。

回復待ちスワイプは、
■最下段4人は更に下にスワイプ出来ないのでまず上にスワイプが必要
■1位~4位は更に上にスワイプ出来ないのでまず下にスワイプが必要
■5位以下の中間層はどちらでもOK

よって、具体的なスワイプは次の様にしました。
【92】↑5人↓5.5人
【93】↑5人↓5.5人
【94】↓2人↑1人
【99】↓2人↑2人

【92】~【94】は(やってみるとわかると思いますが)これだとズレがありません。

【99】中間層は1位~4位と同じスワイプにしました。若干のスワイプずれに対応する為2人スワイプにしています。1人分ではスワイプが足りずに回復しない可能性が出てきます。

【91】はハート無しなら回復待ちをしていません。これは筆者のランキングに必ず0スコアの送信不要な友だちがいる為です。

また、友だち誰かが連動解除した直後にゼロスコアで自分のランキングにのる事があります。その人が直前のランキングで上位だった場合には回復待ちに何分も掛かる可能性があります。

【91】も回復待ちをしたい場合は、そのようにプログラムを作ってください。但し連動解除なども考慮に入れて、無限で回復待ちをする様なプログラムにせず、有限(10~30回程度)にすることをお勧めします。

その他の仕様

■スワイプはズレ補正有り1人スワイプを採用しています。

■このプログラムは自分が【91】~【94】にいない前提でプログラムを作成しています。

■最初の3人【91】~【93】=【90】はどれか1つ送信出来るハートがあるまで1回10秒×15回の回復待ちを行います。150秒間で送信可能ハートが無い場合は(間違ってプログラムを実行したとみなし)プログラムを中断し、メインプログラムにてエラーログを作成します。

■【99】で20回回復待ちをしても回復不能な場合は諦めて、スクショを撮って次の送信をします。その際ログにエラーのマーク(★☆)を入れます。

■回復待ちの回数が多い場合には、次の送信を遅らせる為に変数delayに値を設定します。
Wcnt:30回以内:遅延なし
Wcnt:60回以内:30秒遅延
Wcnt:90回以内:60秒遅延
Wcnt:90回以上:Wcnt(実数)を遅延

■月曜日はゼロスコアのランキング変動があります。いつも以上にランキング変動が大きいので、回復待ちだけに頼らずに別の方法も併用して対策をしてください。月曜日に無限ループで回復待ちを行うと、余計に時間が掛かり送信周期が大幅に乱れることにも繋がります。

 

実際の送信の様子

※音量にご注意ください

こちらは録画の為にAPI→BMPに変更してプログラムを実行しています。

307位は下から3番目の為↓5.5人スワイプ。253位は↑2人スワイプ。

 

変数

このプログラムで使用した変数です。
err,delay,Hcntは関数から戻ったフルオートプログラムでも使用します。

変数内容
end90【91】【92】【93】まとめて
 91ランキング最下段
 92ランキング下から2番目
 93ランキング下から3番目
 99ランキング2位~最下段4番目
 11位
err0エラー無し(本プログラムで設定済)
 1エラー有、初期3人にハート無→送信中断
 2エラー有、ハート無→次の送信へ
 3エラー有、遅延
stm スタート時間
Hcnt ハート送信カウント
Ecnt エラー処理したカウント
Wcnt 回復待ちしたカウント
Werr ログに書くエラー文字列
delay 遅延(秒数)
Hposi ハートの位置

 

プログラム

プログラム番号内 容
2~13【90】最下段~3段分全て
14~26【91】【92】【93】ハート送信
27~39【92】【93】の回復待ち
40~52【94】ハート送信&回復待ち
53~69【99】ハート送信
70~86【99】回復待ち
87~102エラー処理ループ
103~117送信完了 ログ作成
移動元No.プログラム概要判定移動先補足
 1変数最初に0設定 ※1
 2ループ【90】最下段~3段分全て 最初にハートがあるかどうか
 3待機   
 4画像認識ハート画像認識成功591-93いずれかでハートがあれば成功・Tap無
    失敗7 
45変数end+1 end=91でも可。
 6画像認識ハート画像認識成功20【91】最下段・Tap有
    失敗14最下段がハート無しなら回復待ちせずに【92】送信へ
47変数Wcnt+8 通常の回復待ちよりも時間を長く設定している為カウントも8倍
 8変数Werrに”S”を追加 エラーログに”S”追加
 9タッチ操作↑5人スワイプ 回復待ち
 10タッチ操作↓5.5人スワイプ 回復待ち
 11ループ【90】最下段~3段分全て ↓,2 
 12クリップボード もしもハートが無ければ、エラー出力用の設定をして
 13変数err=1 中断エラー変数を設定して→中断
6,25,9914区間【91】【92】【93】ハート送信  
 15変数end+1 【92】or【93】を設定
 16待機   
 17IF【92】か【93】か判定【92】18 
    【93】19 
 18画像認識ハート画像認識成功20【92】ランキング下から2番目・Tap有
    失敗27 
 19画像認識ハート画像認識成功20【93】ランキング下から3番目・Tap有
    失敗27 
6,18,19,33,3420変数Hcnt+1 【91】【92】【93】共通
 21タッチ操作OKタップ ダブルタップにしてみたが、タップorRecも可
 22待機   
 23画像認識カラフル画像認識成功24「プレゼントしました!」の画像認識・Tap無
    失敗87エラー処理ループへ
23,9124タッチ操作ミッションタップ 別タップにする事で時間短縮
3925IF【92】か【93】か判定【92】14【93】へ
    【93】40【99】へ
 26区間【91】【92】【93】ハート送信  
18,1927ループ【92】【93】の回復待ち  
 28タッチ操作↑5人スワイプ 回復待ち
 29タッチ操作↓5.5人スワイプ 回復待ち
 30タッチ操作ミッションタップ 強制ポップアップ等のエラー対策も兼ねて
 31変数Wcnt+1 Wカウント
 32IF【92】か【93】か判定【92】33 
    【93】34 
3233画像認識ハート画像認識成功20【92】成功したら復帰・Tap有
    失敗35 
3234画像認識ハート画像認識成功20【93】成功したら復帰・Tap有
    失敗35 
33,3435画像認識キャンセル画像認識成功強制ポップアップ対策
    失敗 
 36画像認識とじる画像認識成功強制ポップアップ対策
    失敗 
 37ループ【92】【93】の回復待ち ↓,27 
 38スクショスクリーンショット 10回ループしても復帰出来なければ諦める
 39変数(1)err=2、(2)Werrに”☆”追加 25※2 エラー有、諦めて次の送信へ
2540記録1人分短めスクロール  
 41ループ【94】ハート送信  
 42待機   
 43変数end=99 次の【99】を設定
 44画像認識ハート画像認識成功551段目・Tap無
    失敗【94】回復待ち
 45画像認識キャンセル画像認識成功49強制ポップアップ対策
    失敗 
 46画像認識とじる画像認識成功49強制ポップアップ対策
    失敗 
 47タッチ操作↓2人スワイプ 回復待ち
 48タッチ操作↑1人スワイプ 回復待ち
45,4649変数Wcnt+1 Wカウント
 50ループ【94】ハート送信 ↓,41 
 51スクショスクリーンショット 15回ループしても復帰出来なければ諦める
 52変数(1)err=2、(2)Werrに”☆”追加 66※2 エラー有、諦めて次の送信へ
68,9153区間【99】1人ハート送信  
 54画像認識ハート画像認識成功1段目・Tap無
    失敗70 
44,54,77,10055タッチ操作ハートタップ 検索結果をTap
 56変数Hposi=num:@lastmatch.y Hposi=ハートの位置をセット
 57画像認識1位画像認識成功58 
    失敗59 
5758変数end=1 終了フラグ
5759変数Hcnt+1 ハートカウント
 60タッチ操作OKタップ  
 61待機   
 62画像認識カラフル画像認識成功「ハートをプレゼントしました!」の画像認識・Tap無
    失敗87エラー処理ループへ
62,9163タッチ操作ミッションタップ 別タップにする事で時間短縮
10064IF終了判定end=1105 
     
 65IF長短スクロールどちらを使うか?>410661人分短めスクロール
    671人分長めスクロール
52,65,70,8666記録1人分短めスクロール 68 
6567記録1人分長めスクロール 68 
66,6768待機  53 
 69区間【99】1人ハート送信  
5470画像認識自分画像認識成功66自分なら次のスクロールへ
    失敗 
 71IF終了判定end=1105 
     
8072ループ【99】回復待ち  
 73タッチ操作↓2人スワイプ 回復待ち
 74タッチ操作↑2人スワイプ 回復待ち
 75タッチ操作ミッションタップ  
 76変数Wcnt+1 Wカウント
 77画像認識ハート画像認識成功551段目・Tap無
    失敗 
 78画像認識キャンセル画像認識成功強制ポップアップ対策
    失敗 
 79画像認識とじる画像認識成功強制ポップアップ対策
    失敗 
 80ループ【99】回復待ち 72,↓ 
 81スクショスクリーンショット 20回ループしても復帰出来なければ諦める
 82タッチ操作ミッションタップ  
 83待機   
 84画像認識ランキング画像認識成功 
    失敗103諦めて終了
 85画像認識1位画像認識成功105 
    失敗 
 86変数(1)err=2、(2)Werrに”★”追加 66※2 エラー有、諦めて次の送信へ
23,62,9487ループエラー処理ループ  
 88変数Ecnt+1 Eカウント
 89待機   
 90画像認識カラフル画像認識成功91「プレゼントしました!」の画像認識・Tap無
    失敗92エラー処理ループへ
9091SW復帰先を選択end=9124※3
    end=9224 
    end=9324 
    end=9963 
    end=1531位のミキピョン対策
9092画像認識OKリトライ画像認識成功 
    失敗 
 93画像認識とじる画像認識成功 
    失敗 
 94ループエラー処理ループ 87,↓ 
 95スクショスクリーンショット 10回ループしても復帰出来なければ諦める
 96ループとじるループ ミッションタップして強制的にとじる
 97タッチ操作ミッションタップ  
 98画像認識ランキング画像認識成功99 
    失敗101 
9899SW復帰先を選択end=91,9214※4
    end=1,93,99 
99100画像認識ハート画像認識成功551段目・Tap無
    失敗64 
98101画像認識とじる画像認識  
      
 102ループとじるループ 96,↓10回ループしても復帰出来なければ諦める
84103変数err=2 エラー有、途中で終了
 104(待機)送信完了 無くても可
64,71,85105区分ログ作成  
 106変数送信前待機の時間を記録 ※5
 107変数送信ログ作成 ※6
 108IF送信前待機が190秒以上はエラーdelay<190109通常180秒
    delay≧190110 
108109変数遅延ゼロにする delay=0 111 
108110変数遅延秒数設定 エラー文字列設定111※7
109,110111クリップボード  
 112SW回復待ち回数により変数をセット  ※8 行き先は全て次へ。変数セットが違う。
    Wcnt<30113変数セット無し
    Wcnt<60113delay+30
    Wcnt<90113delay+60
    それ以上113delay+Wcnt
112113IF遅延最終確認delay=0116 
    114 
113114IF他にエラーがあるかerr=0115他にエラーが無ければ err=3 にする
    116エラーがあるなら、それを優先に。
114115変数他にエラーが無ければ err=3 にする 
113,114116(待機)送信完了 完了無くても可
 117区分送信完了 ログ作成 完了 

FRepプログラム回復待ち

FRepプログラム回復待ち

FRepプログラム回復待ち

FRepプログラム回復待ち

FRep回復待ちプログラム

FRepプログラム回復待ち

FRepプログラム回復待ち

FRepプログラム回復待ち

FRepプログラム回復待ち

FRepプログラム回復待ち

FRepプログラム回復待ち

※1最初の変数セット
FRep回復待ちプログラム

※2
プログラム39、52、86は同等
FRep回復待ちプログラム

※3
プログラム戻り位置を制御
FRep回復待ちプログラム

※4
プログラム戻り位置を制御
FRep回復待ちプログラム

※5
ログ作成でstmの値が変わる前に送信前待機の時間を記録
FRep回復待ちプログラム

※6
送信ログ作成
FRep回復待ちプログラム

FRep回復待ちプログラム

※7
遅延があったなら送信ログに遅延秒数を追加

FRep回復待ちプログラム

※8
行き先は全て次へ(113)。セットする変数の値をそれぞれ変えている。
Wcnt<30:変数セット無し
Wcnt<60:delay+30
Wcnt<90:delay+60
それ以上:delay+Wcnt(実数そのままを足す)

注意:ラベルが長いと変数有の[V]マークが見えない場合もある。[V]が見えないと変数セットの有無がわかりにくいので注意。
FRep回復待ちプログラム

SWで変数セットをしない場合は下記の様なプログラムになる。
(参考)
FRep回復待ちプログラム

まとめと修正情報

なんとか纏めましたがミスがあったらすみません。半分は自分自身の忘備録となっております。記入漏れ・説明不足等は大目に見て下さい。

このプログラムを作成したのは数年前で、見直すと不要な箇所もありましたが、そのままの載せさせて頂きました。

※忘備録:基本的に制御設定(画像認識やSwitch・IF等)での行き先指定での変数セットはしない。そこで変数をセットすると指定した変数が見え難く修正時にわかりにくい。どうしても変数セットする場合にはラベルにその旨表示してわかりやすくしておく。

※このプログラムでは1ヶ所(プログラム112)のみ制御設定(SW)で変数セットがあります。

コメント

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