WOLF RPGエディター(ウディタ)[3.175]/基本システム【サイトトップへ戻る】
■コモンイベント[126:X[移]歩行時_並列キー処理]の解説
(更新:2023/04/24)


コモンイベント[126:X[移]歩行時_並列キー処理]について解説します。


ショートカット
■コモンイベント[126:X[移]歩行時_並列キー処理]って何?
■こうゆう時にこのコモンイベントを改造する
■[入力の数/結果を返す]について
■コモンイベント呼び出しの一覧
■セルフ変数の一覧
■イベントコマンドの解説

基本システムに関する説明は別ページに記載しています。
【基本システムに関する説明ページを見る】

コモンイベントの一覧と補足説明のページも用意しています。
【コモンイベントの一覧と補足説明のページを開く】


  
■コモンイベント[126:X[移]歩行時_並列キー処理]って何?

コモンイベント[126:X[移]歩行時_並列キー処理]は「並列実行」で処理されており、
移動中にキャンセルキーを押すとコモンイベント[127:X[移]メニュー起動]を呼び出して、メニュー画面を表示します。

また主人公が1歩移動したらコモンイベント[076:X[移]状態更新]を呼び出し、
状態変化による処理(状態変化の回復、HP・SPの増減)を実行します。



コモンイベント[127:X[移]メニュー起動]イベントコマンド【次イベントの予約】で呼び出して実行します。

【次イベントの予約】でイベントを呼び出すと「自動実行」のような仕様となり、
「並列実行」以外の他のイベントの実行ができなくなる他、
イベント実行中は方向キーを押しても主人公の移動ができなくなります。

またシステム変数[13:イベント実行中?(1=ON)]が「1」となるので、コモンイベント[126:X[移]歩行時_並列キー処理]にある…
■条件分岐(変数): 【1】 Sys13:イベント実行中?(1=ON) が 0 と同じ
の条件分岐も満たさなくなり、メニュー画面を表示する処理が二重に実行される事はありません。



次のマスへ移動している途中にキャンセルキーを押した場合は、5フレーム以内に次のマスへ移動が完了し、
また「並列実行」以外のイベントが実行中ではない場合は、コモンイベント[127:X[移]メニュー起動]が呼び出されます。


▲トップへ戻る▲


  
■こうゆう時にこのコモンイベントを改造する

以下のような改造を行いたい時にこのコモンイベントを改造します。

◆キャンセルキー以外に何らかのキーを押したらイベントが発動するようにしたい。
 例えば「Mキーを押すとマップが表示される」など。

◆1歩移動したら何らかのイベントが処理されるようにしたい。
 例えば「移動歩数のカウント」「ゲーム内の時間処理(昼や夜に変わる処理)」など。


▲トップへ戻る▲


  
■[入力の数/結果を返す]について

コモンイベント[126:X[移]歩行時_並列キー処理][入力の数/結果を返す]には、何も設定されていません。


▲トップへ戻る▲


  
■コモンイベント呼び出しの一覧

コモンイベント[126:X[移]歩行時_並列キー処理]から呼び出しているコモンイベントの一覧です。
なお、コモンイベント[126:X[移]歩行時_並列キー処理]を呼び出しているコモンイベントはありません。

コモンイベント[126:X[移]歩行時_並列キー処理]から呼び出しているコモンイベント
コモンイベント(ID順) 処理内容
076:X[移]状態更新 1歩移動したら呼び出します。
127:X[移]メニュー起動 キャンセルキーを押された時に【次イベントの予約】で呼び出します。

【呼び出しコモンイベントの一覧を別ウィンドウで表示】


▲トップへ戻る▲


  
■セルフ変数の一覧

コモンイベント[126:X[移]歩行時_並列キー処理]のセルフ変数の一覧です。

