WOLF RPGエディター(ウディタ)/自作メニュー【サイトトップへ戻る】
■アイテムの一覧表の自作メニューを作る
(更新:2023/02/27)


所持しているアイテムの名前を一覧で表示する設定方法を紹介します。



◆当ページでは武器や防具も「アイテム」の名称で統一して記載しています。
◆当ページは処理構造を勉強するための「基礎ページ」になっているため、
 アイテムの「名前」と「所持数」だけを表示する簡易的な設定になっています。

◆マウスの操作に対応させる場合は、当ページをご覧頂いた上で、追加設定のページをご覧ください。

自作メニューに関する基礎説明は別のページに書かれています。
まだご覧頂いていない場合は、先に自作メニューの基礎講座をご覧ください。
【自作メニューの基礎講座を見る】

ショートカット
■アイテムの一覧表について
■万能ウィンドウとの違い
■ピクチャ番号について
■変数について
■試作品を作る
■試作品から完成品に仕上げる

動作見本用のサンプルデータ
ダウンロード後に右クリック→[すべて展開]で解凍し、
中に入っている「★このデータについて」をご覧ください。
動作確認用のサンプルは完成した状態のみが入っています。
試作品のデータなど、制作途中のデータが欲しい場合は、
当ページの各イベント設定例にある【イベントコード表示】
をご利用ください。


  
■アイテムの一覧表について

アイテムの一覧表の自作メニューはコモンイベントに設定します。



当ページの処理には、自作メニューを開くための「起動設定」がありません。

そのため、「特定キーが押されたら起動」「マップイベントを調べたら起動」など、
何らかの自作メニューを起動するイベントが必要になります。

起動方法に関しては自作メニューの基礎講座に書かれているので、そちらをご覧ください。
【自作メニューの基礎講座の「自作メニューの起動方法について」を見る】

制作中の動作テストは、マップイベントを調べるとコモンイベントが呼び出される設定で行うと良いでしょう。

■マップイベント

グラフィック:何らかの画像
起動条件:決定キーで実行

■イベントの挿入: コモン215:[ 自作アイテムメニュー ]

ゲーム開始位置のすぐ下に動作テスト用のマップイベントを設定すれば、
テストプレイの開始後にすぐに自作メニューを開く事ができます。





アイテムを持っているかどうかの判断は、
可変DB[7:┣所持アイテム個数][8:┣所持武器個数][9:┣所持防具個数]の「所持数が1以上=持っている」で判断します。

アイテム名はユーザーDB[2:アイテム][3:武器][4:防具]項目[0]から取得します。



動作テストの時には、可変DBのアイテムの所持個数を「1以上」にする事で、
ゲーム開始時からそのアイテムを持っている状態になります。



なお、可変DBの所持個数を元に戻すのが面倒な場合で、全ての所持個数を「0」にする場合は、
「データ数の設定」で「データ数=1」にして、データ[0]の所持個数を「0」にすれば、全ての所持個数が「0」になります。

ゲーム開始時に、いくつかのアイテムや武器を持っている状態でゲームを始めている場合は、
所持個数を変更する前に画面左下にある「ファイル出力:タイプ&全データ」で現在の設定状況を出力し、
動作テストが終わったら、出力したファイルを読み込めばすぐに元の所持個数に戻ります。

お店イベントを作成し、アイテムの購入&売却でアイテムの所持状態を変化させて動作テストを行う方法もあります。



イベントを設定する前に可変DB[20:一覧表用]を準備してください。
※可変DBのタイプ番号は「20」以外でも問題ありません。
※データ数は「1」のままで良いです。
※項目には数値タイプの項目「アイテムID」を準備してください。



今回の設定例では専用の可変DBを用意していますが、万能ウィンドウと一緒に自作メニューを表示しない場合は、
可変DB[19:万能ウィンドウ一時DB]を利用して設定しても問題ありません。

可変DB[19:万能ウィンドウ一時DB]の場合は、項目[1:項目コード]にアイテムIDを設定してください。



当ページでは「横1×縦12」の一覧表を作成します。

「横2以上」にするとアイテム名の表示やカーソルの移動処理が複雑化するため、当ページでは「横1」で設定します。

もしも「横2」にしたい場合は、当ページをご覧になった上で、
当ページの最下部にあるリンクから「横2×縦12」に改造するページをご覧ください。



当ページの設定例は、ゲーム画面のサイズ「320×240[x2]」に合わせた設定になっています。


▲トップへ戻る▲


  
■万能ウィンドウとの違い

万能ウィンドウは基本システムに用意されている機能であり、アイテムや特殊技能を選択する一覧を表示する時に使います。
【万能ウィンドウの説明を見る】

▼万能ウィンドウの表示例


当ページの処理も一応万能ウィンドウのような処理になっていますが、機能性よりも処理構造の解りやすさを重視しているため、
万能ウィンドウと比べるとかなり機能が簡略化されており、「万能ウィンドウの簡易版」と言った感じになっています。



万能ウィンドウの処理では、予め可変DB[19:万能ウィンドウ一時DB]に一覧で表示する情報を設定しておき、
その可変DB[19:万能ウィンドウ一時DB]の情報を読み取って一覧を表示しています。

▼可変DB[19:万能ウィンドウ一時DB]


当ページでも同じように自作メニュー専用の可変DBを準備して使用していますが、
保存する情報はアイテムIDのみになっています。



万能ウィンドウのアイテム名の表示では、「アイテム名」「×」「所持数」をまとめて1つのピクチャ番号で表示しています。

しかし「アイテム名」「×」「所持数」を1つのピクチャにまとめて表示する設定がかなり難しいので、
当ページの設定では「アイテム名」と「×」と「所持数」は別々のピクチャ番号で表示しています。
【万能ウィンドウの「アイテム名×所持数」の表示設定を見る】



万能ウィンドウでは、項目の文字数が多い場合は、自動的に左右の拡大率を縮小して表示します。




当ページも長い項目名の場合は横倍率が小さくなりますが、
縮小するのはアイテム名のみになるため、「×」や所持数の横倍率はそのままになります。





万能ウィンドウのスクロール設定では、スクロール時に項目が移動してスクロールする演出が設定されていますが、
当ページには項目が移動してスクロールするような設定は無く、スクロール時にはパッと表示が切り替わります。



万能ウィンドウの右側に表示されるスクロールバーは、当ページの設定にはありません。



但し「スクロールバーを追加」のページにある設定を追加すれば、スクロールバーの表示が可能です。

もしもスクロールバーを表示したい場合は、当ページをご覧になった上で、追加設定を行ってください。



万能ウィンドウは画面上に1つしか表示する事ができません。

当ページの自作メニューも画面上に1つしか表示する事ができませんが、
一覧表ごとにピクチャ番号可変DBを変える事で、複数の一覧表を同時に表示する事ができます。

また万能ウィンドウと一緒に表示する事もできます。


▲トップへ戻る▲


  
■ピクチャ番号について

当ページのピクチャ番号は、以下のように使用します。

ピクチャー
番号 使用内容
1 ウィンドウ画像
10 カーソル画像
20 スクロール可能を示すアイコン[▲]
21 スクロール可能を示すアイコン[▼]
100〜199 アイテム名
200〜299 アイテム名と所持数の間に表示する「×」
300〜399 所持数

アイテム名の表示で使用するピクチャ番号は[100〜111]、[200〜211]、[300〜311]の範囲で使用します。



ピクチャ番号[100〜199][200〜299][300〜399]の下二桁は連動して設定します。

例えばアイテム名をピクチャ番号[108]で表示する場合は、
「×」の表示はピクチャ番号[208]で表示し、
所持数の表示はピクチャ番号[308]で表示します。



基本システムの表示(メニュー画面・戦闘画面・万能ウィンドウなど)と一緒に表示する場合は、
ピクチャ番号[10000〜19999]以外を使用してください。


▲トップへ戻る▲


  
■変数について

イベント処理で使う変数は、コモンイベントのセルフ変数を使います。

