ツムツムのハートは前の送信から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は関数から戻ったフルオートプログラムでも使用します。
変数 | 値 | 内容 |
end | 90 | 【91】【92】【93】まとめて |
91 | ランキング最下段 | |
92 | ランキング下から2番目 | |
93 | ランキング下から3番目 | |
99 | ランキング2位~最下段4番目 | |
1 | 1位 | |
err | 0 | エラー無し(本プログラムで設定済) |
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 | 画像認識 | ハート画像認識 | 成功 | 5 | 91-93いずれかでハートがあれば成功・Tap無 | |
失敗 | 7 | |||||
4 | 5 | 変数 | end+1 | ↓ | end=91でも可。 | |
6 | 画像認識 | ハート画像認識 | 成功 | 20 | 【91】最下段・Tap有 | |
失敗 | 14 | 最下段がハート無しなら回復待ちせずに【92】送信へ | ||||
4 | 7 | 変数 | Wcnt+8 | ↓ | 通常の回復待ちよりも時間を長く設定している為カウントも8倍 | |
8 | 変数 | Werrに”S”を追加 | ↓ | エラーログに”S”追加 | ||
9 | タッチ操作 | ↑5人スワイプ | ↓ | 回復待ち | ||
10 | タッチ操作 | ↓5.5人スワイプ | ↓ | 回復待ち | ||
11 | ループ | 【90】最下段~3段分全て | ↓,2 | |||
12 | クリップボード | ↓ | もしもハートが無ければ、エラー出力用の設定をして | |||
13 | 変数 | err=1 | 中断 | エラー変数を設定して→中断 | ||
6,25,99 | 14 | 区間 | 【91】【92】【93】ハート送信 | ↓ | ||
15 | 変数 | end+1 | ↓ | 【92】or【93】を設定 | ||
16 | 待機 | ↓ | ||||
17 | IF | 【92】か【93】か判定 | 【92】 | 18 | ||
【93】 | 19 | |||||
18 | 画像認識 | ハート画像認識 | 成功 | 20 | 【92】ランキング下から2番目・Tap有 | |
失敗 | 27 | |||||
19 | 画像認識 | ハート画像認識 | 成功 | 20 | 【93】ランキング下から3番目・Tap有 | |
失敗 | 27 | |||||
6,18,19,33,34 | 20 | 変数 | Hcnt+1 | ↓ | 【91】【92】【93】共通 | |
21 | タッチ操作 | OKタップ | ↓ | ダブルタップにしてみたが、タップorRecも可 | ||
22 | 待機 | ↓ | ||||
23 | 画像認識 | カラフル画像認識 | 成功 | 24 | 「プレゼントしました!」の画像認識・Tap無 | |
失敗 | 87 | エラー処理ループへ | ||||
23,91 | 24 | タッチ操作 | ミッションタップ | ↓ | 別タップにする事で時間短縮 | |
39 | 25 | IF | 【92】か【93】か判定 | 【92】 | 14 | 【93】へ |
【93】 | 40 | 【99】へ | ||||
26 | 区間 | 【91】【92】【93】ハート送信 | — | |||
18,19 | 27 | ループ | 【92】【93】の回復待ち | ↓ | ||
28 | タッチ操作 | ↑5人スワイプ | ↓ | 回復待ち | ||
29 | タッチ操作 | ↓5.5人スワイプ | ↓ | 回復待ち | ||
30 | タッチ操作 | ミッションタップ | ↓ | 強制ポップアップ等のエラー対策も兼ねて | ||
31 | 変数 | Wcnt+1 | ↓ | Wカウント | ||
32 | IF | 【92】か【93】か判定 | 【92】 | 33 | ||
【93】 | 34 | |||||
32 | 33 | 画像認識 | ハート画像認識 | 成功 | 20 | 【92】成功したら復帰・Tap有 |
失敗 | 35 | |||||
32 | 34 | 画像認識 | ハート画像認識 | 成功 | 20 | 【93】成功したら復帰・Tap有 |
失敗 | 35 | |||||
33,34 | 35 | 画像認識 | キャンセル画像認識 | 成功 | ↓ | 強制ポップアップ対策 |
失敗 | ↓ | |||||
36 | 画像認識 | とじる画像認識 | 成功 | ↓ | 強制ポップアップ対策 | |
失敗 | ↓ | |||||
37 | ループ | 【92】【93】の回復待ち | ↓,27 | |||
38 | スクショ | スクリーンショット | ↓ | 10回ループしても復帰出来なければ諦める | ||
39 | 変数 | (1)err=2、(2)Werrに”☆”追加 | 25 | ※2 エラー有、諦めて次の送信へ | ||
25 | 40 | 記録 | 1人分短めスクロール | ↓ | ||
41 | ループ | 【94】ハート送信 | ↓ | |||
42 | 待機 | ↓ | ||||
43 | 変数 | end=99 | ↓ | 次の【99】を設定 | ||
44 | 画像認識 | ハート画像認識 | 成功 | 55 | 1段目・Tap無 | |
失敗 | ↓ | 【94】回復待ち | ||||
45 | 画像認識 | キャンセル画像認識 | 成功 | 49 | 強制ポップアップ対策 | |
失敗 | ↓ | |||||
46 | 画像認識 | とじる画像認識 | 成功 | 49 | 強制ポップアップ対策 | |
失敗 | ↓ | |||||
47 | タッチ操作 | ↓2人スワイプ | ↓ | 回復待ち | ||
48 | タッチ操作 | ↑1人スワイプ | ↓ | 回復待ち | ||
45,46 | 49 | 変数 | Wcnt+1 | ↓ | Wカウント | |
50 | ループ | 【94】ハート送信 | ↓,41 | |||
51 | スクショ | スクリーンショット | ↓ | 15回ループしても復帰出来なければ諦める | ||
52 | 変数 | (1)err=2、(2)Werrに”☆”追加 | 66 | ※2 エラー有、諦めて次の送信へ | ||
68,91 | 53 | 区間 | 【99】1人ハート送信 | ↓ | ||
54 | 画像認識 | ハート画像認識 | 成功 | ↓ | 1段目・Tap無 | |
失敗 | 70 | |||||
44,54,77,100 | 55 | タッチ操作 | ハートタップ | ↓ | 検索結果をTap | |
56 | 変数 | Hposi=num:@lastmatch.y | ↓ | Hposi=ハートの位置をセット | ||
57 | 画像認識 | 1位画像認識 | 成功 | 58 | ||
失敗 | 59 | |||||
57 | 58 | 変数 | end=1 | ↓ | 終了フラグ | |
57 | 59 | 変数 | Hcnt+1 | ↓ | ハートカウント | |
60 | タッチ操作 | OKタップ | ↓ | |||
61 | 待機 | ↓ | ||||
62 | 画像認識 | カラフル画像認識 | 成功 | ↓ | 「ハートをプレゼントしました!」の画像認識・Tap無 | |
失敗 | 87 | エラー処理ループへ | ||||
62,91 | 63 | タッチ操作 | ミッションタップ | ↓ | 別タップにする事で時間短縮 | |
100 | 64 | IF | 終了判定 | end=1 | 105 | |
否 | ↓ | |||||
65 | IF | 長短スクロールどちらを使うか? | >410 | 66 | 1人分短めスクロール | |
否 | 67 | 1人分長めスクロール | ||||
52,65,70,86 | 66 | 記録 | 1人分短めスクロール | 68 | ||
65 | 67 | 記録 | 1人分長めスクロール | 68 | ||
66,67 | 68 | 待機 | 53 | |||
69 | 区間 | 【99】1人ハート送信 | — | |||
54 | 70 | 画像認識 | 自分画像認識 | 成功 | 66 | 自分なら次のスクロールへ |
失敗 | ↓ | |||||
71 | IF | 終了判定 | end=1 | 105 | ||
否 | ↓ | |||||
80 | 72 | ループ | 【99】回復待ち | ↓ | ||
73 | タッチ操作 | ↓2人スワイプ | ↓ | 回復待ち | ||
74 | タッチ操作 | ↑2人スワイプ | ↓ | 回復待ち | ||
75 | タッチ操作 | ミッションタップ | ↓ | |||
76 | 変数 | Wcnt+1 | ↓ | Wカウント | ||
77 | 画像認識 | ハート画像認識 | 成功 | 55 | 1段目・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,94 | 87 | ループ | エラー処理ループ | ↓ | ||
88 | 変数 | Ecnt+1 | ↓ | Eカウント | ||
89 | 待機 | ↓ | ||||
90 | 画像認識 | カラフル画像認識 | 成功 | 91 | 「プレゼントしました!」の画像認識・Tap無 | |
失敗 | 92 | エラー処理ループへ | ||||
90 | 91 | SW | 復帰先を選択 | end=91 | 24 | ※3 |
end=92 | 24 | |||||
end=93 | 24 | |||||
end=99 | 63 | |||||
end=1 | 53 | 1位のミキピョン対策 | ||||
90 | 92 | 画像認識 | OKリトライ画像認識 | 成功 | ↓ | |
失敗 | ↓ | |||||
93 | 画像認識 | とじる画像認識 | 成功 | ↓ | ||
失敗 | ↓ | |||||
94 | ループ | エラー処理ループ | 87,↓ | |||
95 | スクショ | スクリーンショット | ↓ | 10回ループしても復帰出来なければ諦める | ||
96 | ループ | とじるループ | ↓ | ミッションタップして強制的にとじる | ||
97 | タッチ操作 | ミッションタップ | ↓ | |||
98 | 画像認識 | ランキング画像認識 | 成功 | 99 | ||
失敗 | 101 | |||||
98 | 99 | SW | 復帰先を選択 | end=91,92 | 14 | ※4 |
end=1,93,99 | ↓ | |||||
99 | 100 | 画像認識 | ハート画像認識 | 成功 | 55 | 1段目・Tap無 |
失敗 | 64 | |||||
98 | 101 | 画像認識 | とじる画像認識 | ↓ | ||
↓ | ||||||
102 | ループ | とじるループ | 96,↓ | 10回ループしても復帰出来なければ諦める | ||
84 | 103 | 変数 | err=2 | ↓ | エラー有、途中で終了 | |
104 | (待機) | 送信完了 | ↓ | 無くても可 | ||
64,71,85 | 105 | 区分 | ログ作成 | ↓ | ||
106 | 変数 | 送信前待機の時間を記録 | ↓ | ※5 | ||
107 | 変数 | 送信ログ作成 | ↓ | ※6 | ||
108 | IF | 送信前待機が190秒以上はエラー | delay<190 | 109 | 通常180秒 | |
delay≧190 | 110 | |||||
108 | 109 | 変数 | 遅延ゼロにする delay=0 | 111 | ||
108 | 110 | 変数 | 遅延秒数設定 エラー文字列設定 | 111 | ※7 | |
109,110 | 111 | クリップボード | ↓ | |||
112 | SW | 回復待ち回数により変数をセット | ※8 行き先は全て次へ。変数セットが違う。 | |||
Wcnt<30 | 113 | 変数セット無し | ||||
Wcnt<60 | 113 | delay+30 | ||||
Wcnt<90 | 113 | delay+60 | ||||
それ以上 | 113 | delay+Wcnt | ||||
112 | 113 | IF | 遅延最終確認 | delay=0 | 116 | |
否 | 114 | |||||
113 | 114 | IF | 他にエラーがあるか | err=0 | 115 | 他にエラーが無ければ err=3 にする |
否 | 116 | エラーがあるなら、それを優先に。 | ||||
114 | 115 | 変数 | 他にエラーが無ければ err=3 にする | ↓ | ||
113,114 | 116 | (待機) | 送信完了 | 完了 | 無くても可 | |
117 | 区分 | 送信完了 ログ作成 | 完了 |
※6
送信ログ作成
※7
遅延があったなら送信ログに遅延秒数を追加
※8
行き先は全て次へ(113)。セットする変数の値をそれぞれ変えている。
Wcnt<30:変数セット無し
Wcnt<60:delay+30
Wcnt<90:delay+60
それ以上:delay+Wcnt(実数そのままを足す)
注意:ラベルが長いと変数有の[V]マークが見えない場合もある。[V]が見えないと変数セットの有無がわかりにくいので注意。
SWで変数セットをしない場合は下記の様なプログラムになる。
(参考)
まとめと修正情報
なんとか纏めましたがミスがあったらすみません。半分は自分自身の忘備録となっております。記入漏れ・説明不足等は大目に見て下さい。
このプログラムを作成したのは数年前で、見直すと不要な箇所もありましたが、そのままの載せさせて頂きました。
※忘備録:基本的に制御設定(画像認識やSwitch・IF等)での行き先指定での変数セットはしない。そこで変数をセットすると指定した変数が見え難く修正時にわかりにくい。どうしても変数セットする場合にはラベルにその旨表示してわかりやすくしておく。
※このプログラムでは1ヶ所(プログラム112)のみ制御設定(SW)で変数セットがあります。
コメント