WOLF RPGエディター(ウディタ)/自作メニュー【サイトトップへ戻る】
■自作メニューの基礎講座
(更新:2024/06/01)


自作メニューに関する基礎講座です。

当ページでは「横1×縦2」「横1×縦6」「横1×縦1〜6」「横1×パーティ人数」の
自作メニューの作り方を紹介します。



また「横6×縦1」などの横並びの表示やマウス操作対応の設定方法も紹介します。

▼横並びの設定例(パーティにいる主人公の顔グラフィックを表示)


ショートカット
■自作メニューとは?
■自作メニューは「並列実行」以外で処理
■自作メニューの起動方法について
■自作メニューの表示について
■選択項目やカーソルの表示位置について
■変数の一覧
■自作メニュー「横1×縦2」を設定
■「横1×縦2」を「横1×縦6」に改造
■「横1×縦6」を「横1×縦1〜6」の変動性に改造
■「横1×縦1〜6」を「横1×パーティ人数(主人公名を表示)」に改造
■横並びで表示
■マウスの操作を追加
■制作アドバイス

当ページにあった「横4×縦3」の自作メニューの作り方は、別ページに移動しました。
【自作メニュー:横4×縦3のページを開く】


  
■自作メニューとは?

自作メニューとは「自作するメニュー画面」の事を言います。

基本システムに用意されている既存のメニュー画面ではなく、
自分が理想とするオリジナルのメニュー画面を作りたい時に自作メニューを作ります。

▼自作メニューの一例(YADO作品「病原体」のステージを選択する画面)




自作メニューは自分が考えている理想のメニュー画面ができる反面、
メニュー画面の作り方やバグの直し方などを自力で解決する必要があります。



当ページの自作メニューは、ゲーム画面のサイズ「320×240[x2]」に合わせて、
ゲーム画面の中央に自作メニューが表示されるように設定します。



画像サイズや項目と項目の間に設定する余白などは、偶数のサイズにしてください。

奇数のサイズだとイベント処理に「除算2」を使用している関係で、表示位置などにずれが生じる可能性があります。


▲トップへ戻る▲


  
■自作メニューは「並列実行」以外で処理

自作メニューは「並列実行」以外で処理した方が良いでしょう。



例えばサブキーを押した時に自作メニューが表示されるようにする場合…
■コモンイベント

起動条件:並列実行

■キー入力:CSelf10[入力待ち] サブキー(12)
〜自作メニューを表示する処理〜
と設定する方法がありますが、「並列実行」で自作メニューを表示すると、以下のような問題が発生します。

システム変数[13:イベント実行中?(1=ON)]が「0」のままになるため、
 例えば自作メニューの表示中にキャンセルキーを押すと、通常のメニュー画面を表示したり、
 マップイベントの実行中(文章の表示中など)にサブキーを押すと、自作メニューが開いてしまう。

●自作メニューの表示中にマップイベントが移動してしまい、方向キーを押すと主人公も移動してしまう。

●マップイベントの起動条件「決定キーで実行」が実行できる場所で自作メニューを表示した場合、
 自作メニューの表示中に決定キーを押すとマップイベントを実行してしまう。
 また起動条件「イベント接触」のマップイベントが主人公に触れると、マップイベントが実行してしまう。

上記の問題は「並列実行」以外で実行すれば解決するので、
自作メニューを処理するイベントは「並列実行」以外で実行した方が良いでしょう。



「並列実行」のイベントからイベントコマンド【イベントの挿入】でイベントを呼び出した場合は、
呼び出し先のイベントが「並列実行」以外の設定でも、呼び出し元と同じ「並列実行」で処理されます。

そのため【イベントの挿入】で呼び出す場合は、
呼び出し元のイベントが「並列実行」以外で実行している必要があります。



アクションゲームなどで主人公が移動できる状態で、常に自作メニューの画面(アイテム画面など)を表示し、
特定のキーを押すと自作メニューが操作できる(使用するアイテムを切り替えるなど)を設定する場合は、
「並列実行」で自作メニューを設定してください。

また「並列実行」以外の「自動実行」などのイベントは、1つしか実行する事ができないので、
2つの自作メニューを同時に処理する場合は、2つの自作メニューを1つのコモンイベントで処理したり、
一方の自作メニューを「並列実行」で処理したりと、イベントの設定方法に工夫が必要です。


▲トップへ戻る▲


  
■自作メニューの起動方法について

自作メニューを表示するには、何らかの起動方法を設定する必要があります。

起動方法の設定は、どのタイミング(どの操作)で自作メニューを表示したいのかによって設定方法が異なります。

起動方法のショートカット
■起動条件の変数の値を変えて起動
■【イベントの挿入】を実行して起動
■【次イベントの予約】を実行して起動
■同じコモンイベントで【次イベントの予約】を実行して起動
■メニュー画面の選択肢から起動
■アイテムや特殊技能の使用で起動

■起動条件の変数の値を変えて起動

自作メニュー用のコモンイベントの起動条件を「自動実行」にして起動条件の変数を設定し、
変数の値を変えて自作メニュー用のコモンイベントを起動します。

▼通常変数[1]が「1」の時にコモンイベントが起動


この起動方法の場合は、自作メニューのコモンイベントとは別に、変数の値を変えるイベント設定が必要です。

例えばサブキーを押した時に自作メニューを起動する場合は、
自作メニューのコモンイベントとは別に、以下のようなイベントを設定。

【イベントコード表示】

■コモンイベント「自作メニューを起動」

起動条件:並列実行

■キー入力:CSelf10[キーコード][入力待ち] サブキー(12)
▼ イベント実行中や移動中の場合は、最大5フレームまで終了を待つ
■回数付きループ [ 5 ]回
|■変数操作+: CSelf11[別マップ移動チェック] = 現在のマップID
|■条件分岐(変数): 【1】 Sys13:イベント実行中?(1=ON) が 0 と同じ
|-◇分岐: 【1】 [ Sys13:イベント実行中?(1=ON) が 0 と同じ ]の場合↓
||■条件分岐(変数): 【1】 Sys35:主人公移動中?(1=YES) マスの間にいる? が 0 と同じ
||-◇分岐: 【1】 [ Sys35:主人公移動中?(1=YES) マスの間にいる? が 0 と同じ ]の場合↓
|||▼ 別のマップへ移動していたら、自作メニューは起動しない
|||■変数操作+: CSelf11[別マップ移動チェック] -= 現在のマップID
|||■条件分岐(変数): 【1】 CSelf11[別マップ移動チェック] が 0 と同じ
|||-◇分岐: 【1】 [ CSelf11[別マップ移動チェック] が 0 と同じ ]の場合↓
||||▼ 自作メニューを表示(移動しないように一時的にキー入力を禁止する)
||||■キー入力禁止/許可: ↓キー ←キー →キー ↑キー [ 移動時× キー入力○ ]
||||■変数操作: V1[自作メニュー起動] = 1 + 0
||||■ウェイト:1 フレーム
||||■キー入力禁止/許可: ↓キー ←キー →キー ↑キー [ 移動時○ キー入力○ ]
||||▼ 自作メニューの処理が終わるまでループし続ける
||||■ループ開始
|||||■条件分岐(変数): 【1】 Sys13:イベント実行中?(1=ON) が 0 と同じ
|||||-◇分岐: 【1】 [ Sys13:イベント実行中?(1=ON) が 0 と同じ ]の場合↓
||||||■ループ中断
||||||■
|||||◇分岐終了◇
|||||■ウェイト:1 フレーム
|||||■
||||◇ループここまで◇◇
||||■
|||◇分岐終了◇
|||▼ サブキーを押し続けている場合は、サブキーを離すまでループし続ける
|||■ループ開始
||||■キー入力:CSelf10[キーコード] サブキー(12)
||||■条件分岐(変数): 【1】 CSelf10[キーコード] が 0 と同じ
||||-◇分岐: 【1】 [ CSelf10[キーコード] が 0 と同じ ]の場合↓
|||||■イベント処理中断
|||||■
||||◇分岐終了◇
||||■ウェイト:1 フレーム
||||■
|||◇ループここまで◇◇
|||■
||◇分岐終了◇
||■
|◇分岐終了◇
|■
◇ループここまで◇◇
■【イベントの挿入】を実行して起動

自作メニュー用のコモンイベントを【イベントの挿入】を使って呼び出します。
動作イメージとしては、基本システムのお店の処理のような感じです。

■マップイベント

起動条件:決定キーで実行

■イベントの挿入[名]: ["自作メニュー"] <コモンEv 215>

「並列処理」以外なら「プレイヤー接触」「イベント接触」「自動実行」でも問題ありません。

また【次イベントの予約】や「自動実行」で実行したコモンイベントから
【イベントの挿入】で実行して自作メニューを呼び出しても問題ありません。

自作メニューのコモンイベントの起動条件は「呼び出しのみ」にしてください。
■【次イベントの予約】を実行して起動

自作メニュー用のコモンイベントを【次イベントの予約】を使って呼び出します。
動作イメージとしては、基本システムのメニュー画面のような感じです。



サブキーを押した時に自作メニューを起動する場合は、以下のように設定。

【イベントコード表示】

■コモンイベント「自作メニューを起動」

起動条件:並列実行

■キー入力:CSelf10[キーコード][入力待ち] サブキー(12)
▼ イベント実行中や移動中の場合は、最大5フレームまで終了を待つ
■回数付きループ [ 5 ]回
|■変数操作+: CSelf11[別マップ移動チェック] = 現在のマップID
|■条件分岐(変数): 【1】 Sys13:イベント実行中?(1=ON) が 0 と同じ
|-◇分岐: 【1】 [ Sys13:イベント実行中?(1=ON) が 0 と同じ ]の場合↓
||■条件分岐(変数): 【1】 Sys35:主人公移動中?(1=YES) マスの間にいる? が 0 と同じ
||-◇分岐: 【1】 [ Sys35:主人公移動中?(1=YES) マスの間にいる? が 0 と同じ ]の場合↓
|||▼ 別のマップへ移動していたら、自作メニューは起動しない
|||■変数操作+: CSelf11[別マップ移動チェック] -= 現在のマップID
|||■条件分岐(変数): 【1】 CSelf11[別マップ移動チェック] が 0 と同じ
|||-◇分岐: 【1】 [ CSelf11[別マップ移動チェック] が 0 と同じ ]の場合↓
||||▼ 自作メニューを表示(移動しないように一時的にキー入力を禁止する)
||||■キー入力禁止/許可: ↓キー ←キー →キー ↑キー [ 移動時× キー入力○ ]
||||■次イベントの予約: コモン215:[ 自作メニュー ]
||||■ウェイト:1 フレーム
||||■キー入力禁止/許可: ↓キー ←キー →キー ↑キー [ 移動時○ キー入力○ ]
||||▼ 自作メニューの処理が終わるまでループし続ける
||||■ループ開始
|||||■条件分岐(変数): 【1】 Sys13:イベント実行中?(1=ON) が 0 と同じ
|||||-◇分岐: 【1】 [ Sys13:イベント実行中?(1=ON) が 0 と同じ ]の場合↓
||||||■ループ中断
||||||■
|||||◇分岐終了◇
|||||■ウェイト:1 フレーム
|||||■
||||◇ループここまで◇◇
||||■
|||◇分岐終了◇
|||▼ サブキーを押し続けている場合は、サブキーを離すまでループし続ける
|||■ループ開始
||||■キー入力:CSelf10[キーコード] サブキー(12)
||||■条件分岐(変数): 【1】 CSelf10[キーコード] が 0 と同じ
||||-◇分岐: 【1】 [ CSelf10[キーコード] が 0 と同じ ]の場合↓
|||||■イベント処理中断
|||||■
||||◇分岐終了◇
||||■ウェイト:1 フレーム
||||■
|||◇ループここまで◇◇
|||■
||◇分岐終了◇
||■
|◇分岐終了◇
|■
◇ループここまで◇◇

【次イベントの予約】で実行したコモンイベントは「1回だけ実行する自動実行」と言った感じになります。

【次イベントの予約】で実行したコモンイベントの中で【イベント処理中断】を実行するか、
コモンイベントの最後の行まで実行した時に、イベント処理が終了します。
通常の「自動実行」のように何度も繰り返しに実行される事はありません。

【次イベントの予約】「並列実行」以外のイベントが起動していない時に実行されます。

そのため、例えばマップイベントの「決定キーで実行」のイベントの中で【次イベントの予約】を実行した場合は、
マップイベントの処理が全て終わったあとに【次イベントの予約】が実行されます。
■同じコモンイベントで【次イベントの予約】を実行して起動

上記の■【次イベントの予約】を実行して起動の場合は、
起動用のイベントと自作メニュー用のイベントの2つが必要でしたが、
それを1つのコモンイベントにまとめて設定する方法があります。

自作メニューのコモンイベントは「並列実行」で設定し、
特定のキーが押された時に【次イベントの予約】の「このコモンEV」で実行し、
「並列実行」以外の状態で同じコモンイベントを起動して、自作メニューを表示させます。



【次イベントの予約】を実行して自作メニューを表示している間も、
「並列実行」の方は常に動き続けている状態になります。

但し自作メニューの処理が終わるまでは「並列実行」の方はループ処理の中でループし続けているので、
自作メニューを表示している時に「並列実行」のキー処理が実行する事はありません。

他のイベントから当コモンイベントを呼び出しても、自作メニューを表示する事ができます。

サブキーを押した時に自作メニューを起動する場合は、以下のように設定。
※当ページの自作メニューと合わせて使えるようにするため、セルフ変数「90〜92」を使用しています。

【イベントコード表示】

■コモンイベント「自作メニュー」

起動条件:並列実行

■変数操作+: CSelf92[呼び出しチェック] = このコモンイベントID(コモンでなければ-1)
■変数操作: CSelf92[呼び出しチェック] += 500000 + 0
■変数操作+: CSelf92[呼び出しチェック] -= 処理中の自動/接触/決定キーEv番号[コモンなら+500000]
▼ 並列実行の場合は分岐内を処理、並列実行以外の場合は54行目以降を処理
■条件分岐(変数): 【1】 CSelf92[呼び出しチェック] が 0 以外
-◇分岐: 【1】 [ CSelf92[呼び出しチェック] が 0 以外 ]の場合↓
|■キー入力:CSelf90[キーコード][入力待ち] サブキー(12)
|▼ イベント実行中や移動中の場合は、最大5フレームまで終了を待つ
|■回数付きループ [ 5 ]回
||■変数操作+: CSelf91[別マップ移動チェック] = 現在のマップID
||■条件分岐(変数): 【1】 Sys13:イベント実行中?(1=ON) が 0 と同じ
||-◇分岐: 【1】 [ Sys13:イベント実行中?(1=ON) が 0 と同じ ]の場合↓
|||■条件分岐(変数): 【1】 Sys35:主人公移動中?(1=YES) マスの間にいる? が 0 と同じ
|||-◇分岐: 【1】 [ Sys35:主人公移動中?(1=YES) マスの間にいる? が 0 と同じ ]の場合↓
||||▼ 別のマップへ移動していたら、自作メニューは起動しない
||||■変数操作+: CSelf11 -= 現在のマップID
||||■条件分岐(変数): 【1】 CSelf11 が 0 と同じ
||||-◇分岐: 【1】 [ CSelf11 が 0 と同じ ]の場合↓
|||||▼ 自作メニューを表示(移動しないように一時的にキー入力を禁止する)
|||||■キー入力禁止/許可: ↓キー ←キー →キー ↑キー [ 移動時× キー入力○ ]
|||||■次イベントの予約: [このコモンから+0] コモン215:[ 自作メニュー ]
|||||■ウェイト:1 フレーム
|||||■キー入力禁止/許可: ↓キー ←キー →キー ↑キー [ 移動時○ キー入力○ ]
|||||▼ 自作メニューの処理が終わるまでループし続ける
|||||■ループ開始
||||||■条件分岐(変数): 【1】 Sys13:イベント実行中?(1=ON) が 0 と同じ
||||||-◇分岐: 【1】 [ Sys13:イベント実行中?(1=ON) が 0 と同じ ]の場合↓
|||||||■ループ中断
|||||||■
||||||◇分岐終了◇
||||||■ウェイト:1 フレーム
||||||■
|||||◇ループここまで◇◇
|||||■
||||◇分岐終了◇
||||▼ サブキーを押し続けている場合は、サブキーを離すまでループし続ける
||||■ループ開始
|||||■キー入力:CSelf90[キーコード] サブキー(12)
|||||■条件分岐(変数): 【1】 CSelf90[キーコード] が 0 と同じ
|||||-◇分岐: 【1】 [ CSelf90[キーコード] が 0 と同じ ]の場合↓
||||||■イベント処理中断
||||||■
|||||◇分岐終了◇
|||||■ウェイト:1 フレーム
|||||■
||||◇ループここまで◇◇
||||■
|||◇分岐終了◇
|||■
||◇分岐終了◇
||■
|◇ループここまで◇◇
|■イベント処理中断
|■
◇分岐終了◇
▼ ここから自作メニューの処理を設定
■メニュー画面の選択肢から起動