コモンイベントのセルフ変数
番号 名前 使用内容
10 キー入力 押したキーのキー番号を取得。
【キー番号の一覧を見る】
11 キー待ち時間 方向キーを押し続けた時に、次にカーソルが移動するまでの時間をカウントします。
カーソルが移動すると「12」が設定され、1フレームごとに「減算1」になり、
「0以下」になると再びカーソルの移動が可能になります。
方向キーを離すと「0」になるので、方向キーを連打するとカーソルが速く移動します。
12 起動時キー押し禁止 自作メニューの起動時に何らかのキーを押し続けている場合は、
一度キーを離さないとキー操作ができないようにする時に使用します。
起動時は「1」を設定し、キーを押していない状態になると「0」になり、
それ以降キー操作ができるようになります。
20 カーソル位置 メニュー画面上のカーソルの位置を設定。
一番上の行が「0」、一番下の行が「11」。
21 スクロール行数 現在スクロールしている行数を設定。
22 スクロール最大行 スクロールできる最大行数を設定。
画面上には12項目を表示する事ができるので、
15種類のアイテムを所持している場合のスクロール最大行は「3」になります。
23 所持有り総数 所持しているアイテムの総数です。
武器や防具の所持有りも一緒にカウントされます。
24 最下行左端位置 スクロールして最も下にある行の左端のカーソル位置を設定。
25 ピクチャ[100〜] アイテム名を表示するピクチャ番号を設定。
26 ピクチャ[200〜] アイテム名と所持数の間に表示する「×」のピクチャ番号を設定。
27 ピクチャ[300〜] 所持数を表示するピクチャ番号を設定。
30 X位置[100〜] アイテム名を表示するピクチャのX表示位置を設定。
31 X位置[200〜] アイテム名と所持数の間に表示する「×」のピクチャのX表示位置を設定。
32 X位置[300〜] 所持数を表示するピクチャのX表示位置を設定。
35 Y位置 アイテム名、「×」、所持数のピクチャのY表示位置を設定。
カーソルのY表示位置の設定でも使用。
40 全ID数 ユーザーDB[2:アイテム][3:武器][4:防具]のデータID数を取得する時に使用。
41 処理中ID アイテム、武器、防具のデータIDを設定し、
ユーザーDBからアイテム名を取得したり、可変DBから所持数を取得する時に使用。
42 所持数取得 可変DBの所持数を取得する時に使用。
43 アイテムID アイテムIDを取得する時に使用。
44 ユーザータイプID 処理中のアイテムのアイテム情報を保存したユーザーDBのタイプ番号を設定。
アイテム「2」、武器「3」、防具「4」。
45 可変タイプID 処理中のアイテムの所持数を保存した可変DBのタイプ番号を設定。
アイテム「7」、武器「8」、防具「9」。
46 計算用 一時的な計算処理で使用。
当ページではアイテム名の拡大率の計算で使用。

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



解りやすさを重視して、使用する変数番号の間隔を空けて設定しています。

事前に上記の番号のとおりに名前を設定しておくと、この後のイベント設定が楽になります。


▲トップへ戻る▲


  
■試作品を作る

まずは最低限の設定を行った「試作品」を作ります。

▼試作品の表示見本


最初から本格的なアイテムメニューを作ってしまうと、あとで修正するのに時間がかかってしまい、
また修正時に設定ミスをしてしまう可能性もあります。

そのため、仮の文字を設定した試作品を作って動作確認を行った上で、本格的な処理を作ります。

今回は「全角8文字」が表示されるように設定するため、
アイテム名は全角文字で「あいうえおかきく」を設定し、所持数は半角数字で「00」を設定します。

なお、ウディタ[3.00]の初期設定になっているフォント「Meiryo」半角文字の横幅がちょっと広いため、
全角1文字の横幅=半角2文字分の横幅」ではありません。





▼ピクチャの表示

まずはピクチャの表示設定を行います。

今回設定するピクチャの表示設定は以下のとおりです。



ピクチャー
番号 使用内容 位置
1 ウィンドウ画像 中心 160 120
10 カーソル画像 左上 93 (表示行×16)+24
20 スクロール可能を示すアイコン[▲] 中心 160 19
21 スクロール可能を示すアイコン[▼] 中心 160 221
100〜199 アイテム名 左上 97 (表示行×16)+26
200〜299 アイテム名と所持数の間に表示する「×」 左上 196 (表示行×16)+26
300〜399 所持数 右上 223 (表示行×16)+26

アイテム名のY表示位置は「(表示行×16)+26」の計算で算出します。
一番上の行は「0行目」なので「(0×16)+26」の計算によってY表示位置は「26」、
一番下の行は「11行目」なので「(11×16)+26」の計算によってY表示位置は「202」になります。

カーソルの画像はアイテム名の画像サイズよりも少し大きい画像で表示するため、
表示位置の設定がアイテム名の設定とは少々異なります。

所持数は「位置:右上」で表示します。
右上にする事で、所持数が1桁でも2桁でも右側に揃えて表示する事ができます。

位置「左上」の場合 位置「右上」の場合
アイテム01 × 12
アイテム02 × 8
アイテム03 × 2
アイテム04 × 26
アイテム05 × 1
アイテム06 × 5
アイテム07 × 15
アイテム08 × 2
アイテム01 × 12
アイテム02 × 8
アイテム03 × 2
アイテム04 × 26
アイテム05 × 1
アイテム06 × 5
アイテム07 × 15
アイテム08 × 2



ピクチャ番号や表示位置の設定では「変数呼び出し値(セルフ変数[30]=1600030)」を使って変数の値で設定します。
【変数呼び出し値の説明を見る】



▼ピクチャ[1](ウィンドウ画像)




▼ピクチャ[10](カーソル画像)


※表示形式は[加算]にしてください。
【表示形式[加算]の説明を見る】



▼ピクチャ[20](アイコン[▲])


※文字サイズを変える特殊文字「\f[数値]」を使って少し小さく表示します。

※「▲」の文字は「さんかく」を入力して変換すれば出てきます。




▼ピクチャ[21](アイコン[▼])




▼ピクチャ[100〜199](アイテム名)




▼ピクチャ[200〜299]([×])


※「×」の文字は「かける」を入力して変換すれば出てきます。



▼ピクチャ[300〜399](所持数)




カーソルの画像は【エフェクト】を使って点滅するように設定します。





【イベントコード表示】

■ピクチャ表示:1 [中心]ウィンドウ「SystemFile/WindowBase_amania.png」サイズ[150,206] X:160 Y:120 / 0(0)フレーム /
       パターン 1 / 透 255 / 通常 / 角 0 / 拡 100% / カラー R[100] G[100] B[100]
■ピクチャ表示:10 [左上]ウィンドウ「SystemFile/CursorBase.png」サイズ[134,16] X:93 Y:24 / 0(0)フレーム /
       パターン 1 / 透 255 / 加算 / 角 0 / 拡 100% / カラー R[100] G[100] B[100]
■ピクチャエフェクト:10 [点滅A(明滅)] R100/G100/B100 明滅間隔(30)フレーム
■ピクチャ表示:20 [中心]文字列[\f[10]▲] X:160 Y:19 / 0(0)フレーム /
       パターン 1 / 透 255 / 通常 / 角 0 / 拡 100% / カラー R[100] G[100] B[100]
■ピクチャ表示:21 [中心]文字列[\f[10]▼] X:160 Y:221 / 0(0)フレーム /
       パターン 1 / 透 255 / 通常 / 角 0 / 拡 100% / カラー R[100] G[100] B[100]
■変数操作: CSelf25[ピクチャ[100〜]] = 100 + 0
■変数操作: CSelf26[ピクチャ[200〜]] = 200 + 0
■変数操作: CSelf27[ピクチャ[300〜]] = 300 + 0
■変数操作: CSelf30[X位置[100〜]] = 97 + 0
■変数操作: CSelf31[X位置[200〜]] = 196 + 0
■変数操作: CSelf32[X位置[300〜]] = 223 + 0
■変数操作: CSelf35[Y位置] = 26 + 0
■回数付きループ [ 12 ]回
|■ピクチャ表示:CSelf25[ピクチャ[100〜]] [左上]文字列[1234567890123456]
       X:CSelf30[X位置[100〜]] Y:CSelf35[Y位置] / 0(0)フレーム /
       パターン 1 / 透 255 / 通常 / 角 0 / 拡 100% / カラー R[100] G[100] B[100]
|■ピクチャ表示:CSelf26[ピクチャ[200〜]] [左上]文字列[×]
       X:CSelf31[X位置[200〜]] Y:CSelf35[Y位置] / 0(0)フレーム /
       パターン 1 / 透 255 / 通常 / 角 0 / 拡 100% / カラー R[100] G[100] B[100]
|■ピクチャ表示:CSelf27[ピクチャ[300〜]] [右上]文字列[00]
       X:CSelf32[X位置[300〜]] Y:CSelf35[Y位置] / 0(0)フレーム /
       パターン 1 / 透 255 / 通常 / 角 0 / 拡 100% / カラー R[100] G[100] B[100]
|■変数操作: CSelf25[ピクチャ[100〜]]〜CSelf27[ピクチャ[300〜]] += 1 + 0
|■変数操作: CSelf35[Y位置] += 16 + 0
|■
◇ループここまで◇◇

★動作テスト

テストプレイでゲームを開始し、自作メニューを実行すると画面上に自作メニューが表示されます。

まだカーソルの移動はできませんが、自作メニューの表示状態をチェックする事はできます。

必要ならば画像サイズや表示位置の調整を行ってください。



▼キー処理

上記の設定にキー処理を追加します。



キー入力の最初には、ラベル「キー入力」を設定します。
このラベル「キー入力」は、方向キーを押してカーソルを移動する際に、
ラベル「キー入力」へジャンプして来て、カーソルの表示位置を変更します。



