ウディタ基本システム解説
理解のしやすさのため、簡略化を最優先してます
ホラーネクロファンタジアを再生します
コモンイベント126X[移]歩行時_並列キー処理(余計な部分はカットした)
■条件分岐(変数): 【1】Sys13:イベント実行中?(1=ON) が 0と同じ
1-◇分岐: 【1】 [ Sys13:イベント実行中?(1=ON) が 0と同じ ]の場合↓
|■キー入力:このコモンEvセルフ変数13 / キャンセル(11)
|■変数操作: CSelf16[直前イベント実行中?] -= 1 + 0
|■条件分岐(変数): 【1】CSelf16[直前イベント実行中?] が 0以下
2|-◇分岐: 【1】 [ CSelf16[直前イベント実行中?] が 0以下 ]の場合↓
| |■条件分岐(変数): 【1】CSelf13[キー入力状態] が CSelf14[直前キー入力状態]以外
3| |-◇分岐: 【1】 [ CSelf13[キー入力状態] が CSelf14[直前キー入力状態]以外 ]の場合↓
| | |■条件分岐(変数): 【1】Sys35:主人公移動中?(1=YES) マスの間にいるかどう が 0と同じ
4| | |-◇分岐: 【1】 [ Sys35:主人公移動中?(1=YES) マスの間にいるかどう が 0と同じ ]の場合↓
| | | | ■条件分岐(変数): 【1】CSelf13[キー入力状態] が 11と同じ
5 | | | | -◇分岐: 【1】 [ CSelf13[キー入力状態] が 11と同じ ]の場合↓
| | | | |■キー入力禁止/許可: ↓キー ←キー →キー ↑キー [ 移動時× キー入力○ ]
| | | || |■次イベントの予約: [このコモンから+1] コモン127:[ X[移]メニュー起動 ]
| | | | |■ウェイト:1 フレーム
| | || | |■キー入力禁止/許可: ↓キー ←キー →キー ↑キー [ 移動時○ キー入力○ ]
(分岐終了の嵐)
|■変数操作: CSelf14[直前キー入力状態] = CSelf13[キー入力状態] + 0
|■
◇分岐終了◇
■変数操作: CSelf16[直前イベント実行中?] = Sys13:イベント実行中?(1=ON) * 10
コモンイベント127X[移]メニュー起動
■可変DB書込:DB[基本システム用変数:メニュー消去フラグ:数値] = 0
■イベントの挿入[名]: ["X[共]システムSE再生"] <コモンEv 49> / 6:メニュー開く
■イベントの挿入[名]: ["X[移]パーティー情報計算"] <コモンEv 79>
■DB読込(可変): CSelf19[全員数] = 可変DB[基本システム用変数:4:0](現在パーティー人数:数値)
■変数操作: CSelf10[パーティーメンバー位置] = -1 + 0
■回数付きループ [ CSelf19[全員数] ]回
|■変数操作: CSelf10[パーティーメンバー位置] += 1 + 0
|■イベントの挿入[名]: CSelf11[表示主人公ID] = ["X[移]選択位置主人公ID取得"] <コモンEv 105> / CSelf10[パーティーメンバー位置]
|■イベントの挿入[名]: ["X[移]一時ステ計算<初期化>"] <コモンEv 122> / CSelf11[表示主人公ID]
|■イベントの挿入[名]: ["X[移]一時ステ計算<装備補正>"] <コモンEv 123> / CSelf11[表示主人公ID]
|■イベントの挿入[名]: ["X[移]一時ステ計算<状態補正>"] <コモンEv 124> / CSelf11[表示主人公ID]
|■ウェイト:1 フレーム
|■
◇ループここまで◇◇
■イベントの挿入[名]: ["X[移]メニュー描画"] <コモンEv 88> / 0:表示 / 0:0以上…カーソル位置設定
■イベントの挿入[名]: ["X[移]キャラ欄_全員描画"] <コモンEv 92> / 0:新規に全員描画
■ウェイト:4 フレーム
■変数操作: CSelf21[現カーソル位置] = 0 + 0
■イベントの挿入[名]: ["X[移]メニュー描画"] <コモンEv 88> / 1:更新 / CSelf21[現カーソル位置]
■DB読込(可変): CSelf20[コマンド最大数] = 可変DB[基本システム用変数:22:0](メニュー項目数:数値)
■ループ開始
|■可変DB書込:DB[基本システム用変数:54:0](メニューカーソル位置:数値) = CSelf21[現カーソル位置]
|■ウェイト:1 フレーム
|■キー入力:このコモンEvセルフ変数13 / [入力待ち] 上下(8,2) 決定(10) キャンセル(11)
|■条件分岐(変数): 【1】CSelf13[キー入力状態] が 2と同じ 【2】CSelf13[キー入力状態] が 8と同じ
|-◇分岐: 【1】 [ CSelf13[キー入力状態] が 2と同じ ]の場合↓
| |■変数操作: CSelf21[現カーソル位置] += 1 + 0
| |■変数操作: CSelf21[現カーソル位置] %= CSelf20[コマンド最大数] + 0
| |■イベントの挿入[名]: ["X[共]システムSE再生"] <コモンEv 49> / 5:カーソル移動音
| |■イベントの挿入[名]: ["X[移]メニュー描画"] <コモンEv 88> / 1:更新 / CSelf21[現カーソル位置]
| |■ループ開始へ戻る
| |■
|-◇分岐: 【2】 [ CSelf13[キー入力状態] が 8と同じ ]の場合↓
| |■変数操作: CSelf21[現カーソル位置] += CSelf20[コマンド最大数] - 1
| |■変数操作: CSelf21[現カーソル位置] %= CSelf20[コマンド最大数] + 0
| |■イベントの挿入[名]: ["X[共]システムSE再生"] <コモンEv 49> / 5:カーソル移動音
| |■イベントの挿入[名]: ["X[移]メニュー描画"] <コモンEv 88> / 1:更新 / CSelf21[現カーソル位置]
| |■ループ開始へ戻る
| |■
|-◇上記以外
| |■条件分岐(変数): 【1】CSelf13[キー入力状態] が 10と同じ 【2】CSelf13[キー入力状態] が 11と同じ
| |-◇分岐: 【1】 [ CSelf13[キー入力状態] が 10と同じ ]の場合↓
| | |●ラベル地点「メニュー決定」 <<<<<<<<<<<<<<<<<<<<<<<<★
| | |■イベントの挿入[名]: ["X[移]メニュー描画"] <コモンEv 88> / 1:更新 / -2:フラッシュ停止
| | |■変数操作: CSelf22[選択コード位置] = CSelf21[現カーソル位置] + 23
| | |■DB読込(可変): CSelf23[選択コード番号] = 可変DB[基本システム用変数:CSelf22[選択コード位置]:0](数値)
| | |■条件分岐(変数): 【1】CSelf23[選択コード番号] が -1以下
| | |-◇分岐: 【1】 [ CSelf23[選択コード番号] が -1以下 ]の場合↓
| | | |■イベントの挿入[名]: ["X[共]システムSE再生"] <コモンEv 49> / 2:ブザー音
| | | |■イベントの挿入[名]: ["X[移]メニュー描画"] <コモンEv 88> / 1:更新 / CSelf21[現カーソル位置]
| | | |■ループ開始へ戻る
| | | |■
| | |◇分岐終了◇
| | |■イベントの挿入[名]: ["X[共]システムSE再生"] <コモンEv 49> / 0:決定音
| | |■条件分岐(変数): 【1】CSelf23[選択コード番号] が 1と同じ 【2】CSelf23[選択コード番号] が 2と同じ 【3】CSelf23[選択コード番号] が 3と同じ
| | |-◇分岐: 【1】 [ CSelf23[選択コード番号] が 1と同じ ]の場合↓
| | | |■イベントの挿入[名]: ["X┣[移]アイテム欄実行"] <コモンEv 128> / 0:メニューから(新たにキャラ一覧出さない)
| | | |■
| | |-◇分岐: 【2】 [ CSelf23[選択コード番号] が 2と同じ ]の場合↓
| | | |■イベントの挿入[名]: ["X┣[移]技能欄実行"] <コモンEv 129> / 0:メニューから(新たにキャラ一覧出さない) / 0
| | | |■
| | |-◇分岐: 【3】 [ CSelf23[選択コード番号] が 3と同じ ]の場合↓
| | | |■イベントの挿入[名]: ["X┣[移]装備欄実行"] <コモンEv 130> / 0:メニューから(新たにキャラ一覧出さない)
| | | |■
| | |◇分岐終了◇
| | |■条件分岐(変数): 【1】CSelf23[選択コード番号] が 4と同じ 【2】CSelf23[選択コード番号] が 5と同じ 【3】CSelf23[選択コード番号] が 10と同じ
| | |-◇分岐: 【1】 [ CSelf23[選択コード番号] が 4と同じ ]の場合↓
| | | |■イベントの挿入[名]: ["X┣[移]セーブ欄実行"] <コモンEv 131> / 0:セーブ画面 / 0:メニューから(セーブ後、キャラ一覧を表示)
| | | |■
| | |-◇分岐: 【2】 [ CSelf23[選択コード番号] が 5と同じ ]の場合↓
| | | |■イベントの挿入[名]: ["X┗[移]システム欄実行"] <コモンEv 132>
| | | |■
| | |-◇分岐: 【3】 [ CSelf23[選択コード番号] が 10と同じ ]の場合↓
| | | |■DB読込(ユーザ): CSelf24[一時 呼出コモンEv] = ユーザDB[システム設定:0:┗特殊メニューA呼出コモン]
| | | |■条件分岐(変数): 【1】CSelf24[一時 呼出コモンEv] が 0以上
| | | |-◇分岐: 【1】 [ CSelf24[一時 呼出コモンEv] が 0以上 ]の場合↓
| | | | |■変数操作: CSelf24[一時 呼出コモンEv] += 500000 + 0
| | | | |■イベントの挿入: 変数[CSelf24[一時 呼出コモンEv]]のEv ページ1
| | | | |■
| | | |◇分岐終了◇
| | | |■
| | |◇分岐終了◇
| | |■DB読込(可変): CSelf12[一時変数] = 可変DB[基本システム用変数:メニュー消去フラグ:数値]
| | |■条件分岐(変数): 【1】CSelf12[一時変数] が 1と同じ
| | |-◇分岐: 【1】 [ CSelf12[一時変数] が 1と同じ ]の場合↓
| | | |●ラベル「メニュー終了」に飛ぶ >>>>>>>>>>>>>>>>>>>>>>>>>
| | | |■イベント処理中断
| | | |■
| | |◇分岐終了◇
| | |■イベントの挿入[名]: ["X[移]メニュー描画"] <コモンEv 88> / 1:更新 / CSelf21[現カーソル位置]
| | |■
| |-◇分岐: 【2】 [ CSelf13[キー入力状態] が 11と同じ ]の場合↓
| | |■ループ中断
| | |■
| |◇分岐終了◇
| |■
|◇分岐終了◇
|■
◇ループここまで◇◇
●ラベル地点「メニュー終了」 <<<<<<<<<<<<<<<<<<<<<<<<★
■DB読込(可変): CSelf12[一時変数] = 可変DB[基本システム用変数:メニュー消去フラグ:数値]
■条件分岐(変数): 【1】CSelf12[一時変数] が 0と同じ
-◇分岐: 【1】 [ CSelf12[一時変数] が 0と同じ ]の場合↓
|■イベントの挿入[名]: ["X[共]システムSE再生"] <コモンEv 49> / 7:メニュー閉じる
|■
◇分岐終了◇
■イベントの挿入[名]: ["X[移]メニュー描画"] <コモンEv 88> / -1:消去 / 0:0以上…カーソル位置設定
■イベントの挿入[名]: ["X[移]キャラ欄_全員描画"] <コモンEv 92> / -1:全員消去
条件分岐が並んでて分かりにくいですが
分岐が一つしかないことから分かる通り
赤字全ての条件を満たした場合にのみキャンセルキーで
メニューが開けるようにしてるだけです
その条件とは
1.イベントが起動してないこと
(ここでキャンセルキーの入力を受け付けます)
2.直前のイベントが終わってから十分な時間が経過していること
3.メニュー起動終了直後でないこと
4.主人公が丁度マスの上にいること(停止中は必ずメニュー開ける)
5.キャンセルキーが押されていること
条件を満たした場合、まず主人公の移動を封じます
そして、メニュー起動します(予約じゃなくて呼び出しで結構です)
次に、タイトル画面最初と同じようにウェイト1フレームを置きます
(メニューが終了するまでこのイベントは待機)
メニューが終了したら主人公が移動できるようにします
ここでキャンセルキーが押されていることにします
これにより3を実現しているのです
そのためだけにCSelf14[直前キー入力状態]は用意されました
一度メニューを閉じてから次にメニューを開けるようになるまで
の時間を10フレームとします
もちろんイベント実行してない場合に10フレームの遅延が起きないようにします
メニュー消去フラグはメニュー強制終了のためにしか使わない
メニュー開くときの効果音を再生し
パーティーの情報を計算して
パーティーの人数分のキャラクターウィンドウ用の情報を集める
メニューとキャラクターウィンドウを描く
ループ開始地点
下が押されるとカーソルが下に移動する
上が押されるとカーソルが上に移動する
キャンセルキー(11)を押すともちろんメニューが閉じるのだが
決定キー(10)が押されると
選択コード番号によって、コードが実行される
-1は実行不能なコードを示している
1はアイテム欄の実行
2は技能欄の実行
(中略)
特殊メニューになっていきなり番号が10に飛ぶ
ちなみにB,C,DはAのパクリなので消した(どうせ使わないし)
メニューの強制終了(音なし)
こんなの使わないですし
キャンセルキーが押されたらメニューを閉じる
別にループ中断じゃなくて
ラベル「メニュー終了」に飛ぶ >>>>>>>>>>>>>>>>>>>>>>>>>
でもよい(てか、このラベルいらなくね?w)
何もいじってなければメニュー消去フラグは0(ない)ので
無事にメニューを閉じる音が聞こえて終了
メニューを閉じる音を出す
最初に出した余計なピクチャを消す