メニュー画面の選択肢を選択すると、自作メニューが表示されるように設定します。

動作イメージとしては、初期設定にある「相談」を選択すると自作メニューが表示される感じです。



メニュー画面の選択肢の設定は、ユーザーDB[17:システム設定]にて行います。



初期設定にある「相談」を利用する場合は、
項目[11:■特殊メニューA名称]の「相談」の文字列を変えてください。

自作メニューの処理はコモンイベント[212:相談コマンド]に設定してください。

コモンイベント[212:相談コマンド]ではないコモンイベントに自作メニューの設定している場合は、
項目[12:┗特殊メニューA呼出コモン]の「[212]相談コマンド[コモンEv]」の設定を変えてください。

自作メニューを表示するコモンイベントの起動条件は「呼び出しのみ」にしてください。

当ページに記載しているピクチャ番号で自作メニューを表示すると、
メニュー画面の下に自作メニューが表示されます。



もしもメニュー画面の上に自作メニューを表示する場合は、
当ページに記載されているピクチャ番号を「+20000」などにするか、
自作メニューのピクチャのZオーダーを「1」などにしてください。

なお、メニュー画面の「相談」を選択した後にメニュー画面を閉じてから自作メニューを表示する方法もあります。

以下の設定を自作メニューを表示するコモンイベントの最初に設定すると、
メニュー画面が閉じてから自作メニューが表示されます。

【イベントコード表示】

■DB読込(可変): CSelf0 = 可変DB[ 基本システム用変数 : 1 : 0 ] (18 : メニュー消去フラグ : 数値)
■条件分岐(変数): 【1】 CSelf0 が 0 と同じ
-◇分岐: 【1】 [ CSelf0 が 0 と同じ ]の場合↓
|■可変DB書込:DB[ 基本システム用変数 : 1 : 0 ] (18 : メニュー消去フラグ : 数値) = 1
|■次イベントの予約: [このコモンから+0] コモン212:[ 相談コマンド ]
|■イベント処理中断
|■
◇分岐終了◇
▼ ここから自作メニューの処理を設定
■アイテムや特殊技能の使用で起動

メニュー画面からアイテムや特殊技能を使用する事で自作メニューを起動します。

▼技能の設定例(コモンイベント[215]に自作メニューの処理がある場合)


▼アイテムの設定例(コモンイベント[215]に自作メニューの処理がある場合)


自作メニューのコモンイベントの起動条件は「呼び出しのみ」にしてください。


▲トップへ戻る▲


  
■自作メニューの表示について

自作メニューの表示は、基本的に「ウィンドウ」「カーソル」「選択項目」の3種類のピクチャで表示します。

ウィンドウ カーソル 選択項目
3種類のピクチャを重ねて表示

当ページの選択項目の表示は、選択項目1個につき1枚のピクチャを使います。

上図のように選択項目が3個ある場合は、3枚のピクチャを使います。

選択項目の表示は必ずしも「選択項目1個につき1枚のピクチャ」とは決まっておらず、
制作者によっては、複数の選択項目を1枚のピクチャで表示したり、
逆に「薬草 10G」などの1つの選択項目を「薬草」「10G」と2枚のピクチャに分けて表示する事もあります。



ピクチャはピクチャ番号の大きい方が上に表示される仕様なので、ピクチャ番号の割り振り方は…
画像種類 ピクチャ番号
ウィンドウ 1
カーソル 2
選択項目 3以降
と言った感じになります。

ピクチャ番号はどの番号をどのように使うのかは、制作者が自由に決める事ができます。

当ページの処理では、以下のようにピクチャ番号を使います。
画像種類 ピクチャ番号
ウィンドウ 1
カーソル 2
選択項目 カーソル位置+100

選択項目のピクチャ番号は、カーソル位置[5]の選択項目を表示する時には、ピクチャ番号[105]を使います。



画像サイズは以下のとおりです。

▼縦並び
画像種類 ピクチャ番号 生成サイズ横 生成サイズ縦
ウィンドウ 1 カーソル横幅+20 カーソル縦幅×項目数+4×(項目数−1)+20
カーソル 2 50 16
カーソル(主人公名) 2 120 16
選択項目 カーソル位置+100 文字数で変動 12

▼横並び
画像種類 ピクチャ番号 生成サイズ横 生成サイズ縦
ウィンドウ 1 カーソル横幅×項目数+20 カーソル縦幅+20
カーソル 2 50 16
カーソル(顔グラフィック) 2 50 50
選択項目 カーソル位置+100 文字数で変動 12

ウィンドウの生成サイズにある「+20」はウィンドウ周りの余白の設定であり、
カーソル表示から上下左右に10ピクセルずつ余白を設定しています。

また縦並びのウィンドウの生成サイズ縦にある「4×(項目数−1)」は、
選択項目と選択項目の間にある余白(4ピクセル)の設定になります。



※横並びは選択項目と選択項目の間に余白は設定しません。



最初の選択項目(カーソル位置[0])の表示位置は、以下の計算式で算出します。

縦並び X位置 160
Y位置 120−ウィンドウ縦幅÷2+余白[10]+カーソル縦幅÷2
横並び X位置 160−ウィンドウ横幅÷2+余白[10]+カーソル横幅÷2
Y位置 120



ピクチャの表示設定では、表示位置はセルフ変数[24:X表示位置][25:Y表示位置]を使って設定します。

また選択項目を表示する時のピクチャ番号は、セルフ変数[21:ピクチャ番号(位置+100)]を使って設定します。

変数を使って設定する事で、あとでピクチャの番号や表示位置を変える時に、楽に変える事ができます。

変数を使って設定する時には「変数呼び出し値(セルフ変数[20]=1600020)」を使って設定します。
【変数呼び出し値の説明を見る】


▼ウィンドウ画像



▼カーソル画像


※表示形式は「加算」を設定。
【表示形式[加算]の説明を見る】


カーソルの画像はイベントコマンド【ピクチャエフェクト】を使って点滅させます。




▼選択項目




基本システムのメニュー画面や戦闘画面の表示では、ピクチャ番号「10000〜19999」を使用しているため、
基本システムのメニュー画面、戦闘画面、お店画面などと一緒に自作メニューを表示する場合は、
ピクチャ番号を「20000以上」にしてください。



ピクチャの表示順は、ピクチャ番号の大きい方がゲーム画面の前面に表示されますが、
Zオーダー」を使う事で、ピクチャ番号の大きい画像を上にピクチャ番号の小さい画像を表示する事ができます。

【Zオーダーの説明を見る】


▲トップへ戻る▲


  
■選択項目やカーソルの表示位置について

選択項目の表示位置の設定には「指定型」と「算出型」があります。

どちらも一長一短があり、どのように選択項目を表示したいのかによって、どちらかを選択します。



■指定型

項目00は[X160][Y80]に表示」と言ったように、選択項目ごとに表示する位置を指定して表示します。

自作メニューとは少々異なりますが、例えば戦闘画面の敵キャラの並べ方は、
敵1は[X160][Y130]に表示」と言ったように、敵キャラごとに表示位置を指定して表示しています。



上図のように、Y位置を同じ値(一直線に並べる)にしないで山なりに並べたり、
画面左側から「敵6→敵4→敵2」と番号順に並べないようにする時には、「指定型」の方が設定が楽です。

しかし表示位置を修正する場合は、選択項目ごとに1つずつイベントコマンドを修正する必要があり、
また表示する画像サイズやフォントサイズ、表示する選択項目の数に応じて、
表示位置を調整するような設定には不向きです。



■算出型

計算処理で選択項目の表示位置を算出します。



上図の場合は、左上の主人公を「位置=0」、右下の主人公を「位置=5」として…
■変数操作: CSelf11[X] = CSelf10[位置] % 2
■変数操作: CSelf12[Y] = CSelf10[位置] / 2
■変数操作: CSelf11[X] *= 115 + 0
■変数操作: CSelf12[Y] *= 78 + 0
■変数操作: CSelf11[X] += 148 + 0
■変数操作: CSelf12[Y] += 42 + 0
と言った計算処理で、位置0〜5の表示位置を算出する事ができます。

選択項目ごとに表示位置を1つずつ設定するような手間が無く、項目と項目との余白の幅を変えるのも容易です。

一方で戦闘画面の敵キャラの表示のように、Y位置が同じ値(一直線に並べる)では表示設定や、
画面左側から「敵1→敵2」と順番に並んでいない場合は、一応計算処理で表示位置の設定はできますが、
計算処理がかなり複雑化するので、この場合は「指定型」の方が良いでしょう。



自作メニューのカーソルの表示も、選択項目の表示と同様に「指定型」や「算出型」で設定する事ができますが、
それ以外に選択項目の表示位置を取得して、同じ位置に表示する「取得型もあります。

取得型」の場合は、選択項目の表示位置を変えると自動的にカーソルの表示位置が変わります。

もしも選択項目と同じ位置にカーソルを表示したくない場合は、「取得型」を採用する事はできません。



当ページの設定例では、選択項目の表示は「算出型」、カーソルの表示は「取得型」を採用しています。


▲トップへ戻る▲


  
■変数の一覧

コモンイベントのセルフ変数
番号 名前 使用内容
10 カーソル位置 メニュー画面のカーソルの位置を設定。
11 SE:カーソル移動 キーボードかマウスでカーソルを操作した時に、
1回だけSEを演奏させる時に使用。
15 キー入力・クリック 押したキーのキーコードを取得。
【キーコードの一覧を見る】
マウス操作の場合は、左クリック、右クリックの押し情報の取得にも使用。
2 押し始めた
1 押し続けている
0 押していない
16 キー待ち時間 方向キーを押し続けた時に、次の項目へ移動するまでの時間をカウント。
17 起動時キー押し禁止 起動時に決定キーを押し続けて、項目を選択しないようにする時に使用。
20 ピクチャ番号 ピクチャ番号を設定し、ピクチャの表示や消去で使用。
21 ピクチャ番号(位置+100) カーソル位置+100」の値を保存し、選択項目のピクチャ番号を設定。
22 生成サイズ横 ウィンドウやカーソルの横サイズの設定に使用。
23 生成サイズ縦 ウィンドウやカーソルの縦サイズの設定に使用。
24 X表示位置 選択項目を表示する時やカーソルの表示位置を取得する時に使用。
25 Y表示位置 選択項目を表示する時やカーソルの表示位置を取得する時に使用。
26 顔拡大率 顔グラフィックの拡大率の設定に使用。
27 乗っているか判断 選択項目の上にマウスポインタが乗っている時には「1」を設定。
「1」の時には、方向キーの処理が実行できないようにします。
30 選択項目数 選択項目の数を設定。
31 項目ID 可変DB[6:パーティー情報]の項目IDの設定し、
パーティ内の主人公IDを取得する時に使用。

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


▲トップへ戻る▲


  
■自作メニュー「横1×縦2」を設定

「横1×縦2」の自作メニューを設定します。



選択項目の表示位置は以下のとおりです。



選択項目の表示は…
セルフ変数[24:X表示位置]160
セルフ変数[25:Y表示位置]110
を設定して、まずは項目[00]を表示します。

そしてセルフ変数[25:Y表示位置]に「加算20」を設定して、次の項目[01]を表示します。



ウィンドウのサイズは、以下の計算式で算出します。

  計算式 計算結果
生成サイズ横 カーソル横幅+20 50+20=70
生成サイズ縦 カーソル縦幅×項目数+4×(項目数−1)+20 16×2+4×(2-1)+20=56



最初の選択項目(カーソル位置[0])の表示位置は、以下の計算式で算出します。

X位置 160 160
Y位置 120−ウィンドウ縦幅÷2+余白[10]+カーソル縦幅÷2 120−56÷2+10+8=110



【イベントコード表示】【コモン出力ファイル】

■自作メニュー「横1×縦2」

▼ ■■■■■■■■■■ウィンドウ表示
■変数操作: CSelf22[生成サイズ横] = 70 + 0
■変数操作: CSelf23[生成サイズ縦] = 56 + 0
■ピクチャ表示:1 [中心]ウィンドウ「SystemFile/WindowBase_amania.png」
       サイズ[CSelf22[生成サイズ横],CSelf23[生成サイズ縦]] X:160 Y:120 / 0(0)フレーム /
       パターン 1 / 透 255 / 通常 / 角 0 / 拡 100% / カラー R[100] G[100] B[100]
▼ ■■■■■■■■■■カーソル表示(項目00の位置)
■変数操作: CSelf22[生成サイズ横] = 50 + 0
■変数操作: CSelf23[生成サイズ縦] = 16 + 0
■変数操作: CSelf24[X表示位置] = 160 + 0
■変数操作: CSelf25[Y表示位置] = 110 + 0
■ピクチャ表示:2 [中心]ウィンドウ「SystemFile/CursorBase.png」
       サイズ[CSelf22[生成サイズ横],CSelf23[生成サイズ縦]]
       X:CSelf24[X表示位置] Y:CSelf25[Y表示位置] / 0(0)フレーム / パターン 1 /
       透 255 / 加算 / 角 0 / 拡 100% / カラー R[100] G[100] B[100]
■ピクチャエフェクト:2 [点滅A(明滅)] R100/G100/B100 明滅間隔(30)フレーム
▼ ■■■■■■■■■■項目表示
■変数操作: CSelf21[ピクチャ番号(位置+100)] = 100 + 0
■ピクチャ表示:CSelf21[ピクチャ番号(位置+100)] [中心]文字列[項目00]
       X:CSelf24[X表示位置] Y:CSelf25[Y表示位置] / 0(0)フレーム / パターン 1 /
       透 255 / 通常 / 角 0 / 拡 100% / カラー R[100] G[100] B[100]