決定キーを押した時には【ループ中断】を実行し、コメント「決定の処理」の所へ移動します。
そして決定キーを押した行数(0〜11)が【文章の表示】で表示されるようにします。

決定キーかキャンセルキーを押した場合は、自作メニューが閉じるように設定します。



【イベントコード表示】

■変数操作: CSelf12[起動時キー押し禁止] = 1 + 0
■ピクチャ表示:1 [中心]ウィンドウ「SystemFile/WindowBase_amania.png」サイズ[150,206] X:160 Y:120 / 0(0)フレーム /
       パターン 1 / 透 255 / 通常 / 角 0 / 拡 100% / カラー R[100] G[100] B[100]
■ピクチャ表示:10 [左上]ウィンドウ「SystemFile/CursorBase.png」サイズ[134,16] X:93 Y:24 / 0(0)フレーム /
       パターン 1 / 透 255 / 加算 / 角 0 / 拡 100% / カラー R[100] G[100] B[100]
■ピクチャエフェクト:10 [点滅A(明滅)] R100/G100/B100 明滅間隔(30)フレーム
■ピクチャ表示:20 [中心]文字列[\f[10]▲] X:160 Y:19 / 0(0)フレーム /
       パターン 1 / 透 255 / 通常 / 角 0 / 拡 100% / カラー R[100] G[100] B[100]
■ピクチャ表示:21 [中心]文字列[\f[10]▼] X:160 Y:221 / 0(0)フレーム /
       パターン 1 / 透 255 / 通常 / 角 0 / 拡 100% / カラー R[100] G[100] B[100]
■変数操作: CSelf25[ピクチャ[100〜]] = 100 + 0
■変数操作: CSelf26[ピクチャ[200〜]] = 200 + 0
■変数操作: CSelf27[ピクチャ[300〜]] = 300 + 0
■変数操作: CSelf30[X位置[100〜]] = 97 + 0
■変数操作: CSelf31[X位置[200〜]] = 196 + 0
■変数操作: CSelf32[X位置[300〜]] = 223 + 0
■変数操作: CSelf35[Y位置] = 26 + 0
■回数付きループ [ 12 ]回
|■ピクチャ表示:CSelf25[ピクチャ[100〜]] [左上]文字列[1234567890123456]
       X:CSelf30[X位置[100〜]] Y:CSelf35[Y位置] / 0(0)フレーム /
       パターン 1 / 透 255 / 通常 / 角 0 / 拡 100% / カラー R[100] G[100] B[100]
|■ピクチャ表示:CSelf26[ピクチャ[200〜]] [左上]文字列[×]
       X:CSelf31[X位置[200〜]] Y:CSelf35[Y位置] / 0(0)フレーム /
       パターン 1 / 透 255 / 通常 / 角 0 / 拡 100% / カラー R[100] G[100] B[100]
|■ピクチャ表示:CSelf27[ピクチャ[300〜]] [右上]文字列[00]
       X:CSelf32[X位置[300〜]] Y:CSelf35[Y位置] / 0(0)フレーム /
       パターン 1 / 透 255 / 通常 / 角 0 / 拡 100% / カラー R[100] G[100] B[100]
|■変数操作: CSelf25[ピクチャ[100〜]]〜CSelf27[ピクチャ[300〜]] += 1 + 0
|■変数操作: CSelf35[Y位置] += 16 + 0
|■
◇ループここまで◇◇
▼ ■■■■■■■■■■キー処理
●ラベル地点「キー処理」 <<<<<<<<<<<<<<<<<<<<<<<<★
■変数操作: CSelf35[Y位置] = CSelf20[カーソル位置] * 16
■変数操作: CSelf35[Y位置] += 24 + 0
■ピクチャ移動:10 X:93 Y:CSelf35[Y位置] / 0(0)フレーム /
       パターン 1 / 透 255 / 表示形式:同値 / 角 0 / 拡 同値 / カラー 同値
■ループ開始
|■ウェイト:1 フレーム
|■変数操作: CSelf11[キー待ち時間] -= 1 + 0
|■キー入力:CSelf10[キー入力] 上下(8,2) 決定(10) キャンセル(11)
|■条件分岐(変数): 【1】 CSelf10[キー入力] が 0 と同じ
          【2】 CSelf12[起動時キー押し禁止] が 1 と同じ
|-◇分岐: 【1】 [ CSelf10[キー入力] が 0 と同じ ]の場合↓
| |■変数操作: CSelf11[キー待ち時間]〜CSelf12[起動時キー押し禁止] = 0 + 0
| |■ループ開始へ戻る
| |■
|-◇分岐: 【2】 [ CSelf12[起動時キー押し禁止] が 1 と同じ ]の場合↓
| |■ループ開始へ戻る
| |■
|◇分岐終了◇
|■条件分岐(変数): 【1】 CSelf10[キー入力] が 10 と同じ 【2】 CSelf10[キー入力] が 11 と同じ
|-◇分岐: 【1】 [ CSelf10[キー入力] が 10 と同じ ]の場合↓
| |▼ 決定
| |■ループ中断
| |■
|-◇分岐: 【2】 [ CSelf10[キー入力] が 11 と同じ ]の場合↓
| |▼ キャンセル
| |●ラベル「終了」に飛ぶ >>>>>>>>>>>>>>>>>>>>>>>>>
| |■
|◇分岐終了◇
|■条件分岐(変数): 【1】 CSelf11[キー待ち時間] が 1 以上
|-◇分岐: 【1】 [ CSelf11[キー待ち時間] が 1 以上 ]の場合↓
| |■ループ開始へ戻る
| |■
|◇分岐終了◇
|■変数操作: CSelf11[キー待ち時間] = 12 + 0
|▼ カーソル移動処理
|■条件分岐(変数): 【1】 CSelf10[キー入力] が 8 と同じ 【2】 CSelf10[キー入力] が 2 と同じ
|-◇分岐: 【1】 [ CSelf10[キー入力] が 8 と同じ ]の場合↓
| |▼ 上キーを押した
| |■条件分岐(変数): 【1】 CSelf20[カーソル位置] が 1 以上
| |-◇分岐: 【1】 [ CSelf20[カーソル位置] が 1 以上 ]の場合↓
| | |■変数操作: CSelf20[カーソル位置] -= 1 + 0
| | |●ラベル「キー処理」に飛ぶ >>>>>>>>>>>>>>>>>>>>>>>>>
| | |■
| |◇分岐終了◇
| |■変数操作: CSelf20[カーソル位置] += 11 + 0
| |●ラベル「キー処理」に飛ぶ >>>>>>>>>>>>>>>>>>>>>>>>>
| |■
|-◇分岐: 【2】 [ CSelf10[キー入力] が 2 と同じ ]の場合↓
| |▼ 下キーを押した
| |■条件分岐(変数): 【1】 CSelf20[カーソル位置] が 10 以下
| |-◇分岐: 【1】 [ CSelf20[カーソル位置] が 10 以下 ]の場合↓
| | |■変数操作: CSelf20[カーソル位置] += 1 + 0
| | |●ラベル「キー処理」に飛ぶ >>>>>>>>>>>>>>>>>>>>>>>>>
| | |■
| |◇分岐終了◇
| |■変数操作: CSelf20[カーソル位置] -= 11 + 0
| |●ラベル「キー処理」に飛ぶ >>>>>>>>>>>>>>>>>>>>>>>>>
| |■
|◇分岐終了◇
|■
◇ループここまで◇◇
▼ ■■■■■■■■■■決定の処理
■文章:\cself[20]行目を決定。
●ラベル地点「終了」 <<<<<<<<<<<<<<<<<<<<<<<<★
■ピクチャ消去:1 〜 399 / 0(0)フレーム


★動作テスト

カーソルの動きや「決定→行数表示→終了」などの動作確認を行ってください。



これで試作品は完成です。

この試作品を基に完成品を作ります。


▲トップへ戻る▲


  
■試作品から完成品に仕上げる

試作品を基にアイテムの一覧表を表示する自作メニューを完成させます。



▼初期設定(所持しているアイテムの種類数をカウント)

ここで設定する【ループ処理】では全てのアイテムの所持数をチェックして、
所持数が「1以上」のアイテムのアイテムID可変DB[20:一覧表用]に保存し、
セルフ[23:所持有り総数]に「加算1」を設定します。



可変DB[20:一覧表用]に保存するアイテムIDは「ユーザーDBのタイプ番号×10000+データID」の値になります。

アイテム[3:エリクサー]の場合は「ユーザーDB[2:アイテム]×10000+3」の計算で「20003」が可変DBに保存されます。

武器[5:木の杖]の場合は「ユーザーDB[3:武器]×10000+5」の計算で「30005」が可変DBに保存されます。

防具[12:ナイトシールド]の場合は「ユーザーDB[4:防具]×10000+12」の計算で「40012」が可変DBに保存されます。



最初にあるウィンドウやカーソルの画像を表示する設定は、試作品の設定のままで問題ありません。

