状態&属性データ数拡張
【更新:2024/06/16】



ウディタ[3.00]以降で利用できます。

【こちらをクリックするとダウンロードができます(123KB)】

2024/06/16 1.00 初期バージョン。



ショートカット
■状態&属性データ数拡張とは
■当コモン素材の導入方法
■処理構造の補足
■使用に関して


  
■状態&属性データ数拡張とは

状態と属性は共に100個までしか設定する事ができませんが、当コモン素材のコモンイベントとデータベースを設定する事で、
状態と属性の数をそれぞれ最大1000個まで拡張する事ができます。



処理としては、
状態[0〜99]→可変DB[┣ 状態耐性]を使用
状態[100〜199]→可変DB[┣ 状態耐性100]を使用

と言ったように、100番単位で使用するデータベースを変える仕様になっているため、
状態耐性や属性耐性の設定欄が足りなくなったらデータベースを追加するだけで、
簡単に100番単位で拡張する事ができます。



また初期設定にあるデータベース(状態[0〜99]の状態耐性や属性[0〜99]の属性耐性)をそのまま使って処理しているため、
制作途中の作品に当コモンを導入しても、設定済みの主人公や敵キャラの状態耐性や属性耐性は、そのままご利用頂けます。


  
■当コモン素材の導入方法

ダウンロードしたデータは圧縮データになっているため、右クリック→「すべて展開」で解凍してください。



■コモンイベント

未使用のコモンIDを選択してから[読込]をクリックして、
コモンイベント(状態&属性を拡張)」か、
コモンイベント(状態のみ拡張)」か、
コモンイベント(属性のみ拡張)」のいずれかを読み込んでください。





■データベース

下図のように、ユーザーDB[8:状態設定]ユーザーDB[7:属性名の設定]にて、
状態や属性のデータ数が101以上になった場合は、データベースの追加が必要です。




タイプ数を増やし、新設したタイプを選択し、
当コモン素材にあるフォルダー[状態用データベース]フォルダー[属性用データベース]にある
100-199_ユーザーDB」と書かれたファイルを読み込んでください。

※「┣ 状態耐性100」などのタイプ名は変えないでください。




[データ数の設定]を押し、データ数を設定してください。

このデータ数は、ユーザーDB[9:敵キャラ個体データ]のデータ数よりも少なくなると、
戦闘開始時に「存在しないデータ番号」のエラーが発生する事があるため、
「1000」などと大きめのデータ数にしてください。




ユーザーDB[10〜12]のデータ数も「1000」などにしておくと、戦闘開始時にエラーが発生しなくなります。




可変DBの方もフォルダー[状態用データベース]フォルダー[属性用データベース]にある
100-199_可変DB」と書かれたファイルを読み込んでください。




[データ数の設定]を押し、データ数を設定してください。

可変DBの方は、データ数が足りなくなってもエラーが発生する事は無いため、
不必要にデータ数を増やしておく必要はありません。

逆に主人公が増えたらデータ数を増やすようにする事で、主人公を増やす前にセーブした古いセーブデータの場合、
古いセーブデータをロードしたあとに、不足するデータを新規で読み込むようになります。

例えばデータ数を「1」(主人公[0]しか表示しない)でゲームを始めてセーブしたあとに、
データ数を「2」にして追加した主人公[1]のとある状態耐性を「90」にした場合、
古いセーブデータをロードした時には、状態耐性が「90」になります。
しかし最初からデータ数を「200」などにして、全ての状態耐性の設定値を「100」でゲームを始めた場合、
あとから状態耐性を「90」などにしても、セーブデータには「100」で保存されているため、「90」にはなりません。



状態や属性のデータ数が201以上になった場合は、
さらに「200-299」と書かれたデータベース用のファイルを追加してください。



以上で導入完了です。


  
■処理構造の補足

この補足は、当コモンを改造したい、当コモンと同じコモンイベントを改造している他のコモン素材と併用したいなど、
当コモンの処理構造を知りたい方向けの情報です。

