【ウディタ】初心者向けコモン作成例集①

概要

ウディタでコモンを作るときに
応用が利きそうな内容をピックアップした
粗雑なコモン作成例集です。
※②はいつ書くか分からないですが、
  遅筆でも続けたい気持ちはあるということで。

留意事項

この記事はウディタVer3.202時点の内容になります。
記事内容のミス指摘があれば修正しますが
内容に対する質問には基本答えませんので悪しからず。

<どの選択肢を選んだか?を1コードで取得>

内容:選択肢直後にSys20を取得する

Sys20:選択肢カーソル現位置(0,1,2..非選択時:-1)
選択肢分岐処理をせずに取得すれば
直前の選択肢で何を選んだか1コードで取得できます。

どの選択肢を選んだか?を1コードで取得

他用途:

同じ選択肢をループで使用する際に
Sys7(次カーソル位置)に代入すれば
カーソル記憶機能になります。

説明:

そもそも選択肢は選択肢ごとに処理を書けるので
一見すると、使う必要性は薄く感じます。
ただ、選択後の処理がほぼ同内容で
仮に10選択肢もあった場合には
修正が手間だったり、入力ミスが起きやすいです。

あと同じコモン内で処理できるのが地味に便利です。
(本来は並列処理で取得する用途のシステム変数)

<文章表示からSys0を変更する>

内容:

Sys0:顔グラフィック番号
文章表示の最初に「@数字」を入力して改行するだけで
Sys0の値が変更されます。
※ただ現状では、@¥cself[10]などとしても
特殊文字で変数を代入することはできません。

文章表示からSys0を変更する
上記コモンの実行例
(文章背景と顔は別コモンから並列表示)

他用途:

仮に、顔グラがスプライトシートで4パターンだった時に
Sys0=104(1が顔グラ、04がパターン)などの
独自の変数ルールにすれば
顔の差分表示が楽になるかもしれません。
顔以外でも、何らかのエフェクトを文章表示中にしたい場合に
活用できるかも。

説明:

ノベルゲームなどで文章を作りながら
顔指定ができる仕様だとかなり楽ができると思います。
Sys0:顔グラフィック番号
は、基本システムがなければ
これだけで何かが起こる変数ではありません。
顔グラフィックを表示するには、自分で
コモンイベントを作る必要があります。
参考URL:
●ウディタの顔グラフィックを使いたい <※基本システム>
⇒ パーフェクトガイド(外部サイト/ウディタ公式)

<中央寄せ・右寄せの文章幅を整える>

内容:

SysS 27:文章表示追加 最後尾に改行と文章幅分のスペース文字を入れる。
使用後はSysS 27をリセットするのを忘れずに。

文章幅の設定例
設定前
設定後

他用途:

ピクチャの文字表示にも応用できる。

説明:

例えば"本"をイメージしてください。
題名は中央寄せ、文章は左寄せ、ページ数は右寄せ
というデザインにしたい場合、何もしないと
左寄りのデザインで思ったような形にならないです。
そこを見えない文字(スペース)で補完します。
留意点として、本文が見えない文字幅をオーバーしてしまえば
本文側の文字幅(文字数)が基準になります。

<コモン内だけで利用するミニDB>

内容:

X番の変数呼出を使って、ミニDB的に利用する。
例えば、Cself5~9 とCself25~29を紐づけたと想定して
回数ループの中で
1600005と1600025を順番にX番呼出しつつ+1していけば
選択肢に表示する文字列:Cself5~9を格納しつつ
それに対応した変数:Cself25~29を定義づけられます。

例)コモンの変数状況
例)コモン記述

他用途:

上記のDB構造とは少し違いますが
コモン呼出のときに入力した値と
それに対応した変数を用意することでも
コモン内にフラグ保管することもできます。
例)
ステージ1=コモン変数21(1600021)と紐づけたとき
ステージX=コモン変数X(1600020+ステージ数)
※コモン変数XはX番呼出のオプションを使う。

説明:

可変DB的な使い方が欲しい時に
わざわざ小さい可変DBを用意すると
なんだか勿体ない感じがします。
コモン内で完結させられるなら、この方法が楽です。

<1つの変数に複数の意味を持たせる>

内容:

桁で区切れば、例えば複数のアイテムID情報をのせられます。
例:アイテムで、カテゴリ2のID33の所持数144
⇒ 233144 ⇒ 2 | 33 | 144
実際に利用する場合は、変数操作で÷や%を利用します。
 A例: 233144/ 100000 = 2 (カテゴリ2)
 B例: 233144% 100000 = 33144で更に /1000 = 33 (ID33)
 C例: 233144% 1000 = 144 になる(所持数)
 
但し、扱える数値上限を考慮する必要がある点と
マイナス値を扱えない点には注意しましょう。

他用途:

DB呼出などの特殊呼出も、桁区切りの数値です。
例:CDB22のデータ33の44番⇒1122003344 (11AABBBBCC)

また、移動9方向に割り当てられる数値(テンキー1~9)も
複数の意味をもつ変数と解釈できます。
(数値-1)/3…0=下側、1=中央、2=上側
(数値-1)%3…0=右側、1=左側、2=中央

説明:

桁で区切ったルールを独自定義すれば
1つの変数を複数の意味を持った数値として扱えます。
圧縮した情報をコモン間で受け渡したい時や
複雑なシステムを作る時の助けになります。

<条件分岐の入れ子を減量、ラベルに変える>

内容:

IDごとに異なる処理、または
ある程度グループ化された処理は
条件分岐からラベルに置き換えることができます。
例:アイテムの効果IDが1を処理する
>> ラベル1へ飛ぶ

飛んだ後、最後には
イベント処理中断や終了処理へ飛ぶラベルなどで
分岐処理を終わらせる。

ラベルで条件分岐の例

他用途:

説明:

条件分岐は4項目+上記以外となっていますが
上記以外に連なって作り続けると可読性が下がります。
チェックポイントやコメントを書いても限界があるので
なるべく入れ子にし過ぎない点でラベルは便利です。
ただ、できないこともあるので
使えそうな時に使うくらいのテクニックかもしれません。
※できないこと例…ラベルで飛ぶと回数ループの回数がリセットされる仕様で併用できない

よくある、条件分岐入れ子の例
(入れ子が複雑になり、可読性が低下の可能性)

ちなみに元となるIDが一意でコモン内で変化しない
上記以外を使わずに並べることで
インデントがそろって見やすくはなります。
(ただし、上記以外の分岐が使いづらくなる)

上記以外を使わずに、条件分岐を並べた例

この記事が気に入ったらサポートをしてみませんか?