YADO作品リスト・コモンイベント素材
アイテム図鑑(機能追加版)
(更新:2024/10/14)


 
ジャンル コモンイベント素材
制作ツール WOLF RPGエディター公式サイトへ移動
WOLF RPGエディター
制作開始 2024年8月3日
完成日 2024年10月14日
公開日 2024年10月14日
公開状況 ウディタ公式サイトのコモンイベント集と、
気紛れな空間のウディタ作品のページにて公開中。
バージョン 1.00
作品の内容 主人公が取得したアイテム、武器、防具、特殊技能の一覧を表示し、
詳細情報が確認できるコモンです。



【ダウンロードページを開く】 



▼アイテム図鑑(機能追加版)を制作した理由

アイテム図鑑は元々ST様が作成した「アイテム図鑑(2.00)」が公開されていました。

▼アイテム図鑑(2.00)
https://silsec.sakura.ne.jp/WolfRPGEditor/CommonList/html/tdv201.html#14191552941301

YADOとしては、既に公開されているコモン素材と同じようなものを新たに作ってもあまり意味が無いので、
通常では同じようなコモン素材は作らないようにしていますが、
しかしこのアイテム図鑑(2.00)にはいくつかの問題点があり、
コメント欄や質問掲示板などで度々改造方法を訊ねる書き込みがありました。

▼問題点
●ゲーム画面サイズが[320×240[x2]]しか対応していない。
●一覧の最上部で上キーを押すと最下部まで移動するような処理ができない。
●一覧で左右キーを押して数行飛ばしてスクロールさせるができない。
●一覧の番号表示が「No.0」からスタートする。
●1000を超えるデータ数に対応していない。


またアイテム図鑑(2.00)かなり特殊な処理構造をしているため、「改造が難しい」と言った問題点もありました。

例えばカーソルを移動させる処理では、YADOT-WOLFで紹介している処理では、
一覧に14行ある場合は、上から「0〜13」の番号を振り、カーソル位置を保存する変数を用意して、
変数の値が「13」の時には「カーソルが一覧の一番下にある」と判断して、
そこで下キーを押した時には、一覧がスクロールするように設定しています。

一方アイテム図鑑(2.00)のカーソル処理には、カーソル位置を保存する変数が無く
カーソルが一覧の一番下にあるかどうかを判断する処理は「カーソルのY位置=220」で行っています。

カーソルのY位置=220」で処理すると、ゲーム画面サイズを「320×240」以外にしたり、
一覧のフォントサイズを変えたりした時に「220」の設定を変える必要があります。(自動的に補正されない)

またアイテム図鑑(2.00)の一覧のスクロールは1回の処理で1行分しかスクロールできない仕様であったため、
左右キーで一覧の飛ばして表示」などの改造が簡単ではありませんでした。

上記の問題点を全て解決させるには、コモンイベント「■アイテム図鑑」を全て作り直すくらいの大改造が必要であり、
また全ての問題を解決させるコモンイベントを制作するには、自作メニューの制作に慣れている者でないと難しいため、
自作メニューの制作に慣れているYADOが新たな「アイテム図鑑コモン」を作る事にしました。



▼最初は無かった技能図鑑

制作当初は、以下のような仕様を考えていました。

●ゲーム画面サイズ[320×240[x2]]以外にも対応。(プロ版にも対応)
●マウス操作に対応。(キーボードとの併用が可能)
●主人公の装備品が自動的に図鑑に登録される。
●「No.1」からの一覧表示。(「No.0」からもできる)
●ウィンドウサイズやフォントサイズが任意で変更可能。(全画面表示ではないアイテム図鑑の表示もできる)
●図解完成度などの数値が出力できる機能。
●一覧の表示処理で可変DBを使わない。(アイテム図鑑(2.00)の仕様と同じ)


設定していく内に、画面レイアウトや説明文の表示形式などのオプション設定が追加され、
更に少しでも一覧の表示幅を広げられるようにするために、
▲▼の表示有無やスクロールバーの表示有無などが設定できるようにしました。



制作当初は、技能図鑑を導入する予定がありませんでした。

導入するきっかけになったのは、使うと技能が発動するアイテム、武器、防具の存在でした。

アイテムの情報画面に単に発動する技能名だけを表示しても、それを使ってどんな効果があるのかが分かりません。

そこで発動する技能の詳細情報が表示されるようにしました。

これにより発動する技能の内容が分かるようになりましたが、技能の詳細情報が表示できるようになった事で、
あとは技能の一覧表示を用意したら技能図鑑ができてしまう」と考え、技能図鑑を導入する事にしました。

あとで調べたら、どうも「技能図鑑」と言ったコモン素材は公開されてないようなので、
「技能図鑑が欲しい」と思う方は一定数はいるかと思います。