【イベントコード表示】

■変数操作: CSelf12[起動時キー押し禁止] = 1 + 0
■ピクチャ表示:1 [中心]ウィンドウ「SystemFile/WindowBase_amania.png」サイズ[150,206] X:160 Y:120 / 0(0)フレーム /
       パターン 1 / 透 255 / 通常 / 角 0 / 拡 100% / カラー R[100] G[100] B[100]
■ピクチャ表示:10 [左上]ウィンドウ「SystemFile/CursorBase.png」サイズ[134,16] X:93 Y:24 / 0(0)フレーム /
       パターン 1 / 透 255 / 加算 / 角 0 / 拡 100% / カラー R[100] G[100] B[100]
■ピクチャエフェクト:10 [点滅A(明滅)] R100/G100/B100 明滅間隔(30)フレーム

▼ ■■■■■■■■■■所持有り総数をチェック
■変数操作: CSelf20[カーソル位置]〜CSelf23[所持有り総数] = 0 + 0
▼ アイテムの所持数1以上
■可変DB書込:[タイプ 一覧表用(20) を初期化]
■DB読込(可変): CSelf40[全ID数] = 可変DB[タイプ┣所持アイテム個数(7)のデータ数]
■変数操作: CSelf41[処理中ID] = 0 + 0
■回数付きループ [ CSelf40[全ID数] ]回
|■DB読込(可変): CSelf42[所持数取得] = 可変DB[ ┣所持アイテム個数 : CSelf41[処理中ID] : 0 ] (7 : - : 所持個数)
|■条件分岐(変数): 【1】 CSelf42[所持数取得] が 1 以上
|-◇分岐: 【1】 [ CSelf42[所持数取得] が 1 以上 ]の場合↓
| |■変数操作: CSelf43[アイテムID] = CSelf41[処理中ID] + 20000
| |■可変DB書込:DB[ 一覧表用 : CSelf23[所持有り総数] : 0 ] (20 : - : アイテムID) = CSelf43[アイテムID]
| |■変数操作: CSelf23[所持有り総数] += 1 + 0
| |■
|◇分岐終了◇
|■変数操作: CSelf41[処理中ID] += 1 + 0
|■
◇ループここまで◇◇
▼ 武器の所持数1以上
■DB読込(可変): CSelf40[全ID数] = 可変DB[タイプ┣所持武器個数(8)のデータ数]
■変数操作: CSelf41[処理中ID] = 0 + 0
■回数付きループ [ CSelf40[全ID数] ]回
|■DB読込(可変): CSelf42[所持数取得] = 可変DB[ ┣所持武器個数 : CSelf41[処理中ID] : 0 ] (8 : - : 所持個数)
|■条件分岐(変数): 【1】 CSelf42[所持数取得] が 1 以上
|-◇分岐: 【1】 [ CSelf42[所持数取得] が 1 以上 ]の場合↓
| |■変数操作: CSelf43[アイテムID] = CSelf41[処理中ID] + 30000
| |■可変DB書込:DB[ 一覧表用 : CSelf23[所持有り総数] : 0 ] (20 : - : アイテムID) = CSelf43[アイテムID]
| |■変数操作: CSelf23[所持有り総数] += 1 + 0
| |■
|◇分岐終了◇
|■変数操作: CSelf41[処理中ID] += 1 + 0
|■
◇ループここまで◇◇
▼ 防具の所持数1以上
■DB読込(可変): CSelf40[全ID数] = 可変DB[タイプ┗所持防具個数(9)のデータ数]
■変数操作: CSelf41[処理中ID] = 0 + 0
■回数付きループ [ CSelf40[全ID数] ]回
|■DB読込(可変): CSelf42[所持数取得] = 可変DB[ ┗所持防具個数 : CSelf41[処理中ID] : 0 ] (9 : - : 所持個数)
|■条件分岐(変数): 【1】 CSelf42[所持数取得] が 1 以上
|-◇分岐: 【1】 [ CSelf42[所持数取得] が 1 以上 ]の場合↓
| |■変数操作: CSelf43[アイテムID] = CSelf41[処理中ID] + 40000
| |■可変DB書込:DB[ 一覧表用 : CSelf23[所持有り総数] : 0 ] (20 : - : アイテムID) = CSelf43[アイテムID]
| |■変数操作: CSelf23[所持有り総数] += 1 + 0
| |■
|◇分岐終了◇
|■変数操作: CSelf41[処理中ID] += 1 + 0
|■
◇ループここまで◇◇
■変数操作: CSelf22[スクロール最大行] = CSelf23[所持有り総数] - 12
■変数操作: CSelf22[スクロール最大行] 下限= 0 + 0
■デバッグ文:所持有り総数:\cself[23]

■ピクチャ表示:20 [中心]文字列[\f[10]▲] X:160 Y:19 / 0(0)フレーム /
       パターン 1 / 透 255 / 通常 / 角 0 / 拡 100% / カラー R[100] G[100] B[100]
■ピクチャ表示:21 [中心]文字列[\f[10]▼] X:160 Y:221 / 0(0)フレーム /
       パターン 1 / 透 255 / 通常 / 角 0 / 拡 100% / カラー R[100] G[100] B[100]
■変数操作: CSelf25[ピクチャ[100〜]] = 100 + 0
■変数操作: CSelf26[ピクチャ[200〜]] = 200 + 0
■変数操作: CSelf27[ピクチャ[300〜]] = 300 + 0
■変数操作: CSelf30[X位置[100〜]] = 97 + 0
■変数操作: CSelf31[X位置[200〜]] = 196 + 0
■変数操作: CSelf32[X位置[300〜]] = 223 + 0
■変数操作: CSelf35[Y位置] = 26 + 0
■回数付きループ [ 12 ]回
|■ピクチャ表示:CSelf25[ピクチャ[100〜]] [左上]文字列[1234567890123456]
       X:CSelf30[X位置[100〜]] Y:CSelf35[Y位置] / 0(0)フレーム /
       パターン 1 / 透 255 / 通常 / 角 0 / 拡 100% / カラー R[100] G[100] B[100]
|■ピクチャ表示:CSelf26[ピクチャ[200〜]] [左上]文字列[×]
       X:CSelf31[X位置[200〜]] Y:CSelf35[Y位置] / 0(0)フレーム /
       パターン 1 / 透 255 / 通常 / 角 0 / 拡 100% / カラー R[100] G[100] B[100]
|■ピクチャ表示:CSelf27[ピクチャ[300〜]] [右上]文字列[00]
       X:CSelf32[X位置[300〜]] Y:CSelf35[Y位置] / 0(0)フレーム /
       パターン 1 / 透 255 / 通常 / 角 0 / 拡 100% / カラー R[100] G[100] B[100]
|■変数操作: CSelf25[ピクチャ[100〜]]〜CSelf27[ピクチャ[300〜]] += 1 + 0
|■変数操作: CSelf35[Y位置] += 16 + 0
|■
◇ループここまで◇◇
▼ ■■■■■■■■■■キー処理
●ラベル地点「キー処理」 <<<<<<<<<<<<<<<<<<<<<<<<★
■変数操作: CSelf35[Y位置] = CSelf20[カーソル位置] * 16
■変数操作: CSelf35[Y位置] += 24 + 0
■ピクチャ移動:10 X:93 Y:CSelf35[Y位置] / 0(0)フレーム /
       パターン 1 / 透 255 / 表示形式:同値 / 角 0 / 拡 同値 / カラー 同値
■ループ開始
|■ウェイト:1 フレーム
|■変数操作: CSelf11[キー待ち時間] -= 1 + 0
|■キー入力:CSelf10[キー入力] 上下(8,2) 決定(10) キャンセル(11)
|■条件分岐(変数): 【1】 CSelf10[キー入力] が 0 と同じ 【2】 CSelf12[起動時キー押し禁止] が 1 と同じ
|-◇分岐: 【1】 [ CSelf10[キー入力] が 0 と同じ ]の場合↓
| |■変数操作: CSelf11[キー待ち時間]〜CSelf12[起動時キー押し禁止] = 0 + 0
| |■ループ開始へ戻る
| |■
|-◇分岐: 【2】 [ CSelf12[起動時キー押し禁止] が 1 と同じ ]の場合↓
| |■ループ開始へ戻る
| |■
|◇分岐終了◇
|■条件分岐(変数): 【1】 CSelf10[キー入力] が 10 と同じ
          【2】 CSelf10[キー入力] が 11 と同じ