単に当コモンを使うだけの方は、読む必要はありません。



■処理方法

当コモンの処理は、
状態[0〜99]  →可変DB[┣ 状態耐性]を使用
状態[100〜199]→可変DB[┣ 状態耐性100]を使用

と言ったように、100番単位で操作するデータベースを変えて処理しています。

100番単位で操作するデータベースを変える処理方法だと、
コモンイベントの改造設定は「1つのデータベースを操作する」から
「条件分岐で分岐し、複数のデータベースから1つを操作する」に変えるだけで済みます。

また100番単位で分ける処理方法だと、
初期設定の属性耐性、状態耐性、状態リストがそのまま利用する事ができ、
可変DB[5:┗ 状態リスト]項目[0]が「-1=戦闘不能」もそのまま使えるので、
戦闘不能の有無を利用した他のコモン素材をそのまま利用する事ができ、
当コモンで改造するコモンイベントの数を3つ減らす事ができます。


戦闘中に使用する可変DB[11〜13]【DB操作】の設定では、
データと項目の設定を入れ替えて「データ=状態ID・属性ID」「項目=スロット(キャラ)」で処理しています。

データと項目の設定を入れ替える事で、以下のような効果が発生します。

データ=状態ID・属性ID」にする事で、状態や属性の数が500個や1000個になっても、
同じデータベースで処理する事ができ、戦闘用のデータベースを追加設定する必要が無い。
戦闘時のスロットは「主人公=0〜5」「敵キャラ=10〜16」となっており、
スロットを項目に変えても項目IDが足りなくなる事が無い。
従来通りに「データ=スロット」「項目=状態ID・属性ID」で処理した場合は、
移動時と同様に状態や属性の数に合わせてデータベースを追加する必要がある上、
従来通りの「データ=スロット」「項目=状態ID・属性ID」にしても、
改造するコモンイベントの数は変わらないので、従来通りで処理する意味が無い。
戦闘用の可変DB[11〜13]は、
可変DB[3〜5]ユーザーDB[11〜12]から情報をコピーして処理しているため、
データと項目を入れ替えても、当コモン利用者が状態耐性などを設定し直す必要が無い。

欠点としては、他のコモン素材可変DB[11〜13]を使用している場合は、
データと項目の設定を入れ替える改造が必要になります。

また指定したスロット単位でデータベースを初期化する場合は、
ループ処理で状態や属性の数だけループして1データずつ初期化していく必要があり、
ゲームプレイに支障の無いレベルですが、若干の処理落ちが発生します。

なお、可変DB[10:×┏ 戦闘一時ステータス[基]]は従来通りに「データ=スロット(キャラ)」で処理しています。



■移動時の改造設定

移動時の処理では【DB操作】で1つのデータベースを操作する設定を条件分岐で分岐し、
複数のデータベースから1つを操作する設定に改造しています。

例えば…
■可変DB書込:DB[ ┗ 状態リスト : CSelf0[主人公データID] : CSelf11[処理中状態ID] ] (5 : - : -) = 0
のような設定があった場合、以下のように変更しています。

■変数操作: CSelf91[状態ID余剰100] = CSelf11[処理中状態ID] % 100
■条件分岐(変数): 【1】 CSelf11[処理中状態ID] が 99 以下
         【2】 CSelf11[処理中状態ID] が 199 以下
         【3】 CSelf11[処理中状態ID] が 299 以下
         【4】 CSelf11[処理中状態ID] が 399 以下