■変数操作: CSelf21[ピクチャ番号(位置+100)] += 1 + 0
■変数操作: CSelf25[Y表示位置] += 20 + 0
■ピクチャ表示:CSelf21[ピクチャ番号(位置+100)] [中心]文字列[項目01]
       X:CSelf24[X表示位置] Y:CSelf25[Y表示位置] / 0(0)フレーム / パターン 1 /
       透 255 / 通常 / 角 0 / 拡 100% / カラー R[100] G[100] B[100]
▼ ■■■■■■■■■■■■■■■■■■■■キー処理
■変数操作: CSelf10[カーソル位置] = 0 + 0
■変数操作: CSelf17[起動時キー押し禁止] = 1 + 0
■ループ開始
|■ウェイト:1 フレーム
|■変数操作: CSelf16[キー待ち時間] -= 1 + 0
|■キー入力:CSelf15[キー入力] 上下(8,2) 決定(10) キャンセル(11)
|■条件分岐(変数): 【1】 CSelf15[キー入力] が 0 と同じ
          【2】 CSelf17[起動時キー押し禁止] が 1 と同じ
|-◇分岐: 【1】 [ CSelf15[キー入力] が 0 と同じ ]の場合↓
||■変数操作: CSelf16[キー待ち時間]〜CSelf17[起動時キー押し禁止] = 0 + 0
||■ループ開始へ戻る
||■
|-◇分岐: 【2】 [ CSelf17[起動時キー押し禁止] が 1 と同じ ]の場合↓
||■ループ開始へ戻る
||■
|◇分岐終了◇
|■条件分岐(変数): 【1】 CSelf15[キー入力] が 10 と同じ
          【2】 CSelf15[キー入力] が 11 と同じ
|-◇分岐: 【1】 [ CSelf15[キー入力] が 10 と同じ ]の場合↓
||●ラベル「決定」に飛ぶ >>>>>>>>>>>>>>>>>>>>>>>>>
||■
|-◇分岐: 【2】 [ CSelf15[キー入力] が 11 と同じ ]の場合↓
||●ラベル「キャンセル」に飛ぶ >>>>>>>>>>>>>>>>>>>>>>>>>
||■
|◇分岐終了◇
|■条件分岐(変数): 【1】 CSelf16[キー待ち時間] が 1 以上
|-◇分岐: 【1】 [ CSelf16[キー待ち時間] が 1 以上 ]の場合↓
||■ループ開始へ戻る
||■
|◇分岐終了◇
|▼ ■■■■■■■■■■カーソル移動処理
|■変数操作: CSelf16[キー待ち時間] = 12 + 0
|■条件分岐(変数): 【1】 CSelf10[カーソル位置] が 0 と同じ
          【2】 CSelf10[カーソル位置] が 1 と同じ
|-◇分岐: 【1】 [ CSelf10[カーソル位置] が 0 と同じ ]の場合↓
||■変数操作: CSelf10[カーソル位置] = 1 + 0
||■
|-◇分岐: 【2】 [ CSelf10[カーソル位置] が 1 と同じ ]の場合↓
||■変数操作: CSelf10[カーソル位置] = 0 + 0
||■
|◇分岐終了◇
|■変数操作: CSelf21[ピクチャ番号(位置+100)] = CSelf10[カーソル位置] + 100
|■変数操作+: CSelf24[X表示位置] = ピクチャ:CSelf21[ピクチャ番号(位置+100)] の X座標
|■変数操作+: CSelf25[Y表示位置] = ピクチャ:CSelf21[ピクチャ番号(位置+100)] の Y座標
|■ピクチャ移動:2 X:CSelf24[X表示位置] Y:CSelf25[Y表示位置] / 0(0)フレーム /
       パターン 同値 / 透 同値 / 表示形式:同値 / 角 同値 / 拡 同値 / カラー 同値
|■
◇ループここまで◇◇
■回数付きループ [ 0 ]回
|▼ ■■■■■■■■■■決定した時の処理
|●ラベル地点「決定」 <<<<<<<<<<<<<<<<<<<<<<<<★
|■文章:項目「\cself[10]」を選択。
|■
◇ループここまで◇◇
■回数付きループ [ 0 ]回
|▼ ■■■■■■■■■■キャンセルした時の処理
|●ラベル地点「キャンセル」 <<<<<<<<<<<<<<<<<<<<<<<<★
|■
◇ループここまで◇◇
▼ ■■■■■■■■■■終了処理
●ラベル地点「終了」 <<<<<<<<<<<<<<<<<<<<<<<<★
■ピクチャ消去:1 〜 101 / 5(0)フレーム
■ウェイト:1 フレーム



■SEの設定について


カーソル移動時にSEを演奏させる場合は…
▼ ■■■■■■■■■■カーソル移動処理
■サウンド:SE1「[システム]カーソル移動」(0 チャンネル) 再生 / 遅延:0フレーム
などと設定してください。


項目を決定した時のSEの演奏は…
■回数付きループ [ 0 ]回
|▼ ■■■■■■■■■■決定した時の処理
|●ラベル地点「決定」 <<<<<<<<<<<<<<<<<<<<<<<<★
|■サウンド:SE0「[システム]決定音」(0 チャンネル) 再生 / 遅延:0フレーム
|■文章:項目「\cself[10]」を選択。
|■
◇ループここまで◇◇
などと設定してください。


キャンセルを実行した時のSEの演奏は…
■回数付きループ [ 0 ]回
|▼ ■■■■■■■■■■キャンセルした時の処理
|●ラベル地点「キャンセル」 <<<<<<<<<<<<<<<<<<<<<<<<★
|■サウンド:SE2「[システム]キャンセル音」(0 チャンネル) 再生 / 遅延:0フレーム
|■
◇ループここまで◇◇
などと設定してください。


▲トップへ戻る▲


  
■「横1×縦2」を「横1×縦6」に改造

上記の■自作メニュー「横1×縦2」を改造し、選択項目数を「6」に増やします。



選択項目の表示位置は以下のとおりです。





ウィンドウのサイズは、以下の計算式で算出します。

  計算式 計算結果
生成サイズ横 カーソル横幅+20 50+20=70
生成サイズ縦 カーソル縦幅×項目数+4×(項目数−1)+20 16×6+4×(6-1)+20=136



最初の選択項目(カーソル位置[0])の表示位置は、以下の計算式で算出します。

X位置 160 160
Y位置 120−ウィンドウ縦幅÷2+余白[10]+カーソル縦幅÷2 120−136÷2+10+8=70



【イベントコード表示】【コモン出力ファイル】

■「横1×縦2」→「横1×縦6」

▼ ■■■■■■■■■■ウィンドウ表示
■変数操作: CSelf22[生成サイズ横] = 70 + 0
■変数操作: CSelf23[生成サイズ縦] = 136 + 0
■ピクチャ表示:1 [中心]ウィンドウ「SystemFile/WindowBase_amania.png」
       サイズ[CSelf22[生成サイズ横],CSelf23[生成サイズ縦]] X:160 Y:120 / 0(0)フレーム /
       パターン 1 / 透 255 / 通常 / 角 0 / 拡 100% / カラー R[100] G[100] B[100]
▼ ■■■■■■■■■■カーソル表示(項目00の位置)
■変数操作: CSelf22[生成サイズ横] = 50 + 0
■変数操作: CSelf23[生成サイズ縦] = 16 + 0
■変数操作: CSelf24[X表示位置] = 160 + 0
■変数操作: CSelf25[Y表示位置] = 70 + 0
■ピクチャ表示:2 [中心]ウィンドウ「SystemFile/CursorBase.png」
       サイズ[CSelf22[生成サイズ横],CSelf23[生成サイズ縦]]
       X:CSelf24[X表示位置] Y:CSelf25[Y表示位置] / 0(0)フレーム / パターン 1 /
       透 255 / 加算 / 角 0 / 拡 100% / カラー R[100] G[100] B[100]
■ピクチャエフェクト:2 [点滅A(明滅)] R100/G100/B100 明滅間隔(30)フレーム
▼ ■■■■■■■■■■項目表示
■変数操作: CSelf21[ピクチャ番号(位置+100)] = 100 + 0
■ピクチャ表示:CSelf21[ピクチャ番号(位置+100)] [中心]文字列[項目00]
       X:CSelf24[X表示位置] Y:CSelf25[Y表示位置] / 0(0)フレーム / パターン 1 /
       透 255 / 通常 / 角 0 / 拡 100% / カラー R[100] G[100] B[100]
■変数操作: CSelf21[ピクチャ番号(位置+100)] += 1 + 0
■変数操作: CSelf25[Y表示位置] += 20 + 0
■ピクチャ表示:CSelf21[ピクチャ番号(位置+100)] [中心]文字列[項目01]
       X:CSelf24[X表示位置] Y:CSelf25[Y表示位置] / 0(0)フレーム / パターン 1 /
       透 255 / 通常 / 角 0 / 拡 100% / カラー R[100] G[100] B[100]
■変数操作: CSelf21[ピクチャ番号(位置+100)] += 1 + 0
■変数操作: CSelf25[Y表示位置] += 20 + 0
■ピクチャ表示:CSelf21[ピクチャ番号(位置+100)] [中心]文字列[項目02]
       X:CSelf24[X表示位置] Y:CSelf25[Y表示位置] / 0(0)フレーム / パターン 1 /
       透 255 / 通常 / 角 0 / 拡 100% / カラー R[100] G[100] B[100]
■変数操作: CSelf21[ピクチャ番号(位置+100)] += 1 + 0
■変数操作: CSelf25[Y表示位置] += 20 + 0
■ピクチャ表示:CSelf21[ピクチャ番号(位置+100)] [中心]文字列[項目03]
       X:CSelf24[X表示位置] Y:CSelf25[Y表示位置] / 0(0)フレーム / パターン 1 /
       透 255 / 通常 / 角 0 / 拡 100% / カラー R[100] G[100] B[100]
■変数操作: CSelf21[ピクチャ番号(位置+100)] += 1 + 0
■変数操作: CSelf25[Y表示位置] += 20 + 0
■ピクチャ表示:CSelf21[ピクチャ番号(位置+100)] [中心]文字列[項目04]
       X:CSelf24[X表示位置] Y:CSelf25[Y表示位置] / 0(0)フレーム / パターン 1 /
       透 255 / 通常 / 角 0 / 拡 100% / カラー R[100] G[100] B[100]
■変数操作: CSelf21[ピクチャ番号(位置+100)] += 1 + 0
■変数操作: CSelf25[Y表示位置] += 20 + 0
■ピクチャ表示:CSelf21[ピクチャ番号(位置+100)] [中心]文字列[項目05]
       X:CSelf24[X表示位置] Y:CSelf25[Y表示位置] / 0(0)フレーム / パターン 1 /
       透 255 / 通常 / 角 0 / 拡 100% / カラー R[100] G[100] B[100]

▼ ■■■■■■■■■■■■■■■■■■■■キー処理
■変数操作: CSelf10[カーソル位置] = 0 + 0
■変数操作: CSelf17[起動時キー押し禁止] = 1 + 0
■ループ開始
|■ウェイト:1 フレーム
|■変数操作: CSelf16[キー待ち時間] -= 1 + 0
|■キー入力:CSelf15[キー入力] 上下(8,2) 決定(10) キャンセル(11)
|■条件分岐(変数): 【1】 CSelf15[キー入力] が 0 と同じ
          【2】 CSelf17[起動時キー押し禁止] が 1 と同じ
|-◇分岐: 【1】 [ CSelf15[キー入力] が 0 と同じ ]の場合↓
||■変数操作: CSelf16[キー待ち時間]〜CSelf17[起動時キー押し禁止] = 0 + 0
||■ループ開始へ戻る
||■
|-◇分岐: 【2】 [ CSelf17[起動時キー押し禁止] が 1 と同じ ]の場合↓
||■ループ開始へ戻る
||■
|◇分岐終了◇
|■条件分岐(変数): 【1】 CSelf15[キー入力] が 10 と同じ
          【2】 CSelf15[キー入力] が 11 と同じ
|-◇分岐: 【1】 [ CSelf15[キー入力] が 10 と同じ ]の場合↓
||●ラベル「決定」に飛ぶ >>>>>>>>>>>>>>>>>>>>>>>>>
||■
|-◇分岐: 【2】 [ CSelf15[キー入力] が 11 と同じ ]の場合↓
||●ラベル「キャンセル」に飛ぶ >>>>>>>>>>>>>>>>>>>>>>>>>
||■
|◇分岐終了◇
|■条件分岐(変数): 【1】 CSelf16[キー待ち時間] が 1 以上
|-◇分岐: 【1】 [ CSelf16[キー待ち時間] が 1 以上 ]の場合↓
||■ループ開始へ戻る
||■
|◇分岐終了◇
|▼ ■■■■■■■■■■カーソル移動処理
|■変数操作: CSelf16[キー待ち時間] = 12 + 0
|■条件分岐(変数): 【1】 CSelf15[キー入力]8 と同じ
          【2】 CSelf15[キー入力]2 と同じ
|-◇分岐: 【1】 [ CSelf15[キー入力] が 8 と同じ ]の場合↓
||▼ ■■■■■上キーを押した
||■変数操作: CSelf10[カーソル位置] -= 1 + 0
||■
|-◇分岐: 【2】 [ CSelf15[キー入力] が 2 と同じ ]の場合↓
||▼ ■■■■■下キーを押した
||■変数操作: CSelf10[カーソル位置] += 1 + 0
||■
|◇分岐終了◇
|■変数操作: CSelf10[カーソル位置] += 6 + 0
|■変数操作: CSelf10[カーソル位置] %= 6 + 0

|■変数操作: CSelf21[ピクチャ番号(位置+100)] = CSelf10[カーソル位置] + 100
|■変数操作+: CSelf24[X表示位置] = ピクチャ:CSelf21[ピクチャ番号(位置+100)] の X座標
|■変数操作+: CSelf25[Y表示位置] = ピクチャ:CSelf21[ピクチャ番号(位置+100)] の Y座標
|■ピクチャ移動:2 X:CSelf24[X表示位置] Y:CSelf25[Y表示位置] / 0(0)フレーム /
       パターン 同値 / 透 同値 / 表示形式:同値 / 角 同値 / 拡 同値 / カラー 同値
|■
◇ループここまで◇◇
■回数付きループ [ 0 ]回
|▼ ■■■■■■■■■■決定した時の処理
|●ラベル地点「決定」 <<<<<<<<<<<<<<<<<<<<<<<<★
|■文章:項目「\cself[10]」を選択。
|■
◇ループここまで◇◇
■回数付きループ [ 0 ]回
|▼ ■■■■■■■■■■キャンセルした時の処理
|●ラベル地点「キャンセル」 <<<<<<<<<<<<<<<<<<<<<<<<★
|■
◇ループここまで◇◇
▼ ■■■■■■■■■■終了処理
●ラベル地点「終了」 <<<<<<<<<<<<<<<<<<<<<<<<★
■ピクチャ消去:1 〜 105 / 5(0)フレーム
■ウェイト:1 フレーム


▲トップへ戻る▲


  
■「横1×縦6」を「横1×縦1〜6」の変動性に改造

上記の■自作メニュー「横1×縦6」を改造し、選択項目数を「1〜6」の変動制にします。



0行目に追加する…
■変数操作: CSelf30[選択項目数] = 6 + 0
の数値を変えると、項目数が変わります。



ウィンドウのサイズは、以下の計算式で算出します。

  計算式