しかし技能図鑑が無かったアイテム図鑑(2.00)からバージョンアップする方や、
「技能図鑑は要らない」「技能の詳細情報をプレイヤーに見せたくない」と言った方もいるかと思い、
技能図鑑を表示しない設定もできるようにしました。



技能図鑑の追加は思っていたよりも大変でした。

図鑑に技能を登録する場合、主人公の習得済みの技能の登録の他に、
戦闘コマンドの技能AI行動の主人公(可変DB[2])の技能の登録。
さらに戦闘中に敵キャラが使用した技能アイテム使用で発動する技能の登録なども必要になりました。

また登録条件も色々と設定できるようにしたため、例えば戦闘中に敵キャラが使用した技能の場合は、
敵キャラが使用した段階で登録 or 戦闘に勝利した時のみ登録
敵キャラが主人公に使用したら登録 or 敵キャラ同士で使用しても登録
などと、細かい登録条件が設定できるようにしたため、動作テストが大変な事になりました。



コモンイベント「■アイテム図鑑」のセルフ変数は、制作当初から1つのセルフ変数で複数の用途に使っているため、
セルフ変数の名前の通りに使っていない事が多々ありました。

そこに技能図鑑を組み込んだ事で、さらにセルフ変数の使い方が複雑化してしまいました。

特に文字列変数はセルフ[5〜9]の5個しかないので、色々と工夫して、何とか5個だけで処理できるようにしています。

セルフ[5:一時保存01] 1回目のオプション設定では「除外するデータID:技能」の設定に使っています。
この除外するデータIDは、あとでセルフ変数[8]に保存しています。
2回目のオプション設定では「除外する名前のキーワード」に使っています。
この除外する名前のキーワードもあとで除外するデータIDに変換して、
セルフ変数[8]に保存しています。
3回目のオプション設定では、
<未使用につき効果不明>」の文字列設定に使っています。
この文字列は、あとでセルフ変数[8]に保存しています。
オプション設定以外では、一時保存用として幅広く使っています。
セルフ[6:一時保存02] 1回目のオプション設定では「除外するデータID:アイテム」の設定に使っています。
この除外するデータIDは、あとでセルフ変数[8]に保存しています。
2回目のオプション設定では、
- No Data -」の文字列設定に使っています。
この文字列は、あとでセルフ変数[8]に保存しています。
3回目のオプション設定では、
<未装備につき詳細情報なし>」の文字列設定に使っています。
この除外するデータIDは、あとでセルフ変数[8]に保存しています。
オプション設定以外では、一時保存用として幅広く使っています。
セルフ[7:一時保存03] 1回目のオプション設定では「除外するデータID:武器」の設定に使っています。
設定された除外するデータIDは、あとでセルフ変数[8]に保存しています。
2回目のオプション設定では、
?????」の文字列設定に使っています。
この文字列は、あとでセルフ変数[8]に保存しています。
オプション設定以外では、一時保存用として幅広くに使っています。
セルフ[8:一時保存04] 1回目のオプション設定では「除外するデータID:防具」の設定に使い、
あとでアイテム、武器、技能の除外するデータIDと一緒に保存しています。
保存時の文字列は「a技能IDa」「bアイテムIDb」「c武器IDc」「d防具IDd」と
言った形で保存しています。
データIDを特定の文字で挟んで保存する事で、
例えば武器ID[3]が除外されているかどうかを調べる時には、
c3c」の文字列があるかどうかを調べる事で、
武器ID[3]を除外するかどうかを判断する事ができます。
- No Data -」「?????」「<未使用につき効果不明>
<未装備につき詳細情報なし>」の文字列も特定の文字に挟んで保存しています。
アイテム名からアイコン画像を消去する処理でセルフ[5][6]を使うため、
一時的にセルフ[5][6]の文字列を保存する時にも使っています。
セルフ[9:技能登録データ] 技能の登録に使っています。
技能の登録は、未使用の場合は「a技能IDa」で保存し、
技能を使用した場合は「A技能IDA」で保存しています。
なお、アイテムや装備品の使用済み、装備済みの情報は、
可変DB[7-9]項目[入手した?]で保存しています。
戦闘中に敵キャラが使用した技能で、
主人公が戦闘に勝利した場合のみ技能を登録する場合は、
>技能ID>」の形式で技能IDを一時保存し、
戦闘終了後に勝利した時には「A技能IDA」の形式で保存し直します。



オプション設定は、制作当初はセルフ変数[90〜99]に設定していましたが、
10個では足りなくなり、セルフ変数[10〜29]へ移動。