-◇分岐: 【1】 [ CSelf11[処理中状態ID] が 99 以下 ]の場合↓
|■可変DB書込:DB[ ┗ 状態リスト : CSelf0[主人公データID] : CSelf91[状態ID余剰100] ] (5 : - : -) = 0
|■
-◇分岐: 【2】 [ CSelf11[処理中状態ID] が 199 以下 ]の場合↓
|■可変DB書込:DB[ ┗ 状態リスト100 : CSelf0[主人公データID] : CSelf91[状態ID余剰100] ] (38 : - : -) = 0
|■
-◇分岐: 【3】 [ CSelf11[処理中状態ID] が 299 以下 ]の場合↓
|■可変DB書込:DB[ ┗ 状態リスト200 : CSelf0[主人公データID] : CSelf91[状態ID余剰100] ] (39 : - : -) = 0
|■
-◇分岐: 【4】 [ CSelf11[処理中状態ID] が 399 以下 ]の場合↓
|■可変DB書込:DB[ ┗ 状態リスト300 : CSelf0[主人公データID] : CSelf91[状態ID余剰100] ] (40 : - : -) = 0
|■
-◇上記以外
|■条件分岐(変数): 【1】 CSelf11[処理中状態ID] が 499 以下
          【2】 CSelf11[処理中状態ID] が 599 以下
          【3】 CSelf11[処理中状態ID] が 699 以下
          【4】 CSelf11[処理中状態ID] が 799 以下
|-◇分岐: 【1】 [ CSelf11[処理中状態ID] が 499 以下 ]の場合↓
||■可変DB書込:DB[ ┗ 状態リスト400 : CSelf0[主人公データID] : CSelf91[状態ID余剰100] ] (41 : - : -) = 0
||■
|-◇分岐: 【2】 [ CSelf11[処理中状態ID] が 599 以下 ]の場合↓
||■可変DB書込:DB[ ┗ 状態リスト500 : CSelf0[主人公データID] : CSelf91[状態ID余剰100] ] (42 : - : -) = 0
||■
|-◇分岐: 【3】 [ CSelf11[処理中状態ID] が 699 以下 ]の場合↓
||■可変DB書込:DB[ ┗ 状態リスト600 : CSelf0[主人公データID] : CSelf91[状態ID余剰100] ] (43 : - : -) = 0
||■
|-◇分岐: 【4】 [ CSelf11[処理中状態ID] が 799 以下 ]の場合↓
||■可変DB書込:DB[ ┗ 状態リスト700 : CSelf0[主人公データID] : CSelf91[状態ID余剰100] ] (44 : - : -) = 0
||■
|-◇上記以外
||■条件分岐(変数): 【1】 CSelf11[処理中状態ID] が 899 以下
          【2】 CSelf11[処理中状態ID] が 999 以下
||-◇分岐: 【1】 [ CSelf11[処理中状態ID] が 899 以下 ]の場合↓
|||■可変DB書込:DB[ ┗ 状態リスト800 : CSelf0[主人公データID] : CSelf91[状態ID余剰100] ] (45 : - : -) = 0
|||■
||-◇分岐: 【2】 [ CSelf11[処理中状態ID] が 999 以下 ]の場合↓
|||■可変DB書込:DB[ ┗ 状態リスト900 : CSelf0[主人公データID] : CSelf91[状態ID余剰100] ] (46 : - : -) = 0
|||■
||◇分岐終了◇
||■
|◇分岐終了◇
|■
◇分岐終了◇

また特定の主人公の状態リストを全て初期化する時には、以下のように設定しています。