生成サイズ横 カーソル横幅+20
生成サイズ縦 カーソル縦幅×項目数+4×(項目数−1)+20



最初の選択項目(カーソル位置[0])の表示位置は、以下の計算式で算出します。

X位置 160
Y位置 120−ウィンドウ縦幅÷2+余白[10]+カーソル縦幅÷2



【イベントコード表示】【コモン出力ファイル】

■「横1×縦6」→「横1×縦1〜6」

■変数操作: CSelf30[選択項目数] = 6 + 0
■変数操作: CSelf30[選択項目数] 下限= 1 + 0
▼ ■■■■■■■■■■ウィンドウ表示
■変数操作: CSelf22[生成サイズ横] = 70 + 0
■変数操作: CSelf23[生成サイズ縦] = CSelf30[選択項目数] - 1
■変数操作: CSelf23[生成サイズ縦] *= 4 + 0
■変数操作: CSelf23[生成サイズ縦] += CSelf30[選択項目数] * 16
■変数操作: CSelf23[生成サイズ縦] += 20 + 0

■ピクチャ表示:1 [中心]ウィンドウ「SystemFile/WindowBase_amania.png」
       サイズ[CSelf22[生成サイズ横],CSelf23[生成サイズ縦]] X:160 Y:120 / 0(0)フレーム /
       パターン 1 / 透 255 / 通常 / 角 0 / 拡 100% / カラー R[100] G[100] B[100]
▼ ■■■■■■■■■■カーソル表示(項目00の位置)
■変数操作: CSelf22[生成サイズ横] = 50 + 0
■変数操作: CSelf23[生成サイズ縦] = 16 + 0
■変数操作: CSelf24[X表示位置] = 160 + 0
■変数操作+: CSelf25[Y表示位置] = ピクチャ:1 の 画像サイズ(縦)
■変数操作: CSelf25[Y表示位置] /= -2 + 0<これでウィンドウの最上部のY位置になる
■変数操作: CSelf25[Y表示位置] += 120 + 18
<「18」はウィンドウ周りの余白「10」と「カーソルの縦幅÷2」を足した数値
■ピクチャ表示:2 [中心]ウィンドウ「SystemFile/CursorBase.png」
       サイズ[CSelf22[生成サイズ横],CSelf23[生成サイズ縦]]
       X:CSelf24[X表示位置] Y:CSelf25[Y表示位置] / 0(0)フレーム / パターン 1 /
       透 255 / 加算 / 角 0 / 拡 100% / カラー R[100] G[100] B[100]
■ピクチャエフェクト:2 [点滅A(明滅)] R100/G100/B100 明滅間隔(30)フレーム
▼ ■■■■■■■■■■項目表示
■変数操作: CSelf21[ピクチャ番号(位置+100)] = 100 + 0
■ピクチャ表示:CSelf21[ピクチャ番号(位置+100)] [中心]文字列[項目00]
       X:CSelf24[X表示位置] Y:CSelf25[Y表示位置] / 0(0)フレーム / パターン 1 /
       透 255 / 通常 / 角 0 / 拡 100% / カラー R[100] G[100] B[100]
■条件分岐(変数): 【1】 CSelf30[選択項目数] が 2 以上
-◇分岐: 【1】 [ CSelf30[選択項目数] が 2 以上 ]の場合↓
|■変数操作: CSelf21[ピクチャ番号(位置+100)] += 1 + 0<条件分岐内へ移動
|■変数操作: CSelf25[Y表示位置] += 20 + 0
|■ピクチャ表示:CSelf21[ピクチャ番号(位置+100)] [中心]文字列[項目01]
       X:CSelf24[X表示位置] Y:CSelf25[Y表示位置] / 0(0)フレーム / パターン 1 /
       透 255 / 通常 / 角 0 / 拡 100% / カラー R[100] G[100] B[100]

|■
◇分岐終了◇
■条件分岐(変数): 【1】 CSelf30[選択項目数] が 3 以上
-◇分岐: 【1】 [ CSelf30[選択項目数] が 3 以上 ]の場合↓
|■変数操作: CSelf21[ピクチャ番号(位置+100)] += 1 + 0<条件分岐内へ移動
|■変数操作: CSelf25[Y表示位置] += 20 + 0
|■ピクチャ表示:CSelf21[ピクチャ番号(位置+100)] [中心]文字列[項目02]
       X:CSelf24[X表示位置] Y:CSelf25[Y表示位置] / 0(0)フレーム / パターン 1 /
       透 255 / 通常 / 角 0 / 拡 100% / カラー R[100] G[100] B[100]

|■
◇分岐終了◇
■条件分岐(変数): 【1】 CSelf30[選択項目数] が 4 以上
-◇分岐: 【1】 [ CSelf30[選択項目数] が 4 以上 ]の場合↓
|■変数操作: CSelf21[ピクチャ番号(位置+100)] += 1 + 0<条件分岐内へ移動
|■変数操作: CSelf25[Y表示位置] += 20 + 0
|■ピクチャ表示:CSelf21[ピクチャ番号(位置+100)] [中心]文字列[項目03]
       X:CSelf24[X表示位置] Y:CSelf25[Y表示位置] / 0(0)フレーム / パターン 1 /
       透 255 / 通常 / 角 0 / 拡 100% / カラー R[100] G[100] B[100]

|■
◇分岐終了◇
■条件分岐(変数): 【1】 CSelf30[選択項目数] が 5 以上
-◇分岐: 【1】 [ CSelf30[選択項目数] が 5 以上 ]の場合↓
|■変数操作: CSelf21[ピクチャ番号(位置+100)] += 1 + 0<条件分岐内へ移動
|■変数操作: CSelf25[Y表示位置] += 20 + 0
|■ピクチャ表示:CSelf21[ピクチャ番号(位置+100)] [中心]文字列[項目04]
       X:CSelf24[X表示位置] Y:CSelf25[Y表示位置] / 0(0)フレーム / パターン 1 /
       透 255 / 通常 / 角 0 / 拡 100% / カラー R[100] G[100] B[100]

|■
◇分岐終了◇
■条件分岐(変数): 【1】 CSelf30[選択項目数] が 6 以上
-◇分岐: 【1】 [ CSelf30[選択項目数] が 6 以上 ]の場合↓
|■変数操作: CSelf21[ピクチャ番号(位置+100)] += 1 + 0<条件分岐内へ移動
|■変数操作: CSelf25[Y表示位置] += 20 + 0
|■ピクチャ表示:CSelf21[ピクチャ番号(位置+100)] [中心]文字列[項目05]
       X:CSelf24[X表示位置] Y:CSelf25[Y表示位置] / 0(0)フレーム / パターン 1 /
       透 255 / 通常 / 角 0 / 拡 100% / カラー R[100] G[100] B[100]

|■
◇分岐終了◇

▼ ■■■■■■■■■■■■■■■■■■■■キー処理
■変数操作: CSelf10[カーソル位置] = 0 + 0
■変数操作: CSelf17[起動時キー押し禁止] = 1 + 0
■ループ開始
|■ウェイト:1 フレーム
|■変数操作: CSelf16[キー待ち時間] -= 1 + 0
|■キー入力:CSelf15[キー入力] 上下(8,2) 決定(10) キャンセル(11)
|■条件分岐(変数): 【1】 CSelf15[キー入力] が 0 と同じ
          【2】 CSelf17[起動時キー押し禁止] が 1 と同じ
|-◇分岐: 【1】 [ CSelf15[キー入力] が 0 と同じ ]の場合↓
||■変数操作: CSelf16[キー待ち時間]〜CSelf17[起動時キー押し禁止] = 0 + 0
||■ループ開始へ戻る
||■
|-◇分岐: 【2】 [ CSelf17[起動時キー押し禁止] が 1 と同じ ]の場合↓
||■ループ開始へ戻る
||■
|◇分岐終了◇
|■条件分岐(変数): 【1】 CSelf15[キー入力] が 10 と同じ
          【2】 CSelf15[キー入力] が 11 と同じ
|-◇分岐: 【1】 [ CSelf15[キー入力] が 10 と同じ ]の場合↓
||●ラベル「決定」に飛ぶ >>>>>>>>>>>>>>>>>>>>>>>>>
||■
|-◇分岐: 【2】 [ CSelf15[キー入力] が 11 と同じ ]の場合↓
||●ラベル「キャンセル」に飛ぶ >>>>>>>>>>>>>>>>>>>>>>>>>
||■
|◇分岐終了◇
|■条件分岐(変数): 【1】 CSelf16[キー待ち時間] が 1 以上
|-◇分岐: 【1】 [ CSelf16[キー待ち時間] が 1 以上 ]の場合↓
||■ループ開始へ戻る
||■
|◇分岐終了◇
|▼ ■■■■■■■■■■カーソル移動処理
|■変数操作: CSelf16[キー待ち時間] = 12 + 0
|■条件分岐(変数): 【1】 CSelf15[キー入力] が 8 と同じ
          【2】 CSelf15[キー入力] が 2 と同じ
|-◇分岐: 【1】 [ CSelf15[キー入力] が 8 と同じ ]の場合↓
||▼ ■■■■■上ーを押した
||■変数操作: CSelf10[カーソル位置] -= 1 + 0
||■
|-◇分岐: 【2】 [ CSelf15[キー入力] が 2 と同じ ]の場合↓
||▼ ■■■■■下キーを押した
||■変数操作: CSelf10[カーソル位置] += 1 + 0
||■
|◇分岐終了◇
|■変数操作: CSelf10[カーソル位置] += CSelf30[選択項目数] + 0
|■変数操作: CSelf10[カーソル位置] %= CSelf30[選択項目数] + 0
|■変数操作: CSelf21[ピクチャ番号(位置+100)] = CSelf10[カーソル位置] + 100
|■変数操作+: CSelf24[X表示位置] = ピクチャ:CSelf21[ピクチャ番号(位置+100)] の X座標
|■変数操作+: CSelf25[Y表示位置] = ピクチャ:CSelf21[ピクチャ番号(位置+100)] の Y座標
|■ピクチャ移動:2 X:CSelf24[X表示位置] Y:CSelf25[Y表示位置] / 0(0)フレーム /
       パターン 同値 / 透 同値 / 表示形式:同値 / 角 同値 / 拡 同値 / カラー 同値
|■
◇ループここまで◇◇
■回数付きループ [ 0 ]回
|▼ ■■■■■■■■■■決定した時の処理
|●ラベル地点「決定」 <<<<<<<<<<<<<<<<<<<<<<<<★
|■文章:項目「\cself[10]」を選択。
|■
◇ループここまで◇◇
■回数付きループ [ 0 ]回
|▼ ■■■■■■■■■■キャンセルした時の処理
|●ラベル地点「キャンセル」 <<<<<<<<<<<<<<<<<<<<<<<<★
|■
◇ループここまで◇◇
▼ ■■■■■■■■■■終了処理
●ラベル地点「終了」 <<<<<<<<<<<<<<<<<<<<<<<<★
■ピクチャ消去:1 〜 105 / 5(0)フレーム
■ウェイト:1 フレーム


▲トップへ戻る▲


  
■「横1×縦1〜6」を「横1×パーティ人数(主人公名を表示)」に改造

上記の■自作メニュー「横1×縦1〜6」を改造し、パーティ内の主人公名が表示されるように設定します。





【イベントコード表示】【コモン出力ファイル】

■「横1×縦1〜6」→「横1×パーティ人数」

■DB読込(可変): CSelf30[選択項目数] = 可変DB[ 基本システム用変数 : 4 : 0 ] (18 : 現在パーティー人数 : 数値)
■条件分岐(変数): 【1】 CSelf30[選択項目数] が 0 と同じ
-◇分岐: 【1】 [ CSelf30[選択項目数] が 0 と同じ ]の場合↓
|●ラベル「終了」に飛ぶ >>>>>>>>>>>>>>>>>>>>>>>>>
|■
◇分岐終了◇

■変数操作: CSelf30[選択項目数] = 6 + 0<削除
■変数操作: CSelf30[選択項目数] 下限= 1 + 0

▼ ■■■■■■■■■■ウィンドウ表示
■変数操作: CSelf22[生成サイズ横] = 140 + 0
■変数操作: CSelf23[生成サイズ縦] = CSelf30[選択項目数] - 1
■変数操作: CSelf23[生成サイズ縦] *= 4 + 0
■変数操作: CSelf23[生成サイズ縦] += CSelf30[選択項目数] * 16
■変数操作: CSelf23[生成サイズ縦] += 20 + 0
■ピクチャ表示:1 [中心]ウィンドウ「SystemFile/WindowBase_amania.png」
       サイズ[CSelf22[生成サイズ横],CSelf23[生成サイズ縦]] X:160 Y:120 / 0(0)フレーム /
       パターン 1 / 透 255 / 通常 / 角 0 / 拡 100% / カラー R[100] G[100] B[100]
▼ ■■■■■■■■■■カーソル表示(項目00の位置)
■変数操作: CSelf22[生成サイズ横] = 120 + 0
■変数操作: CSelf23[生成サイズ縦] = 16 + 0
■変数操作: CSelf24[X表示位置] = 160 + 0
■変数操作+: CSelf25[Y表示位置] = ピクチャ:1 の 画像サイズ(縦)
■変数操作: CSelf25[Y表示位置] /= -2 + 0
■変数操作: CSelf25[Y表示位置] += 120 + 18
■ピクチャ表示:2 [中心]ウィンドウ「SystemFile/CursorBase.png」
       サイズ[CSelf22[生成サイズ横],CSelf23[生成サイズ縦]]
       X:CSelf24[X表示位置] Y:CSelf25[Y表示位置] / 0(0)フレーム / パターン 1 /
       透 255 / 加算 / 角 0 / 拡 100% / カラー R[100] G[100] B[100]