その後20個でも足りなくなったので、セルフ変数[60〜89]へ移動し、
セルフ変数を節約するために、多くのオプション設定を二進法で2つのセルフ変数へまとめて保存しています。

ただでさえ複雑なイベント処理なのに、セルフ変数の二次使用に、度重なるセルフ変数の使用番号の大移動。
さらには二進法での保存が加わったため、デバッグの作業が本当に大変な事になりました。



▼「完成!」となってからが本番!?

「よし、完成!」と思って動作テストすると、様々な問題点が出てくるのが作品制作の難しい所と言えます。

ほぼ完成した所でアイテム図鑑(2.00)のコメントを見てみると「アイコン表示の事」が書かれていて、
当コモンでもアイコン表示に関する対策が必要である事に気付かされました。

そこでアイコン画像を消すかどうかが決められるオプション設定を追加しました。

さらにスクロールバーの所で、スクロールバー以外の場所にマウスポインタを置いた時に、
どの位置の一覧が表示されるのかが分かりにくかったので、「No.15-27」などが表示されるようにしました。





そして「完成だ!」となった時に、防具の「呪われた服」の詳細情報(一度装備すると外せない)を見て、
この情報を見たら、誰も装備しないよね」と思った所で、
使用したり装備したりしないと詳細情報が見れない設定を思い付きました。

当コモンの可変DB[7-9]には項目「入手した?」があり、ここに使用済みや装備済みを保存すれば良いと考えました。

項目「入手した?」の値 保存内容
0 未登録
1 登録済み
2 使用済み
4 装備済み

使うと技能が発動する装備品の場合は「登録済み[1]+使用済み[2]+装備済み[4]」で「7」が保存されます。

なお、使うと技能が発動するアイテムや装備品の詳細表示は、
単純に考えれば「使ったら詳細を表示」となりますが、実際には以下のように複雑な処理が必要になります。

使用効果の詳細表示 アイテム使用で発動する技能の名前を表示
表示しない 表示する
表示しない 技能名も詳細も表示しない 技能名のみ表示
使用済みで表示する 使用するまで詳細を表示しない 使用するまで技能名も詳細も表示しない
使用しても技能名は表示せず、
技能図鑑にも登録しない
使用したら技能名も詳細も表示し、
技能図鑑に登録する
最初から表示する 最初から詳細を表示する 最初から技能名も詳細も表示し、
技能図鑑にも登録する
技能名は表示せず、
技能図鑑にも登録しない

使用すると技能が発動するアイテムの場合、
アイテム側が「マップのみ使用可能」で、技能側が「戦闘のみ使用可能」の場合は「使用不可」になるため、
詳細を表示する処理では「使用不可の場合は表示しない」と言った処理も必要になります。

装備の詳細表示に関しても、「表示しない」の場合は2ページ目が必要無くなるため、
3ページ目に表示するアイテム使用のページを2ページ目に表示するようにしています。



「これで本当に完成だ!」となった時に、
ウディタ[3.00]以前のバージョンでは動かせないのか?」と疑問に思いました。

当コモンはウディタ[3.382]で制作しており、ウディタ[3.00]以降に追加された機能を使って制作しています。

しかし設定方法を工夫すればウディタ[3.00]以前でも動かせるようになりそうだったので、
ウディタ[3.00]以前でも動かせるように、イベント処理を組み直しました。

例えばアイコン画像を消去する処理は、
ウディタ[3.00]以降ならば【文字列操作】にある「特殊文字を消去して格納」を使えば簡単に消去できますが、
ウディタ[3.00]以前に対応させる場合は、アイテム名などの文字列を1文字ずつ切り取り、
切り取った1文字をフォントサイズ「10」と「20」の2種類をピクチャで表示し、
フォントサイズを変えるとピクチャの横幅が変わる  →文字である
フォントサイズを変えてもピクチャの横幅は変わらない→画像である
と言った方法でアイコン画像であるかどうかを調べて、アイコン画像を消去しています。

折角1文字ずつ調べる処理を作ったので、「フォントサイズを超える高さの場合は消去」と言った設定も追加しました。

下位のバージョン対応は、最初はウディタ[2.20]以降の対応を考えていましたが、未使用のセルフ変数を使う事で、
さらに下位のバージョンにも対応できる事が分かり、最終的にはウディタ[2.10]以降の対応になりました。

ウディタ[2.10]よりも前のバージョンは、処理に必要なイベントコマンドが無かったり、
アイコン画像を消去する処理が正常に処理できなかったりと、色々と問題があったため、
ウディタ[2.10]よりも前のバージョンは非対応になりました。
まあ2024年公開のコモン素材で、ウディタ[2.10](2013年)以降の対応ならば、十分すぎるかと思います。