■可変DB書込:[タイプ ┗ 状態リスト(5) : データ CSelf0[主人公データID]を初期化]
■条件分岐(変数): 【1】 CSelf90[データ数:状態] が 101 以上
-◇分岐: 【1】 [ CSelf90[データ数:状態] が 101 以上 ]の場合↓
|■可変DB書込:[タイプ ┗ 状態リスト100(38) : データ CSelf0[主人公データID]を初期化]
|■
◇分岐終了◇
■条件分岐(変数): 【1】 CSelf90[データ数:状態] が 201 以上
-◇分岐: 【1】 [ CSelf90[データ数:状態] が 201 以上 ]の場合↓
|■可変DB書込:[タイプ ┗ 状態リスト200(39) : データ CSelf0[主人公データID]を初期化]
|■
◇分岐終了◇
■条件分岐(変数): 【1】 CSelf90[データ数:状態] が 301 以上
-◇分岐: 【1】 [ CSelf90[データ数:状態] が 301 以上 ]の場合↓
|■可変DB書込:[タイプ ┗ 状態リスト300(40) : データ CSelf0[主人公データID]を初期化]
|■
◇分岐終了◇
■条件分岐(変数): 【1】 CSelf90[データ数:状態] が 401 以上
-◇分岐: 【1】 [ CSelf90[データ数:状態] が 401 以上 ]の場合↓
|■可変DB書込:[タイプ ┗ 状態リスト400(41) : データ CSelf0[主人公データID]を初期化]
|■
◇分岐終了◇
■条件分岐(変数): 【1】 CSelf90[データ数:状態] が 501 以上
-◇分岐: 【1】 [ CSelf90[データ数:状態] が 501 以上 ]の場合↓
|■可変DB書込:[タイプ ┗ 状態リスト500(42) : データ CSelf0[主人公データID]を初期化]
|■
◇分岐終了◇
■条件分岐(変数): 【1】 CSelf90[データ数:状態] が 601 以上
-◇分岐: 【1】 [ CSelf90[データ数:状態] が 601 以上 ]の場合↓
|■可変DB書込:[タイプ ┗ 状態リスト600(43) : データ CSelf0[主人公データID]を初期化]
|■
◇分岐終了◇
■条件分岐(変数): 【1】 CSelf90[データ数:状態] が 701 以上
-◇分岐: 【1】 [ CSelf90[データ数:状態] が 701 以上 ]の場合↓
|■可変DB書込:[タイプ ┗ 状態リスト700(44) : データ CSelf0[主人公データID]を初期化]
|■
◇分岐終了◇
■条件分岐(変数): 【1】 CSelf90[データ数:状態] が 801 以上
-◇分岐: 【1】 [ CSelf90[データ数:状態] が 801 以上 ]の場合↓
|■可変DB書込:[タイプ ┗ 状態リスト800(45) : データ CSelf0[主人公データID]を初期化]
|■
◇分岐終了◇
■条件分岐(変数): 【1】 CSelf90[データ数:状態] が 901 以上
-◇分岐: 【1】 [ CSelf90[データ数:状態] が 901 以上 ]の場合↓
|■可変DB書込:[タイプ ┗ 状態リスト900(46) : データ CSelf0[主人公データID]を初期化]
|■
◇分岐終了◇



■戦闘時の改造設定

可変DB[11〜13]のデータと項目の設定を入れ替えて処理しているため、例えば…
■可変DB書込:DB[ ×┣ 状態リスト : CSelf0[戦闘スロット] : CSelf34[変化元状態] ] (13 : - : -) = 0
と言った設定の場合は…
■可変DB書込:DB[ ×┣ 状態リスト : CSelf34[変化元状態] : CSelf0[戦闘スロット] ] (13 : - : -) = 0
と言った感じに改造しています。