|-◇分岐: 【1】 [ CSelf10[キー入力] が 10 と同じ ]の場合↓
| |▼ 決定
| |■ループ中断
| |■
|-◇分岐: 【2】 [ CSelf10[キー入力] が 11 と同じ ]の場合↓
| |▼ キャンセル
| |●ラベル「終了」に飛ぶ >>>>>>>>>>>>>>>>>>>>>>>>>
| |■
|◇分岐終了◇
|■条件分岐(変数): 【1】 CSelf11[キー待ち時間] が 1 以上
|-◇分岐: 【1】 [ CSelf11[キー待ち時間] が 1 以上 ]の場合↓
| |■ループ開始へ戻る
| |■
|◇分岐終了◇
|■変数操作: CSelf11[キー待ち時間] = 12 + 0
|▼ カーソル移動処理
|■条件分岐(変数): 【1】 CSelf10[キー入力] が 8 と同じ 【2】 CSelf10[キー入力] が 2 と同じ
|-◇分岐: 【1】 [ CSelf10[キー入力] が 8 と同じ ]の場合↓
| |▼ 上キーを押した
| |■条件分岐(変数): 【1】 CSelf20[カーソル位置] が 1 以上
| |-◇分岐: 【1】 [ CSelf20[カーソル位置] が 1 以上 ]の場合↓
| | |■変数操作: CSelf20[カーソル位置] -= 1 + 0
| | |●ラベル「キー処理」に飛ぶ >>>>>>>>>>>>>>>>>>>>>>>>>
| | |■
| |◇分岐終了◇
| |■変数操作: CSelf20[カーソル位置] += 11 + 0
| |●ラベル「キー処理」に飛ぶ >>>>>>>>>>>>>>>>>>>>>>>>>
| |■
|-◇分岐: 【2】 [ CSelf10[キー入力] が 2 と同じ ]の場合↓
| |▼ 下キーを押した
| |■条件分岐(変数): 【1】 CSelf20[カーソル位置] が 10 以下
| |-◇分岐: 【1】 [ CSelf20[カーソル位置] が 10 以下 ]の場合↓
| | |■変数操作: CSelf20[カーソル位置] += 1 + 0
| | |●ラベル「キー処理」に飛ぶ >>>>>>>>>>>>>>>>>>>>>>>>>
| | |■
| |◇分岐終了◇
| |■変数操作: CSelf20[カーソル位置] -= 11 + 0
| |●ラベル「キー処理」に飛ぶ >>>>>>>>>>>>>>>>>>>>>>>>>
| |■
|◇分岐終了◇
|■
◇ループここまで◇◇
▼ ■■■■■■■■■■決定の処理
■文章:\cself[20]行目を決定。
●ラベル地点「終了」 <<<<<<<<<<<<<<<<<<<<<<<<★
■ピクチャ消去:1 〜 399 / 0(0)フレーム

★動作テスト

現段階で動作テストを行った場合のメニュー画面の表示は、試作品と変わらず「あいうえおかきく×00」になります。

現段階の動作テストで確認する点は、デバッグウィンドウに表示されるセルフ[23:所持有り総数]の値です。

例えばアイテム「薬草」「癒しの水」「魔力の水」の3種類を持っている場合は「セルフ23=3」になるため、
デバッグウィンドウには「所持有り総数:3」が表示されます。



▼持っているアイテム名を表示

最初の所にラベル「アイテム名表示」を設定します。

このラベル「アイテム名表示」はメニュー画面の表示を更新する時に、
ラベル「アイテム名表示」へジャンプして表示を更新します。



可変DB[20:一覧表用]に保存したアイテムIDを基にユーザーDB[2〜4]から名前の情報を取得して表示します。

また可変DB[7〜9]から所持数の情報を取得して表示します。



ピクチャの文字列の設定は、以下のように変更します。

ピクチャー
番号 変更前文字列 変更後文字列
100〜199 あいうえおかきく \udb[\cself[44]:\cself[43]:0]
200〜299 × ×
300〜399 00 \cdb[\cself[45]:\cself[43]:0]



セルフ[21:スクロール行数]の値が「1以上」の場合は、その行数分の可変DB[20:一覧表用]のデータIDがパスされます。

例えばアイテム[A][B][C]が可変DB[20:一覧表用]に登録されている場合、通常は[A]から順に表示していきますが、
セルフ[21:スクロール行数]の値が「2」の場合は、最初の2つ([A][B])は表示せず、[C]からの表示になります。



アイテム名が半角16文字より長い場合は、横拡大率を小さくして表示します。

▼92行目の設定


※座標は「相対モード」にチェックを入れて「X=0」「Y=0」を設定。

※拡大率は「別々」にチェックを入れて「横:1600046」を設定。




ピクチャ[20〜21]([▲][▼]の表示)を表示するイベントコマンドは、
設定内容は変わっていませんが、イベントコマンドの位置が条件分岐の中に移動しています。

【イベントコード表示】

■変数操作: CSelf12[起動時キー押し禁止] = 1 + 0
■ピクチャ表示:1 [中心]ウィンドウ「SystemFile/WindowBase_amania.png」サイズ[150,206] X:160 Y:120 / 0(0)フレーム /
       パターン 1 / 透 255 / 通常 / 角 0 / 拡 100% / カラー R[100] G[100] B[100]
■ピクチャ表示:10 [左上]ウィンドウ「SystemFile/CursorBase.png」サイズ[134,16] X:93 Y:24 / 0(0)フレーム /
       パターン 1 / 透 255 / 加算 / 角 0 / 拡 100% / カラー R[100] G[100] B[100]
■ピクチャエフェクト:10 [点滅A(明滅)] R100/G100/B100 明滅間隔(30)フレーム
▼ ■■■■■■■■■■所持有り総数をチェック
■変数操作: CSelf20[カーソル位置]〜CSelf23[所持有り総数] = 0 + 0
▼ アイテムの所持数1以上
■可変DB書込:[タイプ 一覧表用(20) を初期化]
■DB読込(可変): CSelf40[全ID数] = 可変DB[タイプ┣所持アイテム個数(7)のデータ数]
■変数操作: CSelf41[処理中ID] = 0 + 0
■回数付きループ [ CSelf40[全ID数] ]回
|■DB読込(可変): CSelf42[所持数取得] = 可変DB[ ┣所持アイテム個数 : CSelf41[処理中ID] : 0 ] (7 : - : 所持個数)
|■条件分岐(変数): 【1】 CSelf42[所持数取得] が 1 以上
|-◇分岐: 【1】 [ CSelf42[所持数取得] が 1 以上 ]の場合↓
| |■変数操作: CSelf43[アイテムID] = CSelf41[処理中ID] + 20000
| |■可変DB書込:DB[ 一覧表用 : CSelf23[所持有り総数] : 0 ] (20 : - : アイテムID) = CSelf43[アイテムID]
| |■変数操作: CSelf23[所持有り総数] += 1 + 0
| |■
|◇分岐終了◇
|■変数操作: CSelf41[処理中ID] += 1 + 0
|■
◇ループここまで◇◇
▼ 武器の所持数1以上
■DB読込(可変): CSelf40[全ID数] = 可変DB[タイプ┣所持武器個数(8)のデータ数]
■変数操作: CSelf41[処理中ID] = 0 + 0
■回数付きループ [ CSelf40[全ID数] ]回
|■DB読込(可変): CSelf42[所持数取得] = 可変DB[ ┣所持武器個数 : CSelf41[処理中ID] : 0 ] (8 : - : 所持個数)
|■条件分岐(変数): 【1】 CSelf42[所持数取得] が 1 以上
|-◇分岐: 【1】 [ CSelf42[所持数取得] が 1 以上 ]の場合↓
| |■変数操作: CSelf43[アイテムID] = CSelf41[処理中ID] + 30000
| |■可変DB書込:DB[ 一覧表用 : CSelf23[所持有り総数] : 0 ] (20 : - : アイテムID) = CSelf43[アイテムID]
| |■変数操作: CSelf23[所持有り総数] += 1 + 0
| |■
|◇分岐終了◇
|■変数操作: CSelf41[処理中ID] += 1 + 0
|■
◇ループここまで◇◇
▼ 防具の所持数1以上
■DB読込(可変): CSelf40[全ID数] = 可変DB[タイプ┗所持防具個数(9)のデータ数]
■変数操作: CSelf41[処理中ID] = 0 + 0
■回数付きループ [ CSelf40[全ID数] ]回
|■DB読込(可変): CSelf42[所持数取得] = 可変DB[ ┗所持防具個数 : CSelf41[処理中ID] : 0 ] (9 : - : 所持個数)
|■条件分岐(変数): 【1】 CSelf42[所持数取得] が 1 以上
|-◇分岐: 【1】 [ CSelf42[所持数取得] が 1 以上 ]の場合↓
| |■変数操作: CSelf43[アイテムID] = CSelf41[処理中ID] + 40000
| |■可変DB書込:DB[ 一覧表用 : CSelf23[所持有り総数] : 0 ] (20 : - : アイテムID) = CSelf43[アイテムID]
| |■変数操作: CSelf23[所持有り総数] += 1 + 0
| |■
|◇分岐終了◇
|■変数操作: CSelf41[処理中ID] += 1 + 0
|■
◇ループここまで◇◇
■変数操作: CSelf22[スクロール最大行] = CSelf23[所持有り総数] - 12
■変数操作: CSelf22[スクロール最大行] 下限= 0 + 0
■デバッグ文:所持有り総数:\cself[23]
▼ ■■■■■■■■■■アイテム名を表示
●ラベル地点「アイテム名表示」 <<<<<<<<<<<<<<<<<<<<<<<<★
■ピクチャ消去:20 〜 21 / 0(0)フレーム
■条件分岐(変数): 【1】 CSelf21[スクロール行数] が 1 以上
-◇分岐: 【1】 [ CSelf21[スクロール行数] が 1 以上 ]の場合↓
|■ピクチャ表示:20 [中心]文字列[\f[10]▲] X:160 Y:19 / 0(0)フレーム /
       パターン 1 / 透 255 / 通常 / 角 0 / 拡 100% / カラー R[100] G[100] B[100]
