ウディタ解体記04

ウディタ解体記 学習紹介~learning~

ウディタ解体記

おさらい

まずは、これまでのおさらい。
ウディタ初期にあるコモンイベントで並列実行(常時)を起動条件とするものは2つある。

コモンイベント番号 名前 (コマンド行数)
048 X[共]基本システム自動初期化 (217行)
126 X[移]歩行時_並列キー処理 (126行)

[048-X[共]基本システム自動初期化]の、
0行~194行通して見てみると、

1.可変データベースの「主人公ステータス」内の「装備中の武器」の開始番号をセット。
2.初期化が終わってるかどうかの確認。終わってる場合は以下の処理をキャンセル。
3.Game.exeのバージョンの確認後、画面サイズの補正値と基本フォントサイズの格納をしている。
4.1~3が終わったら終了フラグに1を入れていると分かった。
5.主に可変データベースの「基本システム変数」の下記の各値を初期化および設定。
・敵/味方の最大数
・セーブ可能数
1ページのセーブ数/何ページまでかの値/セーブ可能かのフラグ
・コンフィグの設定
キー位置保存/戦闘時キー連打などのフラグ
・キーリピートフレーム数の設定
・決定、選択、キャンセルの各SE
・文字影をつけるかのフラグ
・選択肢のカーソル表示時に中央部分の処理の設定
・メッセージ速度
・仲間の車間距離
その後に仲間内の隙間の処理や重複の処理が呼ばれていた。
6.主人公になりうるデータ数分の装備を検索し武器20000~か防具30000~に分類し設定する内容だった。
7.自然回復値の設定をした。

一時パラメータを計算

キャラクターの装備を、武器コードと防具コードに変換する」内の後編、
195行~202行はじめるよぉ。

一時パラメータを計算~
コマンド22
195行コメント/一時パラメータを計算
196行
[X[移]一時ステ計算<初期化>]コモンEv122(43行)を呼び出し、
処理中位置”の対象主人公IDの装備なしパラメータを主人公一次DBにコピー

コマンド23

処理内容
装備なしのパラメータを主人公一時DBにコピー。
(この処理の終了時点では主人公一時DBには装備なしの数値が格納されている。)

簡単なコマンド構文(0~43行)の詳細

197行
[X[移]一時ステ計算<装備補正>]コモンEv123(108行)を呼び出し、
処理中位置”の対象主人公ID(196行)で上書きした一時DBに装備の効果を加算していく。

コマンド25

処理内容
主人公一時DBの計算中の一時パラメータに、装備の効果を加算します。
必ず事前に[X[移]一時ステ計算<初期化>]を行ってください。
この処理を上記の[X[移]一時ステ計算<初期化>]なしで連続で行うと、装備効果が重複して計算されてしまいます。

簡単なコマンド構文は長いため省略とスル。
要望があれば追加を検討

198行
[X[移]一時ステ計算<状態補正>]コモンEv124(51行)を呼び出し、
処理中位置”の対象主人公ID(196~197行)で上書きした一時DBに状態の効果を加算していく。

コマンド26

処理内容
主人公一時DBの計算中の一時パラメータに、状態の効果を加算します。
必ず事前に[X[移]一時ステ計算<初期化/状態補正>]を行ってください。
この処理を上記の<初期化>と<装備補正>なしで連続で行うと、装備効果が重複して計算されてしまいます。

簡単なコマンド構文(0~51行)の詳細

ん?2時間もたってたか?もう少しやったら今日は終わるよ。

コマンド30
199行コメント/HP・SP満タンに
200行
[X[移]パラメータ増減コモンEv70](685行)を呼び出し、22:HPのパラメータ増減の処理をする。
201行
[X[移]パラメータ増減コモンEv70](685行)を呼び出し、23:SPのパラメータ増減の処理をする。

[X[移]パラメータ増減コモンEv70]について
コマンド31

処理内容
基本システム内で主人公のパラメーターを増減させるときは、必ずこのコモンイベントを使用します。
移動中のみ有効ですが、戦闘後に呼び出される場合もあり、その際は戦闘メッセージで結果を表示します。

コマンド構文は長いため省略とスル。

203行 ループここまで

今日の所はこんな感じかな、思いがけず時間がかかってしまったため、申し訳ない。
205行~の「最新セーブデータの取得
211行~の「黒から徐々にフェードイン
からについてはまた後日。

では、今日のまとめ。

まとめ

ざらっと端的にまとめると、「一時パラメータを計算」は、

1.各主人公になりえるキャラクターの装備のない状態でのステータスを一時DBに上書き<初期化>する。
2.装備補正の処理を一時DBに加える。
3.状態補正の処理を一時DBに加える。
※この時順序がおかしいと、補正の重複等が起こってしまう。

の処理をしている。ことが分かった。

HP・SPを満タンに」では、

