イベントコマンド

Last-modified: 2021-01-23 (土) 13:50:34

文章の表示

文章・コメント文の簡易挿入

CTRLキーを押しながらエンターを押すことで文章を挿入することができる。
同様にSHIFTを押しながらエンターを2回押すことでコメント文を挿入することができる。
後者は何も書かなければ空白のコメントを2行出力できる。

変数操作

文字列を数字に変換して代入

文字列の頭が数字なら(12abcdや9zyxwなど、ab34cdなど途中に数字が入ってるのは駄目)
代入値を「3000000」や「1600005」など文字列変数から数値だけを取得できる。

例:
\s[1]=「12abcd」\v[1]=「0」と定義し、
\v[1]=\s[1]とすると12が代入される。

ユーザーDBに変数を挿入

変数にUDBの変数呼び出し値(10AABBBBCC)を「データを呼ばない」状態で代入し、
代入元として「X番の変数呼び出し」として呼び出すことでUDBに変数を代入させることができる。
ただしこの方法による代入はサポート外で、またセーブデータにも保存されない。

例:
データを呼ばない状態で変数に「1010000201」を代入し「X番の変数呼び出し」を行うと
UDB[10:2:1]へ変数を代入できる

使用例として「TEMPデータ」など計算用に一時的に保持する変数や、
「現在のゲームプレイ中のみ効果を発揮するもの(ロードしなおすと消滅)」などが挙げられる。

変数操作+

【キャラ】画面X座標、画面Y座標

イベントを対象として取れる画面座標は、
X座標は中央値を取るが、Y座標は足元(そのイベントの一番下の座標)を取るようになっている。
この仕様について開発者であるSmokingWolf氏に直接聞いたところ、
これはイベントが0.5マス座標か1マス座標にいるか判別するためだからだそうな。

【ピクチャ】マウスカーソル重なっている?

マウス座標がピクチャと重なっている際に1を、それ以外に0を返すこのコマンドは、
ピクチャ自体が非表示(消去)状態なら-1を返す。

【ピクチャ】画像サイズ

取得する画像サイズは文字列ピクチャであっても展開している画像サイズを取得できる。
フォントのサイズや文字数で横サイズが可変するため、文章の自動改行や、
ピクチャは右詰め、けれど文字列自体は左詰めな状況で整列させたりできる。

【その他】マウス座標にあるEvID

マウス座標で取得できるのは素のマップサイズ準拠なため、
エフェクト処理でマップ画面自体を縮小・拡大しているとマウス座標とイベントの位置が一致しなくなる。

文字列操作

手動入力欄での変数の扱い

手動入力欄に書かれた文字はその場限りの一時的な文字列領域として扱われる。
20170523-05051.jpg
上図のように手動入力欄に変数を書いた場合、内部的には

【一時的な文字列領域】 = \s[1]
\s[0] 1文字切り出し 【一時的な文字列領域】

となり、実際には¥s[1]ではなく、代入された【一時的な文字列領域】から切り出す。

例:
\s[1]=おはようございます\nこんにちは\nこんばんは
\s[0]に↓から上一行切り出し 手動入力 \s[1]
とした場合、どれだけ切り出しても「おはようございます」しか切り出さない
例2:
\s[1]=おはようございます\nこんにちは\nこんばんは
\s[0]に↓から上一行切り出し 文字列変数 \s[1]
とした場合、「おはようございます」「こんにちは」「こんばんは」と順に切り出される

に↓のファイル内容読込

この処理を用いて読み込まれたテキストファイルは、特殊文字も展開した上で読み込まれる。
¥cself[x]や¥s[x]など当然ながら全て読み込んだ段階で全て展開されるため、
ノベルエンジンなどを自作する場合は予期せぬ展開を防ぐためになるべく特殊文字を書かないように注意する。

ファイル出力の仕様

ウディタはセーブ時、「save」フォルダ以外のフォルダを生成することができない。
存在しないフォルダを指定してセーブ処理を実行してもファイルを出力することなどはできない。
あらかじめ出力フォルダは作っておく必要がある

に↓フォルダのファイルリスト取得

説明書にも書いてあるが、暗号化されたフォルダのファイルリストは取得できない。
テスト段階だとフォルダの中身が非暗号化状態なので気づきづらい。

条件(変数)

条件に「セルフ」「変数」「システム」「可変DB」以外を指定する