|■
◇分岐終了◇
■条件分岐(変数): 【1】 CSelf21[スクロール行数] が CSelf22[スクロール最大行] 未満
-◇分岐: 【1】 [ CSelf21[スクロール行数] が CSelf22[スクロール最大行] 未満 ]の場合↓
|■ピクチャ表示:21 [中心]文字列[\f[10]▼] X:160 Y:221 / 0(0)フレーム /
       パターン 1 / 透 255 / 通常 / 角 0 / 拡 100% / カラー R[100] G[100] B[100]
|■
◇分岐終了◇

■変数操作: CSelf25[ピクチャ[100〜]] = 100 + 0
■変数操作: CSelf26[ピクチャ[200〜]] = 200 + 0
■変数操作: CSelf27[ピクチャ[300〜]] = 300 + 0
■変数操作: CSelf30[X位置[100〜]] = 97 + 0
■変数操作: CSelf31[X位置[200〜]] = 196 + 0
■変数操作: CSelf32[X位置[300〜]] = 223 + 0
■変数操作: CSelf35[Y位置] = 26 + 0
■変数操作: CSelf41[処理中ID] = CSelf21[スクロール行数] + 0
■回数付きループ [ 12 ]回
|■DB読込(可変): CSelf43[アイテムID] = 可変DB[ 一覧表用 : CSelf41[処理中ID] : 0 ] (20 : - : アイテムID)
|■条件分岐(変数): 【1】 CSelf43[アイテムID] が 0 と同じ
|-◇分岐: 【1】 [ CSelf43[アイテムID] が 0 と同じ ]の場合↓
| |■ループ中断
| |■
|◇分岐終了◇
|■変数操作: CSelf44[ユーザータイプID]〜CSelf45[可変タイプID] = CSelf43[アイテムID] / 10000
|■変数操作: CSelf45[可変タイプID] += 5 + 0
|■変数操作: CSelf43[アイテムID] %= 10000 + 0

|■ピクチャ表示:CSelf25[ピクチャ[100〜]] [左上]文字列[\udb[\cself[44]:\cself[43]:0]]
       X:CSelf30[X位置[100〜]] Y:CSelf35[Y位置] / 0(0)フレーム /
       パターン 1 / 透 255 / 通常 / 角 0 / 拡 100% / カラー R[100] G[100] B[100]
|■ピクチャ表示:CSelf26[ピクチャ[200〜]] [左上]文字列[×]
       X:CSelf31[X位置[200〜]] Y:CSelf35[Y位置] / 0(0)フレーム /
       パターン 1 / 透 255 / 通常 / 角 0 / 拡 100% / カラー R[100] G[100] B[100]
|■ピクチャ表示:CSelf27[ピクチャ[300〜]] [右上]文字列[\cdb[\cself[45]:\cself[43]:0]]
       X:CSelf32[X位置[300〜]] Y:CSelf35[Y位置] / 0(0)フレーム /
       パターン 1 / 透 255 / 通常 / 角 0 / 拡 100% / カラー R[100] G[100] B[100]
|■変数操作: CSelf46[計算用] = 96 * 100
|■変数操作+: CSelf46[計算用] /= ピクチャ:CSelf25[ピクチャ[100〜]] の 画像サイズ(横)
|■変数操作: CSelf46[計算用] 上限= 100 + 0
|■ピクチャ移動:CSelf25[ピクチャ[100〜]] 相対X:0 Y:0 / 0(0)フレーム /
       パターン 同値 / 透 同値 / 表示形式:同値 / 角 同値 / 拡 CSelf46[計算用]x100% / カラー 同値

|■変数操作: CSelf25[ピクチャ[100〜]]〜CSelf27[ピクチャ[300〜]] += 1 + 0
|■変数操作: CSelf41[処理中ID] += 1 + 0
|■変数操作: CSelf35[Y位置] += 16 + 0
|■
◇ループここまで◇◇
▼ ■■■■■■■■■■キー処理
●ラベル地点「キー処理」 <<<<<<<<<<<<<<<<<<<<<<<<★
■変数操作: CSelf35[Y位置] = CSelf20[カーソル位置] * 16
■変数操作: CSelf35[Y位置] += 24 + 0
■ピクチャ移動:10 X:93 Y:CSelf35[Y位置] / 0(0)フレーム /
       パターン 1 / 透 255 / 表示形式:同値 / 角 0 / 拡 同値 / カラー 同値
■ループ開始
|■ウェイト:1 フレーム
|■変数操作: CSelf11[キー待ち時間] -= 1 + 0
|■キー入力:CSelf10[キー入力] 上下(8,2) 決定(10) キャンセル(11)
|■条件分岐(変数): 【1】 CSelf10[キー入力] が 0 と同じ
          【2】 CSelf12[起動時キー押し禁止] が 1 と同じ
|-◇分岐: 【1】 [ CSelf10[キー入力] が 0 と同じ ]の場合↓
| |■変数操作: CSelf11[キー待ち時間]〜CSelf12[起動時キー押し禁止] = 0 + 0
| |■ループ開始へ戻る
| |■
|-◇分岐: 【2】 [ CSelf12[起動時キー押し禁止] が 1 と同じ ]の場合↓
| |■ループ開始へ戻る
| |■
|◇分岐終了◇
|■条件分岐(変数): 【1】 CSelf10[キー入力] が 10 と同じ 【2】 CSelf10[キー入力] が 11 と同じ
|-◇分岐: 【1】 [ CSelf10[キー入力] が 10 と同じ ]の場合↓
| |▼ 決定
| |■ループ中断
| |■
|-◇分岐: 【2】 [ CSelf10[キー入力] が 11 と同じ ]の場合↓
| |▼ キャンセル
| |●ラベル「終了」に飛ぶ >>>>>>>>>>>>>>>>>>>>>>>>>
| |■
|◇分岐終了◇
|■条件分岐(変数): 【1】 CSelf11[キー待ち時間] が 1 以上
|-◇分岐: 【1】 [ CSelf11[キー待ち時間] が 1 以上 ]の場合↓
| |■ループ開始へ戻る
| |■
|◇分岐終了◇
|■変数操作: CSelf11[キー待ち時間] = 12 + 0
|▼ カーソル移動処理
|■条件分岐(変数): 【1】 CSelf10[キー入力] が 8 と同じ 【2】 CSelf10[キー入力] が 2 と同じ
|-◇分岐: 【1】 [ CSelf10[キー入力] が 8 と同じ ]の場合↓
| |▼ 上キーを押した
| |■条件分岐(変数): 【1】 CSelf20[カーソル位置] が 1 以上
| |-◇分岐: 【1】 [ CSelf20[カーソル位置] が 1 以上 ]の場合↓
| | |■変数操作: CSelf20[カーソル位置] -= 1 + 0
| | |●ラベル「キー処理」に飛ぶ >>>>>>>>>>>>>>>>>>>>>>>>>
| | |■
| |◇分岐終了◇
| |■変数操作: CSelf20[カーソル位置] += 11 + 0
| |●ラベル「キー処理」に飛ぶ >>>>>>>>>>>>>>>>>>>>>>>>>
| |■
|-◇分岐: 【2】 [ CSelf10[キー入力] が 2 と同じ ]の場合↓
| |▼ 下キーを押した
| |■条件分岐(変数): 【1】 CSelf20[カーソル位置] が 10 以下
| |-◇分岐: 【1】 [ CSelf20[カーソル位置] が 10 以下 ]の場合↓
| | |■変数操作: CSelf20[カーソル位置] += 1 + 0
| | |●ラベル「キー処理」に飛ぶ >>>>>>>>>>>>>>>>>>>>>>>>>
| | |■
| |◇分岐終了◇
| |■変数操作: CSelf20[カーソル位置] -= 11 + 0
| |●ラベル「キー処理」に飛ぶ >>>>>>>>>>>>>>>>>>>>>>>>>
| |■
|◇分岐終了◇
|■
◇ループここまで◇◇
▼ ■■■■■■■■■■決定の処理
■文章:\cself[20]行目を決定。
●ラベル地点「終了」 <<<<<<<<<<<<<<<<<<<<<<<<★
■ピクチャ消去:1 〜 399 / 0(0)フレーム