■ピクチャエフェクト:2 [点滅A(明滅)] R100/G100/B100 明滅間隔(30)フレーム
▼ ■■■■■■■■■■項目表示
■変数操作: CSelf21[ピクチャ番号(位置+100)] = 100 + 0
■変数操作: CSelf31[項目ID] = 1 + 0
■回数付きループ [ CSelf30[選択項目数] ]回
|■ピクチャ表示:CSelf21[ピクチャ番号(位置+100)] [中心]文字列[\cdb[0:\cdb[6:0:]
       X:CSelf24[X表示位置] Y:CSelf25[Y表示位置] / 0(0)フレーム / パターン 1 /
       透 255 / 通常 / 角 0 / 拡 100% / カラー R[100] G[100] B[100]
|■変数操作: CSelf31[項目ID] += 1 + 0
|■変数操作: CSelf21[ピクチャ番号(位置+100)] += 1 + 0
|■変数操作: CSelf25[Y表示位置] += 20 + 0
|■
◇ループここまで◇◇

■ピクチャ表示:CSelf21[ピクチャ番号(位置+100)] [中心]文字列[項目00]
       X:CSelf24[X表示位置] Y:CSelf25[Y表示位置] / 0(0)フレーム / パターン 1 /
       透 255 / 通常 / 角 0 / 拡 100% / カラー R[100] G[100] B[100]<削除
■条件分岐(変数): 【1】 CSelf30[選択項目数] が 2 以上
-◇分岐: 【1】 [ CSelf30[選択項目数] が 2 以上 ]の場合↓
|■変数操作: CSelf21[ピクチャ番号(位置+100)] += 1 + 0
|■変数操作: CSelf25[Y表示位置] += 20 + 0
|■ピクチャ表示:CSelf21[ピクチャ番号(位置+100)] [中心]文字列[項目01]
       X:CSelf24[X表示位置] Y:CSelf25[Y表示位置] / 0(0)フレーム / パターン 1 /
       透 255 / 通常 / 角 0 / 拡 100% / カラー R[100] G[100] B[100]
|■
◇分岐終了◇
■条件分岐(変数): 【1】 CSelf30[選択項目数] が 3 以上
-◇分岐: 【1】 [ CSelf30[選択項目数] が 3 以上 ]の場合↓
|■変数操作: CSelf21[ピクチャ番号(位置+100)] += 1 + 0
|■変数操作: CSelf25[Y表示位置] += 20 + 0
|■ピクチャ表示:CSelf21[ピクチャ番号(位置+100)] [中心]文字列[項目02]
       X:CSelf24[X表示位置] Y:CSelf25[Y表示位置] / 0(0)フレーム / パターン 1 /
       透 255 / 通常 / 角 0 / 拡 100% / カラー R[100] G[100] B[100]
|■
◇分岐終了◇
■条件分岐(変数): 【1】 CSelf30[選択項目数] が 4 以上
-◇分岐: 【1】 [ CSelf30[選択項目数] が 4 以上 ]の場合↓
|■変数操作: CSelf21[ピクチャ番号(位置+100)] += 1 + 0
|■変数操作: CSelf25[Y表示位置] += 20 + 0
|■ピクチャ表示:CSelf21[ピクチャ番号(位置+100)] [中心]文字列[項目03]
       X:CSelf24[X表示位置] Y:CSelf25[Y表示位置] / 0(0)フレーム / パターン 1 /
       透 255 / 通常 / 角 0 / 拡 100% / カラー R[100] G[100] B[100]
|■
◇分岐終了◇
■条件分岐(変数): 【1】 CSelf30[選択項目数] が 5 以上
-◇分岐: 【1】 [ CSelf30[選択項目数] が 5 以上 ]の場合↓
|■変数操作: CSelf21[ピクチャ番号(位置+100)] += 1 + 0
|■変数操作: CSelf25[Y表示位置] += 20 + 0
|■ピクチャ表示:CSelf21[ピクチャ番号(位置+100)] [中心]文字列[項目04]
       X:CSelf24[X表示位置] Y:CSelf25[Y表示位置] / 0(0)フレーム / パターン 1 /
       透 255 / 通常 / 角 0 / 拡 100% / カラー R[100] G[100] B[100]
|■
◇分岐終了◇
■条件分岐(変数): 【1】 CSelf30[選択項目数] が 6 以上
-◇分岐: 【1】 [ CSelf30[選択項目数] が 6 以上 ]の場合↓
|■変数操作: CSelf21[ピクチャ番号(位置+100)] += 1 + 0
|■変数操作: CSelf25[Y表示位置] += 20 + 0
|■ピクチャ表示:CSelf21[ピクチャ番号(位置+100)] [中心]文字列[項目05]
       X:CSelf24[X表示位置] Y:CSelf25[Y表示位置] / 0(0)フレーム / パターン 1 /
       透 255 / 通常 / 角 0 / 拡 100% / カラー R[100] G[100] B[100]

|■
◇分岐終了◇
▼ ■■■■■■■■■■■■■■■■■■■■キー処理
■変数操作: CSelf10[カーソル位置] = 0 + 0
■変数操作: CSelf17[起動時キー押し禁止] = 1 + 0
■ループ開始
|■ウェイト:1 フレーム
|■変数操作: CSelf16[キー待ち時間] -= 1 + 0
|■キー入力:CSelf15[キー入力] 上下(8,2) 決定(10) キャンセル(11)
|■条件分岐(変数): 【1】 CSelf15[キー入力] が 0 と同じ
          【2】 CSelf17[起動時キー押し禁止] が 1 と同じ
|-◇分岐: 【1】 [ CSelf15[キー入力] が 0 と同じ ]の場合↓
||■変数操作: CSelf16[キー待ち時間]〜CSelf17[起動時キー押し禁止] = 0 + 0
||■ループ開始へ戻る
||■
|-◇分岐: 【2】 [ CSelf17[起動時キー押し禁止] が 1 と同じ ]の場合↓
||■ループ開始へ戻る
||■
|◇分岐終了◇
|■条件分岐(変数): 【1】 CSelf15[キー入力] が 10 と同じ
          【2】 CSelf15[キー入力] が 11 と同じ
|-◇分岐: 【1】 [ CSelf15[キー入力] が 10 と同じ ]の場合↓
||●ラベル「決定」に飛ぶ >>>>>>>>>>>>>>>>>>>>>>>>>
||■
|-◇分岐: 【2】 [ CSelf15[キー入力] が 11 と同じ ]の場合↓
||●ラベル「キャンセル」に飛ぶ >>>>>>>>>>>>>>>>>>>>>>>>>
||■
|◇分岐終了◇
|■条件分岐(変数): 【1】 CSelf16[キー待ち時間] が 1 以上
|-◇分岐: 【1】 [ CSelf16[キー待ち時間] が 1 以上 ]の場合↓
||■ループ開始へ戻る
||■
|◇分岐終了◇
|▼ ■■■■■■■■■■カーソル移動処理
|■変数操作: CSelf16[キー待ち時間] = 12 + 0
|■条件分岐(変数): 【1】 CSelf15[キー入力] が 8 と同じ
          【2】 CSelf15[キー入力] が 2 と同じ
|-◇分岐: 【1】 [ CSelf15[キー入力] が 8 と同じ ]の場合↓
||▼ ■■■■■上キーを押した
||■変数操作: CSelf10[カーソル位置] -= 1 + 0
||■
|-◇分岐: 【2】 [ CSelf15[キー入力] が 2 と同じ ]の場合↓
||▼ ■■■■■下キーを押した
||■変数操作: CSelf10[カーソル位置] += 1 + 0
||■
|◇分岐終了◇
|■変数操作: CSelf10[カーソル位置] += CSelf30[選択項目数] + 0
|■変数操作: CSelf10[カーソル位置] %= CSelf30[選択項目数] + 0
|■変数操作: CSelf21[ピクチャ番号(位置+100)] = CSelf10[カーソル位置] + 100
|■変数操作+: CSelf24[X表示位置] = ピクチャ:CSelf21[ピクチャ番号(位置+100)] の X座標
|■変数操作+: CSelf25[Y表示位置] = ピクチャ:CSelf21[ピクチャ番号(位置+100)] の Y座標
|■ピクチャ移動:2 X:CSelf24[X表示位置] Y:CSelf25[Y表示位置] / 0(0)フレーム /
       パターン 同値 / 透 同値 / 表示形式:同値 / 角 同値 / 拡 同値 / カラー 同値
|■
◇ループここまで◇◇
■回数付きループ [ 0 ]回
|▼ ■■■■■■■■■■決定した時の処理
|●ラベル地点「決定」 <<<<<<<<<<<<<<<<<<<<<<<<★
|■変数操作: CSelf31[項目ID] = CSelf10[カーソル位置] + 1
|■文章:「\cdb[0:\cdb[6:0:\cself[31]]:0]」を選択。
|■
◇ループここまで◇◇
■回数付きループ [ 0 ]回
|▼ ■■■■■■■■■■キャンセルした時の処理
|●ラベル地点「キャンセル」 <<<<<<<<<<<<<<<<<<<<<<<<★
|■
◇ループここまで◇◇
▼ ■■■■■■■■■■終了処理
●ラベル地点「終了」 <<<<<<<<<<<<<<<<<<<<<<<<★
■ピクチャ消去:1 〜 105 / 5(0)フレーム
■ウェイト:1 フレーム


▲トップへ戻る▲


  
■横並びで表示

選択項目を縦並びに表示していた処理を改造し、横並びに表示させます。





下記設定例は「横1×縦6」を改造した「横6×縦1」と「パーティ人数×縦1」が書かれています。

他の「横2×縦1」「横1×縦1〜6」の改造箇所は、基本的には「横6×縦1」と変わらず、
ウィンドウサイズや[項目00]の表示位置の設定が変わるくらいです。



「横1×パーティ人数」を改造した「パーティ人数×縦1」に関しては、
6人分の主人公の名前を横並びで表示するのは難しいので、名前の代わりに顔グラフィックを表示します。



顔グラフィックのサイズは「48×48ピクセル」に合わせて表示されます。

48×48ピクセル」ではない画像の場合は、拡大率を変えて「48×48ピクセル以内」になるように処理されます。



ウィンドウのサイズは、以下の計算式で算出します。

  計算式 計算結果
生成サイズ横(選択項目数[6]の場合) カーソルの横幅×項目数+20 50×6+20=320
生成サイズ縦 パーティ人数×縦1以外 カーソルの縦幅+20 16+20=36
パーティ人数×縦1 カーソルの縦幅+20 50+20=70



最初の選択項目(カーソル位置[0])の表示位置は、以下の計算式で算出します。

  計算式 計算結果
X位置 160−ウィンドウ横幅÷2+余白[10]+カーソル横幅÷2 160−320÷2+10+50÷2=35
Y位置 120 120



横2×縦1 【イベントコード表示】 【コモン出力ファイル】
横6×縦1 【イベントコード表示】 【コモン出力ファイル】
横1〜6×縦1 【イベントコード表示】 【コモン出力ファイル】

■「横1×縦6」→「横6×縦1」

▼ ■■■■■■■■■■ウィンドウ表示
■変数操作: CSelf22[生成サイズ横] = 320 + 0
■変数操作: CSelf23[生成サイズ縦] = 36 + 0
■ピクチャ表示:1 [中心]ウィンドウ「SystemFile/WindowBase_amania.png」
       サイズ[CSelf22[生成サイズ横],CSelf23[生成サイズ縦]] X:160 Y:120 / 0(0)フレーム /
       パターン 1 / 透 255 / 通常 / 角 0 / 拡 100% / カラー R[100] G[100] B[100]
▼ ■■■■■■■■■■カーソル表示(項目00の位置)
■変数操作: CSelf22[生成サイズ横] = 50 + 0
■変数操作: CSelf23[生成サイズ縦] = 16 + 0
■変数操作: CSelf24[X表示位置] = 35 + 0
■変数操作: CSelf25[Y表示位置] = 120 + 0
■ピクチャ表示:2 [中心]ウィンドウ「SystemFile/CursorBase.png」
       サイズ[CSelf22[生成サイズ横],CSelf23[生成サイズ縦]]
       X:CSelf24[X表示位置] Y:CSelf25[Y表示位置] / 0(0)フレーム / パターン 1 /
       透 255 / 加算 / 角 0 / 拡 100% / カラー R[100] G[100] B[100]
■ピクチャエフェクト:2 [点滅A(明滅)] R100/G100/B100 明滅間隔(30)フレーム
▼ ■■■■■■■■■■項目表示
■変数操作: CSelf21[ピクチャ番号(位置+100)] = 100 + 0
■ピクチャ表示:CSelf21[ピクチャ番号(位置+100)] [中心]文字列[項目00]
       X:CSelf24[X表示位置] Y:CSelf25[Y表示位置] / 0(0)フレーム / パターン 1 /
       透 255 / 通常 / 角 0 / 拡 100% / カラー R[100] G[100] B[100]
■変数操作: CSelf21[ピクチャ番号(位置+100)] += 1 + 0
■変数操作: CSelf24[X表示位置] += 50 + 0
■ピクチャ表示:CSelf21[ピクチャ番号(位置+100)] [中心]文字列[項目01]
       X:CSelf24[X表示位置] Y:CSelf25[Y表示位置] / 0(0)フレーム / パターン 1 /
       透 255 / 通常 / 角 0 / 拡 100% / カラー R[100] G[100] B[100]
■変数操作: CSelf21[ピクチャ番号(位置+100)] += 1 + 0
■変数操作: CSelf24[X表示位置] += 50 + 0
■ピクチャ表示:CSelf21[ピクチャ番号(位置+100)] [中心]文字列[項目02]
       X:CSelf24[X表示位置] Y:CSelf25[Y表示位置] / 0(0)フレーム / パターン 1 /
       透 255 / 通常 / 角 0 / 拡 100% / カラー R[100] G[100] B[100]
■変数操作: CSelf21[ピクチャ番号(位置+100)] += 1 + 0
■変数操作: CSelf24[X表示位置] += 50 + 0
■ピクチャ表示:CSelf21[ピクチャ番号(位置+100)] [中心]文字列[項目03]
       X:CSelf24[X表示位置] Y:CSelf25[Y表示位置] / 0(0)フレーム / パターン 1 /
       透 255 / 通常 / 角 0 / 拡 100% / カラー R[100] G[100] B[100]
■変数操作: CSelf21[ピクチャ番号(位置+100)] += 1 + 0
■変数操作: CSelf24[X表示位置] += 50 + 0
■ピクチャ表示:CSelf21[ピクチャ番号(位置+100)] [中心]文字列[項目04]
       X:CSelf24[X表示位置] Y:CSelf25[Y表示位置] / 0(0)フレーム / パターン 1 /
       透 255 / 通常 / 角 0 / 拡 100% / カラー R[100] G[100] B[100]
■変数操作: CSelf21[ピクチャ番号(位置+100)] += 1 + 0
■変数操作: CSelf24[X表示位置] += 50 + 0
■ピクチャ表示:CSelf21[ピクチャ番号(位置+100)] [中心]文字列[項目05]
       X:CSelf24[X表示位置] Y:CSelf25[Y表示位置] / 0(0)フレーム / パターン 1 /
       透 255 / 通常 / 角 0 / 拡 100% / カラー R[100] G[100] B[100]
▼ ■■■■■■■■■■■■■■■■■■■■キー処理
■変数操作: CSelf10[カーソル位置] = 0 + 0
■変数操作: CSelf17[起動時キー押し禁止] = 1 + 0
■ループ開始
|■ウェイト:1 フレーム
|■変数操作: CSelf16[キー待ち時間] -= 1 + 0
|■キー入力:CSelf15[キー入力] 左右(4,6) 決定(10) キャンセル(11)
|■条件分岐(変数): 【1】 CSelf15[キー入力] が 0 と同じ
          【2】 CSelf17[起動時キー押し禁止] が 1 と同じ
|-◇分岐: 【1】 [ CSelf15[キー入力] が 0 と同じ ]の場合↓
||■変数操作: CSelf16[キー待ち時間]〜CSelf17[起動時キー押し禁止] = 0 + 0
||■ループ開始へ戻る
||■
|-◇分岐: 【2】 [ CSelf17[起動時キー押し禁止] が 1 と同じ ]の場合↓
||■ループ開始へ戻る
||■
|◇分岐終了◇
|■条件分岐(変数): 【1】 CSelf15[キー入力] が 10 と同じ
          【2】 CSelf15[キー入力] が 11 と同じ
|-◇分岐: 【1】 [ CSelf15[キー入力] が 10 と同じ ]の場合↓
||●ラベル「決定」に飛ぶ >>>>>>>>>>>>>>>>>>>>>>>>>
||■
|-◇分岐: 【2】 [ CSelf15[キー入力] が 11 と同じ ]の場合↓
||●ラベル「キャンセル」に飛ぶ >>>>>>>>>>>>>>>>>>>>>>>>>
||■
|◇分岐終了◇
|■条件分岐(変数): 【1】 CSelf16[キー待ち時間] が 1 以上
|-◇分岐: 【1】 [ CSelf16[キー待ち時間] が 1 以上 ]の場合↓
||■ループ開始へ戻る
||■
|◇分岐終了◇
|▼ ■■■■■■■■■■カーソル移動処理
|■変数操作: CSelf16[キー待ち時間] = 12 + 0
|■条件分岐(変数): 【1】 CSelf15[キー入力] が 4 と同じ
          【2】 CSelf15[キー入力] が 6 と同じ
|-◇分岐: 【1】 [ CSelf15[キー入力] が 4 と同じ ]の場合↓
||▼ ■■■■■左キーを押した
||■変数操作: CSelf10[カーソル位置] -= 1 + 0
||■
|-◇分岐: 【2】 [ CSelf15[キー入力] が 6 と同じ ]の場合↓
||▼ ■■■■■右キーを押した
||■変数操作: CSelf10[カーソル位置] += 1 + 0
||■
|◇分岐終了◇
|■変数操作: CSelf10[カーソル位置] += 6 + 0
|■変数操作: CSelf10[カーソル位置] %= 6 + 0
|■変数操作: CSelf21[ピクチャ番号(位置+100)] = CSelf10[カーソル位置] + 100
|■変数操作+: CSelf24[X表示位置] = ピクチャ:CSelf21[ピクチャ番号(位置+100)] の X座標
|■変数操作+: CSelf25[Y表示位置] = ピクチャ:CSelf21[ピクチャ番号(位置+100)] の Y座標
|■ピクチャ移動:2 X:CSelf24[X表示位置] Y:CSelf25[Y表示位置] / 0(0)フレーム /
       パターン 同値 / 透 同値 / 表示形式:同値 / 角 同値 / 拡 同値 / カラー 同値
|■
◇ループここまで◇◇
■回数付きループ [ 0 ]回
|▼ ■■■■■■■■■■決定した時の処理
|●ラベル地点「決定」 <<<<<<<<<<<<<<<<<<<<<<<<★
|■文章:項目「\cself[10]」を選択。
|■
◇ループここまで◇◇
■回数付きループ [ 0 ]回
|▼ ■■■■■■■■■■キャンセルした時の処理
|●ラベル地点「キャンセル」 <<<<<<<<<<<<<<<<<<<<<<<<★
|■
◇ループここまで◇◇
▼ ■■■■■■■■■■終了処理
●ラベル地点「終了」 <<<<<<<<<<<<<<<<<<<<<<<<★
■ピクチャ消去:1 〜 105 / 5(0)フレーム
■ウェイト:1 フレーム




パーティ人数×縦1 【イベントコード表示】 【コモン出力ファイル】

■「横1×パーティ人数」→「パーティ人数×縦1」

■DB読込(可変): CSelf30[選択項目数] = 可変DB[ 基本システム用変数 : 4 : 0 ] (18 : 現在パーティー人数 : 数値)
■条件分岐(変数): 【1】 CSelf30[選択項目数] が 0 と同じ
-◇分岐: 【1】 [ CSelf30[選択項目数] が 0 と同じ ]の場合↓
|●ラベル「終了」に飛ぶ >>>>>>>>>>>>>>>>>>>>>>>>>
|■
◇分岐終了◇
▼ ■■■■■■■■■■ウィンドウ表示
■変数操作: CSelf22[生成サイズ横] = CSelf30[選択項目数] * 50
■変数操作: CSelf22[生成サイズ横] += 20 + 0

■変数操作: CSelf23[生成サイズ縦] = 70 + 0
■変数操作: CSelf23[生成サイズ縦] *= 4 + 0<削除
■変数操作: CSelf23[生成サイズ縦] += CSelf30[選択項目数] * 16
■変数操作: CSelf23[生成サイズ縦] += 20 + 0

■ピクチャ表示:1 [中心]ウィンドウ「SystemFile/WindowBase_amania.png」
       サイズ[CSelf22[生成サイズ横],CSelf23[生成サイズ縦]] X:160 Y:120 / 0(0)フレーム /
       パターン 1 / 透 255 / 通常 / 角 0 / 拡 100% / カラー R[100] G[100] B[100]
▼ ■■■■■■■■■■カーソル表示(項目00の位置)
■変数操作: CSelf22[生成サイズ横] = 50 + 0
■変数操作: CSelf23[生成サイズ縦] = 50 + 0
■変数操作: CSelf24[X表示位置] = CSelf30[選択項目数] - 1
■変数操作: CSelf24[X表示位置] *= 50 / -2
■変数操作: CSelf24[X表示位置] += 160 + 0

■変数操作+: CSelf25[Y表示位置] = ピクチャ:1 の 画像サイズ(縦)<削除
■変数操作: CSelf25[Y表示位置] /= -2 + 0

■変数操作: CSelf25[Y表示位置] = 120 + 0
■ピクチャ表示:2 [中心]ウィンドウ「SystemFile/CursorBase.png」
       サイズ[CSelf22[生成サイズ横],CSelf23[生成サイズ縦]]
       X:CSelf24[X表示位置] Y:CSelf25[Y表示位置] / 0(0)フレーム / パターン 1 /
       透 255 / 加算 / 角 0 / 拡 100% / カラー R[100] G[100] B[100]
■ピクチャエフェクト:2 [点滅A(明滅)] R100/G100/B100 明滅間隔(30)フレーム
▼ ■■■■■■■■■■項目表示
■変数操作: CSelf21[ピクチャ番号(位置+100)] = 100 + 0
■変数操作: CSelf31[項目ID] = 1 + 0
■回数付きループ [ CSelf30[選択項目数] ]回
|■文字列操作:CSelf5[項目文字列] = "\cdb[0:\cdb[6:0:\cself[31]]:3]"
|■条件分岐(文字): 【1】 CSelf5[項目文字列]が "" 以外
|-◇分岐: 【1】 [ CSelf5[項目文字列] "" 以外 ]の場合↓
||■ピクチャ表示:CSelf21[ピクチャ番号(位置+100)] [中心]ファイル(CSelf5[項目文字列])
        X:CSelf24[X表示位置] Y:CSelf25[Y表示位置] / 0(0)フレーム / パターン 1 /
        透 255 / 通常 / 角 0 / 拡 100% / カラー R[100] G[100] B[100]
<条件分岐内へ移動
||■変数操作: CSelf26[顔拡大率] = 48 * 100
||■変数操作+: CSelf26[顔拡大率] /= ピクチャ:CSelf20[ピクチャ番号] の 画像サイズ(横)
||■ピクチャ移動:CSelf21[ピクチャ番号(位置+100)] 相対X:0 Y:0 / 0(0)フレーム / パターン 同値 /
        透 同値 / 表示形式:同値 / 角 同値 / 拡 CSelf26[顔拡大率]% / カラー 同値
||■
|◇分岐終了◇

|■変数操作: CSelf31[項目ID] += 1 + 0
|■変数操作: CSelf21[ピクチャ番号(位置+100)] += 1 + 0
|■変数操作: CSelf24[X表示位置] += 50 + 0
|■
◇ループここまで◇◇
|■
◇分岐終了◇
▼ ■■■■■■■■■■■■■■■■■■■■キー処理
■変数操作: CSelf10[カーソル位置] = 0 + 0
■変数操作: CSelf17[起動時キー押し禁止] = 1 + 0
■ループ開始
|■ウェイト:1 フレーム
|■変数操作: CSelf16[キー待ち時間] -= 1 + 0
|■キー入力:CSelf15[キー入力] 左右(4,6) 決定(10) キャンセル(11)
|■条件分岐(変数): 【1】 CSelf15[キー入力] が 0 と同じ
          【2】 CSelf17[起動時キー押し禁止] が 1 と同じ
|-◇分岐: 【1】 [ CSelf15[キー入力] が 0 と同じ ]の場合↓
||■変数操作: CSelf16[キー待ち時間]〜CSelf17[起動時キー押し禁止] = 0 + 0
||■ループ開始へ戻る
||■
|-◇分岐: 【2】 [ CSelf17[起動時キー押し禁止] が 1 と同じ ]の場合↓
||■ループ開始へ戻る
||■
|◇分岐終了◇
|■条件分岐(変数): 【1】 CSelf15[キー入力] が 10 と同じ
          【2】 CSelf15[キー入力] が 11 と同じ
|-◇分岐: 【1】 [ CSelf15[キー入力] が 10 と同じ ]の場合↓
||●ラベル「決定」に飛ぶ >>>>>>>>>>>>>>>>>>>>>>>>>
||■
|-◇分岐: 【2】 [ CSelf15[キー入力] が 11 と同じ ]の場合↓
||●ラベル「キャンセル」に飛ぶ >>>>>>>>>>>>>>>>>>>>>>>>>
||■
|◇分岐終了◇
|■条件分岐(変数): 【1】 CSelf16[キー待ち時間] が 1 以上
|-◇分岐: 【1】 [ CSelf16[キー待ち時間] が 1 以上 ]の場合↓
||■ループ開始へ戻る
||■
|◇分岐終了◇
|▼ ■■■■■■■■■■カーソル移動処理
|■変数操作: CSelf16[キー待ち時間] = 12 + 0
|■条件分岐(変数): 【1】 CSelf15[キー入力] が 4 と同じ
          【2】 CSelf15[キー入力] が 6 と同じ
|-◇分岐: 【1】 [ CSelf15[キー入力] が 4 と同じ ]の場合↓
||▼ ■■■■■左キーを押した
||■変数操作: CSelf10[カーソル位置] -= 1 + 0
||■
|-◇分岐: 【2】 [ CSelf15[キー入力] が 6 と同じ ]の場合↓
||▼ ■■■■■右キーを押した
||■変数操作: CSelf10[カーソル位置] += 1 + 0
||■
|◇分岐終了◇
|■変数操作: CSelf10[カーソル位置] += CSelf30[選択項目数] + 0
|■変数操作: CSelf10[カーソル位置] %= CSelf30[選択項目数] + 0
|■変数操作: CSelf21[ピクチャ番号(位置+100)] = CSelf10[カーソル位置] + 100
|■変数操作+: CSelf24[X表示位置] = ピクチャ:CSelf21[ピクチャ番号(位置+100)] の X座標
|■変数操作+: CSelf25[Y表示位置] = ピクチャ:CSelf21[ピクチャ番号(位置+100)] の Y座標
|■ピクチャ移動:2 X:CSelf24[X表示位置] Y:CSelf25[Y表示位置] / 0(0)フレーム /
       パターン 同値 / 透 同値 / 表示形式:同値 / 角 同値 / 拡 同値 / カラー 同値
|■
◇ループここまで◇◇
■回数付きループ [ 0 ]回
|▼ ■■■■■■■■■■決定した時の処理
|●ラベル地点「決定」 <<<<<<<<<<<<<<<<<<<<<<<<★
|■変数操作: CSelf31[項目ID] = CSelf10[カーソル位置] + 1
|■文章:「\cdb[0:\cdb[6:0:\cself[31]]:0]」を選択。
|■
◇ループここまで◇◇
■回数付きループ [ 0 ]回
|▼ ■■■■■■■■■■キャンセルした時の処理
|●ラベル地点「キャンセル」 <<<<<<<<<<<<<<<<<<<<<<<<★
|■
◇ループここまで◇◇
▼ ■■■■■■■■■■終了処理
●ラベル地点「終了」 <<<<<<<<<<<<<<<<<<<<<<<<★
■ピクチャ消去:1 〜 105 / 5(0)フレーム
■ウェイト:1 フレーム


▲トップへ戻る▲


  
■マウスの操作を追加

マウスの操作で自作メニューが選択できるように改造します。



マウスが反応する範囲は「不透明度=0」で表示したピクチャ[3]で設定します。



位置は「左上」で設定し、カラーは「R[0]、G[100]、B[100]」で設定します。

▼一時的に「不透明度=100」にしてピクチャ[3]を可視化すると、
 マウスが反応する範囲が正しく設定されているかどうかを確認する事ができます。



ピクチャ[3]の上にマウスポインタが乗ると、下図のように20ピクセル単位で区切り
マウスポインタがいるY位置から選択しているカーソル位置を算出し、その結果をセルフ変数[10]へ保存します。



ピクチャ[3]のサイズと表示位置は、以下の計算式で算出します。

  計算式 計算結果([横1×縦6]の場合)
生成サイズ横 ウィンドウ横幅−左右余白[20] 70−20=50
生成サイズ縦 ウィンドウ縦幅−上下余白[20]+項目と項目の間の余白 136−20+4=120
X位置 160−ピクチャ[3]の横幅÷2 160−50÷2=135
Y位置 120−ピクチャ[3]の縦幅÷2 120−120÷2=60



設定例の処理はキーボードとマウスの両方の操作に対応しています。

マウスポインタが選択項目の上に乗っている場合は、キーボードの方向キーの操作はできません。
(決定キーとキャンセルキーは機能します)

キーボード操作を無くし、マウス操作のみにする場合は、
▼ キーボード操作を無くし、マウス操作のみにする場合は、この位置に【■ループ開始へ戻る】を設置」の位置に…
■ループ開始へ戻る
を設定してください。



カーソル移動時にSEを演奏させている場合は、
下記設定例にある「▼ カーソル移動時のSEを設定する場合は、ここに設定」の位置に設定してください。

なお「▼ ■■■■■■■■■■カーソル移動処理」の所にカーソル移動時のSEがある場合は、削除してください。



下記設定例は「横1×縦6」「横6×縦1」をマウス対応に改造したものが書かれています。

他の「横2×縦1」などとの違いについては、設定例にある補足説明をご覧ください。



縦並び 横1×縦2 【イベントコード表示】 【コモン出力ファイル】
横1×縦6 【イベントコード表示】 【コモン出力ファイル】
横1×縦1〜6 【イベントコード表示】 【コモン出力ファイル】
横1×パーティ人数 【イベントコード表示】 【コモン出力ファイル】

■「横1×縦6」+マウス操作

▼ ■■■■■■■■■■ウィンドウ表示
■変数操作: CSelf22[生成サイズ横] = 70 + 0
■変数操作: CSelf23[生成サイズ縦] = 136 + 0
■ピクチャ表示:1 [中心]ウィンドウ「SystemFile/WindowBase_amania.png」
       サイズ[CSelf22[生成サイズ横],CSelf23[生成サイズ縦]] X:160 Y:120 / 0(0)フレーム /
       パターン 1 / 透 255 / 通常 / 角 0 / 拡 100% / カラー R[100] G[100] B[100]
▼ ■■■■■■■■■■マウスの処理範囲を設定
■変数操作: CSelf22[生成サイズ横] -= 20 + 0
■変数操作: CSelf23[生成サイズ縦] -= 16 + 0
■変数操作: CSelf24[X表示位置] = CSelf22[生成サイズ横] / -2
■変数操作: CSelf25[Y表示位置] = CSelf23[生成サイズ縦] / -2
■変数操作: CSelf24[X表示位置] += 160 + 0
■変数操作: CSelf25[Y表示位置] += 120 + 0
■ピクチャ表示:3 [左上]ウィンドウ「<SQUARE>」サイズ[CSelf22[生成サイズ横],CSelf23[生成サイズ縦]]
       X:CSelf24[X表示位置] Y:CSelf25[Y表示位置] / 0(0)フレーム / パターン 1 /
       透 0 / 通常 / 角 0 / 拡 100% / カラー R[0] G[100] B[100]

▼ ■■■■■■■■■■カーソル表示(項目00の位置)
■変数操作: CSelf22[生成サイズ横] = 50 + 0
■変数操作: CSelf23[生成サイズ縦] = 16 + 0
■変数操作: CSelf24[X表示位置] = 160 + 0
■変数操作: CSelf25[Y表示位置] = 70 + 0
■ピクチャ表示:2 [中心]ウィンドウ「SystemFile/CursorBase.png」
       サイズ[CSelf22[生成サイズ横],CSelf23[生成サイズ縦]]
       X:CSelf24[X表示位置] Y:CSelf25[Y表示位置] / 0(0)フレーム / パターン 1 /
       透 255 / 加算 / 角 0 / 拡 100% / カラー R[100] G[100] B[100]
■ピクチャエフェクト:2 [点滅A(明滅)] R100/G100/B100 明滅間隔(30)フレーム
▼ ■■■■■■■■■■項目表示
■変数操作: CSelf21[ピクチャ番号(位置+100)] = 100 + 0
■ピクチャ表示:CSelf21[ピクチャ番号(位置+100)] [中心]文字列[項目00]
       X:CSelf24[X表示位置] Y:CSelf25[Y表示位置] / 0(0)フレーム / パターン 1 /
       透 255 / 通常 / 角 0 / 拡 100% / カラー R[100] G[100] B[100]
■変数操作: CSelf21[ピクチャ番号(位置+100)] += 1 + 0
■変数操作: CSelf25[Y表示位置] += 20 + 0
■ピクチャ表示:CSelf21[ピクチャ番号(位置+100)] [中心]文字列[項目01]
       X:CSelf24[X表示位置] Y:CSelf25[Y表示位置] / 0(0)フレーム / パターン 1 /
       透 255 / 通常 / 角 0 / 拡 100% / カラー R[100] G[100] B[100]
■変数操作: CSelf21[ピクチャ番号(位置+100)] += 1 + 0
■変数操作: CSelf25[Y表示位置] += 20 + 0
■ピクチャ表示:CSelf21[ピクチャ番号(位置+100)] [中心]文字列[項目02]
       X:CSelf24[X表示位置] Y:CSelf25[Y表示位置] / 0(0)フレーム / パターン 1 /
       透 255 / 通常 / 角 0 / 拡 100% / カラー R[100] G[100] B[100]
■変数操作: CSelf21[ピクチャ番号(位置+100)] += 1 + 0
■変数操作: CSelf25[Y表示位置] += 20 + 0
■ピクチャ表示:CSelf21[ピクチャ番号(位置+100)] [中心]文字列[項目03]
       X:CSelf24[X表示位置] Y:CSelf25[Y表示位置] / 0(0)フレーム / パターン 1 /
       透 255 / 通常 / 角 0 / 拡 100% / カラー R[100] G[100] B[100]
■変数操作: CSelf21[ピクチャ番号(位置+100)] += 1 + 0
■変数操作: CSelf25[Y表示位置] += 20 + 0
■ピクチャ表示:CSelf21[ピクチャ番号(位置+100)] [中心]文字列[項目04]
       X:CSelf24[X表示位置] Y:CSelf25[Y表示位置] / 0(0)フレーム / パターン 1 /
       透 255 / 通常 / 角 0 / 拡 100% / カラー R[100] G[100] B[100]
■変数操作: CSelf21[ピクチャ番号(位置+100)] += 1 + 0
■変数操作: CSelf25[Y表示位置] += 20 + 0
■ピクチャ表示:CSelf21[ピクチャ番号(位置+100)] [中心]文字列[項目05]
       X:CSelf24[X表示位置] Y:CSelf25[Y表示位置] / 0(0)フレーム / パターン 1 /
       透 255 / 通常 / 角 0 / 拡 100% / カラー R[100] G[100] B[100]
▼ ■■■■■■■■■■■■■■■■■■■■キー処理
■変数操作: CSelf10[カーソル位置] = 0 + 0
■変数操作: CSelf11[SE:カーソル移動] = CSelf10[カーソル位置] + 0
■変数操作: CSelf17[起動時キー押し禁止] = 1 + 0
■ループ開始
|▼ ■■■■■カーソル移動SE
|■条件分岐(変数): 【1】 CSelf11[SE:カーソル移動] が CSelf10[カーソル位置] 以外
|-◇分岐: 【1】 [ CSelf11[SE:カーソル移動] が CSelf10[カーソル位置] 以外 ]の場合↓
||■変数操作: CSelf11[SE:カーソル移動] = CSelf10[カーソル位置] + 0
||▼ カーソル移動時のSEを設定する場合は、ここに設定
||■
|◇分岐終了◇

|■ウェイト:1 フレーム
|▼ ■■■■■■■■■■マウス操作
|■回数付きループ [ 1 ]回
||■変数操作+: CSelf27[乗っているか判断] = ピクチャ:3 の マウス重なってる?(1=YES)
||■条件分岐(変数): 【1】 CSelf27[乗っているか判断] が 0 と同じ
||-◇分岐: 【1】 [ CSelf27[乗っているか判断] が 0 と同じ ]の場合↓
|||■ループ中断
|||■
||◇分岐終了◇
||■変数操作: CSelf10[カーソル位置] = Sys72:マウスY位置 + 0
||■変数操作+: CSelf10[カーソル位置] -= ピクチャ:3 の Y座標
||■変数操作: CSelf10[カーソル位置] /= 20 + 0
||■変数操作: CSelf10[カーソル位置] 上限= 6 - 1<[1×2]は「2 - 1」、変動性は「CSelf30[選択項目数] - 1」を設定
||■変数操作: CSelf21[ピクチャ番号(位置+100)] = CSelf10[カーソル位置] + 100
||■変数操作+: CSelf24[X表示位置] = ピクチャ:CSelf21[ピクチャ番号(位置+100)] の X座標
||■変数操作+: CSelf25[Y表示位置] = ピクチャ:CSelf21[ピクチャ番号(位置+100)] の Y座標
||■ピクチャ移動:2 X:CSelf24[X表示位置] Y:CSelf25[Y表示位置] / 0(0)フレーム / パターン 同値 /
         透 255 / 表示形式:同値 / 角 同値 / 拡 同値 / カラー 同値
||■変数操作+: CSelf15[キー入力・クリック] = マウス左クリック状態
||■条件分岐(変数): 【1】 CSelf15[キー入力・クリック] が 2 と同じ
||-◇分岐: 【1】 [ CSelf15[キー入力・クリック] が 2 と同じ ]の場合↓
|||●ラベル「決定」に飛ぶ >>>>>>>>>>>>>>>>>>>>>>>>>
|||■
||◇分岐終了◇
||■
|◇ループここまで◇◇

|▼ キーボード操作を無くし、マウス操作のみにする場合は、この位置に【■ループ開始へ戻る】を設置
|▼ ■■■■■■■■■■キーボード操作

|■変数操作: CSelf16[キー待ち時間] -= 1 + 0
|■キー入力:CSelf15[キー入力] 上下(8,2) 決定(10) キャンセル(11)
|■条件分岐(変数): 【1】 CSelf15[キー入力] が 0 と同じ
          【2】 CSelf17[起動時キー押し禁止] が 1 と同じ
|-◇分岐: 【1】 [ CSelf15[キー入力] が 0 と同じ ]の場合↓
||■変数操作: CSelf16[キー待ち時間]〜CSelf17[起動時キー押し禁止] = 0 + 0
||■ループ開始へ戻る
||■
|-◇分岐: 【2】 [ CSelf17[起動時キー押し禁止] が 1 と同じ ]の場合↓
||■ループ開始へ戻る
||■
|◇分岐終了◇
|■条件分岐(変数): 【1】 CSelf15[キー入力] が 10 と同じ
          【2】 CSelf15[キー入力] が 11 と同じ
|-◇分岐: 【1】 [ CSelf15[キー入力] が 10 と同じ ]の場合↓
||●ラベル「決定」に飛ぶ >>>>>>>>>>>>>>>>>>>>>>>>>
||■
|-◇分岐: 【2】 [ CSelf15[キー入力] が 11 と同じ ]の場合↓
||●ラベル「キャンセル」に飛ぶ >>>>>>>>>>>>>>>>>>>>>>>>>
||■
|◇分岐終了◇
|■条件分岐(変数): 【1】 CSelf16[キー待ち時間] が 1 以上
|-◇分岐: 【1】 [ CSelf16[キー待ち時間] が 1 以上 ]の場合↓
||■ループ開始へ戻る
||■
|◇分岐終了◇
|■条件分岐(変数): 【1】 CSelf27[乗っているか判断] が 1 と同じ
|-◇分岐: 【1】 [ CSelf27[乗っているか判断] が 1 と同じ ]の場合↓
||■ループ開始へ戻る
||■
|◇分岐終了◇

|▼ ■■■■■■■■■■カーソル移動処理
|■変数操作: CSelf16[キー待ち時間] = 12 + 0
|■条件分岐(変数): 【1】 CSelf15[キー入力] が 8 と同じ
          【2】 CSelf15[キー入力] が 2 と同じ
|-◇分岐: 【1】 [ CSelf15[キー入力] が 8 と同じ ]の場合↓
||▼ ■■■■■上キーを押した
||■変数操作: CSelf10[カーソル位置] -= 1 + 0
||■
|-◇分岐: 【2】 [ CSelf15[キー入力] が 2 と同じ ]の場合↓
||▼ ■■■■■下キーを押した
||■変数操作: CSelf10[カーソル位置] += 1 + 0
||■
|◇分岐終了◇
|■変数操作: CSelf10[カーソル位置] += 6 + 0
|■変数操作: CSelf10[カーソル位置] %= 6 + 0
|■変数操作: CSelf21[ピクチャ番号(位置+100)] = CSelf10[カーソル位置] + 100
|■変数操作+: CSelf24[X表示位置] = ピクチャ:CSelf21[ピクチャ番号(位置+100)] の X座標
|■変数操作+: CSelf25[Y表示位置] = ピクチャ:CSelf21[ピクチャ番号(位置+100)] の Y座標
|■ピクチャ移動:2 X:CSelf24[X表示位置] Y:CSelf25[Y表示位置] / 0(0)フレーム /
       パターン 同値 / 透 同値 / 表示形式:同値 / 角 同値 / 拡 同値 / カラー 同値
|■
◇ループここまで◇◇
■回数付きループ [ 0 ]回
|▼ ■■■■■■■■■■項目を決定した時の処理
|●ラベル地点「決定」 <<<<<<<<<<<<<<<<<<<<<<<<★
|■変数操作: Sys73:文・選択肢のマウス入力(1なら受付) = 1 + 0<クリックで文章の表示を消す場合は、この設定が必要
|■文章:項目「\cself[10]」を選択。
|■
◇ループここまで◇◇
■回数付きループ [ 0 ]回
|▼ ■■■■■■■■■■キャンセルした時の処理
|●ラベル地点「キャンセル」 <<<<<<<<<<<<<<<<<<<<<<<<★
|■
◇ループここまで◇◇
▼ ■■■■■■■■■■終了処理
●ラベル地点「終了」 <<<<<<<<<<<<<<<<<<<<<<<<★
■ピクチャ消去:1 〜 105 / 5(0)フレーム
■ウェイト:1 フレーム




横並び 横2×縦1 【イベントコード表示】 【コモン出力ファイル】
横6×縦1 【イベントコード表示】 【コモン出力ファイル】
横1〜6×縦1 【イベントコード表示】 【コモン出力ファイル】
パーティ人数×縦1 【イベントコード表示】 【コモン出力ファイル】

■「横6×縦1」+マウス操作

▼ ■■■■■■■■■■ウィンドウ表示
■変数操作: CSelf22[生成サイズ横] = 320 + 0
■変数操作: CSelf23[生成サイズ縦] = 36 + 0
■ピクチャ表示:1 [中心]ウィンドウ「SystemFile/WindowBase_amania.png」
       サイズ[CSelf22[生成サイズ横],CSelf23[生成サイズ縦]] X:160 Y:120 / 0(0)フレーム /
       パターン 1 / 透 255 / 通常 / 角 0 / 拡 100% / カラー R[100] G[100] B[100]
▼ ■■■■■■■■■■マウスの処理範囲を設定
■変数操作: CSelf22[生成サイズ横] -= 20 + 0
■変数操作: CSelf23[生成サイズ縦] -= 16 + 0
■変数操作: CSelf24[X表示位置] = CSelf22[生成サイズ横] / -2
■変数操作: CSelf25[Y表示位置] = CSelf23[生成サイズ縦] / -2
■変数操作: CSelf24[X表示位置] += 160 + 0
■変数操作: CSelf25[Y表示位置] += 120 + 0
■ピクチャ表示:3 [左上]ウィンドウ「<SQUARE>」サイズ[CSelf22[生成サイズ横],CSelf23[生成サイズ縦]]
       X:CSelf24[X表示位置] Y:CSelf25[Y表示位置] / 0(0)フレーム / パターン 1 /
       透 0 / 通常 / 角 0 / 拡 100% / カラー R[0] G[100] B[100]

▼ ■■■■■■■■■■カーソル表示(項目00の位置)
■変数操作: CSelf22[生成サイズ横] = 50 + 0
■変数操作: CSelf23[生成サイズ縦] = 16 + 0
■変数操作: CSelf24[X表示位置] = 35 + 0
■変数操作: CSelf25[Y表示位置] = 120 + 0
■ピクチャ表示:2 [中心]ウィンドウ「SystemFile/CursorBase.png」
       サイズ[CSelf22[生成サイズ横],CSelf23[生成サイズ縦]]
       X:CSelf24[X表示位置] Y:CSelf25[Y表示位置] / 0(0)フレーム / パターン 1 /
       透 255 / 加算 / 角 0 / 拡 100% / カラー R[100] G[100] B[100]
■ピクチャエフェクト:2 [点滅A(明滅)] R100/G100/B100 明滅間隔(30)フレーム
▼ ■■■■■■■■■■項目表示
■変数操作: CSelf21[ピクチャ番号(位置+100)] = 100 + 0
■ピクチャ表示:CSelf21[ピクチャ番号(位置+100)] [中心]文字列[項目00]
       X:CSelf24[X表示位置] Y:CSelf25[Y表示位置] / 0(0)フレーム / パターン 1 /
       透 255 / 通常 / 角 0 / 拡 100% / カラー R[100] G[100] B[100]
■変数操作: CSelf21[ピクチャ番号(位置+100)] += 1 + 0
■変数操作: CSelf24[X表示位置] += 50 + 0
■ピクチャ表示:CSelf21[ピクチャ番号(位置+100)] [中心]文字列[項目01]
       X:CSelf24[X表示位置] Y:CSelf25[Y表示位置] / 0(0)フレーム / パターン 1 /
       透 255 / 通常 / 角 0 / 拡 100% / カラー R[100] G[100] B[100]
■変数操作: CSelf21[ピクチャ番号(位置+100)] += 1 + 0
■変数操作: CSelf24[X表示位置] += 50 + 0
■ピクチャ表示:CSelf21[ピクチャ番号(位置+100)] [中心]文字列[項目02]
       X:CSelf24[X表示位置] Y:CSelf25[Y表示位置] / 0(0)フレーム / パターン 1 /
       透 255 / 通常 / 角 0 / 拡 100% / カラー R[100] G[100] B[100]
■変数操作: CSelf21[ピクチャ番号(位置+100)] += 1 + 0
■変数操作: CSelf24[X表示位置] += 50 + 0
■ピクチャ表示:CSelf21[ピクチャ番号(位置+100)] [中心]文字列[項目03]
       X:CSelf24[X表示位置] Y:CSelf25[Y表示位置] / 0(0)フレーム / パターン 1 /
       透 255 / 通常 / 角 0 / 拡 100% / カラー R[100] G[100] B[100]
■変数操作: CSelf21[ピクチャ番号(位置+100)] += 1 + 0
■変数操作: CSelf24[X表示位置] += 50 + 0
■ピクチャ表示:CSelf21[ピクチャ番号(位置+100)] [中心]文字列[項目04]
       X:CSelf24[X表示位置] Y:CSelf25[Y表示位置] / 0(0)フレーム / パターン 1 /
       透 255 / 通常 / 角 0 / 拡 100% / カラー R[100] G[100] B[100]
■変数操作: CSelf21[ピクチャ番号(位置+100)] += 1 + 0
■変数操作: CSelf24[X表示位置] += 50 + 0
■ピクチャ表示:CSelf21[ピクチャ番号(位置+100)] [中心]文字列[項目05]
       X:CSelf24[X表示位置] Y:CSelf25[Y表示位置] / 0(0)フレーム / パターン 1 /
       透 255 / 通常 / 角 0 / 拡 100% / カラー R[100] G[100] B[100]
▼ ■■■■■■■■■■■■■■■■■■■■キー処理
■変数操作: CSelf10[カーソル位置] = 0 + 0
■変数操作: CSelf11[SE:カーソル移動] = CSelf10[カーソル位置] + 0
■変数操作: CSelf17[起動時キー押し禁止] = 1 + 0
■ループ開始
|▼ ■■■■■カーソル移動SE
|■条件分岐(変数): 【1】 CSelf11[SE:カーソル移動] が CSelf10[カーソル位置] 以外
|-◇分岐: 【1】 [ CSelf11[SE:カーソル移動] が CSelf10[カーソル位置] 以外 ]の場合↓
||■変数操作: CSelf11[SE:カーソル移動] = CSelf10[カーソル位置] + 0
||▼ カーソル移動時のSEを設定する場合は、ここに設定
||■
|◇分岐終了◇

|■ウェイト:1 フレーム
|▼ ■■■■■■■■■■マウス操作
|■回数付きループ [ 1 ]回
||■変数操作+: CSelf27[乗っているか判断] = ピクチャ:3 の マウス重なってる?(1=YES)
||■条件分岐(変数): 【1】 CSelf27[乗っているか判断] が 0 と同じ
||-◇分岐: 【1】 [ CSelf27[乗っているか判断] が 0 と同じ ]の場合↓
|||■ループ中断
|||■
||◇分岐終了◇
||■変数操作: CSelf10[カーソル位置] = Sys71:マウスX位置 + 0
||■変数操作+: CSelf10[カーソル位置] -= ピクチャ:3 の X座標
||■変数操作: CSelf10[カーソル位置] /= 50 + 0
||■変数操作: CSelf10[カーソル位置] 上限= 6 - 1<[2×1]は「2 - 1」、変動性は「CSelf30[選択項目数] - 1」を設定
||■変数操作: CSelf21[ピクチャ番号(位置+100)] = CSelf10[カーソル位置] + 100
||■変数操作+: CSelf24[X表示位置] = ピクチャ:CSelf21[ピクチャ番号(位置+100)] の X座標
||■変数操作+: CSelf25[Y表示位置] = ピクチャ:CSelf21[ピクチャ番号(位置+100)] の Y座標
||■ピクチャ移動:2 X:CSelf24[X表示位置] Y:CSelf25[Y表示位置] / 0(0)フレーム / パターン 同値 /
        透 255 / 表示形式:同値 / 角 同値 / 拡 同値 / カラー 同値
||■変数操作+: CSelf15[キー入力・クリック] = マウス左クリック状態
||■条件分岐(変数): 【1】 CSelf15[キー入力・クリック] が 2 と同じ
||-◇分岐: 【1】 [ CSelf15[キー入力・クリック] が 2 と同じ ]の場合↓
|||●ラベル「決定」に飛ぶ >>>>>>>>>>>>>>>>>>>>>>>>>
|||■
||◇分岐終了◇
||■
|◇ループここまで◇◇
|■変数操作+: CSelf15[キー入力・クリック] = マウス右クリック状態
|■条件分岐(変数): 【1】 CSelf15[キー入力・クリック] が 2 と同じ
|-◇分岐: 【1】 [ CSelf15[キー入力・クリック] が 2 と同じ ]の場合↓
||●ラベル「キャンセル」に飛ぶ >>>>>>>>>>>>>>>>>>>>>>>>>
||■
|◇分岐終了◇

|▼ キーボード操作を無くし、マウス操作のみにする場合は、この位置に【■ループ開始へ戻る】を設置
|▼ ■■■■■■■■■■キーボード操作
|■変数操作: CSelf16[キー待ち時間] -= 1 + 0
|■キー入力:CSelf15[キー入力] 左右(4,6) 決定(10) キャンセル(11)
|■条件分岐(変数): 【1】 CSelf15[キー入力] が 0 と同じ
          【2】 CSelf17[起動時キー押し禁止] が 1 と同じ
|-◇分岐: 【1】 [ CSelf15[キー入力] が 0 と同じ ]の場合↓
||■変数操作: CSelf16[キー待ち時間]〜CSelf17[起動時キー押し禁止] = 0 + 0
||■ループ開始へ戻る
||■
|-◇分岐: 【2】 [ CSelf17[起動時キー押し禁止] が 1 と同じ ]の場合↓
||■ループ開始へ戻る
||■
|◇分岐終了◇
|■条件分岐(変数): 【1】 CSelf15[キー入力] が 10 と同じ
          【2】 CSelf15[キー入力] が 11 と同じ
|-◇分岐: 【1】 [ CSelf15[キー入力] が 10 と同じ ]の場合↓
||●ラベル「決定」に飛ぶ >>>>>>>>>>>>>>>>>>>>>>>>>
||■
|-◇分岐: 【2】 [ CSelf15[キー入力] が 11 と同じ ]の場合↓
||●ラベル「キャンセル」に飛ぶ >>>>>>>>>>>>>>>>>>>>>>>>>
||■
|◇分岐終了◇
|■条件分岐(変数): 【1】 CSelf16[キー待ち時間] が 1 以上
|-◇分岐: 【1】 [ CSelf16[キー待ち時間] が 1 以上 ]の場合↓
||■ループ開始へ戻る
||■
|◇分岐終了◇
|■条件分岐(変数): 【1】 CSelf27[乗っているか判断] が 1 と同じ
|-◇分岐: 【1】 [ CSelf27[乗っているか判断] が 1 と同じ ]の場合↓
||■ループ開始へ戻る
||■
|◇分岐終了◇

|▼ ■■■■■■■■■■カーソル移動処理
|■変数操作: CSelf16[キー待ち時間] = 12 + 0
|■条件分岐(変数): 【1】 CSelf15[キー入力] が 4 と同じ
          【2】 CSelf15[キー入力] が 6 と同じ
|-◇分岐: 【1】 [ CSelf15[キー入力] が 4 と同じ ]の場合↓
||▼ ■■■■■左キーを押した
||■変数操作: CSelf10[カーソル位置] -= 1 + 0
||■
|-◇分岐: 【2】 [ CSelf15[キー入力] が 6 と同じ ]の場合↓
||▼ ■■■■■右キーを押した
||■変数操作: CSelf10[カーソル位置] += 1 + 0
||■
|◇分岐終了◇
|■変数操作: CSelf10[カーソル位置] += 6 + 0
|■変数操作: CSelf10[カーソル位置] %= 6 + 0
|■変数操作: CSelf21[ピクチャ番号(位置+100)] = CSelf10[カーソル位置] + 100
|■変数操作+: CSelf24[X表示位置] = ピクチャ:CSelf21[ピクチャ番号(位置+100)] の X座標
|■変数操作+: CSelf25[Y表示位置] = ピクチャ:CSelf21[ピクチャ番号(位置+100)] の Y座標
|■ピクチャ移動:2 X:CSelf24[X表示位置] Y:CSelf25[Y表示位置] / 0(0)フレーム /
       パターン 同値 / 透 同値 / 表示形式:同値 / 角 同値 / 拡 同値 / カラー 同値
|■
◇ループここまで◇◇
■回数付きループ [ 0 ]回
|▼ ■■■■■■■■■■項目を決定した時の処理
|●ラベル地点「決定」 <<<<<<<<<<<<<<<<<<<<<<<<★
|■変数操作: Sys73:文・選択肢のマウス入力(1なら受付) = 1 + 0<クリックで文章の表示を消す場合は、この設定が必要
|■文章:項目「\cself[10]」を選択。
|■
◇ループここまで◇◇
■回数付きループ [ 0 ]回
|▼ ■■■■■■■■■■キャンセルした時の処理
|●ラベル地点「キャンセル」 <<<<<<<<<<<<<<<<<<<<<<<<★
|■
◇ループここまで◇◇
▼ ■■■■■■■■■■終了処理
●ラベル地点「終了」 <<<<<<<<<<<<<<<<<<<<<<<<★
■ピクチャ消去:1 〜 105 / 5(0)フレーム
■ウェイト:1 フレーム


▲トップへ戻る▲


  
■制作アドバイス

自作メニューを含めたオリジナルの自作システムを作る場合の制作アドバイスです。



▼まずはピクチャだけを表示してみよう!

自作メニューなどの複雑なイベント処理の作り方が分からない時には、
まずは簡単に設定できるものから作り始めると良いでしょう。

例えば…
ピクチャを1枚だけ表示してみる
決定キーを押したらSEが鳴るようにする
サブキーを押す度にピクチャの表示と消去を交互に実行する
と言った感じです。

こんな簡単な設定を行っても意味が無い」と思うかもしれませんが、
しかしどんなに複雑なイベント処理でも、最初は1個のイベントコマンドの設定から始まります。

実は複雑なイベント処理と言っても、実際の所は細かいイベント設定の集合体であり、
必要だと思うイベントを色々と追加していく内に徐々に複雑なイベント処理が完成します。

当ページの自作メニューの制作でも、最初は「横1×縦2」のような簡単な処理から作り始め、
そこから徐々にイベントを追加して、最終的に「主人公名を表示+マウス操作」と言った複雑な処理を作り上げています。

まずはピクチャを表示するだけの簡単なイベントを設定し、ピクチャの表示が出来たらカーソルの移動処理を設定。
カーソルの移動処理が出来たら、次に選択項目を決定する処理を設定するなど、
必要だと思う処理を1つずつ追加していくと、徐々に複雑なイベント処理を作る事ができます。



▼試作品を作ろう!

複雑な自作システムを作る場合は、試作品を作った方が良いでしょう。

以下はYADO作品「ニナと会話」の試作品と完成品の比較画像です。

試作品 完成品

試作品の段階では、取りあえず表示してみましたと言ったレベルであり、
画面のレイアウトが分かる最低限の画像しか表示していません。

試作品では…
●ゲーム画面の画面サイズはこれで良いのか。
●画面のレイアウトは見やすく、操作しやすいか。
●マウスポインタの移動に無駄な動きは無いか。
●文字やボタンの大きさはこれで良いのか。
●情報の表示やボタンなどの機能面で不足部分は無いか。
の部分を確認し、このまま制作を進めて良いのかを確認します。

ニナと会話」のようなオリジナルルールのゲームを作る場合は、ステージのイベント処理の方でも試作品を作り、
試作品を何度もプレイして、ゲームルールの問題点やステージ選択画面で何を表示するのかなどを確認します。

試作品を作ってから完成品を作るとなると、二度手間になって制作効率が悪いように思えますが、
しかしいきなり完成品から作り始めると、以下のような問題が発生する可能性があります。
●かなり制作を進めた所でゲームルールに欠陥が見つかり、制作続行が困難になる。
●度重なるゲームルールの変更や画面レイアウトの変更により、
 何度も修正(作り直し)が発生し、多くの制作時間を消費してしまう。

●イベントの修正や変数の使い方の変更が多くなる事でイベント設定が複雑化し、
 原因不明なバグが発生しやすくなったり、作業効率が悪くなったりする。

「試作品を作る」と言っても、試作品で特に問題が無ければ、そのまま完成品の制作へ移行する事ができます。

自作システムの制作に慣れてくると、
試作品の段階で完成品を意識したイベント設定(変数の使い方)を行うようになるでしょう。

例えば完成品では最大4人のパーティになる場合、
試作品の段階でピクチャ番号や変数番号を先に4人分確保しておくと言った感じです。



▼動作テストはこまめにやりましょう!

複雑な自作システムを制作する場合は、
少し設定したら動作テスト、少し設定したら動作テストを繰り返した方が良いでしょう。

「この設定は完璧だ!」と思っていても、一応動作テストは行った方が良いでしょう。

様々な条件で何度も動作テストを行う事で、意外な所で不具合が見つかる事があります。

◆自作メニューで不具合発見:例1

当ページの自作メニューの制作時に、自作メニューの起動をAキーを押して起動していました。

ほぼ自作メニューが完成した所で、Aキーによる自作メニューの起動ではなく、
マップイベントを決定キーで調べて自作メニューを起動する方法を試しました。

するとマップイベントに向かって決定キーを押した事で、
自作メニューを表示した瞬間に項目を決定してしまう不具合が発生しました。

この不具合を回避するため、セルフ変数[17:起動時キー押し禁止]を導入しました。

◆自作メニューで不具合発見:例2

ニナと会話」のオプション設定の自作メニューにて、
[決定][キャンセル][初期化]のボタンの押し方によって、不具合が発生しました。
[決定][キャンセル]を実行すると設定画面が閉じる仕様でした。

[1]【正常】設定画面を開く→ 設定変更 → [決定]
[2]【正常】設定画面を開く→ 設定変更 → [キャンセル]
[3]【正常】設定画面を開く→ 設定変更 → [初期化][決定]
[4]【正常】設定画面を開く→ 設定変更 → [初期化][キャンセル]
[5]【正常】設定画面を開く→ 設定変更 → [決定] → 設定画面を開く→ 設定変更 → [決定]
[6]【正常】設定画面を開く→ 設定変更 → [決定] → 設定画面を開く→ 設定変更 → [キャンセル]
[7]【正常】設定画面を開く→ 設定変更 → [決定] → 設定画面を開く→ [初期化][決定]
[8]【異常】設定画面を開く→ 設定変更 → [決定] → 設定画面を開く→ [初期化][キャンセル]

[1〜7]の操作方法では問題なかったのですが、
[8]の操作方法では、2回目の設定画面表示で[キャンセル]を実行しているので、
本来は1回目の「設定変更 → [決定]」の状態に戻るはずですが、
2回目の設定画面表示で[初期化]を押したせいで、
1回目の「設定変更 → [決定]」まで初期化してしまいました。
このようにボタンの押し方によっても不具合が発生する可能性があるため、
様々なパターンで動作テストを行う必要があります。


▲トップへ戻る▲



◎関連ページ

◆自作メニューの基礎講座
┗◆自作メニュー:横4×縦3

◆自作アイテムメニューを作る
◆回転型の自作メニューを作る

◆万能ウィンドウについて
┗◆万能ウィンドウの設定例

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