条件比較元の左辺にある可変DBは、内部的に「1100000000」が代入されている。
したがって左のフォームに-100と入れれば「1000000000」となり、UDBが比較対象になる
同様に+200すればSDBが比較対象になる。
これを応用して左のフォームに「-1092」を入れると「8000000+X」となり、乱数を直接条件分岐に使用できる。
ただしこれらの動作は実際に動くかどうか試していないので注意。

キー入力

キー入力受付優先順位

入力優先度はキー番号が若い順に優先される。
ただし後発入力は最優先で1度だけ必ず割り込みで入力される。

キーボード入力中は自動キー入力を受け付けない

自動キー入力は文字列操作の「キーボード入力」中は動作しない。
ただし、自動キー入力以外の処理は実行されるので、
例えばキーボード入力中に以下の並列処理を走らせていると

■自動キー入力: キーボード入力 コード[ 117 ] ( Wキー )
■変数操作: CSelf10 += 1 + 0

wキーは入力されないが毎フレームCself[10]は+1されていく。

自動キー入力の有効フレーム

自動キー入力は1フレーム後に1フレームだけ入力を出力する。
自動キー入力実行直後はキー情報は発行されないので注意。

並列同士で自動キー入力情報を渡す場合

並列実行は最低が0フレームでなく1フレームでループするため、入力が1フレームだけだと取りこぼす可能性がある。
自動キー入力をループさせるなどで2フレーム以上入力させれば確実に渡すことが出来る。

ピクチャ

ピクチャ表示の優先順位(Ver1.31)

ピクチャ番号100000↑(10万以上)>選択肢>文章>ピクチャ0~99999>
画面効果>チップ属性★のマップチップ>イベント>ピクチャ-1~-99999>
マップチップ>ピクチャ-100000↓(マイナス10万以上)>遠景

同一画像のメモリ確保

同じ画像を別のピクチャ番号で表示しても、
確保するメモリは画像1個分。

画像先読み

本来ピクチャ表示処理は
表示命令→画像読み込み→画像分のメモリ確保→画面に表示→非表示命令→メモリ解放
と処理を行い、単純な表示では気になることはまずないが、
アクションゲームやSTGなど、同じ画像の表示・非表示が多発するとメモリ確保と開放が多発し、どうしても重くなる。

しかし透明度0のピクチャを表示する際、
表示命令→画像読み込み→画像分のメモリ確保
と表示部分が行われないので、描画処理を使わず、画像に対してメモリ確保だけを行える。

描画部分が喰われないので、あらかじめ画面外にまず使われないピクチャ番号に透明度0で画像を置いておけば、
上記の『同一画像のメモリ確保』の仕様により、メモリの確保、開放の処理が行われなくなり、先読み機能とて実装できる。
画像を先に読み込ませておけば、ピクチャ表示・非表示の際に必要な処理は描画部だけになり、大幅に処理を軽くすることができる

ピクチャ移動

ピクチャ移動ではピクチャの内容は更新されない。
文字列変数などを表示している場合、内容を更新する場合は一度表示し直す必要がある。

文字列ピクチャ上での【¥!】の挙動

文字列ピクチャは一度表示すると、そこから表示した文字列に干渉する手段がない。
文字列ピクチャ内に【¥!】(何か入力されるまでメッセージ表示停止)を記述すると以降は表示されず、
文字列の表示が終わらないため変数操作+で取得できる文字列ピクチャの表示完了はどれだけ待っても常に0を返す。
そのため実質的に【¥!】は【文章の表示】コマンド限定の特殊文字となる。

セーブ・ロード操作

セーブ操作で保存されるもの

・可変DB、各種変数
・イベントキャラの位置
・マップチップ配置
・表示中にピクチャ全部(ただしピクチャのディレイ指定は保存されない)
・今流れているBGM
(他にもあるかも)

連番以外のセーブデータ

ここで使われるセーブは、番号を入れることで
「savedata○○.sav」としてsaveフォルダに保存される。
(1番にセーブするとSaveData01.savと保存される)

しかし、番号には数字以外に、文字列変数を挿入することができ、
それを利用することでオリジナルのセーブデータを保存することができる。

たとえばコモンセルフ5番に「save/system.save」という文字列を放り込み、
セーブする番号にコモンセルフ5番(1600005)を指定することで
saveフォルダに「system.save」というファイルで保存することができる。
20100822-145222.jpg
これを応用すると、オートセーブ用ファイルやコンフィグファイルなどシステムデータ、
RPGにて全滅時のリトライ用の一時セーブなどに応用することができる。