セルフ変数
番号 名前 使用内容
3 *名前なし* 一応【キー入力】で使用されていますが、
その【キー入力】で得たキーコードを使っている形跡がありません。
11 旧マップID イベント実行中で5フレーム待ちをする前の現在のマップIDを取得。
12 新マップID イベント実行中で5フレーム待ちをしている時のマップIDを取得。
もしも5フレーム待ちをしている時にセルフ[11]と異なる値になった場合は、
「別のマップへ移動した」と判断され、メニュー画面を開く処理を中断します。
13 キー入力状態 【キー入力】にて、キャンセルキーのキーコード「11」を取得。
14 直前キー入力状態 メニュー画面を表示したら「11」になり、
メニュー画面を閉じた後にキャンセルキーを離さすと「0」になる。
この仕様により、メニュー画面を閉じた後にキャンセルキーを押し続けても、
再びメニュー画面が開く事が無く、一度キャンセルキーを離さないと、
メニュー画面が開かない仕様になります。
16 直前イベント実行中? システム変数[13:イベント実行中?(1=ON)]が「1」の時にはセルフ[16]には「10」を設定し、
システム変数[13:イベント実行中?(1=ON)]が「0」になった時(イベント終了時)に、
1フレームだけメニュー画面を開くキャンセルキーを無効にします。
20 現在主人公座標X 現在の主人公のX座標を取得。
21 現在主人公座標Y 現在の主人公のY座標を取得。
22 前回主人公座標X 1フレーム前の主人公のX座標を保存しており、
セルフ[20]と異なる値である場合は「移動した」と判断します。
23 前回主人公座標Y 1フレーム前の主人公のY座標を保存しており、
セルフ[21]と異なる値である場合は「移動した」と判断します。

【変数の一覧を別ウィンドウで表示】


▲トップへ戻る▲


  
■イベントコマンドの解説

イベントコマンドの解説を行います。

なお、見た目で設定内容が分かるような簡単なイベントコマンドの解説は省略しています。

処理内容
20-118 ■条件分岐(変数): 【1】 Sys13:イベント実行中?(1=ON) が 0 と同じ◇上記以外
システム変数[13]が「0(イベント実行中では無い)」の場合は分岐。
  22 ■キー入力:CSelf13[キー入力状態] キャンセル(11)
セルフ[13]にキーコードを設定。
  23 ▼ 新しくキーが押された場合(コモン3と4が異なる値のとき)のみ処理する
このコメントはウディタ[1.31]までの設定に対するコメントであり、
ウディタ[2.00]以降の設定には関係ないコメントになっています。
  25-99 ■条件分岐(変数): 【1】 CSelf16[直前イベント実行中?] が 0 以下
 ■条件分岐(変数): 【1】 CSelf13[キー入力状態] が CSelf14[直前キー入力状態] 以外
イベント実行が終了して2フレーム以上経っている場合は分岐し、
更にキャンセルキーを離した状態からキャンセルキーを押した場合は分岐。
    29 ▼ ■キャンセルキーが押されたらメニュー起動フラグをオンにする
    30-49 ■条件分岐(変数): 【1】 Sys35:主人公移動中?(1=YES) マスの間にいるかどう が 0 と同じ
主人公が移動していない場合は分岐。
      32-49 ■条件分岐(変数): 【1】 Sys13:イベント実行中?(1=ON) が 0 と同じ
 ■条件分岐(変数): 【1】 CSelf13[キー入力状態] が 11 と同じ
並列実行以外のイベントを実行していない場合は分岐し、
キャンセルキーを押している場合は分岐。
        36-39 ▼ 起動に成功する場合は、ここへ来る

▼ 「直前キー入力状態」を更新
セルフ[14]に「11」を設定。
        40-45 ▼ 主人公の動きを1フレームだけ止める
 (止めないと、このままさらに一歩歩いてしまうことがある)
コモンイベント[127:X[移]メニュー起動]が起動する1フレームの間に移動しないように、
一時的に【キー入力禁止/許可】で方向キーの入力を禁止し、
コモンイベント[127:X[移]メニュー起動]を実行した1フレーム後にキー入力の禁止を解除。
    51-93 ◇上記以外
主人公が移動中の場合は分岐。
      52 ▼ 移動中にキャンセルキーを押した場合、先行入力として扱う
      53-93 ■条件分岐(変数): 【1】 CSelf13[キー入力状態] が 11 と同じ
キャンセルキーを押した場合は分岐。
        55 ▼ もし移動中なら、移動が終わるまで待つ (5フレーム過ぎたら無視)
        57-91 ■回数付きループ [ 5 ]回