★動作テスト

動作テストを行うと、メニュー画面に現在所持しているアイテム名が表示されます。

但し現段階ではスクロール機能を設定していないので、下へ押し続けてもスクロールは実行されません。



▼キー処理に追加設定

キー処理にスクロール用の設定を追加します。

スクロールは所持しているアイテムの数が13以上(セルフ[23:所持有り総数]が13以上)の時に、
一覧の一番上にカーソルがある状態で上キー、
または一覧の一番下にカーソルがある状態で下キーを押した時に、一覧の表示をスクロールさせます。



方向キーを押してカーソルを移動する時には、必ずラベルへジャンプする処理を実行させます。

ジャンプするラベルの位置は、一覧の表示がスクロールするかどうかで異なります。

スクロールする場合(アイテム名の表示状態を更新する場合)はラベル「アイテム名表示」へジャンプし、
スクロールしない場合(アイテム名の表示状態がそのままの場合)はラベル「キー処理」へジャンプします。



コメント「決定の処理」の所にある【文章の表示】の設定内容を決定したアイテムの名前を表示する設定に変更します。

【イベントコード表示】

■変数操作: CSelf12[起動時キー押し禁止] = 1 + 0
■ピクチャ表示:1 [中心]ウィンドウ「SystemFile/WindowBase_amania.png」サイズ[150,206] X:160 Y:120 / 0(0)フレーム /
       パターン 1 / 透 255 / 通常 / 角 0 / 拡 100% / カラー R[100] G[100] B[100]
■ピクチャ表示:10 [左上]ウィンドウ「SystemFile/CursorBase.png」サイズ[134,16] X:93 Y:24 / 0(0)フレーム /
       パターン 1 / 透 255 / 加算 / 角 0 / 拡 100% / カラー R[100] G[100] B[100]
■ピクチャエフェクト:10 [点滅A(明滅)] R100/G100/B100 明滅間隔(30)フレーム
▼ ■■■■■■■■■■所持有り総数をチェック
■変数操作: CSelf20[カーソル位置]〜CSelf23[所持有り総数] = 0 + 0
▼ アイテムの所持数1以上
■可変DB書込:[タイプ 一覧表用(20) を初期化]
■DB読込(可変): CSelf40[全ID数] = 可変DB[タイプ┣所持アイテム個数(7)のデータ数]
■変数操作: CSelf41[処理中ID] = 0 + 0
■回数付きループ [ CSelf40[全ID数] ]回
|■DB読込(可変): CSelf42[所持数取得] = 可変DB[ ┣所持アイテム個数 : CSelf41[処理中ID] : 0 ] (7 : - : 所持個数)
|■条件分岐(変数): 【1】 CSelf42[所持数取得] が 1 以上
|-◇分岐: 【1】 [ CSelf42[所持数取得] が 1 以上 ]の場合↓
| |■変数操作: CSelf43[アイテムID] = CSelf41[処理中ID] + 20000
| |■可変DB書込:DB[ 一覧表用 : CSelf23[所持有り総数] : 0 ] (20 : - : アイテムID) = CSelf43[アイテムID]
| |■変数操作: CSelf23[所持有り総数] += 1 + 0
| |■
|◇分岐終了◇
|■変数操作: CSelf41[処理中ID] += 1 + 0
|■
◇ループここまで◇◇
▼ 武器の所持数1以上
■DB読込(可変): CSelf40[全ID数] = 可変DB[タイプ┣所持武器個数(8)のデータ数]
■変数操作: CSelf41[処理中ID] = 0 + 0
■回数付きループ [ CSelf40[全ID数] ]回
|■DB読込(可変): CSelf42[所持数取得] = 可変DB[ ┣所持武器個数 : CSelf41[処理中ID] : 0 ] (8 : - : 所持個数)
|■条件分岐(変数): 【1】 CSelf42[所持数取得] が 1 以上
|-◇分岐: 【1】 [ CSelf42[所持数取得] が 1 以上 ]の場合↓
| |■変数操作: CSelf43[アイテムID] = CSelf41[処理中ID] + 30000
| |■可変DB書込:DB[ 一覧表用 : CSelf23[所持有り総数] : 0 ] (20 : - : アイテムID) = CSelf43[アイテムID]
| |■変数操作: CSelf23[所持有り総数] += 1 + 0
| |■
|◇分岐終了◇
|■変数操作: CSelf41[処理中ID] += 1 + 0
|■
◇ループここまで◇◇
▼ 防具の所持数1以上
■DB読込(可変): CSelf40[全ID数] = 可変DB[タイプ┗所持防具個数(9)のデータ数]
■変数操作: CSelf41[処理中ID] = 0 + 0
■回数付きループ [ CSelf40[全ID数] ]回
|■DB読込(可変): CSelf42[所持数取得] = 可変DB[ ┗所持防具個数 : CSelf41[処理中ID] : 0 ] (9 : - : 所持個数)
|■条件分岐(変数): 【1】 CSelf42[所持数取得] が 1 以上
|-◇分岐: 【1】 [ CSelf42[所持数取得] が 1 以上 ]の場合↓
| |■変数操作: CSelf43[アイテムID] = CSelf41[処理中ID] + 40000
| |■可変DB書込:DB[ 一覧表用 : CSelf23[所持有り総数] : 0 ] (20 : - : アイテムID) = CSelf43[アイテムID]
| |■変数操作: CSelf23[所持有り総数] += 1 + 0
| |■
|◇分岐終了◇
|■変数操作: CSelf41[処理中ID] += 1 + 0
|■
◇ループここまで◇◇
■変数操作: CSelf22[スクロール最大行] = CSelf23[所持有り総数] - 12
■変数操作: CSelf22[スクロール最大行] 下限= 0 + 0
■変数操作: CSelf24[最下行位置] = CSelf23[所持有り総数] - 1
■変数操作: CSelf24[最下行位置] 下限= 0 + 0

■デバッグ文:所持有り総数:\cself[23]
▼ ■■■■■■■■■■アイテム名を表示
●ラベル地点「アイテム名表示」 <<<<<<<<<<<<<<<<<<<<<<<<★
■ピクチャ消去:20 〜 21 / 0(0)フレーム
■条件分岐(変数): 【1】 CSelf21[スクロール行数] が 1 以上
-◇分岐: 【1】 [ CSelf21[スクロール行数] が 1 以上 ]の場合↓
|■ピクチャ表示:20 [中心]文字列[\f[10]▲] X:160 Y:19 / 0(0)フレーム /
       パターン 1 / 透 255 / 通常 / 角 0 / 拡 100% / カラー R[100] G[100] B[100]
|■
◇分岐終了◇
■条件分岐(変数): 【1】 CSelf21[スクロール行数] が CSelf22[スクロール最大行] 未満
-◇分岐: 【1】 [ CSelf21[スクロール行数] が CSelf22[スクロール最大行] 未満 ]の場合↓
|■ピクチャ表示:21 [中心]文字列[\f[10]▼] X:160 Y:221 / 0(0)フレーム /
       パターン 1 / 透 255 / 通常 / 角 0 / 拡 100% / カラー R[100] G[100] B[100]