1.[X[移]パラメータ増減コモンEv70](685行)を呼び出し、22:HPのパラメータ増減の処理
2.[X[移]パラメータ増減コモンEv70](685行)を呼び出し、23:SPのパラメータ増減の処理

をしていることが分かった。

こうしてみると本当によくできてるなぁ。ウディタって。

明日もレッツウディタ♪

コマンドの詳細

簡単なコマンド構文(0~43行)

コマンド23

0~5行コメント
6~11行
対象主人公ID”がー1以下の場合、
\>「X[移]一時ステ計算<初期化>」エラー:
主人公IDが「-1」以下になっています。> \cself[0]
と表示し、イベント処理を中断
(\> … 次以降の文章を瞬間表示する)

コマンド24
12行コメント/パラメータをコピーする
13行
一時変数A”に可変DB[0:主人公ステータス/”対象主人公ID”/7:最大HP]の値を渡す。
14行
可変DB[17:×主人公一時DB/”対象主人公ID”/0:[一時]計算済みMaxHP]”を”一時変数A”の値で上書き。
以降同様に
16行~43行まで
9:最大SP→1:[一時]計算済みMaxSP
10:基本攻撃力→2:[一時]計算済み攻撃力
11:基本防御力→3:[一時]計算済み防御力
12:基本精神攻撃→4:[一時]計算済み精神攻撃
13:基本精神防御→5:[一時]計算済み精神防御
14:基本敏捷性→6:[一時]計算済み敏捷性
15:基本命中率[%]→7:[一時]計算済み命中率
16:基本回避率[%]→8:[一時]計算済み回避率
17:クリティカル率[%]→9:[一時]計算済みクリティカル
の順にDBを上書きしていく。
戻る

簡単なコマンド構文(0~51行)

コマンド26
0~5行コメント
6~11行
対象主人公ID”がー1以下の場合、
\>「X[移]一時ステ計算<初期化>」エラー:
主人公IDが「-1」以下になっています。> \cself[0]
と表示し、イベント処理を中断
(\> … 次以降の文章を瞬間表示する)

コマンド27
12行
MaxHP%変化値”に100を設定。
13行
MaxSP%変化値”に100を設定。

コマンド28
15行
最大状態数”にユーザDB[8:状態設定のデータ数]を設定。
16行
処理中状態”に-1を設定。(+1で0にするため)
17行
最大状態数”の回数ループ開始
18行コメント/状態ターンが残っていれば反映
19行
処理中状態”に+1を加算。(0になる)
20行
残りターン”に可変DB[5:┗状態リスト/”対象主人公ID”/”処理中状態”]を渡す。
21行
残りターン”が0以外の場合{
23行
MaxHP%変化値”にユーザDB[8:状態設定/”処理中状態”/26:MaxHP%変化率]を乗算する。
24行
MaxSP%変化値”にユーザDB[8:状態設定/”処理中状態”/27:MaxSP%変化率]を乗算する。
25行
MaxHP%変化値”に100を除算する。
26行
MaxSP%変化値”に100を除算する。
28行 分岐終了
30行 ループここまで

コマンド29
32行
MaxHP%変化値”を下限0に引上げる
33行
MaxSP%変化値”を下限0に引上げる
34行コメント/一時パラメータに加算する
35行コメント/HP・SPの上限設定
36行
可変DB[17:×主人公一時DB/”対象主人公ID”/0:[一時]計算済みMaxHP]に”MaxHP%変化値”を乗算。
37行
可変DB[17:×主人公一時DB/”対象主人公ID”/0:[一時]計算済みMaxHP]に100を除算。
38行
可変DB[17:×主人公一時DB/”対象主人公ID”/0:[一時]計算済みMaxHP]の値を下限1に引き上げる

40行
可変DB[17:×主人公一時DB/”対象主人公ID”/1:[一時]計算済みMaxSP]に”MaxSP%変化値”を乗算。
41行
可変DB[17:×主人公一時DB/”対象主人公ID”/1:[一時]計算済みMaxSP]に100を除算。
42行
可変DB[17:×主人公一時DB/”対象主人公ID”/1:[一時]計算済みMaxSP]の値を下限0に引き上げる

44行
最大HP”に可変DB[17:×主人公一時DB/”対象主人公ID”/0:[一時]計算済みMaxHP]を設定。
45行
最大SP”に可変DB[17:×主人公一時DB/”対象主人公ID”/1:[一時]計算済みMaxSP]を設定。

47行
可変DB[0:主人公ステータス/”対象主人公ID”/6:HP]上限”最大HP”に引き下げる
48行
可変DB[0:主人公ステータス/”対象主人公ID”/8:SP]上限”最大SP”に引き下げる
49行
可変DB[0:主人公ステータス/”対象主人公ID”/6:HP]下限0に引き上げる
50行
可変DB[0:主人公ステータス/”対象主人公ID”/8:SP]下限0に引き上げる

戻る

コメント

タイトルとURLをコピーしました