特定のスロットの可変DB[11〜13]を初期化する場合は、初期設定では…
■可変DB書込:[タイプ ×┣ 属性耐性計算結果(11) : データ CSelf21[処理対象]を初期化]
■可変DB書込:[タイプ ×┣ 状態耐性計算結果(12) : データ CSelf21[処理対象]を初期化]
と設定していますが、これを…
■DB読込(ユーザ): CSelf90[データ数:属性・状態] = ユーザDB[タイプ属性名の設定(7)のデータ数]
■変数操作: CSelf91[データID] = -1 + 0
■回数付きループ [ CSelf90[データ数:属性・状態] ]回
|■変数操作: CSelf91[データID] += 1 + 0
|■可変DB書込:DB[ ×┣ 属性耐性計算結果 : CSelf91[データID] : CSelf21[処理対象] ] (11 : - : -) = 100
|■
◇ループここまで◇◇
■DB読込(ユーザ): CSelf90[データ数:属性・状態] = ユーザDB[タイプ状態設定(8)のデータ数]
■変数操作: CSelf91[データID] = -1 + 0
■回数付きループ [ CSelf90[データ数:属性・状態] ]回
|■変数操作: CSelf91[データID] += 1 + 0
|■可変DB書込:DB[ ×┣ 状態耐性計算結果 : CSelf91[データID] : CSelf21[処理対象] ] (12 : - : -) = 100
|■可変DB書込:DB[ ×┣ 状態リスト : CSelf91[データID] : CSelf21[処理対象] ] (13 : - : -) = 0
|■
◇ループここまで◇◇
と言ったように、1データずつ初期化していく処理に変えています。



■データベースに関して

データベースは、基本的に初期設定を同じ仕様なので、
ユーザーDB[8:状態設定]ユーザーDB[7:属性名の設定]の設定の他、
技能や武器などの他のデータベースの設定、イベントコマンドの設定などは、通常通りに行ってください。



■他のコモン素材で同じコモンイベントを改造している場合

他のコモン素材を導入しているなどで、既に当コモンと同じコモンイベントを改造している場合は、
既に改造しているコモンイベントと当コモンのコモンイベントを1つのコモンイベントにまとめる作業が必要になります。

当コモンの改造は「状態耐性」「状態リスト」「属性耐性」が関係するイベントコマンドを改造しているため、
コモンイベントの検索機能で「耐性」や「状態リスト」の検索語で調べると、改造している場所が分かります。

2つのコモンイベントを1つにまとめる場合は、制作中のウディタとは別に新たなウディタの作品データを用意し、
新たなウディタの方に当コモンのコモンイベントを設定し、
2つのウディタの2つのコモンイベントの設定画面を並べて表示し、
どこが改造されているのかを見比べると良いでしょう。

▼2つのウディタのそれぞれのコモンイベントの設定画面を並べて表示した時


イベントコマンドの表示を上下にスクロールさせたい時には、スクロールさせたい画面の上にマウスポインタを置き、
マウスホイールを回転させる事で、設定画面をクリックしなくても、それぞれの画面が上下にスクロールします。


一方のコモンイベントに、もう一方のコモンイベントのイベントコマンドを移植する場合は、
イベントコードを使って移植すると良いでしょう。

コピーしたい範囲を設定し、範囲指定の上で右クリック→[イベントコード→クリップボードへコピー]を実行し、
移植先のコモンイベントで右クリック→[クリップボード→コード貼り付け]を実行して移植します。

基本的に改造設定が多い方(複雑な方)に、もう一方の改造設定を移植した方が、移植作業が楽になります。

両方の改造設定に同じセルフ変数を使っている場合は、
一方のセルフ変数の変数番号を変えておくなどの準備が必要です。

他のコモン素材で戦闘用の可変DB[11〜13]を操作している場合は、
そのコモン素材にある可変DB[11〜13]を操作している設定のデータと項目を入れ替える改造設定を行ってください。

単純に「イベントコマンドを移植すれば動く」とはならない事もあるため、
両方の処理構造を理解した上で、1つのコモンイベントにまとめてください。


  
■使用に関して

使用許可の申告:不要

イベント処理の改造:許可

※改造は自力で自己責任でお願いします。 



■関連ページ

YADOウディタ作品 YADOが作成したウディタ作品の一覧表です。
気紛れな空間 YADOの活動の拠点であるサイト。
セロード君との共同運営のサイトであり、
セロード君は気紛れな空間のサイト全体の管理者。
このサイトには雑談掲示板などもありますので、
何かメッセージがある場合は、こちらの掲示板をご利用下さい。
YADO作品リスト YADOが今までに公開してきた作品の一覧や、
YADOのプロフィールなどが見れます。