ちなみにウディタ3で作られたコモンイベントのファイルは、ウディタ2で読み込む事ができません。
そのためウディタ3のコモンイベントのイベントコードをコピーし、ウディタ2のコモンイベントに貼り付けて、
ウディタ2のコモンイベントでダウンロード用のファイルで作成しています。



「これで本当に本当に完成だ!」となった時に、
アイテム図鑑(アイテム/武器/防具)とは別に「特殊技能だけを表示する処理はできないのか?」と考えました。

技能図鑑を追加した初期の段階では、
「アイテム 武器 防具」は必ず表示で、「特殊技能」だけが任意表示と言った仕様でした。

のちにコモンイベント「■アイテム図鑑」オプション設定「図鑑表示の基本設定」が追加され、
好きな組み合わせで表示できるようになりましたが、アイテム図鑑(2.00)からバージョンアップした時に、
古い【イベントの挿入】の呼び出し設定でもそのまま使えるようにするため、
オプション設定「図鑑表示の基本設定」で設定した図鑑しか表示できない仕様になっていました。

そこで【イベントの挿入】で呼び出す時の設定に「処理対象」を追加し、
処理方法」と「処理対象」の組み合わせる事で、
表示する図鑑の内容や登録率などを出力する図鑑の種類が選べるようにしました。

これにより、異なるアイテム図鑑特殊技能図鑑が、
1つのコモンイベント「■アイテム図鑑」で簡単に表示できるようになりましたが、
追加に追加を重ねたコモンイベント「■アイテム図鑑」は1万行を超える巨大なコモンイベントになってしまいました。



コモンイベント「■アイテム図鑑」が完成し、ウディタ[2.10]で最終動作確認をしていた時に、
アイテムの説明文にあるアイコン画像を消去する処理が無かった事に気付き、オプション設定を追加しました。

これにより、オプション設定、ウィンドウ設定、フォントサイズ設定などの
コモン利用者が設定する事ができるオプション関連のセルフ変数が47個になりました。

コモン利用者がセルフ変数の設定画面(一覧)を見たら、
このセルフ変数の設定でどうやって動かしているんだ?」と疑問に思うかもしれませんね。

まあセルフ変数[70〜99]は一覧のデータIDを保存するのに使っていて、
他のオプション設定のセルフ変数も、二進法で保存したり、万の位は別の情報を保存したりと、
1つのセルフ変数に複数の情報を保存して、それで何とかアイテム図鑑を動かしているので、
通常ならば2〜3個のコモンイベントに分けて処理するのが普通だと思います。



▼より使いやすくするために

当コモンは、制作したYADOでも改造するのが難しいくらいに複雑な処理構造をしているため、
出来る限りコモン利用者が改造しないで利用できるようにしています。

大量にあるオプション設定も、出来る限り改造しないで済むようにするために用意しています。



過去にアイテム図鑑(2.00)の利用者から
他のコモン素材でアイテムが増えても図鑑に表示されない
と言った書き込みがあり、他のコモン素材の改造方法を訊ねる書き込みがありました。

基本的にアイテムが増えたら可変DB[7-9]項目「入手した?」の値を「1」にすれば図鑑に登録されるので、
可変DB[7-9]項目「入手した?」の値を「1」にする設定を他のコモン素材に追加すれば、
アイテム図鑑にアイテムが登録されます。

しかしアイテム図鑑(機能追加版)の場合は、項目「入手した?」に使用済みや装備済みの情報も保存しているので、
「=1」ではなく、「下限1」で「1」にしないと、使用済みや装備済みの情報が消えてしまう不具合が発生します。

このような「=1」の設定ミスを防ぐため、当コモンでは「更新実行」を用意し、
他のコモン素材にアイテムの登録設定を行う際は、この「更新実行」を使うようにしています。



AI行動の主人公が使う技能は可変DB[2:┣ 主人公行動AI]から取得していますが、
この技能の取得の際にアクション1とアクション2との項目番号の差(1アクションの項目数)を調べています。

可変DB[2:┣ 主人公行動AI]の設定は「4項目×12組」になっていますが、
可変DB[2:┣ 主人公行動AI]を改造するコモン素材を導入した場合、「5項目×12組」になる可能性があります。
そのため、アクション設定1組に4項目あっても5項目あっても対応できるようにするために、
アクション1とアクション2との項目番号の差を調べて、1組に何項目あるのかを調べてから処理しています。

また「5項目×15組」になる可能性もあるため、13組以上が設定されていても対応できるようにしています。

実際に上手く機能するかどうかは分かりませんが、まあ何も対策しないよりは良いかと思います。



【YADO作品リストのトップへ戻る】

YADOTトップ  このサイトは何?  気紛れな空間へ戻る  メール