|■
◇分岐終了◇
■変数操作: CSelf25[ピクチャ[100〜]] = 100 + 0
■変数操作: CSelf26[ピクチャ[200〜]] = 200 + 0
■変数操作: CSelf27[ピクチャ[300〜]] = 300 + 0
■変数操作: CSelf30[X位置[100〜]] = 97 + 0
■変数操作: CSelf31[X位置[200〜]] = 196 + 0
■変数操作: CSelf32[X位置[300〜]] = 223 + 0
■変数操作: CSelf35[Y位置] = 26 + 0
■変数操作: CSelf41[処理中ID] = CSelf21[スクロール行数] + 0
■回数付きループ [ 12 ]回
|■DB読込(可変): CSelf43[アイテムID] = 可変DB[ 一覧表用 : CSelf41[処理中ID] : 0 ] (20 : - : アイテムID)
|■条件分岐(変数): 【1】 CSelf43[アイテムID] が 0 と同じ
|-◇分岐: 【1】 [ CSelf43[アイテムID] が 0 と同じ ]の場合↓
| |■ループ中断
| |■
|◇分岐終了◇
|■変数操作: CSelf44[ユーザータイプID]〜CSelf45[可変タイプID] = CSelf43[アイテムID] / 10000
|■変数操作: CSelf45[可変タイプID] += 5 + 0
|■変数操作: CSelf43[アイテムID] %= 10000 + 0
|■ピクチャ表示:CSelf25[ピクチャ[100〜]] [左上]文字列[\udb[\cself[44]:\]
       X:CSelf30[X位置[100〜]] Y:CSelf35[Y位置] / 0(0)フレーム /
       パターン 1 / 透 255 / 通常 / 角 0 / 拡 100% / カラー R[100] G[100] B[100]
|■ピクチャ表示:CSelf26[ピクチャ[200〜]] [左上]文字列[×]
       X:CSelf31[X位置[200〜]] Y:CSelf35[Y位置] / 0(0)フレーム /
       パターン 1 / 透 255 / 通常 / 角 0 / 拡 100% / カラー R[100] G[100] B[100]
|■ピクチャ表示:CSelf27[ピクチャ[300〜]] [右上]文字列[\cdb[\cself[45]:\]
       X:CSelf32[X位置[300〜]] Y:CSelf35[Y位置] / 0(0)フレーム /
       パターン 1 / 透 255 / 通常 / 角 0 / 拡 100% / カラー R[100] G[100] B[100]
|■変数操作: CSelf46[計算用] = 96 * 100
|■変数操作+: CSelf46[計算用] /= ピクチャ:CSelf25[ピクチャ[100〜]] の 画像サイズ(横)
|■変数操作: CSelf46[計算用] 上限= 100 + 0
|■ピクチャ移動:CSelf25[ピクチャ[100〜]] 相対X:0 Y:0 / 0(0)フレーム /
       パターン 同値 / 透 同値 / 表示形式:同値 / 角 同値 / 拡 CSelf46[計算用]x100% / カラー 同値
|■変数操作: CSelf25[ピクチャ[100〜]]〜CSelf27[ピクチャ[300〜]] += 1 + 0
|■変数操作: CSelf41[処理中ID] += 1 + 0
|■変数操作: CSelf35[Y位置] += 16 + 0
|■
◇ループここまで◇◇
▼ ■■■■■■■■■■キー処理
●ラベル地点「キー処理」 <<<<<<<<<<<<<<<<<<<<<<<<★
■変数操作: CSelf35[Y位置] = CSelf20[カーソル位置] * 16
■変数操作: CSelf35[Y位置] += 24 + 0
■ピクチャ移動:10 X:93 Y:CSelf35[Y位置] / 0(0)フレーム /
       パターン 1 / 透 255 / 表示形式:同値 / 角 0 / 拡 同値 / カラー 同値
■ループ開始
|■ウェイト:1 フレーム
|■変数操作: CSelf11[キー待ち時間] -= 1 + 0
|■キー入力:CSelf10[キー入力] 上下(8,2) 決定(10) キャンセル(11)
|■条件分岐(変数): 【1】 CSelf10[キー入力] が 0 と同じ
          【2】 CSelf12[起動時キー押し禁止] が 1 と同じ
|-◇分岐: 【1】 [ CSelf10[キー入力] が 0 と同じ ]の場合↓
| |■変数操作: CSelf11[キー待ち時間]〜CSelf12[起動時キー押し禁止] = 0 + 0
| |■ループ開始へ戻る
| |■
|-◇分岐: 【2】 [ CSelf12[起動時キー押し禁止] が 1 と同じ ]の場合↓
| |■ループ開始へ戻る
| |■
|◇分岐終了◇
|■条件分岐(変数): 【1】 CSelf10[キー入力] が 10 と同じ 【2】 CSelf10[キー入力] が 11 と同じ
|-◇分岐: 【1】 [ CSelf10[キー入力] が 10 と同じ ]の場合↓
| |▼ 決定
| |■ループ中断
| |■
|-◇分岐: 【2】 [ CSelf10[キー入力] が 11 と同じ ]の場合↓
| |▼ キャンセル
| |●ラベル「終了」に飛ぶ >>>>>>>>>>>>>>>>>>>>>>>>>
| |■
|◇分岐終了◇
|■条件分岐(変数): 【1】 CSelf11[キー待ち時間] が 1 以上
|-◇分岐: 【1】 [ CSelf11[キー待ち時間] が 1 以上 ]の場合↓
| |■ループ開始へ戻る
| |■
|◇分岐終了◇
|■変数操作: CSelf11[キー待ち時間] = 12 + 0
|▼ カーソル移動処理
|■条件分岐(変数): 【1】 CSelf10[キー入力] が 8 と同じ 【2】 CSelf10[キー入力] が 2 と同じ
|-◇分岐: 【1】 [ CSelf10[キー入力] が 8 と同じ ]の場合↓
| |▼ 上キーを押した
| |■条件分岐(変数): 【1】 CSelf20[カーソル位置] が 1 以上
| |-◇分岐: 【1】 [ CSelf20[カーソル位置] が 1 以上 ]の場合↓
| | |■変数操作: CSelf20[カーソル位置] -= 1 + 0
| | |●ラベル「キー処理」に飛ぶ >>>>>>>>>>>>>>>>>>>>>>>>>
| | |■
| |◇分岐終了◇
| |■条件分岐(変数): 【1】 CSelf21[スクロール行数] が 1 以上
| |-◇分岐: 【1】 [ CSelf21[スクロール行数] が 1 以上 ]の場合↓
| | |■変数操作: CSelf21[スクロール行数] -= 1 + 0
| | |●ラベル「アイテム名表示」に飛ぶ >>>>>>>>>>>>>>>>>>>>>>>>>
| | |■
| |◇分岐終了◇
| |■変数操作: CSelf20[カーソル位置] += CSelf24[最下行位置] + 0
| |■変数操作: CSelf20[カーソル位置] -= CSelf22[スクロール最大行] + 0
| |■変数操作: CSelf21[スクロール行数] = CSelf22[スクロール最大行] + 0

| |●ラベル「アイテム名表示」に飛ぶ >>>>>>>>>>>>>>>>>>>>>>>>>
| |■
|-◇分岐: 【2】 [ CSelf10[キー入力] が 2 と同じ ]の場合↓
| |▼ 下キーを押した
| |■条件分岐(変数): 【1】 CSelf20[カーソル位置] が 10 以下
| |-◇分岐: 【1】 [ CSelf20[カーソル位置] が 10 以下 ]の場合↓
| | |■条件分岐(変数): 【1】 CSelf20[カーソル位置] が CSelf24[最下行位置] 以上
| | |-◇分岐: 【1】 [ CSelf20[カーソル位置] が CSelf24[最下行位置] 以上 ]の場合↓
| | | |■変数操作: CSelf20[カーソル位置] = 0 + 0
| | | |●ラベル「キー処理」に飛ぶ >>>>>>>>>>>>>>>>>>>>>>>>>
| | | |■
| | |◇分岐終了◇

| | |■変数操作: CSelf20[カーソル位置] += 1 + 0
| | |●ラベル「キー処理」に飛ぶ >>>>>>>>>>>>>>>>>>>>>>>>>
| | |■
| |◇分岐終了◇
| |■条件分岐(変数): 【1】 CSelf21[スクロール行数] が CSelf22[スクロール最大行] 未満
| |-◇分岐: 【1】 [ CSelf21[スクロール行数] が CSelf22[スクロール最大行] 未満 ]の場合↓
| | |■変数操作: CSelf21[スクロール行数] += 1 + 0
| | |●ラベル「アイテム名表示」に飛ぶ >>>>>>>>>>>>>>>>>>>>>>>>>
| | |■
| |◇分岐終了◇

| |■変数操作: CSelf20[カーソル位置] -= 11 + 0
| |■変数操作: CSelf21[スクロール行数] = 0 + 0
| |●ラベル「アイテム名表示」に飛ぶ >>>>>>>>>>>>>>>>>>>>>>>>>
| |■
|◇分岐終了◇
|■
◇ループここまで◇◇
▼ ■■■■■■■■■■決定の処理
■変数操作: CSelf20[カーソル位置] += CSelf21[スクロール行数] + 0
■DB読込(可変): CSelf43[アイテムID] = 可変DB[ 一覧表用 : CSelf20[カーソル位置] : 0 ] (20 : - : アイテムID)
■条件分岐(変数): 【1】 CSelf43[アイテムID] が 0 と同じ
-◇分岐: 【1】 [ CSelf43[アイテムID] が 0 と同じ ]の場合↓
|●ラベル「終了」に飛ぶ >>>>>>>>>>>>>>>>>>>>>>>>>
|■
◇分岐終了◇
■変数操作: CSelf44[ユーザータイプID] = CSelf43[アイテムID] / 10000
■変数操作: CSelf43[アイテムID] %= 10000 + 0
■文章:「\udb[\cself[44]:\cself[43]:0]」を決定。

●ラベル地点「終了」 <<<<<<<<<<<<<<<<<<<<<<<<★
■ピクチャ消去:1 〜 399 / 0(0)フレーム


以上で設定完了です。

テストプレイを実行して、動作確認を行ってください。

▼動作イメージ



▲トップへ戻る▲



◎関連ページ

◆アイテムの一覧表の自作メニューを作る
┣◆アイテムの一覧表を「横2×縦12」に改造
┣◆アイテムの一覧表に説明画面を追加
┣◆アイテムの一覧表をマウスで操作
┗◆アイテムの一覧表にスクロールバーを追加

◆自作メニューの基礎講座(4×3の自作メニュー作り)

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

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