別フォルダにセーブ

上記の連番以外のセーブは、文字列変数に「temp/systtem.save」と
save以外のフォルダを指定しても通常は保存されない。
しかし、セーブ処理にSaveフォルダ以外の生成機能がないだけなので
予め「temp」フォルダを作っておけばちゃんと別フォルダに保存される。

存在しないデータへのセーブ

本来存在しない領域へセーブしようとした際、新たにセーブデータを作成しようとするが、
「セーブデータへの書き込み」を用いて存在しないセーブデータの可変DBに書き込もうとするとエラーを吐く。
同様に、存在しないデータの可変DBから読み込もうとすると、処理を飛ばさずにエラーを吐く。

ver違いでのロード

ウディタは、セーブデータをロードする際、
現在読み込んでいるデータより多くの可変DBの項目が存在する場合、
自動的に増加した分の可変DBを初期値で補完する。
同様に通常変数、予備変数、文字列変数領域も自動で補完する。
ただしセーブしたときよりも項目が減少している場合や、既存の項目のタイプが変わってしまった場合はエラーを吐く。

ちなみにロードする際のゲーム判別は『ゲームタイトル』で行っている。
そのため、ウディタでは『ゲームタイトル ver1.00』という表記は控えておいた方がいい。
これはセーブデータから一部の変数を抜き出す際にもゲームタイトルで判定しているので、
「前作のセーブデータを持っていると…」みたいな演出はできない。
代わりになにかしら手動で暗号化処理を施したテキストファイルを出力するといいかもしれない。

現在(2.0以降)は追記部にバージョンを表記することで、
ゲームタイトルと混同した表示が可能になった。

滅多にない話だと思われるが、同名のゲームが出た場合、一応読み込むことはできる。
どちらにしても可変DBの構成が違うはずなので結局エラーを吐く。

セーブデータの先読み

セーブデータは、DB1個でも読むとファイル全体を取得するので、
ゲーム起動時に全セーブデータのCDB[0:0:0]を取得することで、
ロード時など、ファイルを呼び出す処理の際に引っ掛かりをなくすことが出来る。
ただこれは容量が小さいからできることで、セーブデータが500KB~1MB↑ぐらい肥大化してると逆に遅くなるかも。

イベント制御

ラベル処理の仕様

ラベルで飛んだ先が回数付きループだった場合、ループ回数がリセットされる。

条件分岐に『上記以外』を設定してる状態で他の条件分岐内にラベルジャンプすると、
その分岐内を処理後、続いて上記以外の処理が実行される。

トランジション

トランジション準備:厳密には「トランジション実行」を行うまで画面描画だけ停止
トランジション指定:ここで指定したトランジションは、以降変更があるまでずっとここで指定されたものが利用される
トランジション実行:指定したトランジションを実行。その際「トランジション準備」は必須ではない

コモンイベント

イベントの挿入とコモンEv名で呼出の違い

「イベントの挿入」はコモンイベントのIDを見る

▼利点
ID番号として指定できるので「X番の変数呼び出し」や
「現在呼び出し中のコモンよりx個上(下)」を呼び出しなど数字に沿った呼び出しが出来る。
▼欠点
一度コモンイベントを作ってしまうと順番が変えられない

「コモンEv名で呼出」はコモンイベントのイベント名を見る

▼利点
名前で呼び出されるので、コモンイベント一覧の場所は自由に変更できる
▼欠点
文字列で判別しているため、同一名コモンがあるとID番号が若いのが優先して実行される
名前を変えると呼び出せなくなるため、容易にコモン名を変更することができない

コモンEv名で呼出変更時の変数維持

「コモンEv名で呼出」で設定した変数情報は別のコモンイベントを選ぶと初期化されてしまうが、
コモンイベント名を直接入力、またはリストをCTRL押しながら選択することで変数を維持したまま変更できる。

ダウンロード

ダウンロード以外の使い方

「保存しない」にチェックを入れれば対象のURLにアクセスすることだけができ、
GETメソッドを使用すればパラメータを送ることができる、オンラインスコアなどに使用することができる。

ただしこちらを扱うにはウディタではなくCGIなどのWEB分野の知識が必要なので
多くの人は特に気にしなくても問題ない(そのためこの機能が単純に『ダウンロード』という名前になっていると思われる)