| 行 |
処理内容 |
| 0-7 |
▼ 【クリックでイベント実行について】
▼ 使用すると、クリックでマップイベントが実行できるようになります。
▼ 「使用する+Sys73=1」を設定すると、文章送りや選択肢の操作もマウス操作でできるようになります。
▼ カウンター越しのマップイベントの実行は、カウンターをクリックしてください。
▼ お店画面の操作、メニュー画面の操作、戦闘画面の操作には非対応です。
▼ ※新規ゲーム開始時にセルフ変数が初期化される場合は、
初期化処理の後でこのコモンをONにしてオプションを指定し直してください。
▼ ※モード2はSys73を1に設定します。OFF時に以前のSys73へ自動復元はしません。
必要ならゲーム側で変更してください。 |
| 8-15 |
■回数付きループ [ 1 ]回 |
| セルフ[90-91]にピクチャ番号を設定。 |
| 16-53 |
■回数付きループ [ 1 ]回 |
| 当コモンイベントのON/OFFの切り替え処理を実行します。 |
このループ内にある条件分岐の処理は、
マップイベントからコモンイベントを呼び出した時のみ処理されます。
そのため、並列実行で当コモンイベントを処理する時には、このループ内の条件分岐はスルーします。
また条件分岐の中には、最後に【イベント処理中断】が設定されていますが、
これは54行目以降の並列実行用の設定を処理しないようにするために設定されています。 |
| |
17-18 |
▼ ★このコモンは「呼び出し」でON/OFFして使います! ピクセル移動切り替えコモンと同じ方式です
▼ 1=ON、-1=OFF。並列実行中はCSelf0[モード]が0なので、この切り替え処理は素通りします |
| |
19-36 |
■条件分岐(変数): 【1】 CSelf0[モード] が 1 と同じ |
| クリックによる自動移動を起動する場合は分岐。 |
| |
|
21-22 |
▼ 左クリック自動移動をONにする |
| セルフ[0]に「0」を設定し、並列実行ではこの分岐内が処理されないようにします。 |
| |
|
23-27 |
▼ 前回の移動情報が残っていると変な場所へ歩き出す可能性があるので、まず内部状態をリセット |
| 前回の起動で1歩移動時に「1」にしたセルフ変数を「0」に初期化し、ピクチャを消去。 |
| |
|
28 |
▼ Cself1=2ならON時にいったんSys73=1にする(イベント起動時にも毎回Sys73=1になる) |
| |
|
29-33 |
■条件分岐(数値): 【1】 CSelf1[クリックでイベント実行] が 2 以上 |
セルフ[1]が「2以上(クリックでイベント実行+Sys73=1)」の場合は分岐し、
システム変数[73:文・選択肢のマウス入力(1なら受付)]に「1」を設定。 |
| |
|
34-35 |
▼ 並列実行開始。ここからは左クリックを待ち続けます |
| セルフ[99]に「1」を代入して、当コモンイベントの起動条件を満たし、当コモンイベントの並列実行を起動します。 |
| |
|
36 |
【イベント処理中断】で呼び出し元のマップイベントに処理を戻す。 |
| |
38-49 |
◇分岐: 【2】 [ CSelf0[モード] が -1 と同じ ]の場合↓ |
| クリックによる自動移動を終了させる場合は分岐。 |
| |
|
39-40 |
▼ 左クリック自動移動をOFFにする |
| セルフ[0]に「0」を設定。 |
| |
|
41-46 |
▼ ★主人公の動作指定そのものは中断しません! ここで空の動作指定を出すとイベント演出まで止めるので注意!
▼ このコモン自身の移動予約だけ捨てて、目的地マーカーも片付けます |
| 1歩移動時に「1」にしたセルフ変数を「0」に初期化し、ピクチャを消去。 |
| |
|
47-48 |
▼ 並列実行を終了 |
| セルフ[99]に「0」を代入して、当コモンイベントの並列実行を停止させます。 |
| |
|
49 |
【イベント処理中断】で呼び出し元のマップイベントに処理を戻す。 |
| 54-58 |
▼ ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
▼ ここから下が、並列実行中の左クリック自動移動処理です
▼ ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
▼ ★イベント実行中は主人公を動かさないようになっています。イベント側の動作指定や演出を壊さないため
▼ イベントが始まったら、このコモンの移動予約だけ解除して次のクリック待ちに戻します |
| 59-63 |
■条件分岐(数値): 【1】 Sys13:イベント実行中?(1=ON) が 1 以上
|
| イベント実行中の場合は分岐。 |
| |
61-63 |
自動移動時に「1」にしたセルフ変数を「0」に初期化し、目的地を示すピクチャを消去。 |
| 65-346 |
◇上記以外 |
| イベント実行中では無い時。(システム変数[13:イベント実行中?(1=ON)]が「0」の時) |
| |
66-67 |
▼ 新しく左クリックされたかチェック。移動途中でもクリックされたら行き先を更新します |
| 新押しのクリックがあった場合は、セルフ[10]に「20」を代入。 |
| |
68-186 |
■条件分岐(変数): 【1】 CSelf10[左クリック状態] が 20 と同じ |
| 新押しのクリックがあった場合は分岐。 |
| |
|
70-72 |
▼ 現在マップのSDB[0:マップ設定]からループ設定を取得。0なし/1横/2縦/3縦横 |
| システムDB[0:マップ設定]から、このマップのループ設定をセルフ[41]に取得。 |
| |
|
73-74 |
このマップのマスの数をセルフ[44〜45]に取得。 |
| |
|
75-88 |
▼ FIND_PATH用の4/8方向数とループ指定文字列をここで作っておきます |
4方向移動か8方向移動かをセルフ[53]に取得し、
隠しコード「FIND_PATH」で使用するループ処理の文字列を設定。 |
| |
|
89-91 |
▼ クリック位置を目的マスに変換。マップズーム中でもずれないよう変数操作+のズーム対応版を使います |
| クリックした目標地点のマス座標(標準)をセルフ[20〜21]に設定。 |
| |
|
92-94 |
▼ 目的地は精密座標でも持っておく。半マス移動時、普通のマス座標だけ見ると途中で到着扱いになるためです |
| 目標地点のマス座標(精密)をセルフ[37〜38]に設定。 |
| |
|
95-96 |
主人公のマス座標(標準)をセルフ[30〜31]に設定。 |
| |
|
97-99 |
▼ FIND_PATHで、マップ地形と主人公以外のイベントの当たり判定を考慮して目的地へ行けるか事前チェック
▼ MOVE_EV=-2を明示。NPC等のイベントも障害物として判定し、通れる場所だけ移動します |
| 隠しコード「FIND_PATH」を使って、ゴールへ向かう最初の1歩目の移動方向をセルフ[5]に取得。 |
| |
|
100-118 |
▼ 隣マスとの画面座標差から目的地マーカーを表示するピクチャの表示サイズを算出 |
| クリックしたマスと隣のマスとの距離(ピクセル値)を算出。 |
| |
|
119 |
▼ ループマップでマーカーの表示位置候補が複数ある場合、ゲーム画面の中央に近い方の表示位置を採用する |
| |
|
120-121 |
マップのピクセルサイズをセルフ[46〜47]に設定。 |
| このサイズはマップの拡大率に対応したピクセルサイズになっています。 |
| |
|
122-136 |
■条件分岐(数値): 【1】 CSelf41[マップループ設定] が 1 のビットを満たす
■条件分岐(数値): 【1】 CSelf46[ループ画面幅] が 1 以上 |
| マップに横のループ設定があり、マップの横のピクセルサイズの設定がある場合は分岐。 |
| |
|
|
127-132 |
経路作成不能や目的地を示すピクチャを表示する時のX表示位置候補が左右2箇所にある場合、
ゲーム画面の中央を基点に、最も近いX表示位置を採用する。 |
| |
|
137-151 |
■条件分岐(数値): 【1】 CSelf41[マップループ設定] が 2 のビットを満たす
■条件分岐(数値): 【1】 CSelf47[ループ画面高] が 1 以上 |
| マップに縦のループ設定があり、マップの縦のピクセルサイズの設定がある場合は分岐。 |
| |
|
|
142-147 |
経路作成不能や目的地を示すピクチャを表示する時のY表示位置候補が上下2箇所にある場合、
ゲーム画面の中央を基点に、最も近いY表示位置を採用する。 |
| |
|
152-154 |
▼ 経路なしなら赤い■をブルブルさせて終了。演出中でも次クリックは受けられるよう、消去は遅延予約です
▼ 前回の遅延消去が残っていると新しい赤■まで後から消えるので、ここでディレイ内容をリセット |
| 経路作成不能の時に表示したピクチャの発動ディレイを解除。 |
| |
|
76-91 |
■条件分岐(文字): 【1】 CSelf5[FIND_PATH結果] が "NoPath" を含む |
| 経路作成不能の場合は分岐。 |
| |
|
|
157 |
▼ 経路なし! 通行不能で目的地まで辿り着けない、
マップイベントが邪魔している、遠すぎて経路が算出できないなど |
| |
|
|
158-160 |
1歩移動時に「1」にしたセルフ変数を「0」に初期化し、目的地を示すピクチャを消去。 |
| |
|
|
161-163 |
クリックしたマスに経路作成不能を示すピクチャを表示し、左右にプルプルする演出も設定。
そして発動ディレイ[18]によって、18フレーム後に自動消去。 |
| |
|
165-182 |
◇上記以外 |
| ゴールまで辿り着ける場合は分岐。 |
| |
|
|
166-169 |
▼ 経路あり! FIND_PATHで次のマスを選び、その座標まで近づく動作を繰り返します |
| セルフ[36]に「1」を設定して経路の移動処理を起動し、経路作成不能を示すピクチャを消去。 |
| |
|
|
170-172 |
▼ 白い■が目的地マーカー。隣マスとの画面座標差からサイズを出しているので、ズーム率にも自動追従します |
| クリックしたマスに目的地を示すピクチャを表示し、拡大縮小を繰り返す演出も設定。 |
| |
|
|
173-182 |
■条件分岐(数値): 【1】 CSelf1[クリックでイベント実行] が 1 以上 |
セルフ[1]が「1以上(クリックでイベント実行)」の場合は分岐し、
【自動キー入力: 決定】を実行 |
| |
|
|
|
176-180 |
■条件分岐(数値): 【1】 CSelf1[クリックでイベント実行] が 2 以上 |
セルフ[1]が「2以上(クリックでイベント実行+Sys73=1)」の場合は分岐し、
システム変数[73:文・選択肢のマウス入力(1なら受付)]に「1」を設定。 |
| |
187-188 |
▼ ここから移動継続処理。並列実行1回につき最大1歩だけ発行します
▼ 長いループで占有しないので、移動中でも新規クリックを拾えます |
| |
189-346 |
■条件分岐(数値): 【1】 CSelf36[停止フラグ] が 1 以上 |
| 経路の移動が停止するまでは分岐し続ける。 |
| |
|
191 |
▼ 一歩命令の直後は動き始めるまで少し遅れる場合があるので、詰まり判定に短い猶予を入れます |
| |
|
192-196 |
■条件分岐(数値): 【1】 CSelf52[一歩判定猶予] が 1 以上 |
| セルフ[52]に「減算1」を設定。 |
| セルフ[52]が[0]になったら、主人公が移動しているかどうかのチェックを行う。 |
| |
|
197-198 |
目的地の画面位置をセルフ[22〜23]に取得。 |
| |
|
199 |
▼ ループマップでマーカーの表示位置候補が複数ある場合、ゲーム画面の中央に近い方の表示位置を採用する |
| |
|
200-201 |
マップのピクセルサイズをセルフ[46〜47]に設定。 |
| |
|
202-216 |
■条件分岐(数値): 【1】 CSelf41[マップループ設定] が 1 のビットを満たす
■条件分岐(数値): 【1】 CSelf46[ループ画面幅] が 1 以上 |
| マップに横のループ設定があり、マップの横のピクセルサイズの設定がある場合は分岐。 |
| |
|
|
207-212 |
経路作成不能や目的地を示すピクチャを表示する時のX表示位置候補が左右2箇所にある場合、
ゲーム画面の中央を基点に、最も近いX表示位置を採用する。 |
| |
|
217-231 |
■条件分岐(数値): 【1】 CSelf41[マップループ設定] が 2 のビットを満たす
■条件分岐(数値): 【1】 CSelf47[ループ画面高] が 1 以上 |
| マップに縦のループ設定があり、マップの縦のピクセルサイズの設定がある場合は分岐。 |
| |
|
|
222-227 |
経路作成不能や目的地を示すピクチャを表示する時のY表示位置候補が上下2箇所にある場合、
ゲーム画面の中央を基点に、最も近いY表示位置を採用する。 |
| |
|
232 |
目的地を示すピクチャの表示位置を修正。 |
| |
|
233-344 |
■条件分岐(数値): 【1】 Sys35:主人公移動中?(1=YES) マスの間にいる? が 0
と同じ |
| マスとマスの間を移動中ではない場合は分岐。 |
| |
|
|
235-236 |
セルフ[32〜33]に主人公のマス座標(精密)を取得。 |
| |
|
|
237 |
▼ 目的地への到着判定は精密座標で完全一致を見る。1/4マス重なっただけ止まらないようにするためです |
| |
|
|
238-248 |
■条件分岐(数値): 【1】 CSelf32[移動前X] が CSelf37[目的精密X] と同じ
■条件分岐(数値): 【1】 CSelf33[移動前Y] が CSelf38[目的精密Y] と同じ
|
0.5マスのずれが無い状態で目的地のマスに主人公が着いた場合は分岐し、
セルフ[36]とセルフ[39]を「0」にして、目的地を示すピクチャを消去し、経路移動を終了する。 |
| |
|
|
249 |
▼ 次のマス中心へ着くまで同じ座標を目標にする。途中の半マスでFIND_PATHを再探索しない |
| |
|
|
250-262 |
■条件分岐(数値): 【1】 CSelf39[次マス状態[0未取得1待機2発行]] が 1 と同じ
■条件分岐(数値): 【1】 CSelf32[移動前X] が CSelf56[次マス精密X] と同じ
■条件分岐(数値): 【1】 CSelf33[移動前Y] が CSelf57[次マス精密Y] と同じ |
0.5マスのずれが無い状態で次のマスまで移動し終えた場合は分岐し、
セルフ[39]を「0」にして、291行目の分岐内で隠しコード「FIND_PATH」にて次の1歩の情報を取得。 |
| |
|
|
263 |
▼ 一歩後まだ中心未到着なら同じ座標への接近を続ける。まったく動けなかった時だけ停止 |
| |
|
|
264-288 |
■条件分岐(数値): 【1】 CSelf39[次マス状態[0未取得1待機2発行]] が 1 と同じ
■条件分岐(数値): 【1】 CSelf32[移動前X] が CSelf34[前回歩行開始X] と同じ
■条件分岐(数値): 【1】 CSelf33[移動前Y] が CSelf35[前回歩行開始Y]
と同じ |
| 次のマスへ移動を開始した時と同じマス座標(精密)にいる(移動していない)場合は分岐。 |
同じマス座標(精密)にいない場合は「移動した」となりますが、この段階では0.5マス移動しかしていないため、
◇上記以外にてセルフ[39]に「2」を設定して、331行目の分岐内でもう一度移動を実行します。 |
| |
|
|
|
271-276 |
■条件分岐(数値): 【1】 CSelf52[一歩判定猶予] が 0 と同じ |
移動するマップイベントなどで移動できなかった場合は分岐し、
セルフ[36]とセルフ[39]を「0」にして、目的地を示すピクチャを消去し、経路移動を終了する。 |
| |
|
|
289-328 |
■条件分岐(数値): 【1】 CSelf36[停止フラグ] が 1 以上
■条件分岐(数値): 【1】 CSelf39[次マス状態[0未取得1待機2発行]] が 0 と同じ |
| 次のマスへは移動したが、まだ目的地には辿り着けていない場合は分岐。 |
| |
|
|
|
293-294 |
主人公のマス座標(標準)をセルフ[30〜31]に設定。 |
| |
|
|
|
295-296 |
▼ FIND_PATH v2 /POS /LEN=1 /MOVE_EV=-2で、現在位置からNPCを避ける次のマス座標を1つ取得。ループにも対応 |
| 隠しコード「FIND_PATH」を使って、目的地へ向かう次の1歩のマス座標(標準)をセルフ[5]に取得。 |
| |
|
|
|
297-302 |
■条件分岐(文字): 【1】 CSelf5[FIND_PATH結果] が "NoPath" を含む |
| |
|
|
|
|
299-302 |
▼ 経路なし! 移動するマップイベントによって、目的地までの経路が算出できなくなった |
| セルフ[36]とセルフ[39]を「0」にして、目的地を示すピクチャを消去し、経路移動を終了する。 |
| |
|
|
|
304-322 |
◇上記以外 |
| |
|
|
|
|
305 |
▼ 経路あり! 返り値X,Y(終点直前ならX,Y/END)を分解。開始=終点のENDなら目的地を直接使います |
| |
|
|
|
|
306-309 |
■条件分岐(文字): 【1】 CSelf5[FIND_PATH結果] が "END" を含む |
| スタートとゴールが同じマス座標だった場合は分岐し、セルフ[54〜55]にゴールのマス座標を設定。 |
| 311-317 |
◇上記以外 |
| 目的地へ向かう次の1歩のマス座標(標準)をセルフ[5]からセルフ[54〜55]へ設定。 |
| |
|
|
|
|
320-321 |
セルフ[56〜57]に次の1歩のマス座標(精密)を設定。 |
| |
|
|
|
|
322 |
セルフ[39]に「2」を設定して、331行目の分岐内で次の1歩の移動を実行。 |
| |
|
|
329-343 |
■条件分岐(数値): 【1】 CSelf36[停止フラグ] が 1 以上
■条件分岐(数値): 【1】 CSelf39[次マス状態[0未取得1待機2発行]] が 2 と同じ |
| 自動移動をまだ続ける場合は分岐。 |
| |
|
|
|
333 |
▼ 通常の半歩/全歩設定を変えず、次マスの中心に着くまで「座標に接近」を繰り返す |
| |
|
|
|
334-335 |
セルフ[34〜35]に現在位置マスの座標(精密)を設定し、
266行目の条件分岐で次のマスへ移動したかどうかを調べる時に使用。 |
| |
|
|
|
336 |
【動作指定】で次のマスへの移動を実行。 |
| |
|
|
|
337 |
セルフ[52]に「2」を設定し、移動したかどうかの判定処理を2フレーム後から実行するようにします。 |
| |
|
|
|
338 |
セルフ[39]に「1」を設定し、移動したかどうかの判定処理を実行させます。 |