message — 文章を表示してクリックを待つ
構文
message "テキスト"
文章をメッセージ枠に出してクリックを待つ。バックログと既読の記録にも入る。タブで始まる行は内部でこの命令に変換される。使うのは最初の引数だけなので、空白を含む文章は引用符で囲む。
例
message "クリックで次へ進みます。"
images/10_scenario_api.png
図10-1: シナリオスクリプト記法
images/10_scenario_api.pngシナリオスクリプトは 行頭コマンド + タブ始まりメッセージ で記述します。
本章前半はカテゴリ別の概要、後半は全コマンドの詳細リファレンス(構文・説明・例)です。よく使う命令の入門は 制作者入門 04・09 を参照してください。
1 行に 1 つ、文章か命令を書く。
行頭にタブを入れると、テキスト表示 + クリック待ちになる。
こんにちは!
クリックで次へ進みます。
本文には次のタグが書ける: <ruby=よみ>漢字</ruby>(ふりがな)、<color=#ffd45a>…</color>(色)、<size=34>…</size>(大きさ)、<b>…</b>(太字)、<i>…</i>(斜体)。
| 行の形 | 扱い |
|---|---|
| タブで始まる行 | 文章 + クリック待ち。ただし中身が命令・マクロ・Obj.method の形なら、タブを外して命令として実行する |
| 先頭の語が命令名・マクロ名の行 | 命令として実行する |
| 命令ではなく、日本語(ASCII 以外の文字)を含む行 | タブが無くても文章 + クリック待ち |
| 命令ではなく、英数字だけの行 | 未知の命令としてログに残し、次の行へ進む |
*名前 | ラベル |
| 空行 | 何もしない |
BG と bg は同じ)。ラベル名は区別する。. を含む(Movie.play など)と、オブジェクト呼び出しとして扱う。使えるものは 10.20 の表だけ。command 引数1 引数2 ...
引数は空白で区切る。空白を含む文字列は "二重引用符" で囲む(name "澪"、chara_show 0 "smile" center 30 sync)。引数に ( ) を含むときも引用符で囲む(囲まないと行の読み取りが崩れる)。
*label_name
または
label label_name
label の行に : は付けない(付けると label_name: という名前になる)。ラベル名は大文字・小文字を区別し、同じ名前が 2 つあると後ろのものが使われる。jump・gosub・if・選択肢の行き先では * を付けても付けなくてもよい。
// 行末までコメント(ふだんはこれを使う)
/* 複数行に
またがるコメント */
; 行頭の ; もコメント
# 行頭の # もコメント(#if などの命令を除く)
コメントは // と /* */、行頭の ;、行頭の #(下の命令を除く)。行頭が ; または # の行は、読み込むときに // を付けてコメントにする(タブ始まりでも同じ。行番号は変わらない)。# の直後が if・elif・else・endif・jump・select・se_play で始まると命令として扱うので、# のコメントはこれらの語で始めない。
行の途中の ; はコメントにならず、命令の区切りになる。bg 0 bg01a ; メモ と書くと「メモ」が別の行として扱われ、台詞として表示される。行末のメモは // で書く。; で 2 つの命令を 1 行に並べることもできるが、書き方によっては行全体が台詞として扱われるので、1 行に 1 命令で書く。
| 命令 | 説明 |
|---|---|
#if "条件" | 条件が成り立てば次の行から実行し、成り立たなければ同じ深さの #elif・#else・#endif まで読み飛ばす(if_block になる) |
#elif "条件" | 前の分岐が成り立たなかったときだけ条件を調べる。前の分岐を実行し終えて来たときは #endif まで飛ばす(elif_block) |
#else | どの分岐も成り立たなかったときに実行する(else_block) |
#endif | 条件ブロックの終わり(endif_block) |
#jump *ラベル | ラベルへ飛ぶ(条件なし。jump と同じ)。* を付けたまま渡すので、ラベルとしてだけ探す(打ち間違えてもファイル読み込みに化けない)。#jump ファイル *ラベル と空白で並べると、別のファイルのラベルへ飛ぶ |
#select "文言", *ラベル, "文言", *ラベル ... | 選択肢を 1 行で出す(select) |
#select_clear | 積んだ選択肢を空にする(select_clear) |
#select_add "文言", *ラベル [, 有効] | 選択肢を 1 つ積む。3 番目に 0 を書くと押せない項目になる(select_add) |
#select_show | 積んだ選択肢を出し、選ばれたラベルへ飛ぶ(select_show) |
#select_view "文言", *ラベル, ... | 画面を暗くして選択肢を出す(select_view) |
#se_play ファイル | se ファイル と同じ |
条件は 変数 演算子 値 の 3 つを空白で区切って書く(引用符は省いてもよい)。演算子は == != < > <= >=。値は整数で、整数として読めなければ変数名として読む(変数どうしを比べられる)。比べるのはシナリオ変数(setvar / addvar / random などで入れた整数)だけで、まだ値を入れていない変数は 0。入れ子にできる。#endif が無いと、成り立たなかったときにファイルの終わりまで読み飛ばす。
setvar love 7
#if "love >= 10"
とても仲がいい。
#elif "love >= 5"
まあまあ仲がいい。
#else
まだよそよそしい。
#endif
よく使う命令の並びに名前を付け、1 行で呼べるようにする仕組み。
[macro name="MY_FADE" %1="60"]
bg 0 %0 0 0 fadein %1
[end_macro]
MY_FADE bg01a
MY_FADE bg01b 30
上の呼び出しは、1 行目が bg 0 bg01a 0 0 fadein 60、2 行目が bg 0 bg01b 0 0 fadein 30 になる。
[macro name="名前"] から [end_macro]([endmacro] でもよい)まで。本文の %0〜%9 に呼び出しの引数が入る。%1="60" のように書くと、その引数を省いたときの値になる(既定値も無ければ空)。名前 引数0 引数1 ...。引数は空白かカンマで区切る。引用符で囲んだ値は、引用符が外れて本文へ入る(空白を含む値は渡せない)。BG_FADE も bg_fade も同じ)。data0/macro/。フォルダ内の .lsf(暗号化したもの)と .txt をすべて読み、同じ名前のファイルは .lsf を優先する。読み込むのは最初にシナリオを実行したときの 1 回だけ。# の命令やタブ始まりの文章も変換されないので、本文には命令だけを書く(文章を出すなら message "…")。本文中の空行と、;・// で始まる行は読み飛ばす。// のコメントを付けない(コメントも引数として読まれ、日本語を含むと行全体が台詞になる)。コメントは前の行に書く。jump・if・select・save などの制御語を含む)のマクロは登録されない。ただし本文が同じ命令で始まるもの([macro name="SHAKE"] の本文が shake %0 %1 %2 など)は、大文字で書くための別名として登録される。このとき小文字で書いた組み込み命令の行もマクロを通るので、本文に書いていない引数は捨てられる。エンジンに付属する data0/macro/ のマクロ。中身はふつうの命令なので、書き換えたり足したりできる。
bg.txt(背景)
| マクロ | 内容 |
|---|---|
BG_SHOW 名前 | 層 0 に即時表示(bg 0 名前) |
BG_FADE 名前 フレーム | 層 0 にフェードインで表示(待たない) |
BG_FADE_SYNC 名前 フレーム | 同上。終わるまで待つ |
BG_OUT フレーム | 層 0 をフェードアウト(待たない) |
BG_OUT_SYNC フレーム | 同上。終わるまで待つ |
BG_CROSS 名前 ms | クロスフェード(crossfade 名前 ms) |
BG_LOOP 名前 X速度 Y速度 | 層 0 に出して流し続ける(bg_scroll) |
BG_LOOP_ID 層 名前 X速度 Y速度 | 層を指定して流し続ける |
BG_MOVE x y フレーム | 層 0 を動かす(待たない) |
BG_MOVE_SYNC x y フレーム | 同上。終わるまで待つ |
ch.txt(スプライトで出す絵。chara_show ではなく sprite を使う)
| マクロ | 内容 |
|---|---|
CH_SHOW 名前 | スプライト層 0 の (0, 0) に出す(sprite 0 名前 0 0) |
CH_LEFT 名前 | スプライト層 0 の x=-200 に出す |
CH_RIGHT 名前 | スプライト層 1 の x=200 に出す |
CH_CENTER 層 名前 x y | 層と位置を指定して出す |
CH_HIDE 層 | 消す(hidesprite) |
CH_HIDE_ALL | 全部消す(clearsprites) |
CH_CHANGE 層 名前 | 絵を替える(spritechange。位置は横中央・y=0 に戻る) |
CH_ALPHA 層 濃さ | 濃さ 0〜100(spritealpha) |
ev.txt(イベント CG)
| マクロ | 内容 |
|---|---|
EV_SHOW 名前 | イベント CG を即時表示(eventcg) |
EV_CLEAR | イベント CG を消す(cleareventcg) |
EV_CHANGE 名前 ms | イベント CG を消してから、背景(層 0)を名前の絵へクロスフェードする |
se.txt(効果音)
| マクロ | 内容 |
|---|---|
SE_PLAY 名前 | 登録されない(組み込みの se_play と同じ名前で、本文が se で始まるため)。書くと組み込みの se_play が動くが、se_play はチャンネルとファイルの 2 つが要るので、SE_PLAY 名前 では鳴らない。効果音は se 名前 で鳴らす |
SE_LOOP 名前 | ループで鳴らす(se 名前 1) |
SE_STOP | 効果音を全部止める(se_stop)。組み込みの別名として登録されるため、小文字の se_stop 1000 もこのマクロを通り、時間が捨てられて即座に止まる |
SE_FADEOUT ms | se_stop ms(消音して ms 待ってから全部止める) |
SE_VOL 音量 | 効果音の音量(se_vol の別名) |
SE_PAN 名前 パン | 左右を決めて鳴らす(se_pan の別名。1 引数の形も通る) |
SE_DIST 名前 音量 パン | 音量と左右を決めて鳴らす(se_vol + se_pan) |
snd.txt(BGM・ボイス)
| マクロ | 内容 |
|---|---|
BGM_PLAY 名前 | 登録されない(組み込みの bgm_play と同じ名前のため)。書くと組み込みの bgm_play が動き、曲は鳴る(結果は同じ) |
BGM_FADEIN 名前 ms | フェードインで鳴らす(bgm 名前 ms) |
BGM_CHANGE 名前 ms | 今の曲を ms でフェードアウトして(終わるまで待つ)、新しい曲を ms でフェードイン |
BGM_VOL 音量 [ms] | BGM の音量(bgm_vol の別名) |
BGM_FADE_VOL 音量 ms | 音量を ms で変える(bgm_vol) |
BGM_LOW | 1 秒で音量 30 へ下げる |
BGM_NORMAL | 1 秒で音量 100 へ戻す |
BGM_STOP [ms] | 止める(bgm_stop の別名) |
BGM_FADEOUT ms | フェードアウトして止める(bgm_stop ms) |
BGM_PAUSE / BGM_RESUME | 一時停止・再開(bgm_pause / bgm_resume の別名) |
VOICE_PLAY 名前 | 声をそのまま鳴らす(voice。キャラ別の設定は効かない) |
VOICE_STOP | 声を止める(stopvoice) |
VOICE_WAIT | 声の終わりまで待つ(voice_wait の別名) |
VOICE_VOL 音量 | 声の音量(voice_vol の別名) |
DUCKING_ON / DUCKING_OFF | ダッキングの入切(ducking 1 / ducking 0) |
fx.txt(画面演出)
| マクロ | 内容 |
|---|---|
SHAKE 強さ 回数 ms | 画面を揺らす(shake の別名) |
SHAKE_LIGHT / SHAKE_HEAVY | 軽い揺れ(shake 4 2 300)/強い揺れ(shake 16 5 800) |
FLASH_WHITE ms / FLASH_RED ms | 白・赤のフラッシュ(flash) |
MONO / SEPIA | 白黒・セピア(color_monochrome / color_sepia) |
COLOR_RESTORE | 色調を戻す(color_restore)。組み込みの別名として登録されるため、小文字の color_restore 1000 もこのマクロを通り、時間が捨てられて常に 400ms になる |
FX_SNOW / FX_RAIN / FX_SAKURA | 雪・雨・桜(effect_start) |
FX_STOP | 止める(effect_stop) |
scene.txt(場面の初期化と後片付け。どれもフラグや変数には触らない)
| マクロ | 内容 |
|---|---|
INIT_ALL | 場面の先頭(何かを表示する前)に置く。立ち絵・スプライト・イベント CG・背景、図形・粒子・カメラ・合成・色調・ガンマ・シャープネス、声・効果音・BGM、名前と文章を片付け、ダッキングを 100 に戻し、メッセージ枠を出し、文字速度を 30 にする |
END_ALL | 場面の末尾(フェードアウトし終えた後)に置く。INIT_ALL と同じものを片付け(文字速度は変えない)、メッセージ枠を隠す |
INIT_KEEP | 背景と BGM は残して、立ち絵・スプライト・イベント CG・演出・声・効果音・名前と文章を片付け、メッセージ枠を出す |
END_KEEP | INIT_KEEP と同じものを片付ける(枠はそのまま) |
fxdraw.txt(図形エフェクトの組み合わせ。色は "#AARRGGBB"。多くは時間が来ると自動で消える)
| 種類 | マクロ |
|---|---|
| 斬撃 | SLASH x1 y1 x2 y2、SLASH_COLOR x1 y1 x2 y2 色、SLASH_R、SLASH_L、SLASH_H、SLASH_V、SLASH_TRIPLE、SLASH_CROSS |
| 弧の斬撃 | ARC_SLASH cx cy 半径 開始角 終了角 色、ARC_SLASH_DOWN、ARC_SLASH_UP、ARC_SLASH_L、ARC_SLASH_R、ARC_SLASH_CROSS、GREAT_SLASH_D、GREAT_SLASH_U、GREAT_SLASH_L、GREAT_SLASH_R |
| 打撃・魔法 | IMPACT x y、IMPACT_HEAVY x y、MAGIC_CIRCLE x y 色、MAGIC_BURST x y 色、THUNDER x y、THUNDER_STRIKE x y、CRACK x y、RIPPLE x y 色、BARRIER x y 色、WARP x y 色、STARBURST x y 色、AURA x y 色、SPARKLE x y |
| 移動・集中線 | DASH、DASH_R、DASH_L、DASH_U、DASH_D、DASH_DIAG_R、DASH_DIAG_L、SPEED_V、AFTERIMAGE x1 y1 x2 y2、LEAP x y、RUSH 色、CONCENTRATE x y、CONCENTRATE_COLOR x y 色、CONCENTRATE_BURST x y、CONCENTRATE_SOFT x y、FOCUS x y、VORTEX x y 色、ZOOM_IN、ZOOM_OUT、WIPE_LR |
| 日常・雰囲気 | SUNBEAM 色(出したまま残る。SUNBEAM_OFF で消す)、STEAM x y、BUBBLE x y、TIME_PASS x y、GLOW x y 色、HEART x y 色、HEART_POP 色、WARM x y 色、TWINKLE 色、RAINBOW、SPOTLIGHT x y |
| 緊張 | TENSION(出したまま残る。TENSION_OFF で消す)、HEARTBEAT、ALERT、IRIS_IN、WARNING、TREMBLE |
| 片付け | FX_CLEAR_ALL(fx_clearall) |
組み込み命令と名前が重なる同梱マクロ: SE_PLAY と BGM_PLAY は登録されず、組み込みの se_play / bgm_play が動く。SE_STOP・SE_VOL・SE_PAN・BGM_VOL・BGM_STOP・BGM_PAUSE・BGM_RESUME・VOICE_WAIT・VOICE_VOL・SHAKE・COLOR_RESTORE は別名として登録され、小文字で書いた組み込み命令の行もこれらを通る。引数をそのまま渡すものは動きが変わらないが、本文に引数の無い SE_STOP と COLOR_RESTORE は、se_stop と color_restore に書いた時間を捨てる。
| コマンド | 引数 | 説明 |
|---|---|---|
name | [話者名] | 話者名を決める(引数なし・"" で消す) |
message | "テキスト" | 文章を出してクリックを待つ(タブ始まりの行と同じ) |
showtext | "テキスト" [x] [y] | メッセージ枠に文章を出す(クリック待ちなし。x・y は位置ではない) |
msgshow | — | メッセージ枠を出す |
msghide | — | メッセージ枠を隠す |
msgclear | — | 枠の文章を消す |
textspeed | ms | 1 文字あたりの表示時間(0 で一度に出す) |
| コマンド | 説明 |
|---|---|
bg id file [x y] | 背景を即時表示(id は層 0〜19) |
bg id file x y fadein frames [sync] | フェードイン(sync で終わるまで待つ) |
bg id file x y fadeout frames [sync] | その層をフェードアウト |
bg id file x y rule frames [vague] | ルール画像(data7/rule)で切り替え(終わるまで待つ) |
clearbg | 場面の背景(層 0)を消す |
bg_scroll id file x y dx dy | 背景を流し続ける |
move id x y frames [sync] | 背景の層を動かす |
crossfade file ms | クロスフェード(終わるまで待つ) |
wipe file ms [direction] | 方向付きワイプ(終わるまで待つ) |
wipe file ms rule [vague] | ルール画像でワイプ(終わるまで待つ) |
fadethrough file ms [r g b] | 単色を挟んで切り替え(終わるまで待つ) |
trans_begin(backlay)… trans rule ms [vague] | 場面まるごと(立ち絵ごと)を切り替え。trans_cancel で写しを捨てる |
例:
bg 0 bg01a
bg 0 bg01b 0 0 fadein 45 sync
crossfade bg01c 800
| コマンド | 説明 |
|---|---|
chara_show layer spec position frames [sync] | 立ち絵を表示(layer 0〜9) |
chara_hide layer [frames] [sync] | 立ち絵を消す |
chara_change layer spec [frames] [sync] | 表情・差分を替える |
chara_clear | 全部消す(引数は使わない) |
chara_fit layer percent | 画面に映す割合 |
chara_filter layer filter | 拡大縮小の補間 |
chara_voice_sync / chara_frame_sync / chara_voice_sync_clear | 声の再生位置・フレーム数で表情を替える予約 |
chara_voice_id / chara_lipsync / chara_lip_start / chara_lip_stop / chara_lip_interval | 口パク |
例:
chara_show 0 "smile" center 30 sync
chara_change 0 "trouble" 15 sync
chara_hide 0 30 sync
| コマンド | 説明 |
|---|---|
sprite layer file [x y] | スプライトを表示(layer 0〜7。x を省くと横中央) |
hidesprite layer | スプライトを消す |
clearsprites | スプライトを全部消す |
spritechange layer file [x y] | 絵を替える |
spritemoveto layer x y ms | 動かす(終わるまで待つ) |
spritealpha layer alpha | 濃さ(0〜100) |
sprite_filter layer filter | 拡大縮小の補間 |
eventcg / evcg_show | イベント CG を表示 |
evcg_change / evcg_layer / evcg_move / evcg_hide | 差分・差分レイヤー・移動とズーム・消去 |
cleareventcg | イベント CG を即座に消す |
cg_flag | CG を見た記録を付ける |
| コマンド | 説明 |
|---|---|
bgm / bgm_play | 曲をループで鳴らす(同じ命令) |
stopbgm | すぐ止める |
bgm_stop [ms] | フェードアウトして止める(終わるまで待つ) |
pausebgm / bgm_pause | 一時停止(同じ命令) |
resumebgm / bgm_resume | 再開(同じ命令) |
bgmvolume vol | 音量を即座に変える |
bgm_vol vol [ms] | 音量(ms を書くとその時間で変える) |
bgmfade vol ms | 音量をなめらかに変える(止めない・待たない) |
setbgmloop | ループの入切 |
bgm_pan | パン(-100=左 / 0=中央 / 100=右) |
例:
bgm title 800
bgmfade 30 600
bgm_stop 1000
| コマンド | 説明 |
|---|---|
se file [loop] | 効果音を鳴らす(古い書き方 se ch file も可) |
se_play ch file [loop] | チャンネル付きの書き方(ch は使われない。引数 2 つ必須) |
seloop file | ループで鳴らす |
stopse | 全部止める |
se_stop [ms] | 全部止める(ms は消音して待つ時間。フェードではない) |
sestop slot | 指定スロットを止める |
sevolume / se_vol | 音量(同じ命令) |
se_pan | パン(1 引数=左右だけ変える / 2 引数=鳴らす) |
| コマンド | 説明 |
|---|---|
vo file [charaId] | 声を鳴らす(キャラ別の消音・音量・口パクつき) |
voice file | 声をそのまま鳴らす |
vo_sync file1 file2 ... | 複数の声を重ねて鳴らす |
vo_wait / voice_wait | 声の終わりまで待つ(vo_wait は口パクも止める) |
stopvoice | 声を止める |
voice_pause / voice_resume | 一時停止と再開(続きから鳴る。stopvoice とは別物) |
vo_pan | パン(1 引数=左右だけ変える / 2 引数=鳴らす) |
voicevolume / voice_vol | 声全体の音量(同じ命令) |
voice_volume charaId vol | キャラごとの音量 |
voice_mute charaId 0/1 | キャラごとの消音 |
conf_voice_ducking [%] | 声の間の BGM 音量(%)を決めてダッキングを入れる |
ducking 0/1 [vol] [in] [out] | ダッキングの入切 |
| コマンド | 説明 |
|---|---|
playmovie loop file [x y mask async] | 動画を再生(既定は終わるまで待つ) |
movie file [clickSkip loop] | 動画を再生(終わるまで待つ。クリックで飛ばせる) |
movie_play file [loop=…] | 動画を再生(待たない) |
stopmovie / movie_stop | 停止(同じ命令) |
pausemovie | 一時停止 |
resumemovie | 再開 |
setmovievolume | 音量(0〜100) |
seekmovie | 位置を飛ばす(ms) |
| コマンド | 説明 |
|---|---|
fadein / fadeout | 黒から明ける / 黒へ暗転(終わるまで待つ) |
fadecolor | 色の幕で暗転・明ける(終わるまで待つ) |
quake / shake | 画面揺れ(終わるまで待つ。shake の回数は使われない) |
flash | フラッシュ |
coloradjust / gamma / sharpness | 色調整 |
color_monochrome / color_sepia / color_restore | 白黒・セピア・戻す(待たない) |
snow / rain / sakura | 天候エフェクト(パーティクル) |
effect_start / effect_stop | 汎用パーティクル |
画像を使わずに図形を描く演出。どれも待たずに次の行へ進む。組み合わせた演出は同梱の fxdraw.txt マクロ(10.1)にある。
| コマンド | 説明 |
|---|---|
fx_line / fx_rect / fx_circle / fx_radial / fx_arc / fx_bolt / fx_zigzag / fx_polygon / fx_heart | 図形を描く |
fx_image | 絵を図形と同じ扱いで置く |
fx_anim / fx_transform / fx_spin / fx_blend | 出入りの時間・伸縮と移動・回転・合成 |
fx_clear / fx_clearall | 消す |
fx_design | 座標の基準解像度 |
| コマンド | 説明 |
|---|---|
camera | カメラ移動・ズーム・回転(待たない) |
resetcamera | カメラを戻す |
blendmode | 場面の重ね方 |
resetblend | 重ね方を戻す |
| コマンド | 説明 |
|---|---|
particle | 組み込みのパーティクル(0=雪 1=雨 2=桜) |
snow / rain / sakura | 雪・雨・桜 |
stopparticle | 停止 |
particle_load | JSON 定義を読む |
particle_play / particle_playasset | 再生 |
| コマンド | 説明 |
|---|---|
animeload | アニメデータ読込 |
animecreate | インスタンス作成(ハンドルを変数へ入れられる) |
animedestroy / animedestroyall | 破棄 |
animemotion | モーション再生 |
animeexpression | 表情変更 |
animepos / animescale / animealpha | 位置・大きさ・濃さ |
animevisible | 表示切替 |
animewind | 風揺れ |
animestop | 停止 |
| コマンド | 説明 |
|---|---|
motionload | データ読込 |
motioncreate | インスタンス作成(ハンドルを変数へ入れられる) |
motiondestroy / motiondestroyall | 破棄 |
motionmotion / motionmotionex | モーション再生(ex は繋ぎの時間・ループを指定) |
motionstop / motionstopfade / motionfade | 停止・時間をかけて停止・繋ぎ時間の既定値 |
motionexpression | 表情 |
motionpos / motionscale / motionalpha | 位置・大きさ・濃さ |
motionvisible | 表示 |
motionwind | 風揺れ |
motionparam / motionresetparams | パラメータ |
motionblink / motionblinktiming / motionblinkparams | 自動まばたき |
motionlipsync / motionlipvalue / motionliptuning / motionlipparams / motionvoicelip | 口パク |
motionpart / motionpartalpha | パーツの切り替え・濃さ |
3D 場面(glTF 2.0 / GLB)はシナリオ一行命令ではなく、システムスクリプトの Scene3D オブジェクトです。詳細は 第9章 を参照してください。
| コマンド | 説明 |
|---|---|
wait | ミリ秒待機 |
click | クリック待ち |
jump / goto / jumpfile | ラベル・別のファイルへ飛ぶ(同じ命令) |
gosub / return | サブルーチン |
label | ラベル定義(*名前 と同じ) |
end / exit | シナリオ終了(同じ命令) |
jumpstop / scenestop | シーン送りの停止点(同じ命令) |
| コマンド | 説明 |
|---|---|
choice / select | 文言と行き先の組を並べて選択肢を出す(同じ命令) |
select_view | 画面を暗くして選択肢を出す |
select_clear / select_add / select_show | 選択肢を 1 つずつ積んで出す |
select_timeout | 次の選択肢 1 回だけに制限時間を付ける(残り時間の帯を出す) |
例:
#select_clear
#select_add "はい", *yes
#select_add "いいえ", *no
#select_show
*yes
はいを選びました。
制限時間を付けるときは、選択肢のまとまりのすぐ前に select_timeout を書きます(先頭に # は付けません)。
| コマンド | 説明 |
|---|---|
setvar | 変数に整数を入れる |
addvar | 変数に足す |
random | 乱数を変数へ(両端を含む) |
randomjump | ランダムにラベルへ飛ぶ |
if | 条件が成り立てばラベルへ飛ぶ(値は整数) |
if_block / elif_block / else_block / endif_block | #if / #elif / #else / #endif の中身 |
| コマンド | 説明 |
|---|---|
setsysflag / addsysflag | システムフラグ(どのセーブデータでも共通) |
setclearflag | クリアフラグ |
setflowflag / addflowflag | フローチャートのフラグ |
autosave | その場でオートセーブ |
scenetitle | セーブ一覧に出る場面名 |
| コマンド | 説明 |
|---|---|
automode | オートモード(引数を省くと反転) |
skipmode | スキップモード(引数を省くと反転) |
auto_delay / skip_delay | 待ち時間の設定 |
| コマンド | 説明 |
|---|---|
scene_start | シーン回想の開始登録 |
scene_end | シーン回想の解放 |
| コマンド | 説明 |
|---|---|
screen_show | 名前付きの画面を開いて結果を受け取る |
sysscript | システムスクリプトを実行する |
menubar | 上部メニューバーの入切 |
title | ウィンドウのタイトルバーの文字 |
showimage | ロゴ表示用の層に一枚絵を出す |
playsound | 音を鳴らす(Windows は BGM、ブラウザ・Android は効果音) |
Movie.* / Sound.* | オブジェクト呼び出し(下表) |
シナリオで使えるオブジェクト呼び出しは次の表だけ。オブジェクト名・メソッド名は大文字・小文字を区別する(Movie.play は可、movie.play は不可。setCancelMode だけは SetCancelMode とも書ける)。これ以外のオブジェクトは未知のオブジェクトとしてログに残り、何もしない。ほかのシステム機能を使うときは、システムスクリプトに書いて sysscript で呼ぶ。
| 書き方 | 動き |
|---|---|
Movie.play <file> [x] [y] [mask] [async] | 動画を再生し始める。シナリオは終わるのを待たない(待つなら playmovie) |
Movie.pause | 一時停止 |
Movie.stop | 停止 |
Movie.setVolume <0-100> | 音量 |
Movie.seek <ms> | 位置を飛ばす |
Movie.setCancelMode <0-3> | クリックで飛ばす設定(0=飛ばせない 1=左クリック 2=右クリック 3=どちらでも) |
Sound.play <file> | playsound と同じ |
Sound.stop | BGM を止める |
Sound.pause | BGM を一時停止する |
週ごとに予定を選んで能力を上げ、出会った相手と仲良くなり、行事やデートを経て最後に結末が決まるゲームを、設定ファイル 1 つとシナリオで作る仕組み。設定ファイル(data0/sim/名前.txt)に中身(暦・能力・予定・登場人物・デート先・電話・行事・結末・画面の絵)を書き、シナリオに進み方と場面(出会い・デート・電話・下校・行事・結末)の文章を書く。予定表・ステータス・デートや電話の相手を選ぶ画面はエンジンが出す。遊びの状態はすべて sim_ で始まるシナリオ変数に入るので、セーブ・ロード・バックログ・続きからがそのまま効く。
| コマンド | 説明 |
|---|---|
sim_load 設定ファイル | 設定ファイルを読む(data0 からの相対・拡張子なし。例 sim/love_sample) |
sim_begin | 新しく始める(sim_ の変数を初期値にする) |
sim_week [変数] | 予定表を出して今週の予定を選ばせる(デート・電話もここから。番号を変数へ。デートは 100) |
sim_message | 直前の週の結果を文章で出す |
sim_event | その週に起きる場面へ飛ぶ(無ければ次の行へ) |
sim_advance [変数] | 次の週へ(爆弾・寝込み・毎週のときめき度もここで進む。最後の週を終えたら変数に 1) |
sim_status | ステータス画面 |
sim_ending | 当てはまる結末へ飛ぶ |
sim_set 名前 数 / sim_add 名前 数 | 能力・友好度・ときめき度などを置く/足す |
sim_get 名前 変数 | 能力・友好度・ときめき度などを変数へ読む |
sim_meet 人物ID | シナリオの都合で出会わせる(場面へは飛ばない) |
sim_contact 人物ID | 会って話したことにする(爆弾の火を消す) |
sim_if "式" *ラベル | 式が真ならラベルへ飛ぶ |
*start
sim_load sim/love_sample // 設定ファイルを読む
sim_begin // sim_ の変数を初期値にして始める
sim_meet kaede // 最初から知り合いの人(いれば)
四月。この一年をどう過ごすかは、自分しだいだ。
*week
name ""
sim_week // 予定表を出し、選んだ結果を能力に反映
sim_message // 結果を文章で出す
*week_event
sim_event // 起きる場面があれば飛ぶ
*week_end
sim_advance done // 次の週へ。最後の週を終えたら done に 1
if done == 1 *finale
jump *week
*finale
sim_status // 一年の成果を見せる
sim_ending // 当てはまる結末へ飛ぶ
jump *end_normal // 当てはまる結末が無かったとき
// 場面の例(設定ファイルの [character aoi] に meet = *meet_aoi と書いた場合)
*meet_aoi
name 葵
「委員長の葵よ。よろしくね」
jump *week_event // 場面の最後は sim_event の行へ戻る
1 回に飛ぶのは 1 つ。場面から jump *week_event で戻ると、次を探す。
[command] label)date、無ければ [date] label。既定 *date)phone、無ければ [phone] label。既定 *phone)[bomb] label)appear を満たした人。出会った印を付けてから meet の場面へ)walk を書いた出会った人を設定の順に見て、walk_when を満たし walk_chance % に当たった 1 人。くじは週に 1 回だけで、寝込んでいる週は起きない)week に今の週か、date に今の月/週を含む [event])week も date も無い [event])行事は when を満たし、chance の確率に当たったときに起きる。同じ行事は同じ週に 2 度起きず、once = 1(既定)なら 1 度だけ。場面(meet / label)を書いていない出会い・行事は、記録だけして次を探す。
条件式(appear / when / walk_when / heart_weekly / sim_if)でも同じ名前を使う。書き込んだ値は範囲の端に丸める。
| 名前 | 内容 | 書き込める範囲 |
|---|---|---|
能力ID(st.能力ID も同じ) | 能力の値 | その能力の min〜max |
aff.人物ID | 友好度 | 0〜その人の max(出会う前は変わらない) |
heart.人物ID | ときめき度 | 0〜その人の heart_max(出会う前は変わらない) |
met.人物ID | 出会ったか(0 / 1) | 0 / 1(1 にすると sim_meet と同じ) |
dates.人物ID | デートした回数 | 0 以上 |
bomb.人物ID | 爆弾に火がついているか(0 / 1) | 0 / 1 |
last.人物ID | 最後に会った週 | 0〜全週数+1 |
ev.行事ID | 行事が起きた回数 | 0 以上 |
var.名前 | シナリオ変数(setvar と同じもの) | 制限なし |
week | 何週目か(1 始まり) | 1〜全週数+1 |
sick | 寝込みの残り(0 より大きい間は寝込み) | 0 以上 |
weeks / month / year / grade / weekofmonth / turn / lastcmd / nocontact.人物ID | 全週数 / 今の月 / 暦の年 / 学年 / 月の中の週 / week と同じ / 直前の予定の番号 / 会っていない週の数(出会う前は 0) | 読むだけ |
data0/sim/ に置き、sim_load sim/名前 で読む。
| 見出し・書き方 | 主な項目(かっこ内は省いたときの値) |
|---|---|
[calendar] | weeks 全週数(48)・start_year(1)・start_month(4)・weeks_per_month(4)・months_per_year(12)・start_grade 最初の学年(1)・date_format 日付の書き方({year} 暦の年、{grade} 学年、{month}、{week} 月の中の週、{turn} 通しの週、{turns} 全週数) |
[ui] | title 予定表の見出し・planner_bg / status_bg 背景の絵(1280x720。左の枠 x 40〜640 と右の枠 x 670〜1240 に文字とボタンが載る)・button / small_button ボタンの絵(_normal _rollover _active _inactive を付けた 4 枚)・text_color(#AARRGGBB)・sick_text 寝込んだ週の一言・up_color / down_color 結果の文の色(#RRGGBB) |
[stat ID] | 能力。name・min(0)・max(100)・init(0)・color ゲージの色・stress(1 にすると、予定で上限に達した次の週は寝込む) |
[command ID] | 予定(予定表に 2 列で並ぶ)。name・effect 増減・when 選べる条件・label 選んだ後の場面・sick_ok(1 で寝込み中も選べる) |
[character ID] | 登場人物。name・appear 出会う条件(書かなければ自動では出会わない)・meet 出会いの場面・date その人とのデートの場面・phone その人へ電話したときの場面・affection 出会ったときの友好度(10)・max(100)・spots 行き先ごとの友好度の増減(park +7, shrine +9~11, sea -1)・spot_default spots に無い行き先(2)・ときめき度の heart 出会ったとき(0)・heart_max(100)・date_heart デートのたび・heart_weekly 毎週の終わりに足す量の式・一緒に下校の walk 場面・walk_when 条件・walk_chance 確率 %(walk を書いたら必須)・爆弾の bomb_weeks(0 = 爆弾なし)・bomb_explode(3)・bomb_damage(8)・bomb_min(0) |
[spot ID] | デート先。name |
[date] | label デートの場面(人ごとの date が無いとき。既定 *date)・effect デートのたびの増減(能力・var.・aff.人物・heart.人物。aff. / heart. は相手が誰でもその人に効く) |
[bomb] | label 爆弾が爆発した後の場面 |
[phone] | 書くと予定表に電話のボタンが出る。label 電話の場面(人ごとの phone が無いとき。既定 *phone)・when かけられる条件・button ボタンの文字(電話をかける)・aff 電話のたびの友好度(+1~3)・heart ときめき度(0) |
[event ID] | 行事。week 起きる通しの週(15, 35 のように複数可)・date 毎年の 月/週(8/3, 12/4)・when 条件・label 場面・once(1。0 で何度でも)・chance 起きる確率 %(100) |
[ending ID] | 結末(上から見て最初に当てはまったもの)。when 条件(書かなければ必ず当てはまる)・label 場面 |
増減(effect) | study +6~9, stress +5, aff.hina +2~3, heart.hina +1, var.flag =1 のように , で区切る。+ 足す・- 引く・= 置く。~ で幅を書くと、毎回その間の数に決まる。対象は能力の ID・aff.人物ID / heart.人物ID(出会った人だけ動く)・var.シナリオ変数。能力・友好度・ときめき度は範囲の端に丸める |
| 幅のある数 | spots・spot_default は 1 つの数ならそれに 0〜2 を足し、+7~10 のような幅ならその中で決まる。date_heart・[phone] aff / heart は +2~4・-1~1・3 のように書き、1 つの数ならその数のまま |
条件式(appear / when / walk_when / heart_weekly) | 整数の式で、0 以外が真。数・( )・+ - * / %・== != < > <= >=・&& || !。比べた結果は 1 か 0 なので足し算にも使える(heart_weekly = (study >= 60) + (aff.aoi >= 50))。名前は 上の表 と同じ。関数は rand(a,b)・max(a,b)・min(a,b)・max_aff()・max_heart()(出会った人の中で一番高い友好度・ときめき度。heart.aoi >= max_heart() で「葵が一番」) |
[見出し ID] の下に 名前 = 値 を並べる。ID は英数字と _(32 文字まで)。// から行末と、; # で始まる行はコメント。知らない見出し・項目や ID の重複があると読み込みに失敗する(何行目かをログに出す)。数の上限は能力 10・予定 16・人物 8・デート先 10(能力と予定は 1 つ以上要る)。場面は *ラベル か ファイル *ラベル で書く。[character] に heart・heart_max・date_heart・heart_weekly のどれかを書くと、その人は友好度(aff)とときめき度(heart)の 2 本立てになる。ときめき度はデートのたびに date_heart、毎週の終わりに heart_weekly の式の値だけ動き、ステータス画面では友好度のゲージの下に細い赤いゲージで出る。結末を heart.人物 >= max_heart() で書くと、一番ときめいている人と結ばれる形になる。[phone] を書くと予定表に電話のボタンが出る。出会った人がいて、寝込んでおらず、when を満たす週に 1 回だけ押せる。相手を選ぶと友好度が aff、ときめき度が heart(2 本立ての人だけ)動き、会っていない週の数え直しと爆弾の火消しをして予定表に戻る(週は進まない)。場面はその週の sim_event で見せる。[character] に walk・walk_when・walk_chance を書くと、その週の場面の 1 つとして偶然起きる(上の順の 6)。起きると会っていない週を数え直し、爆弾の火を消す。気持ちは場面の中で sim_add などで動かす。weeks = 144・start_grade = 1 などにすると、grade({grade})が start_month の月ごとに 1 上がる(year は 1 月で変わる)。毎年の行事は [event] に date = 8/3(8 月の第 3 週)と once = 0 を書く。学年で分けるなら when = grade == 3。bomb_min 以上の人と bomb_weeks 週会わないと火がつき(ステータス画面に出る)、そこから bomb_explode 週で爆発して、出会った全員の友好度が bomb_damage 下がる。デート・電話・下校・sim_contact で消える(友好度が bomb_min を下回っても消える)。[Sim] 設定の条件式を読めません([event xxx] when): … と出る(遊んでいる間は偽として扱う)。週ごとの数値も [Sim] 第 N 週おわり: study=… aff.kaede=40/h25 …(/h はときめき度)と出るので、釣り合いの調整に使える。| 変数 | 内容 |
|---|---|
sim_week | 何週目か(1 始まり。最後の週を終えると 全週数+1) |
sim_st_能力ID / sim_res_能力ID | 能力の値 / 直前の週の増減 |
sim_aff_人物ID / sim_heart_人物ID / sim_met_人物ID / sim_dates_人物ID | 友好度 / ときめき度 / 出会ったか(0・1)/ デートした回数 |
sim_ev_行事ID | 行事が起きた回数 |
sim_lastcmd | 直前に選んだ予定の番号(デートは 100) |
sim_date_char / sim_date_spot | 直前のデートの相手・行き先の番号(設定ファイルの並び順で 1 始まり) |
sim_res_aff / sim_res_heart | 直前の週のデートで上がった友好度 / ときめき度(デートでない週は 0) |
sim_phone_char / sim_phone_aff / sim_phone_heart | 直前に電話した相手の番号 / そのとき上がった友好度 / ときめき度 |
sim_walk_char | 直前に一緒に下校した相手の番号 |
sim_meet_char | いま出会った人の番号(sim_event の出会いと sim_meet で入る) |
sim_boom_char | 爆弾が爆発した人の番号 |
sim_sick / sim_finished | 寝込みの残り / 最後の週を終えたら 1 |
sim_ending | 選ばれた結末の番号(無ければ 0) |
ふつうのシナリオ変数なので、if や #if でそのまま比べられる(例 if sim_res_aff >= 9 *date_good)。sim_begin がすべて初期値に戻す。値を変えるときは sim_set / sim_add を使い、sim_pending_・sim_evwk_・sim_bombwk_・sim_file_ で始まるものと sim_phone_week・sim_walk_checked は内部用なので書き換えない。
lumina.exe --start-scenario=scenario/sim_sample で起動すると、ロゴとタイトルを飛ばして見本が始まる(実行モードが Debug のときは「デバッグ」メニューの「恋愛シミュレーション見本を開始」でも開ける)。設定は data0/sim/love_sample.txt、シナリオは data0/scenario/sim_sample.txt、画面の絵は data1/sim/。2 つのファイルの先頭に書き方の説明がある。.lsf に暗号化する(鍵もシナリオと同じ)。読む順もシナリオと同じで、設定の拡張子(開発中はふつう .txt)→ もう片方。ステージング(build-core.ps1)は、data0/sim(と data0/macro)の .txt のうち、新しい .lsf の対があるものだけを配布物から外す(対が無い・.lsf が古いものは .txt のまま入り、そのことが表示される)。*start
bg 0 bg01a
msgshow
name ""
物語が始まります。
chara_show 0 "student_smile" left 20 sync
name "澪"
こんにちは。
#select_clear
#select_add "話しかける", *talk
#select_add "黙っている", *silent
#select_show
*talk
addvar love 10
name "澪"
嬉しいです。
jump *ending
*silent
name "澪"
……。
jump *ending
*ending
chara_hide 0 30 sync
fadeout 1000
end
bgm title 800
name "澪"
vo "vo01_0001"
声に合わせて文章を出します。
vo_wait
conf_voice_ducking 35
vo "vo02_0001"
声の間だけ曲が下がります。
conf_voice_ducking 100
bgm_stop 1000
random dice 1 6
if dice >= 4 *lucky
4 未満が出ました。
jump *after
*lucky
4 以上が出ました。
*after
#if "love >= 10"
とても仲がいい。
#else
まだよそよそしい。
#endif
jump chapter2 *start // scenario/chapter2 の *start へ(変数は引き継ぐ)
trans_begin
bg 0 bg01c
chara_clear
chara_show 0 "smile" center 0
trans 015 1200
SLASH 200 120 1080 600
quake 400 12
wait 300
機能紹介のデモシナリオ: GameData/data0/scenario/feature_demo.txt(lumina.exe の隣の GameData フォルダ) 読込: System.loadScenario("scenario/feature_demo")
項目数: 236(育成・恋愛シミュレーションの 14 命令を含む) 公開しているシナリオ命令を分類ごとに並べ、構文・説明・例を載せています。別名も 1 項目として数えています。
message — 文章を表示してクリックを待つ構文
message "テキスト"文章をメッセージ枠に出してクリックを待つ。バックログと既読の記録にも入る。タブで始まる行は内部でこの命令に変換される。使うのは最初の引数だけなので、空白を含む文章は引用符で囲む。
例
message "クリックで次へ進みます。"
msgclear — メッセージ枠の文章を消す構文
msgclearメッセージ枠に出ている文章を消す。
例
msgclear
msghide — メッセージ枠を隠す構文
msghideメッセージ枠を隠す。msgshow で戻す。演出の間だけ文章をどけたいときに使う。
例
msghide
wait 800
msgshow
msgshow — メッセージ枠を出す構文
msgshowメッセージ枠を出す。
例
msgshow
name — 話者名構文
name <名前>name ""(地の文に戻す)メッセージ枠の名前欄に出す話者名を決める。引数なし、または空文字で名前を消して地の文に戻す。空白で区切られた引数は 1 つの名前としてつなぐ(name キャラ 01 →「キャラ 01」)。
例
name "澪"
こんにちは。
name ""
showtext — メッセージ枠に文章を出す(クリック待ちなし)構文
showtext "テキスト" [x] [y]文章をメッセージ枠に出す。クリックは待たず、バックログにも残らない。x・y は表示位置ではない: 0 0(省略時)なら枠を出して文章を出し、それ以外の値のときは枠が出ているときだけ文章を差し替える。システムスクリプトで System.messageWindow.bindShowText(true) を指定していないと何も出ない(同梱の MesWnd.txt で指定済み)。
例
showtext "読み込んでいます…"
textspeed — 文字送りの速さ構文
textspeed <ms>1 文字あたりの表示時間を ms で決める。0 で一度に全部出す。引数を省くと 0。
例
textspeed 90
ゆっくり出しています。
textspeed 30
bg — 背景を表示する構文
bg <id> <file>(即時表示)bg <id> <file> <x> <y>(即時表示・位置指定)bg <id> <file> <x> <y> fadein <frames> [sync](フェードイン)bg <id> <file> <x> <y> fadeout <frames> [sync](フェードアウト)bg <id> <file> <x> <y> <rule> <frames> [vague](ルール画像で切り替え)引数: id 背景の層(0〜19。大きいほど手前。0 が場面の背景)、file 絵の名前(拡張子なし)、x y 位置(省略時 0 0)、frames フレーム数(60 で 1 秒)
背景を表示する。fadein / fadeout は待たずに次の行へ進み、sync を付けると終わるまで待つ。fadeout はその層を消していく(file は使われない)。5 番目が fadein / fadeout 以外なら、data7/rule(Config.txt の setFolder("rule"))にある白黒のルール画像の名前として扱い(拡張子なし。例 015、1080p_rule10)、暗い所から順に新しい絵を出す。ルール画像での切り替えは前の絵を残したまま進み、終わるまで次の行へ進まない。vague は境目のぼかし幅 0〜255(省略時 64、0 でくっきり)。
例
bg 0 bg01a
bg 0 bg01b 0 0 fadein 45 sync
bg 0 bg01c 0 0 015 60
bg 0 bg01a 0 0 1080p_rule10 90 16
bg_scroll — 背景を流し続ける構文
bg_scroll <id> <file> <x> <y> <scrollX> <scrollY>引数: scrollX scrollY 1 フレーム(60fps 換算)あたりに動く画素数
背景を出して、繰り返し模様として流し続ける(車窓などに向く)。6 つの引数がすべて要る。同じ絵がすでにその層に出ていれば、位置を変えて流し始める。
例
bg_scroll 0 bg01a 0 0 2 0
clearbg — 場面の背景を消す構文
clearbg場面の背景(層 0)を消す。ほかの層はそのまま。
例
clearbg
crossfade — クロスフェードで背景を替える構文
crossfade <file> <ms>場面の背景(層 0)を、前の絵を薄くしながら新しい絵へ替える。終わるまで次の行へ進まない。環境設定のゲームアニメーションが切なら即座に替わる。
例
crossfade bg01b 1000
fadethrough — 単色を挟んで背景を替える構文
fadethrough <file> <ms> [r] [g] [b]前半で画面を単色(省略時は黒)に変え、背景(層 0)を替えてから、後半で明ける。全体で ms。終わるまで次の行へ進まない。ゲームアニメーションが切なら即座に替わる。
例
fadethrough bg01a 900
fadethrough bg01c 1200 255 255 255
move — 背景の層を動かす構文
move <id> <dstX> <dstY> <frames> [sync]背景の層を (dstX, dstY) の位置まで frames フレーム(60 で 1 秒)かけて動かす。待たずに次の行へ進み、sync を付けると終わるまで待つ。frames が 0 以下なら即座に移る。層に絵が出ていないと失敗する。
例
move 0 -200 0 120 sync
wipe — ワイプで背景を替える構文
wipe <file> <ms> [direction](方向付きスライド。0〜3 または left / right / up / down)wipe <file> <ms> <rule> [vague](ルール画像で切り替え)場面の背景(層 0)を替える。方向付きは前の絵が指定の方向へ抜けていく(0=左 1=右 2=上 3=下。省略時は左)。3 番目が方向の語でも 2 桁までの数字でもなければ data7/rule のルール画像の名前として扱い、白黒の暗い所から順に新しい背景を出す(bg … <rule> の ms 指定版)。vague は境目のぼかし 0〜255(省略時 64)。どちらも終わるまで次の行へ進まず、ゲームアニメーションが切なら即座に替わる。
例
wipe bg01c 1000 0
wipe bg01c 800 left
wipe bg01c 1500 1080p_rule10 32
trans_begin — 場面まるごとの切り替え(写しを取る)構文
trans_beginいまの画面(背景・立ち絵・イベント CG・エフェクト)を写し取って一番上に置く。このあと bg / chara_show / chara_clear / evcg_show などで場面を作り替えても画面は変わらず、trans で写しを消していくと新しい場面が現れる(写しを取る → 作り替える → 切り替える、の 3 段で使う)。写しは GPU の中で作るので 4K でも一瞬。もう一度呼ぶと前の写しを捨てて取り直す。写しが取れない環境(ブラウザ / Android)では何もせず、場面の変更がそのまま見える。
例
trans_begin
bg 0 bg01c
chara_show 0 "smile" center 0
trans 015 1200
backlay — trans_begin の別名構文
backlaytrans_begin と同じ。いまの画面を写し取り、trans で新しい場面へ切り替える準備をする。
例
backlay
bg 0 bg01b
trans crossfade 600
trans — 場面まるごとの切り替え(実行)構文
trans <rule> <ms> [vague]trans crossfade <ms>(fade / none でも同じ。透明度だけで入れ替える)trans_begin で取った写しを、ルール画像の暗い所から順に消していく(下の新しい場面が出てくる)。rule が crossfade / fade / none なら透明度だけで消し、ルール画像が見つからないときもクロスフェードになる。vague は境目のぼかし 0〜255(省略時 64)。終わるまで次の行へ進まない。ゲームアニメーションが切なら即座に切り替わる。trans_begin をしていなければ何もしない。
例
trans 015 1200
trans 1080p_rule11 800 0
trans crossfade 600
trans_cancel — 写しを捨てる構文
trans_canceltrans_begin で取った写しを捨てて、作り替えた後の場面をそのまま見せる(切り替えの演出なし)。写しが無ければ何もしない。
例
trans_begin
bg 0 bg01b
trans_cancel
chara_show — 立ち絵を表示する構文
chara_show <layer> <spec> <position> <frames> [sync]引数: layer 層(0〜9。大きいほど手前)、spec 立ち絵の名前("smile" のように名前だけ/"ch01/smile" のようにフォルダ付き/"body+smile" のように + で重ねる)、position center / left / right / middleleft / middleright、または "x,y"、frames フェードインのフレーム数(0 で即時、60 で 1 秒)
立ち絵を表示する。4 つの引数がすべて要る。位置の語が違うと表示に失敗する。sync を付けるとフェードが終わるまで待つ。
例
chara_show 0 "smile" center 30 sync
chara_show 1 "yukata_trouble" right 20 sync
chara_hide — 立ち絵を消す構文
chara_hide <layer> [frames] [sync]層の立ち絵を frames フレームかけて消す(省略時 0 で即時)。sync を付けると消えきるまで待つ。
例
chara_hide 1 20 sync
chara_change — 表情・差分を替える構文
chara_change <layer> <spec> [frames] [sync]位置はそのまま、絵だけを替える。前の絵に重ねながら入れ替わる。frames を省くと即時。sync を付けると終わるまで待つ。
例
chara_change 0 "trouble" 15 sync
chara_change 0 "singer_body+singer_normal" 15 sync
chara_clear — 立ち絵を全部消す構文
chara_clearすべての層の立ち絵を即座に消す。引数は使わない(層を書いても全部消える)。1 枚だけ消すときは chara_hide。
例
chara_clear
chara_fit — 画面に映す割合構文
chara_fit <layer> <percent>層の立ち絵の上から何 % を画面の高さいっぱいに映すかを決める(1〜100)。100 で全身。100 未満なら上端に合わせて大きく映し、残りは画面の下へはみ出す(はみ出た部分も消えてはいない)。
例
chara_fit 0 100
chara_fit 0 55
chara_filter — 立ち絵の拡大縮小の補間構文
chara_filter <layer> <filter>層の立ち絵を拡大縮小して描くときの補間を決める。-1=既定、0=最近傍(point)、1=線形(linear)、2=異方性(anisotropic)。層に立ち絵が出ていないと失敗する。
例
chara_filter 0 1
chara_voice_sync — 声の再生位置で表情を替える構文
chara_voice_sync <layer> <positionMs> <spec>声が鳴っている間に再生位置が positionMs を越えたら、層の立ち絵を spec に替える予約を入れる。ふつうは vo の前に書き、何行か並べると順に替わる。層に立ち絵が出ていないと失敗する。
例
chara_voice_sync 0 300 "student_smile"
chara_voice_sync 0 900 "student_trouble"
vo "vo02_0001"
vo_wait
chara_frame_sync — フレーム数で表情を替える構文
chara_frame_sync <layer> <frames> <spec>予約してから frames フレーム(60 で 1 秒)経ったら、層の立ち絵を spec に替える。声とは関係なく働き、待たずに次の行へ進む。数え始めは予約が空のときに入れた 1 つ目の時点で、続けて入れた予約は同じ時点から数える。
例
chara_frame_sync 0 30 "student_fear"
chara_frame_sync 0 60 "student_normal"
wait 1400
chara_voice_sync_clear — 表情の予約を捨てる構文
chara_voice_sync_clear <layer>chara_voice_sync / chara_frame_sync で入れた、その層の予約をすべて捨てる。
例
chara_voice_sync_clear 0
chara_voice_id — 立ち絵の層と声の主を結ぶ構文
chara_voice_id <layer> [charaId]立ち絵は層の番号、声はキャラ ID(vo のファイル名の先頭部分)で指すので、口パクにはこの結びが要る。charaId を省くと結びを外す(口パク中なら元の絵へ戻す)。
例
chara_voice_id 0 "vo02"
chara_lipsync — 口パクの絵を登録する構文
chara_lipsync <charaId> <口の絵1> [口の絵2] ...キャラ ID ごとに、口パクで順に切り替える絵を登録する。vo でそのキャラの声が鳴ると(自動口パクが有効なとき)、chara_voice_id で結んだ層の立ち絵がこの絵を順に切り替え、声が鳴り終わると元の絵へ戻る。切り替えの間隔は chara_lip_interval。
例
chara_voice_id 0 "vo02"
chara_lipsync "vo02" "student_normal" "student_smile" "student_eyeclose"
vo "vo02_0001"
vo_wait
chara_lip_start — 口パクを入れる構文
chara_lip_start <charaId>そのキャラ ID の口パクを入れる。口が動くのは声が鳴っている間だけ。vo は自動で入れるので、voice で鳴らしたときなどに使う。
例
chara_lip_start "vo02"
voice "vo02_0001"
chara_lip_stop — 口パクを止める構文
chara_lip_stop <charaId>そのキャラ ID の口パクを止める(立ち絵は元の絵へ戻る)。
例
chara_lip_stop "vo02"
chara_lip_interval — 口を切り替える間隔構文
chara_lip_interval <ms>口パクで口の絵 1 枚を出しておく時間(既定 100ms)。16〜1000 に丸める。
例
chara_lip_interval 80
sprite — スプライトを表示する構文
sprite <layer> <file> [x] [y]引数: layer 層(0〜7)、file 絵の名前、x y 位置(x を省くか -1 なら横中央、y の既定は 0)
背景でも立ち絵でもない小さな絵(小物・飾りなど)を表示する。すでに出ている層に出すと差し替わる。
例
sprite 1 "petal_1"
sprite 2 "petal_3" 300 500
spritechange — スプライトの絵を替える構文
spritechange <layer> <file> [x] [y]sprite と同じ動きで、層の絵を替える。位置を省くと横中央・y=0 に置き直す(元の位置は引き継がない)。
例
spritechange 1 "petal_3" 900 400
spritemoveto — スプライトを動かす構文
spritemoveto <layer> <x> <y> <ms>層のスプライトを (x, y) まで ms かけて動かす。動き終わるまで次の行へ進まない。ms が 0 以下なら即座に移る。層に絵が出ていないと失敗する。
例
spritemoveto 1 900 400 1200
spritealpha — スプライトの濃さ構文
spritealpha <layer> <alpha>引数: alpha 0〜100(0 で透明、100 で不透明)
層のスプライトの濃さを即座に変える。
例
spritealpha 1 40
spritealpha 1 100
sprite_filter — スプライトの拡大縮小の補間構文
sprite_filter <layer> <filter>-1=既定、0=最近傍(point)、1=線形(linear)、2=異方性(anisotropic)。層に絵が出ていないと失敗する。
例
sprite_filter 1 0
hidesprite — スプライトを消す構文
hidesprite <layer>層のスプライトを即座に消す。
例
hidesprite 1
clearsprites — スプライトを全部消す構文
clearspritesすべての層のスプライトを消す。立ち絵は消えない(立ち絵は chara_clear)。
例
clearsprites
evcg_show — イベント CG を表示する構文
evcg_show <file> <ms>イベント CG を ms かけて表示し、終わるまで待つ(0 で即時)。2 つの引数が要る。"base+smile" のように + で素体と差分を重ねられる。
例
evcg_show "smile" 600
evcg_show "base+smile" 300
evcg_change — イベント CG の差分を替える構文
evcg_change <diffName> <ms> [transitionType]表示中のイベント CG の上に差分を重ねる(差分レイヤー 0)。transitionType が cut なら即座に、それ以外(省略時は crossfade)なら ms かけて浮かび上がらせ、終わるまで待つ。イベント CG が出ていないと失敗する。
例
evcg_change "base" 600
evcg_layer — 差分レイヤーを個別に重ねる構文
evcg_layer <baseName> <diffName> <layerIdx> <alpha> <ms>引数: layerIdx 差分レイヤー 0〜3、alpha 濃さ 0〜255
差分を指定のレイヤーに重ねる(光・影・涙など)。イベント CG が出ていなければ、まず baseName を出す。ms が 0 なら alpha の濃さで即座に出す。ms を付けると alpha は使われず、不透明(255)まで ms かけて浮かび上がり、終わるまで待つ。
例
evcg_layer "base" "smile" 1 0 0
evcg_layer "base" "smile" 1 255 1200
evcg_move — イベント CG を動かす・寄る構文
evcg_move <x> <y> <zoomPercent> <ms>イベント CG を見る位置 (x, y) と拡大率(%。10〜1000)へ ms かけて動かし、終わるまで待つ。640 360 100 で元の見え方に戻る。イベント CG が出ていないと失敗する。
例
evcg_move 640 200 150 1000
evcg_move 640 360 100 800
evcg_hide — イベント CG を消す構文
evcg_hide [ms]イベント CG を ms かけて消し、終わるまで待つ。省略または 0 で即座に消す。
例
evcg_hide 500
eventcg — イベント CG を即時表示する構文
eventcg <file>イベント CG を即座に表示する(evcg_show の時間なし版)。
例
eventcg "smile"
cleareventcg — イベント CG を即座に消す構文
cleareventcgイベント CG を即座に消す。
例
cleareventcg
cg_flag — CG を見た記録を付ける構文
cg_flag <cgId> [diffIndex]cg_flag <cgId> all(* でも同じ)CG を見たことを記録する。diffIndex を省くと 0(ベースの絵)。all / * を書くと、その CG の差分をまとめて記録する(枚数は書かなくてよい)。
例
cg_flag "demo_cg_01" 1
bgm — BGM を鳴らす構文
bgm <file>(即時に鳴らす)bgm <file> <fadeInMs>(無音から立ち上げる)bgm <channel> <file> [fadeInMs](古い書き方。先頭が 1〜2 桁の数字ならその数字は無視する)曲をループで鳴らす。鳴らすたびにループを入れ直すので、1 回だけ鳴らしたいときは後に setbgmloop 0 を書く。フェードインは利用者の音量設定を変えずに無音から持ち上げる。待たずに次の行へ進む。
例
bgm title
bgm title 800
bgm_play — BGM を鳴らす構文
bgm_play <file> [fadeInMs]bgm と同じ命令。
例
bgm_play title 800
bgm_stop — BGM を止める(フェードアウト可)構文
bgm_stop [fadeOutMs]時間を書くと、その時間で音量を 0 まで下げてから止める。フェードが終わるまで(+100ms)次の行へ進まない。省略または 0 で即座に止める。
例
bgm_stop 800
stopbgm — BGM を即座に止める構文
stopbgmBGM をすぐ止める。フェードしたいときは bgm_stop <ms>。
例
stopbgm
bgm_pause — BGM を一時停止する構文
bgm_pauseBGM を一時停止する。bgm_resume で続きから鳴る。
例
bgm_pause
pausebgm — BGM を一時停止する構文
pausebgmbgm_pause と同じ。
例
pausebgm
bgm_resume — BGM を再開する構文
bgm_resume一時停止した BGM を続きから鳴らす。
例
bgm_resume
resumebgm — BGM を再開する構文
resumebgmbgm_resume と同じ。
例
resumebgm
bgm_vol — BGM の音量(時間指定可)構文
bgm_vol <volume> [fadeMs]BGM の音量を 0〜100 で決める。fadeMs を書くとその時間で変える(待たない)。省くと即座に変える。
例
bgm_vol 30 1000
bgm_vol 100
bgmvolume — BGM の音量構文
bgmvolume <volume>BGM の音量を 0〜100 で即座に変える(bgm_vol の時間なし版)。
例
bgmvolume 80
bgmfade — BGM の音量をなめらかに変える構文
bgmfade <volume> <ms>BGM の音量を ms かけて volume(0〜100)へ変える。待たずに次の行へ進み、曲は止まらない(0 にしても鳴り続ける)。止めるなら bgm_stop。
例
bgmfade 30 600
wait 700
setbgmloop — BGM のループ構文
setbgmloop <0|1>鳴っている曲のループを入切する。bgm / bgm_play は鳴らすたびにループを入れ直すので、1 回だけ鳴らすときは bgm の後に書く。
例
bgm ending
setbgmloop 0
bgm_pan — BGM の左右構文
bgm_pan <pan>(-100=左, 0=中央, 100=右)曲だけを左右へ寄せる。効果音の se_pan とは別の命令。
例
bgm_pan -70
se — 効果音を鳴らす構文
se <file>(1 回鳴らす)se <file> <loop>(loop が 1 ならループ)se <channel> <file> [loop](古い書き方。先頭が 1〜2 桁の数字ならその数字は無視する)効果音を鳴らす。鳴らす口は空いているものが自動で選ばれる。ループした音は stopse / se_stop で止める。
例
se door_open
se rain_loop 1
se_play — 効果音を鳴らす(チャンネル付きの書き方)構文
se_play <channel> <file> [loop]se と同じく効果音を鳴らす。channel は書く決まりだが使われない(鳴らす口は自動で選ばれる)。引数が 2 つ未満だと何も鳴らない(se_play ファイル名 だけでは鳴らない)。loop が 1 ならループ。
例
se_play 0 door_open
seloop — 効果音をループで鳴らす構文
seloop <file>効果音をループで鳴らす(se <file> 1 と同じ)。stopse で止める。
例
seloop ambient_river
se_stop — 効果音をすべて止める構文
se_stop [ms]時間を省くと、すべての効果音を即座に止める。時間を書いた場合はフェードではなく、効果音の音量をすぐ 0 にして ms のあいだ待ち、すべて止めてから効果音の音量を 100 に戻す(それまでの se_vol / sevolume の値は残らない)。同梱のマクロ(se.txt の SE_STOP)が読み込まれていると、se_stop の行は引数なしの se_stop に置き換わるため、時間を書いても即座に止まる。時間を使うときは SE_FADEOUT <ms> を書く。
例
se_stop
stopse — 効果音をすべて止める構文
stopse鳴っている効果音(ループを含む)をすべて即座に止める。
例
stopse
sestop — 指定スロットの効果音を止める構文
sestop <slot>番号で指した口の効果音を止める。se / seloop は口を自動で選ぶので、ふつうは stopse を使う。
例
sestop 0
se_vol — 効果音の音量構文
se_vol <volume>(0〜100)効果音の音量を決める。
例
se_vol 50
sevolume — 効果音の音量構文
sevolume <volume>(0〜100)se_vol と同じ。
例
sevolume 80
se_pan — 効果音の左右構文
se_pan <pan>(左右だけ変える。鳴らさない)se_pan <file> <pan>(左右を決めて鳴らす)引数: pan(-100=左, 0=中央, 100=右)
効果音の定位。引数 1 つの形は、seloop で鳴らし続けている音を左右へ動かすのに使う。
例
se_pan door_open -80
seloop ambient_river
se_pan 60
vo — ボイスを鳴らす(キャラ別の設定つき)構文
vo <file> [charaId]声を鳴らす。誰の声かは charaId で決め、省けばファイル名から決める(フォルダを除いたファイル名から、先頭の v_ を外したあと最初の _ までを使う。例: vo02_0001 → vo02、v_ch01_0001 → ch01)。そのキャラが voice_mute で消音なら鳴らさず、voice_volume の割合を掛けて鳴らし、自動口パクが有効なら口パクを始める。直後の文章で声が切れることはない。
例
vo "vo01_0001"
こんにちは。
vo_wait
voice — ボイスを鳴らす(そのまま)構文
voice <file>声をそのまま鳴らす。キャラ別の消音・音量・口パクは効かない(それらが要るときは vo)。
例
voice vo01_0001
vo_sync — 複数のボイスを重ねて鳴らす構文
vo_sync <file1> <file2> [file3 ...]2 人以上が同時に話す場面用。全部読み込んでから一斉に鳴らすので、vo を並べるより開始のずれが小さい(完全には揃わない)。キャラは vo と同じ規則でファイル名から決め、消音中のキャラの声は外し、キャラ別の音量を掛ける。口パクは最初の声のキャラで動かす。
例
vo_sync "vo01_0001" "vo02_0001" "vo03_0001"
vo_wait
vo_wait — ボイスが終わるまで待つ構文
vo_wait声が鳴っている間、次の行へ進まない。終わったら vo で始めた口パクを止める。鳴っていなければすぐ進む。
例
vo "vo01_0001"
vo_wait
voice_wait — ボイスが終わるまで待つ構文
voice_waitvo_wait と同じく声の終わりまで待つ。口パクは止めない。
例
voice vo01_0001
voice_wait
stopvoice — ボイスを止める構文
stopvoice鳴っている声を止める。続きからは鳴らせない(一時停止は voice_pause)。
例
stopvoice
voice_pause — ボイスの一時停止構文
voice_pausestopvoice とは別物。止めた位置を覚えておき、voice_resume で続きから鳴らす。
台詞の途中で別の画面を開き、閉じたら続きから、という使い方のための命令。
鳴っていないときに呼んでもシナリオは止まらない。
例
vo "vo01_0001"
voice_pause
voice_resume
voice_resume — ボイスの再開構文
voice_resumevoice_pause で止めた声を続きから鳴らす。止めていないときに呼んでもシナリオは止まらない。
例
voice_resume
vo_pan — ボイスの左右構文
vo_pan <pan>(左右だけ変える。鳴らさない)vo_pan <file> <pan>(左右を決めて鳴らす)pan は -100=左、0=中央、100=右。1 つの形は鳴っている声を動かす。2 つの形は voice と同じく、キャラ別の設定なしで鳴らす。
例
vo_pan "vo01_0001" -80
vo_wait
voicevolume — ボイスの音量構文
voicevolume <0-100>声全体の音量を決める。キャラごとの音量は voice_volume。
例
voicevolume 80
voice_vol — ボイスの音量構文
voice_vol <0-100>voicevolume と同じ。
例
voice_vol 80
voice_volume — キャラごとのボイス音量構文
voice_volume <charaId> <0-100>そのキャラの声に掛ける割合(%)を決める。vo / vo_sync で鳴らすときに効く(voice には効かない)。引数が 2 つ無いと未知の命令として扱われ、何も変わらない。
例
voice_volume "vo01" 30
voice_mute — キャラごとの消音構文
voice_mute <charaId> <0|1>1 でそのキャラの声を vo / vo_sync で鳴らさなくする。0 で戻す。
例
voice_mute "vo01" 1
conf_voice_ducking — 声の間の BGM 音量構文
conf_voice_ducking [percent]声が鳴っている間の BGM の音量を % で決め、ダッキング(声の間だけ BGM を下げる仕組み)を入れる。省略時は 70。100 なら下がらない。値は入切ではなく % なので、1 と書くと 1% まで下がる。
例
conf_voice_ducking 35
vo "vo01_0001"
vo_wait
conf_voice_ducking 100
ducking — ダッキングの入切構文
ducking <0|1> [targetVol] [fadeInMs] [fadeOutMs]1 で声の間だけ BGM を下げる仕組みを入れ、0 で切る。入れるときは下げる先の音量(省略時 30)と、フェードにかける時間(省略時 500 / 800)も決める。
例
ducking 1 25
vo "vo02_0001"
vo_wait
ducking 0
playmovie — 動画を再生する構文
playmovie <loop> <file> [x] [y] [mask] [async]引数: loop 0=1 回 / 1=繰り返し、file 動画の名前(拡張子を省くと設定の動画拡張子)、x y 位置、mask(省略時 -1)、async true / 1 で終わるのを待たない
既定では終わるまで次の行へ進まない。クリックで飛ばせるかどうかは前に決めた設定のまま(Movie.setCancelMode)。async を指定すると再生を始めてすぐ次の行へ進む。終わるのを待つ再生は、シーン送り(早送り)の停止点になる。
例
playmovie 0 op_movie
movie — 動画を再生する(簡易)構文
movie <file>(終わるまで待つ。クリックで飛ばせる)movie <file> <clickSkip> <loop>(clickSkip 1=飛ばせる(既定)/ 0=飛ばせない、loop 1=繰り返し / 0=1 回(既定))動画を再生し、終わる(または飛ばす)まで次の行へ進まない。クリック(左右どちらでも)で飛ばせる設定は再生中だけで、終わると飛ばせない設定に戻す。シーン送り(早送り)の停止点になる。loop 1 で clickSkip 0 にすると終わらないので注意。
例
movie op_movie
movie op_movie 0 0
movie_play — 動画を再生する(待たない)構文
movie_play <file> [layer=N] [loop=true|false]動画を再生し始めたら、すぐ次の行へ進む(終わるのを待たない)。loop=true / loop=1 で繰り返す(既定は 1 回)。layer=N は書いても無視される(層は選べない)。
例
movie_play logo/lumina_logo
stopmovie — 動画を止める構文
stopmovie再生中の動画を止める。
例
stopmovie
movie_stop — 動画を止める構文
movie_stopstopmovie と同じ。引数は使わない。
例
movie_stop
pausemovie — 動画を一時停止する構文
pausemovie再生中の動画を一時停止する。resumemovie で続きから再生する。
例
pausemovie
resumemovie — 動画を再開する構文
resumemoviepausemovie で止めた動画を続きから再生する。引数は使わない。
例
resumemovie
setmovievolume — 動画の音量構文
setmovievolume <0-100>動画の音量を決める(全体音量が掛かる)。範囲外は 0〜100 に丸める。引数はちょうど 1 つ。
例
setmovievolume 80
seekmovie — 動画の位置を飛ばす構文
seekmovie <ms>再生中の動画をその位置(ミリ秒)へ飛ばす。引数はちょうど 1 つ。
例
seekmovie 15000
fadein — 黒から明ける構文
fadein <ms>画面を黒から ms かけて明けていき、終わるまで待つ。黒くしていない状態で使うと、一度真っ黒になってから明けるので、fadeout などの後に使う。0 なら黒の幕をすぐ外す。
例
fadeout 500
wait 600
fadein 500
fadeout — 黒へ暗転する構文
fadeout <ms>画面を ms かけて黒へ暗転し、終わるまで待つ。黒のまま残るので、明けるときは fadein を使う。
例
fadeout 1000
fadecolor — 色の幕で暗転・明ける構文
fadecolor <in|out> <ms> [r] [g] [b]out で画面を指定の色へ変えて残し、in でその色から明ける。色を省くと白(255 255 255)。どちらも終わるまで待つ。out 以外の語はすべて in として扱う(大文字の OUT も in になる)。
例
fadecolor out 600 255 255 255
fadecolor in 600 255 255 255
flash — 画面を光らせる構文
flash <ms> [r] [g] [b]画面を一瞬その色(省略時は白)で光らせ、ms のあいだ待つ。
例
flash 300 255 255 255
quake — 画面を揺らす構文
quake <ms> [strength]画面を ms のあいだ揺らし、終わるまで待つ。strength は揺れの強さ(画素。省略時 8)。ms は省略できない。
例
quake 500 10
shake — 画面を揺らす(回数つきの書き方)構文
shake [strength] [count] [ms]quake と同じ揺れを ms(省略時 500)のあいだ出し、終わるまで待つ。strength の既定は 8。count(回数)は書けるが使われない(揺れの長さは ms だけで決まる)。
例
shake 8 3 500
coloradjust — 明るさ・コントラスト・彩度構文
coloradjust <brightness> [contrast] [saturation] [ms]場面の絵の色調を変える。明るさ 0・コントラスト 1・彩度 1 が「そのまま」で、彩度 0 で白黒。ms を書くとその時間で徐々に変わり(待たない)、省くと即座に変わる。セピアには触らない(color_sepia を使う)。
例
coloradjust 0.3 1.0 1.0
coloradjust 0.0 1.0 0.3 800
color_monochrome — 白黒にする構文
color_monochrome [ms]場面の絵を白黒にする。ms を省くと 400ms かけて変わり、0 で即座に変わる。待たずに次の行へ進むので、変わっていく間に文章が出る。
例
color_monochrome
color_sepia — セピア調にする構文
color_sepia [ms]場面の絵を白黒にしてから茶色へ寄せる。ms を省くと 400ms。待たない。
例
color_sepia
color_restore — 色調を戻す構文
color_restore [ms]白黒・セピアと、coloradjust の明るさ・コントラスト・彩度を元へ戻す。ms を省くと 400ms。待たない。同梱のマクロ(fx.txt の COLOR_RESTORE)が読み込まれていると、color_restore の行は引数なしに置き換わるため、時間を書いても常に 400ms になる(マクロの本文に書いた color_restore 0 は置き換わらない)。
例
color_restore
gamma — ガンマ構文
gamma <value>1.0 が「そのまま」。小さいと暗く、大きいと明るくなる。0.1〜4.0 に丸める(0 以下は 1.0 扱い)。
例
gamma 1.5
sharpness — 輪郭を立てる構文
sharpness <value>場面の絵の輪郭を強める。0 で「そのまま」。0〜2 に丸める(強すぎると縁が白く光る)。
例
sharpness 0.5
effect_start — パーティクルを始める構文
effect_start <name> [count]snow / rain / sakura なら組み込みの雪・雨・桜(count の既定 100)。それ以外はパーティクル JSON の名前またはパスとして読み込んで再生する。
例
effect_start "snow"
effect_stop — パーティクルを止める構文
effect_stop [fadeMs]パーティクルを止める。fadeMs は書けるが使われず、即座に消える。
例
effect_stop
画像を使わずに図形を描く演出。座標は基準解像度(既定 1280x720)で書き、実際の画面の大きさへは自動で拡大縮小される。要素は id で指し、同じ id で作り直すと差し替わる。fx_anim を付けた要素は寿命が来ると自動で消え、付けない要素は fx_clear / fx_clearall まで残る。色は "#AARRGGBB"(例 "#FFFFFFFF" = 不透明の白)か 0x 付きの 16 進、または 10 進の整数。ぼかしは 0=くっきり〜1=ふんわり。easing は 0=一定 1=だんだん遅く 2=だんだん速く 3=ゆっくり始まりゆっくり終わる。どれも待たずに次の行へ進む。
fx_line — 線構文
fx_line <id> <x1> <y1> <x2> <y2> [太さ] [色] [ぼかし](x1, y1) から (x2, y2) へ線を引く。既定は太さ 4、不透明の白、ぼかし 0.5。
例
fx_line beam 200 120 1080 600 10 "#FFFFFFFF" 0.7
fx_rect — 四角形構文
fx_rect <id> <x> <y> <w> <h> [色] [ぼかし]塗りつぶしの四角形。既定は不透明の白、ぼかし 0。
例
fx_rect band -400 0 400 720 "#FFFFFFFF" 0.35
fx_circle — 円構文
fx_circle <id> <cx> <cy> <半径> [線幅] [色] [ぼかし]円。線幅 0 で塗りつぶし(既定 4)。ぼかしの既定 0.5。
例
fx_circle ring 640 360 200 8 "#FF80D0FF" 0.5
fx_radial — 放射線構文
fx_radial <id> <cx> <cy> <内半径> <外半径> [本数] [太さ] [色] [ぼかし]中心から放射状に伸びる線(集中線・目盛りなど)。既定は本数 24、太さ 3、ぼかし 0.6。
例
fx_radial conc 640 360 250 760 28 7 "#D0FFFFFF" 0.85
fx_arc — 円弧構文
fx_arc <id> <cx> <cy> <半径> <開始角> <終了角> [太さ] [色] [ぼかし] [先細り]円弧。角度は 0=右 90=下 180=左 270=上。先細り 1(既定)で両端が尖り、0 で太さ一定。既定は太さ 8、ぼかし 0.6。中心を画面の外に置くと、画面を横切る大きな弧になる。
例
fx_arc arc1 640 -140 760 132 48 30 "#C040A0FF" 0.8 1.0
fx_bolt — 稲妻・ひび割れ構文
fx_bolt <id> <x1> <y1> <x2> <y2> [振れ幅] [折れ数] [シード] [太さ] [色] [ぼかし](x1, y1) から (x2, y2) へ折れ線を引く。シードを変えると形が変わり、同じなら毎回同じ形になる。既定は振れ幅 40、折れ数 12、シード 0、太さ 4、ぼかし 0.6。
例
fx_bolt th 640 0 640 700 70 16 7 9 "#FFFFFFFF" 0.4
fx_zigzag — 鋸歯の輪構文
fx_zigzag <id> <cx> <cy> <半径> [振幅] [山数] [回転度] [太さ] [色] [ぼかし]鋸の歯のような輪(魔法陣の縁など)。振幅は山と谷の半径の差。既定は振幅 12、山数 24、回転 0、太さ 3、ぼかし 0.5。
例
fx_zigzag z1 640 400 222 26 36 0 3 "#FF60C0FF" 0.5
fx_polygon — 多角形・星形構文
fx_polygon <id> <cx> <cy> <半径> [頂点数] [スキップ] [回転度] [太さ] [色] [ぼかし]スキップ 1 で正多角形、2 以上で星形(5 2 で五芒星、6 2 で六芒星)。回転 -90 で頂点が真上を向く。太さ 0 以下で塗りつぶし。既定は頂点数 5・スキップ 2(五芒星)・回転 -90・太さ 3・ぼかし 0.5。
例
fx_polygon star 640 400 116 5 2 -90 3 "#FF60C0FF" 0.5
fx_heart — ハート構文
fx_heart <id> <cx> <cy> [大きさ] [太さ] [色] [ぼかし]ハート形。大きさは全体の高さのおよそ半分(既定 40)。太さ 0 以下(既定)で塗りつぶし。色の既定はピンク(#FFFF6090)、ぼかし 0.5。
例
fx_heart ht 640 420 44 0 "#E0FF6090" 0.5
fx_image — 絵を図形と同じ扱いで置く構文
fx_image <id> <絵> <x> <y> [幅] [高さ]絵を要素として置く(左上が x, y。拡張子は省ける)。幅・高さを省く(0)と絵の大きさのまま。fx_anim / fx_transform / fx_blend / fx_spin は図形と同じように効く。図形では作りにくい柔らかい光や細かな粒を絵で用意して、時間の制御に載せるときに使う。
例
fx_image glow1 "glow_soft" 540 260 200 200
fx_anim glow1 200 600 400 3
fx_anim — 出入りの時間構文
fx_anim <id> <fadeInMs> <holdMs> <fadeOutMs> [easing] [開始遅延ms]開始遅延 → フェードイン → 保持 → フェードアウトの順に進み、終わると自動で消える。easing の既定は 1。3 つの時間の合計が 0 なら寿命なし(消すまで残る)。要素ごとに開始遅延をずらすと、残像や連続した演出になる。
例
fx_anim beam 30 40 260 1
fx_transform — 伸縮と移動構文
fx_transform <id> <拡大From> <拡大To> <移動X> <移動Y> <時間ms> [easing] [開始遅延ms]時間ms かけて大きさを拡大From から拡大To へ変え、移動X・移動Y だけ動かす(基準解像度の画素)。開始遅延は fx_anim を付けていなくても効く。
例
fx_transform beam 0.55 1.25 0 0 330 1
fx_spin — 回し続ける構文
fx_spin <id> <度毎秒> [開始角度]要素を回し続ける。正で時計回り、負で反時計回り、0 で止まる。
例
fx_spin z1 18 0
fx_blend — 合成の方法構文
fx_blend <id> <mode>2 で加算合成(重なるほど明るくなる。光の表現向き)、それ以外は通常の合成。
例
fx_blend beam 2
fx_clear — 要素を消す構文
fx_clear <id>その id の要素を消す。
例
fx_clear ring
fx_clearall — 図形エフェクトを全部消す構文
fx_clearall図形エフェクトの要素をすべて消す。
例
fx_clearall
fx_design — 座標の基準解像度構文
fx_design <幅> <高さ>fx_* の座標の基準解像度を決める(既定 1280 720。引数を省くと 1280 720 に戻す)。0 以下を渡すと拡大縮小しない(画面の画素で書く)。
例
fx_design 1920 1080
camera — カメラを動かす構文
camera <x> <y> [倍率] [回転(度)] [時間ms]引数: x y カメラの位置(設計座標 1280x720。大きくすると画面が左/上へ動き、右/下が見えてくる)、倍率(既定 1.0)、回転(度。既定 0)
場面全体をカメラで見る位置を変えるように動かす。画面より大きい絵はそのまま置かれるので、端まで見て回れる。時間を省くと、動かす距離に応じた時間(250〜2000ms)でなめらかに動き、0 で即座に移る。待たずに次の行へ進むので、続けて動かすときは wait を挟む。
例
camera 1400 0 1 0 2600
wait 2600
camera 1400 0 1.4 8 900
resetcamera — カメラを元に戻す構文
resetcamera [ms]位置 0 0・倍率 1・回転 0 へ戻す。時間を省くと距離に応じた時間(250〜2000ms)でなめらかに戻り、0 で即座に戻る。待たない。
例
resetcamera 1800
resetcamera 0
blendmode — 場面の重ね方構文
blendmode <mode>場面の絵(背景・立ち絵など)を重ねる方法を変える。0=通常、1=加算、2=乗算、3=スクリーン。4(減算)と 5(上書き)は書けるが対応していないので通常になる。個別に重ね方を決めた絵はそちらが優先。
例
blendmode 1
resetblend — 重ね方を戻す構文
resetblend場面の重ね方を通常へ戻す。
例
resetblend
particle — 組み込みのパーティクル構文
particle <type> [count]組み込みのパーティクルを始める。type 0=雪 1=雨 2=桜。count は粒の数(既定 100)。止めるのは stopparticle。
例
particle 0 300
snow — 雪を降らせる構文
snow [count]雪を降らせる(count の既定 100)。
例
snow 150
rain — 雨を降らせる構文
rain [count]雨を降らせる(count の既定 150)。
例
rain
sakura — 桜を散らせる構文
sakura [count]桜の花びらを散らせる(count の既定 80)。
例
sakura
stopparticle — パーティクルを止める構文
stopparticleパーティクルを止める。
例
stopparticle
particle_load — パーティクルの定義を読む構文
particle_load <assetPathOrName>パーティクルの JSON(名前またはパス)を読み込んで控える。再生は particle_play。
例
particle_load sparkle
particle_play — 読んだ定義を再生する構文
particle_play [count]particle_load で読み込んだ定義を再生する。count を省くと定義の数。
例
particle_play 120
particle_playasset — 定義を読んですぐ再生する構文
particle_playasset <assetPathOrName> [count]JSON を読み込んですぐ再生する(particle_load と particle_play をまとめたもの)。
例
particle_playasset sparkle
mruanime.dll(パーツアニメ)を使う。animecreate が返すハンドル(番号)で指す。animecreate の 2 番目に変数名を書くとハンドルがその変数に入り、以後その変数名をハンドルの代わりに書ける。
animeload — アニメデータを読み込む構文
animeload <modelName> <jsonPath>アニメのデータ(JSON)に名前を付けて読み込む。
例
animeload hero anime/hero.json
animecreate — インスタンスを作る構文
animecreate <modelName> [varName]読み込んだモデルからインスタンスを作る。varName を書くとハンドルがその変数に入る。作れなければ失敗(ハンドル 0)。
例
animecreate hero h1
animedestroy — インスタンスを破棄する構文
animedestroy <handle>インスタンスを破棄する。
例
animedestroy h1
animedestroyall — インスタンスを全部破棄する構文
animedestroyallすべてのインスタンスを破棄する。
例
animedestroyall
animemotion — モーションを再生する構文
animemotion <handle> <motionName> [speed]モーションを再生する。speed は再生速度(既定 1.0)。
例
animemotion h1 idle
animestop — モーションを止める構文
animestop <handle>再生中のモーションを止める。
例
animestop h1
animeexpression — 表情を替える構文
animeexpression <handle> <exprName>表情を替える。
例
animeexpression h1 smile
animepos — 位置構文
animepos <handle> <x> <y>インスタンスの位置を決める。
例
animepos h1 640 600
animescale — 大きさ構文
animescale <handle> <sx> <sy>横・縦の倍率を決める(1.0 で等倍)。
例
animescale h1 1.2 1.2
animealpha — 濃さ構文
animealpha <handle> <alpha>濃さを決める(1.0 で不透明、0 で透明)。
例
animealpha h1 0.5
animevisible — 表示の入切構文
animevisible <handle> <0|1>1 で表示、0 で非表示。
例
animevisible h1 0
animewind — 風構文
animewind <handle> <wx> <wy>揺れものに当てる風の強さ(横・縦)を決める。
例
animewind h1 0.3 0
mrumotion.dll(メッシュ変形)を使う。ハンドルの扱いはアニメと同じで、motioncreate の 2 番目に書いた変数名をハンドルの代わりに書ける。
motionload — モーションデータを読み込む構文
motionload <modelName> <jsonPath>モデルのデータ(JSON)に名前を付けて読み込む。
例
motionload girl motion/girl.json
motioncreate — インスタンスを作る構文
motioncreate <modelName> [varName]読み込んだモデルからインスタンスを作る。varName を書くとハンドルがその変数に入る。作れなければ失敗(ハンドル 0)。
例
motioncreate girl m1
motiondestroy — インスタンスを破棄する構文
motiondestroy <handle>インスタンスを破棄する。
例
motiondestroy m1
motiondestroyall — インスタンスを全部破棄する構文
motiondestroyallすべてのインスタンスを破棄する。
例
motiondestroyall
motionmotion — モーションを再生する構文
motionmotion <handle> <motionName> [speed]モーションを再生する。speed は再生速度(既定 1.0)。
例
motionmotion m1 idle
motionmotionex — 繋ぎ方を指定してモーションを再生する構文
motionmotionex <handle> <motionName> [speed] [fadeInMs] [fadeOutMs] [loop]fadeInMs は新しいモーションが立ち上がる時間(省略・負でモーションの定義どおり)、fadeOutMs は今のモーションが退く時間(省略・負で fadeInMs と同じ)。loop は -1=定義どおり(既定)/0=ループしない/1=ループする。
例
motionmotionex m1 wave 1.0 400 400 0
motionstop — モーションを止める構文
motionstop <handle>再生中のモーションをすぐ止める。
例
motionstop m1
motionstopfade — 時間をかけてモーションを止める構文
motionstopfade <handle> [fadeOutMs]モーションを fadeOutMs(既定 300)かけて止める。0 なら即座に止める。
例
motionstopfade m1 500
motionfade — 繋ぎ時間の既定値構文
motionfade <handle> <fadeInMs>モーションの定義に繋ぎ時間が書かれていないときに使う、繋ぎ時間の既定値を決める。
例
motionfade m1 300
motionexpression — 表情を替える構文
motionexpression <handle> <exprName>表情を替える。
例
motionexpression m1 smile
motionparam — パラメータを入れる構文
motionparam <handle> <paramName> <value>パラメータに値を直接入れる。
例
motionparam m1 ParamAngleX 15
motionresetparams — パラメータを戻す構文
motionresetparams <handle>motionparam で入れた値を元へ戻す。
例
motionresetparams m1
motionpos — 位置構文
motionpos <handle> <x> <y>インスタンスの位置を決める。
例
motionpos m1 640 600
motionscale — 大きさ構文
motionscale <handle> <sx> <sy>横・縦の倍率を決める(1.0 で等倍)。
例
motionscale m1 1.1 1.1
motionalpha — 濃さ構文
motionalpha <handle> <alpha>濃さを決める(1.0 で不透明、0 で透明)。
例
motionalpha m1 0.5
motionvisible — 表示の入切構文
motionvisible <handle> <0|1>1 で表示、0 で非表示。
例
motionvisible m1 1
motionwind — 風構文
motionwind <handle> <wx> <wy>揺れものに当てる風の強さ(横・縦)を決める。
例
motionwind m1 0.3 0
motionblink — 自動まばたきの入切構文
motionblink <handle> <0|1>1 で自動まばたきを入れ、0 で切る。
例
motionblink m1 1
motionblinktiming — まばたきの間合い構文
motionblinktiming <handle> <minMs> <maxMs> [closeMs] [holdMs] [openMs]まばたきの間隔(minMs〜maxMs の間でばらつく)と、閉じる・閉じたまま・開く時間を決める。負の値を渡した項目は変えない。
例
motionblinktiming m1 2500 6000
motionblinkparams — まばたきが動かすパラメータ構文
motionblinkparams <handle> "パラメータ1,パラメータ2"自動まばたきで動かすパラメータをカンマ区切りで決める。
例
motionblinkparams m1 "ParamEyeLOpen,ParamEyeROpen"
motionlipsync — 口パクの入切構文
motionlipsync <handle> <0|1>声の大きさで口を動かす仕組みを入切する。声の大きさは motionvoicelip(自動)か motionlipvalue(手動)で渡す。
例
motionlipsync m1 1
motionlipvalue — 声の大きさを渡す構文
motionlipvalue <handle> <level>声の大きさ(実効値 0〜1。会話なら 0.1〜0.2 が山)を渡す。口の開きそのものではなく、開き具合は motionliptuning の gain で決まる。
例
motionlipvalue m1 0.15
motionliptuning — 口の開きの効き方構文
motionliptuning <handle> <gain> [smoothing] [decayPerSec]声の大きさに掛ける倍率(gain)、なめらかさ、閉じる速さを決める。負の値を渡した項目は変えない。
例
motionliptuning m1 4.0
motionlipparams — 口パクが動かすパラメータ構文
motionlipparams <handle> "パラメータ1[,パラメータ2]"口パクで動かすパラメータをカンマ区切りで決める。
例
motionlipparams m1 "ParamMouthOpenY"
motionvoicelip — 鳴っている声で口を動かす構文
motionvoicelip <handle>指名したインスタンスへ、鳴っている声の大きさを毎コマ自動で流し込む。0 を渡すと解除。
例
motionlipsync m1 1
motionvoicelip m1
motionpart — パーツを切り替える構文
motionpart <handle> <partId> <0|1>1 でそのパーツを表にする(同じ組の他のパーツは消える)。
例
motionpart m1 PartArmB 1
motionpartalpha — パーツの濃さ構文
motionpartalpha <handle> <partId> <alpha>パーツの濃さ(0〜1)を直接決める。
例
motionpartalpha m1 PartTear 0.6
wait — 指定時間待つ構文
wait <ms>ms のあいだ次の行へ進まない(その間も描画や演出は進む)。引数は省略できない。スキップ中は長い待ちを飛ばす。
例
wait 1000
click — クリックを待つ構文
click文章を出さずにクリック(またはオート・スキップ)を待つ。
例
click
label — ラベルを定義する構文
label <name>*namejump / gosub / 選択肢などの行き先を作る。*name と同じ。名前に : を付けない(付けるとその文字も名前に含まれる)。ラベル名は大文字・小文字を区別し、同じ名前が 2 つあると後ろのものが使われる。
例
label start
*menu
jump — 行き先へ飛ぶ構文
jump *ラベル(同じファイルのラベルへ)jump ラベル(ラベルを探し、無ければ同じ名前のファイルの先頭へ)jump ファイル *ラベル(別のファイルのラベルへ)jump ファイル(別のファイルの先頭へ)引数が 1 つのときは、まずこのファイルのラベルとして探し、無ければファイル名として扱う。* を付けるとラベルとしてしか探さない(打ち間違いがファイル読み込みに化けない)。ファイル名はフォルダを書かなければ scenario/ の下(拡張子なし)。別のファイルへ移っても変数(setvar / addvar)は引き継がれる。別のファイルへ移る行より後ろは実行されないので、後片付けは飛ぶ前に済ませる。飛び先のラベルがそのファイルに無いと、そのファイルの先頭から始まる。
例
jump *ending
jump demo_split *split_start
goto — 行き先へ飛ぶ構文
goto *ラベルgoto ファイル [*ラベル]jump と同じ命令。書き方も動きも同じ(別のファイルへも飛べる)。
例
goto *start
jumpfile — 行き先へ飛ぶ(古い名前)構文
jumpfile ファイル [*ラベル]jump と同じ命令。古いシナリオのために残してある名前で、同じファイルのラベルへも飛べる。
例
jumpfile chapter2 *start
gosub — サブルーチンを呼ぶ構文
gosub <ラベル>今の位置を覚えてラベルへ飛ぶ。return で gosub の次の行へ戻る。* は付けても付けなくてもよい。同じファイルの中だけ。入れ子は 256 段まで。
例
gosub *greet
戻ってきました。
jump *after
*greet
(サブルーチンの中です)
return
*after
return — サブルーチンから戻る構文
returngosub の次の行へ戻る。gosub していないときに書くとエラーとしてログに残し、次の行へ進む。
例
return
end — シナリオを終える構文
endシナリオを終える。メッセージ枠の文章を消して隠し、動画を止め、シーン送りを止める。end を書かずに最終行まで進んだときも同じように終わる。
例
end
exit — シナリオを終える構文
exitend と同じ。
例
exit
jumpstop — シーンの区切り構文
jumpstopシーン送り(メッセージ枠の ▶▶)が止まる場所であり、シーン戻りの戻り先になる。ふだんの再生では何もしない。章の入口に置く。
例
*chapter1
jumpstop
scenestop — シーンの区切り構文
scenestopjumpstop と同じ。
例
scenestop
if — 条件が成り立てば飛ぶ構文
if <変数> <演算子> <値> <ラベル>== != < > <= >=成り立てばラベルへ飛び、成り立たなければ次の行へ進む。値は整数(変数名は書けない。変数どうしを比べるときは #if を使う)。ラベルの * は付けても付けなくてもよい。まだ値を入れていない変数は 0。
例
if kouhei >= 10 *b_sel_high
if_block — 条件ブロックの始まり構文
if_block "変数 演算子 値"#if "条件" を書くとこの命令になる。条件は必ず引用符で囲む(囲まないと最初の語しか見ず、書き方の誤りとしてログに残し、中身を実行してしまう)。3 つの語は空白で区切り、値は整数、整数でなければ変数名として読む。成り立たなければ同じ深さの elif_block・else_block・endif_block まで読み飛ばす。入れ子にできる。endif_block が見つからないとファイルの終わりまで読み飛ばす。
例
if_block "test_v >= 5"
条件が成り立ったので、この中が実行されます。
endif_block
elif_block — 条件ブロックの分かれ目構文
elif_block "変数 演算子 値"#elif "条件" を書くとこの命令になる。前の if_block / elif_block が成り立たずに読み飛ばしている途中で出会うと、ここで条件を調べ、成り立てば次の行から実行する。前の分岐を実行し終えてここへ来たときは、条件を見ずに endif_block まで飛ばす。
例
#if "love >= 10"
とても仲がいい。
#elif "love >= 5"
まあまあ仲がいい。
#endif
else_block — どれも成り立たなかったとき構文
else_block#else を書くとこの命令になる。どの分岐も成り立たなかったときに、次の行から実行する。前の分岐を実行し終えてここへ来たときは endif_block まで飛ばす。
例
#if "love >= 10"
とても仲がいい。
#else
まだよそよそしい。
#endif
endif_block — 条件ブロックの終わり構文
endif_block#endif を書くとこの命令になる。条件ブロックの終わり。
例
endif_block
setvar — 変数に値を入れる構文
setvar <名前> <値>シナリオ変数に整数を入れる(読めなければ 0)。セーブデータごとに残る値で、好感度など周回で変わる値に使う。別のファイルへ jump しても引き継がれる。どのセーブデータでも共通の記録は setsysflag などを使う。
例
setvar kouhei 10
addvar — 変数に足す構文
addvar <名前> <値>変数に整数を足す(まだ値が無ければ 0 から)。負の値で引ける。
例
addvar sel_count 1
random — 乱数を変数へ入れる構文
random <名前> <min> <max>min〜max(両端を含む)の整数を 1 つ選んで変数に入れる。
例
random dice 1 6
if dice >= 4 *b_br_high
randomjump — ランダムにラベルへ飛ぶ構文
randomjump <ラベル1> <ラベル2> [ラベル3 ...]書いたラベルのどれか 1 つへ、等しい確率で飛ぶ。ラベルは 2 つ以上。* は付けても付けなくてもよい。
例
randomjump *b_br_r1 *b_br_r2
choice — 選択肢を出す構文
choice "文言1" ラベル1 "文言2" ラベル2 ...select と同じ命令。
例
choice "はい" yes_label "いいえ" no_label
select — 選択肢を出す構文
select "文言1" ラベル1 "文言2" ラベル2 ...#select "文言1", *ラベル1, "文言2", *ラベル2 ...文言と行き先の組を並べて選択肢を出し、選ばれたラベルへ飛ぶ。組がそろっていないとエラー。ラベルの * は付けても付けなくてもよい。出す前にオートセーブを 1 件積み、シーン戻りの戻り先を残す。環境設定に従ってスキップ・オートを解除する。以前に選んだ項目には印が付く(色を変えるかは環境設定)。
例
#select "はい", *yes, "いいえ", *no
select_view — 画面を暗くして選択肢を出す構文
select_view "文言1" ラベル1 "文言2" ラベル2 ...#select_view "文言1", *ラベル1, ...select と同じく選択肢を出すが、出している間は画面を暗くし、選んだら戻す(coloradjust で変えていた明るさ・コントラスト・彩度も元に戻る)。select と違い、オートセーブは積まず、選択肢でのスキップ・オート解除の設定も効かない。
例
#select_view "こちら", *b_branch_done, "あちら", *b_branch_done
select_clear — 積んだ選択肢を空にする構文
select_clear積んだ選択肢を空にする。select_add で足し始める前に書く。
例
#select_clear
#select_add "元気よく答える", *b_sel_a
#select_add "だまっている", *b_sel_b
#select_show
select_add — 選択肢を 1 つ積む構文
select_add "文言" ラベル [有効]#select_add "文言", *ラベル [, 有効]選択肢を 1 つ足す。3 番目に 0 を書くと押せない項目として出す(省略時は押せる)。* は付けても付けなくてもよい。
例
#select_add "まだ選べない道", *locked, 0
select_show — 積んだ選択肢を出す構文
select_show積んだ選択肢を出して、選ばれたラベルへ飛ぶ。select と同じく、出す前にオートセーブを積み、シーン戻りの戻り先を残す。選択肢でのスキップ・オート解除の設定は効かない。
例
#select_show
select_timeout — 次の選択肢に制限時間を付ける構文
select_timeout <制限ms> [既定]既定: 時間切れのときに選んだことにする選択肢の番号(1 始まり)か、*ラベル(選択肢に無いラベルでもよい。時間切れのときはそこへ飛ぶ)。省略すると最初の選択肢。
次に出す選択肢(select / choice / select_view / select_show)1 回だけに制限時間を付ける。選択肢の上に残り時間の帯が出る。セーブ画面などを開いている間は時間が止まる。制限ms に 0 を書くと取り消し。選択肢のまとまりのすぐ前(#select_clear や #select の行の前)に書く。そうしておくと、セーブから再開したときやシーン戻りで選択肢に戻ったときも、制限時間が付き直る。先頭に # を付けない。#select で始まる行は select 命令に変換されるため、#select_timeout と書くと正しく動かない。
例
select_timeout 5000 2
#select_clear
#select_add "待つ", *wait
#select_add "追いかける", *chase
#select_show
select_timeout 3000 *too_late
#select "右へ", *right, "左へ", *left
automode — オートモード構文
automode [0|1]オートモードを入切する。引数を省くと今の状態を反転する。
例
automode 1
skipmode — スキップモード構文
skipmode [0|1]スキップモードを入切する。引数を省くと今の状態を反転する。
例
skipmode 0
auto_delay — オートモードの待ち時間構文
auto_delay <ms>オートモードで次へ進むまでの待ち時間を決める。引数を省くと何もしない。
例
auto_delay 2000
skip_delay — スキップ中の待ち時間構文
skip_delay <ms>スキップ中に 1 行ごとに入れる待ち時間を決める。引数を省くと何もしない。
例
skip_delay 50
scene_start — シーン回想の開始登録構文
scene_start <sceneId> <title> [startLabel]シーン ID・題名・開始ラベルを登録する(開始ラベルを省くと *scene_<sceneId>)。シナリオファイル名は記録しない。
例
scene_start s01 "はじめての出会い"
scene_end — シーン回想の解放構文
scene_end [sceneId]シーンを解放済みにする。sceneId を省くと直前の scene_start のシーン。
例
scene_end
setsysflag — システムフラグに値を入れる構文
setsysflag <名前> <値>システムセーブに残る整数のフラグ(どのセーブデータで達成しても有効な解放・到達の記録)に値を入れる。名前の後ろのカンマは取り除く(setsysflag name, 1 も可)。書き出しは次に文章が出たときにまとめて行う。シナリオの if / #if からは読めない(読むのはシステムスクリプトの System.getSystemFlag(名前))。セーブデータごとの値は setvar を使う。
例
setsysflag demo_visited 1
addsysflag — システムフラグに足す構文
addsysflag <名前> <値>システムフラグに値を足す(周回数を数えるなど)。それ以外は setsysflag と同じ。
例
addsysflag play_count 1
setclearflag — クリアフラグを立てる構文
setclearflag <名前> <値>クリア状況のフラグを決める(0 以外で立つ、0 で下ろす)。システムセーブに残り、システムスクリプトの System.getClearFlag(名前) で読む。
例
setclearflag demo_cleared 1
setflowflag — フローチャートのフラグに値を入れる構文
setflowflag <名前> <値>フローチャートのフラグ(到達した章の表示などに使う)に値を入れる。システムセーブに残り、システムスクリプトの System.getFlowchartFlag(名前) で読む。
例
setflowflag chapter_basic 1
addflowflag — フローチャートのフラグに足す構文
addflowflag <名前> <値>フローチャートのフラグに値を足す(通った回数など)。それ以外は setflowflag と同じ。
例
addflowflag route_a 1
autosave — その場でオートセーブ構文
autosave書いた場所でオートセーブを 1 件積む。環境設定でオートセーブが切なら何もしない。直前の行で積んだばかりなら積まない。選択肢(select / select_show)の前と、scenetitle の後の最初の文章では、書かなくても自動で積む。
例
autosave
scenetitle — セーブ一覧に出る場面名構文
scenetitle <名前>セーブ一覧に出す場面の名前を決める。空白を含んでも 1 つの名前としてつなぐ。この後、最初の文章が出たところでオートセーブを 1 件積む(オートセーブが入のとき)。
例
scenetitle 紹介デモ
screen_show — 名前付きの画面を開いて結果を受け取る構文
screen_show <画面名> [変数名]システムスクリプト(Screen.create / addButton)で組んでおいた画面を開き、閉じられるまで待つ。押されたボタンの番号(1 から。閉じたら 0)を変数に入れる。
例
screen_show map dest
if dest == 1 *town
if dest == 2 *forest
sysscript — システムスクリプトを実行する構文
sysscript <名前>システムスクリプトを 1 本実行し、終わるまで待つ。フォルダを書かなければ system/ の下(例 Flowchart → system/Flowchart)。フローチャート・マップなど、画面の組み立てをシステムスクリプトに持たせたものを開くときに使う。開いている間の入力はそちらが受け持つ。シナリオ命令の無いシステム機能も、システムスクリプトに書いてこの命令で呼ぶ。
例
sysscript Flowchart
menubar — 上部メニューバーの入切構文
menubar onmenubar off画面上部のスライド式メニューバーを使えるようにする/しない。on / 1 / true、off / 0 / false が書ける。それ以外はエラー。
例
menubar on
週ごとに予定を選んで能力と相手の気持ち(友好度・ときめき度)を育てるゲームの命令。仕組み・設定ファイル・使える名前と変数は 10.21。sim_load の前にほかの sim_ 命令を書くと、エラーとしてログに残り何もしない(セーブをロードした直後は、控えてある設定ファイルを読み直してから動く)。
sim_load — 設定ファイルを読む構文
sim_load <設定ファイル>育成・恋愛シミュレーションの設定ファイルを読む。名前は data0 からの相対で、拡張子は付けない(sim/love_sample → data0/sim/love_sample.txt または .lsf。.. は使えない)。探す順はシナリオと同じで、設定の拡張子(開発中はふつう .txt)→ もう片方。読み込み済みと同じ名前なら読み直さない。書き方の誤り(知らない見出し・項目、ID の重複、上限を超える数など)があると読み込みに失敗し、何行目かをログに残して次の行へ進む。読んだ名前は sim_ の変数に控えるので、セーブをロードした直後もほかの sim_ 命令がそのファイルを読み直す。
例
sim_load sim/love_sample
sim_begin — 新しく始める構文
sim_beginsim_ で始まるシナリオ変数をすべて消してから、初期値を入れ直す(1 週目・能力は init・全員まだ出会っていない・行事は 0 回)。sim_load の後に 1 度書く。sim_ で始まらない変数(setvar で入れたものなど)は消さない。
例
sim_load sim/love_sample
sim_begin
sim_week — 今週の予定を選ばせる構文
sim_week [変数]予定表の画面を出し、選ばれるまで待つ。選んだ予定の effect を能力・友好度・ときめき度に反映し、番号(設定ファイルの [command] の並びで 1 始まり。デートは 100)を変数と sim_lastcmd に入れる。週は進めない(sim_advance で進める)。
予定表の「ステータス」でステータス画面を開ける。「デートに誘う」([character] と [spot] があるときだけ出る)は、出会った人がいて寝込んでいない週だけ押せ、相手と行き先を選ぶ。デートでは相手の友好度が行き先ごとの増減(spots。無ければ spot_default)だけ動き、2 本立ての人はときめき度も date_heart だけ動く。続いて [date] effect が効き、会っていない週の数え直しと爆弾の火消しをする。電話のボタン([phone] を書いたときだけ出る)は週に 1 回、相手を選んでかけると予定表に戻る(週は進まないので、続けて予定を選ぶ)。相手・行き先の画面は右クリック・ESC で予定表に戻る。
when を満たさない予定と、寝込んでいる週の sick_ok の無い予定は押せない。予定の結果 stress = 1 の能力が上限に達すると、次の週は寝込む。出している間はスキップ・オートを止める。予定表を出せなかったとき(ボタンの絵が読めないなど)は変数に 0 を入れ、エラーとしてログに残して次の行へ進む。
例
sim_week pick
sim_message
sim_message — 週の結果を文章で出す構文
sim_message直前の sim_week の結果を文章として出し、クリックを待つ(例「「勉強する」を選んだ。 学力 +8 ストレス +7」、デートなら「楓と公園へ出かけた。 好感度 +9 ストレス -8」。2 本立ての人とのデートは「好感度」の代わりに「友好 +9 ときめき +3」)。変わった能力だけを並べ、良い変化は up_color、悪い変化は down_color の色で出す(stress = 1 の能力は上がると悪い変化)。寝込むことになった週は「無理がたたった……」が付く。message と同じ扱いなので、バックログ・既読・続きからに乗る。名前欄はそのときの name のまま。出す結果が無いとき(まだ選んでいない、予定表を出せなかった)は何もしない。
例
name ""
sim_week
sim_message
sim_event — その週の場面へ飛ぶ構文
sim_eventその週に起きる場面を 1 つ選んで、そのラベルへ飛ぶ。無ければ次の行へ進む。選ぶ順は 10.21 のとおり(予定の後の場面 → デート → 電話 → 爆弾 → 出会い → 一緒に下校 → 暦の行事 → 条件・確率の行事)。出会い・下校・行事は、飛ぶ前に記録する(出会った印・会った週・起きた回数)。場面の最後で jump *week_event のように sim_event の行へ戻すと、次の場面を探す。飛び先は設定ファイルに *ラベル か ファイル *ラベル(フォルダを省くと scenario/ の下)で書き、別のファイルの場面からは jump ファイル *week_event で戻る。ラベルが無いとエラーとしてログに残し、次の行へ進む。
例
*week_event
sim_event
sim_advance — 次の週へ進める構文
sim_advance [変数]週の終わりの処理(爆弾の点火・爆発、2 本立ての人のときめき度に heart_weekly の値を足す、寝込みの残りを 1 減らす)をしてから、週を 1 つ進める。最後の週を終えたら変数に 1(それ以外は 0)を入れ、sim_finished を 1 にする。爆弾が爆発したときは、次の sim_event で [bomb] label の場面へ飛ぶ。
例
sim_advance done
if done == 1 *finale
jump *week
sim_status — ステータス画面構文
sim_statusステータス画面(日付・能力のゲージ・出会った人の友好度(2 本立ての人はときめき度も)と、火がついた爆弾)を出し、閉じるまで待つ。予定表の「ステータス」と同じ画面。
例
sim_status
sim_ending — 結末へ飛ぶ構文
sim_ending設定ファイルの [ending] を上から見て、when を満たす最初の結末の label へ飛ぶ(when を書いていない結末は必ず当てはまるので、最後に置く)。結末の番号(並び順で 1 始まり)を sim_ending に入れる。当てはまる結末が無ければ sim_ending を 0 にして次の行へ進む。
例
sim_ending
jump *end_normal
sim_set — 能力・友好度などに値を置く構文
sim_set <名前> <数>名前(10.21 の表)に数を置く。範囲の外は端に丸める。出会う前の人の友好度・ときめき度(aff.人物ID / heart.人物ID)は変わらない。met.人物ID を 1 にすると sim_meet と同じ。知らない名前・読むだけの名前・設定ファイルにいない人物はエラーとしてログに残り、何も変わらない。
例
sim_set study 50
sim_set var.route 2
sim_add — 能力・友好度などに足す構文
sim_add <名前> <数>名前(10.21 の表)に数を足す。負の数で引く。範囲の丸めと、出会う前の人の友好度・ときめき度が変わらないことは sim_set と同じ。
例
sim_add aff.kaede 5
sim_add heart.kaede 3
sim_add stress -5
sim_get — 能力・友好度などを変数へ読む構文
sim_get <名前> <変数>名前(10.21 の表。読むだけの名前も可)の今の値を、シナリオ変数へ入れる。そのあと if などで比べられる。知らない名前はエラーとしてログに残り、変数は変わらない。
例
sim_get study s
if s >= 50 *smart
sim_meet — 出会わせる構文
sim_meet <人物ID>シナリオの都合で出会う人(幼なじみなど)を出会わせる。出会った印を付け、友好度をその人の affection、ときめき度を heart にし、最後に会った週を今の週にして、sim_meet_char にその人の番号を入れる。出会いの場面(meet)へは飛ばないので、出会いの文章はその場に書く。すでに出会っていれば何もしない。知らない人物 ID はエラー。
例
sim_meet kaede
sim_contact — 会って話したことにする構文
sim_contact <人物ID>その人の「最後に会った週」を今の週にし(会っていない週を数え直す)、爆弾の火を消す。行事の場面でその人と過ごしたときに書く(デート・電話・一緒に下校では自動で行われる)。まだ出会っていない人・知らない人物 ID はエラー。
例
sim_add aff.kaede 5
sim_contact kaede
sim_if — 式が真ならラベルへ飛ぶ構文
sim_if "式" *ラベルsim_if "式" ファイル *ラベル条件式(10.21 の書き方)が真(0 以外)ならラベルへ飛び、偽なら次の行へ進む。式は二重引用符で囲む(空白やかっこを含む式は、囲まないと行の読み取りが崩れる)。能力・友好度・ときめき度・var.シナリオ変数 などの名前と、rand(a,b)・max_aff()・max_heart() などの関数が使える。ファイルはフォルダを省くと scenario/ の下。式が読めないとエラーとしてログに残し、次の行へ進む。
例
sim_if "aff.aoi >= 60 && study >= 50" *aoi_route
sim_if "heart.aoi >= max_heart()" *aoi_best
playsound — 音を鳴らす(汎用)構文
playsound <file>Windows では BGM として鳴らす(いま鳴っている曲と入れ替わる。ループするかは直前の設定のまま)。ブラウザ・Android では効果音として 1 回鳴らす。動きがプラットフォームで違うので、ふつうは bgm / se を使う。
例
playsound chime
showimage — 一枚絵を表示する構文
showimage <file> [x] [y]絵をロゴ表示用の層に一枚絵として出す。x・y は書けるが使われない。場面の絵には bg / sprite / evcg_show を使う。
例
showimage logo_title
title — ウィンドウのタイトル構文
title <テキスト>ウィンドウのタイトルバーの文字を変える(タイトル画面を出す命令ではない)。空白で区切られた引数は空白でつなぐ。引数が無いとエラー。
例
title My Game 体験版
| 命令 | 説明 | 変換後の命令 |
|---|---|---|
#if "条件" | 条件ブロック開始 | if_block |
#elif "条件" | 前の分岐が成り立たなかったときに調べる | elif_block |
#else | どの分岐も成り立たなかったとき | else_block |
#endif | 条件ブロック終了 | endif_block |
#select "文言", *ラベル, ... | 選択肢を 1 行で出す | select |
#select_clear / #select_add / #select_show | 選択肢を積んで出す | select_clear / select_add / select_show |
#select_view "文言", *ラベル, ... | 画面を暗くして選択肢を出す | select_view |
#jump *ラベル | ラベルへ飛ぶ(条件なし) | jump |
#se_play ファイル | 効果音を鳴らす | se |
*start)#if などの命令を除く)Movie.* と Sound.* だけ(10.20)