移動終了を5フレームだけ待つ。
          59 ▼ マップが変わっていた場合も、メニュー起動待ち状態を解除する
          61-65 ■条件分岐(変数): 【1】 CSelf11[旧マップID] が CSelf12[新マップID] 以外
別のマップへ移動した場合は分岐。
            63 【ループ中断】を実行し、メニュー画面を開く処理を中断します。
          66 ▼ イベントが起動しておらず、移動中でもない場合にメニューを起動
          67-83 ■条件分岐(変数): 【1】 Sys13:イベント実行中?(1=ON) が 0 と同じ
並列実行以外のイベントを実行していない場合は分岐。
            69-83 ■条件分岐(変数): 【1】 Sys35:主人公移動中?(1=YES) マスの間にいるかどう が 0 と同じ
主人公が移動中ではない(次のマスへの移動が完了した)場合は分岐。
              71-74 ▼ 起動に成功する場合は、ここへ来る

▼ 「直前キー入力状態」を更新
セルフ[14]に「11」を設定。
              75-81 ▼ 主人公の動きを1フレームだけ止める
 (止めないと、このままさらに一歩歩いてしまうことがある)
コモンイベント[127:X[移]メニュー起動]が起動する1フレームの間に移動しないように、
一時的に【キー入力禁止/許可】で方向キーの入力を禁止し、
コモンイベント[127:X[移]メニュー起動]を実行した1フレーム後にキー入力の禁止を解除し、
【ループ中断】を実行。
          85-87 ◇上記以外
並列実行以外のイベントが実行した場合は分岐。
            86-87 ▼ もしイベントが一瞬でも行われたらメニュー起動待ちをキャンセル
【ループ中断】を実行し、メニュー画面を開く処理を中断します。
  100-101 ▼ 「直前キー入力状態」を更新
セルフ[14]セルフ[13]の値を設定。
メニュー画面を開いた時にセルフ[14]は「11」になります。
そしてメニュー画面を閉じる時にキャンセルキーを押し続けても、
セルフ[14]が「11」のままなので、27行目の条件分岐で分岐せず、
キャンセルキーを一度離して、この101行目セルフ[14]が「0」にならないと、
再びメニュー画面が開く事ができません。
  102 ▼ 一歩でも動いていたら歩行定期処理を呼び出す
  105-116 ■条件分岐(変数): 【1】 CSelf20[現在主人公座標X] が CSelf22[前回主人公座標X] 以外
1フレーム前のX座標と異なる場合は分岐。
    107 コモンイベント[076:X[移]状態更新]を呼び出し、
状態変化中の場合は、ターン数(歩数)を減らし、
移動ごとに発動するHP・SPの増減を実行。
  110-114 ■条件分岐(変数): 【1】 CSelf21[現在主人公座標Y] が CSelf23[前回主人公座標Y] 以外
1フレーム前のY座標と異なる場合は分岐。
    112 コモンイベント[076:X[移]状態更新]を呼び出し、
状態変化中の場合は、ターン数(歩数)を減らし、
移動ごとに発動するHP・SPの増減を実行。
120-121 ◇上記以外
システム変数[13]が「1(イベント実行中である)」の場合は分岐。
  121 ■キー入力:CSelf3 4方向 キャンセル(11)
この設定はウディタ[1.31]まで使われていた設定であり、
ウディタ[2.00]以降は使用されていません。
124-125 ▼ 直前のイベント実行中がオンなら10フレームはメニューを出さない
セルフ[16]に「システム変数[13]×10」を設定。
システム変数[13]が「0」の場合は「0」、
システム変数[13]が「1」の場合は「10」が設定されます。
コメントには「10フレームはメニューを出さない」とありますが、
実際にメニュー画面が出なくなるのは1フレームのみです。


▲トップへ戻る▲



◎関連ページ

◆「基本システム」って何?
┣◆コモンイベントの一覧と補足説明
┣◆メニュー画面の処理構造
┗◆戦闘処理の処理構造

YADOT-WOLFトップ  気紛れな空間へ戻る  メール