第10章 シナリオスクリプト コマンドリファレンス

図10-1: シナリオスクリプト記法
キャプチャ差し替え images/10_scenario_api.png

図10-1: シナリオスクリプト記法

図10-1: シナリオスクリプト記法 — 差し替え: images/10_scenario_api.png

シナリオスクリプトは 行頭コマンド + タブ始まりメッセージ で記述します。

本章前半はカテゴリ別の概要、後半は全コマンドの詳細リファレンス(構文・説明・例)です。よく使う命令の入門は 制作者入門 04・09 を参照してください。

読み方: カテゴリ概要 → 詳細リファレンスの順です。ページ内のカテゴリジャンプ・上部の検索・モバイルでは左上の目次を使うと探しやすいです。

10.1 基本記法

1 行に 1 つ、文章か命令を書く。

メッセージ(タブ始まり)

行頭にタブを入れると、テキスト表示 + クリック待ちになる。

	こんにちは!
	クリックで次へ進みます。

本文には次のタグが書ける: <ruby=よみ>漢字</ruby>(ふりがな)、<color=#ffd45a>…</color>(色)、<size=34>…</size>(大きさ)、<b>…</b>(太字)、<i>…</i>(斜体)。

文章と命令の見分け方

行の形扱い
タブで始まる行文章 + クリック待ち。ただし中身が命令・マクロ・Obj.method の形なら、タブを外して命令として実行する
先頭の語が命令名・マクロ名の行命令として実行する
命令ではなく、日本語(ASCII 以外の文字)を含む行タブが無くても文章 + クリック待ち
命令ではなく、英数字だけの行未知の命令としてログに残し、次の行へ進む
*名前ラベル
空行何もしない

コマンド行

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 になる。

同梱のマクロ

エンジンに付属する 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 msse_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_LOW1 秒で音量 30 へ下げる
BGM_NORMAL1 秒で音量 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_KEEPINIT_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 に書いた時間を捨てる。

10.2 テキスト・メッセージ

コマンド引数説明
name[話者名]話者名を決める(引数なし・"" で消す)
message"テキスト"文章を出してクリックを待つ(タブ始まりの行と同じ)
showtext"テキスト" [x] [y]メッセージ枠に文章を出す(クリック待ちなし。x・y は位置ではない)
msgshow—メッセージ枠を出す
msghide—メッセージ枠を隠す
msgclear—枠の文章を消す
textspeedms1 文字あたりの表示時間(0 で一度に出す)

10.3 背景・場面切り替え

コマンド説明
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

10.4 立ち絵(キャラクター)

コマンド説明
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

10.5 スプライト・イベントCG

コマンド説明
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_flagCG を見た記録を付ける

10.6 音声(BGM)

コマンド説明
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

10.7 効果音(SE)

コマンド説明
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 引数=鳴らす)

10.8 ボイス

コマンド説明
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]ダッキングの入切

10.9 動画

コマンド説明
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)

10.10 画面エフェクト

コマンド説明
fadein / fadeout黒から明ける / 黒へ暗転(終わるまで待つ)
fadecolor色の幕で暗転・明ける(終わるまで待つ)
quake / shake画面揺れ(終わるまで待つ。shake の回数は使われない)
flashフラッシュ
coloradjust / gamma / sharpness色調整
color_monochrome / color_sepia / color_restore白黒・セピア・戻す(待たない)
snow / rain / sakura天候エフェクト(パーティクル)
effect_start / effect_stop汎用パーティクル

図形エフェクト(fx_*)

画像を使わずに図形を描く演出。どれも待たずに次の行へ進む。組み合わせた演出は同梱の 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座標の基準解像度

10.11 カメラ・ブレンド

コマンド説明
cameraカメラ移動・ズーム・回転(待たない)
resetcameraカメラを戻す
blendmode場面の重ね方
resetblend重ね方を戻す

10.12 パーティクル

コマンド説明
particle組み込みのパーティクル(0=雪 1=雨 2=桜)
snow / rain / sakura雪・雨・桜
stopparticle停止
particle_loadJSON 定義を読む
particle_play / particle_playasset再生

10.13 アニメ(mruanime.dll)

コマンド説明
animeloadアニメデータ読込
animecreateインスタンス作成(ハンドルを変数へ入れられる)
animedestroy / animedestroyall破棄
animemotionモーション再生
animeexpression表情変更
animepos / animescale / animealpha位置・大きさ・濃さ
animevisible表示切替
animewind風揺れ
animestop停止

10.14 モーション(mrumotion.dll)

コマンド説明
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章 を参照してください。

10.15 制御フロー

コマンド説明
waitミリ秒待機
clickクリック待ち
jump / goto / jumpfileラベル・別のファイルへ飛ぶ(同じ命令)
gosub / returnサブルーチン
labelラベル定義(*名前 と同じ)
end / exitシナリオ終了(同じ命令)
jumpstop / scenestopシーン送りの停止点(同じ命令)

10.16 選択肢

コマンド説明
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 を書きます(先頭に # は付けません)。

10.17 変数・条件

コマンド説明
setvar変数に整数を入れる
addvar変数に足す
random乱数を変数へ(両端を含む)
randomjumpランダムにラベルへ飛ぶ
if条件が成り立てばラベルへ飛ぶ(値は整数)
if_block / elif_block / else_block / endif_block#if / #elif / #else / #endif の中身

永続フラグ・セーブ

コマンド説明
setsysflag / addsysflagシステムフラグ(どのセーブデータでも共通)
setclearflagクリアフラグ
setflowflag / addflowflagフローチャートのフラグ
autosaveその場でオートセーブ
scenetitleセーブ一覧に出る場面名

10.18 モード

コマンド説明
automodeオートモード(引数を省くと反転)
skipmodeスキップモード(引数を省くと反転)
auto_delay / skip_delay待ち時間の設定

10.19 シーン

コマンド説明
scene_startシーン回想の開始登録
scene_endシーン回想の解放

10.20 その他・システム画面

コマンド説明
screen_show名前付きの画面を開いて結果を受け取る
sysscriptシステムスクリプトを実行する
menubar上部メニューバーの入切
titleウィンドウのタイトルバーの文字
showimageロゴ表示用の層に一枚絵を出す
playsound音を鳴らす(Windows は BGM、ブラウザ・Android は効果音)
Movie.* / Sound.*オブジェクト呼び出し(下表)

オブジェクト呼び出し(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.stopBGM を止める
Sound.pauseBGM を一時停止する

10.21 育成・恋愛シミュレーション

週ごとに予定を選んで能力を上げ、出会った相手と仲良くなり、行事やデートを経て最後に結末が決まるゲームを、設定ファイル 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 "式" *ラベル式が真ならラベルへ飛ぶ

1 週の流れ

*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 の行へ戻る

sim_event が場面を選ぶ順

1 回に飛ぶのは 1 つ。場面から jump *week_event で戻ると、次を探す。

  1. 予定の後の場面(その週に選んだ予定の [command] label)
  2. デート(相手の date、無ければ [date] label。既定 *date)
  3. 電話(その週にかけた相手の phone、無ければ [phone] label。既定 *phone)
  4. 爆弾が爆発した後の場面([bomb] label)
  5. 出会い(まだ出会っていない人のうち appear を満たした人。出会った印を付けてから meet の場面へ)
  6. 一緒に下校(walk を書いた出会った人を設定の順に見て、walk_when を満たし walk_chance % に当たった 1 人。くじは週に 1 回だけで、寝込んでいる週は起きない)
  7. 暦の行事(week に今の週か、date に今の月/週を含む [event])
  8. 条件・確率の行事(week も date も無い [event])

行事は when を満たし、chance の確率に当たったときに起きる。同じ行事は同じ週に 2 度起きず、once = 1(既定)なら 1 度だけ。場面(meet / label)を書いていない出会い・行事は、記録だけして次を探す。

sim_set / sim_add / sim_get の名前

条件式(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() で「葵が一番」)

場面で使えるシナリオ変数

変数内容
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 は内部用なので書き換えない。

見本と配布

10.22 使用例

最小シナリオ

*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 + ボイス

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 項目として数えています。

テキスト・メッセージ (7)

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

背景・場面切り替え (11)

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 — 場面まるごとの切り替え(写しを取る)

別名: backlay

構文

  • 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 の別名

別名: trans_begin

構文

  • backlay

trans_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_cancel

trans_begin で取った写しを捨てて、作り替えた後の場面をそのまま見せる(切り替えの演出なし)。写しが無ければ何もしない。

例

trans_begin
bg 0 bg01b
trans_cancel

立ち絵 (14)

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

スプライト (7)

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

イベントCG (8)

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 (13)

bgm — BGM を鳴らす

別名: bgm_play

構文

  • bgm <file>(即時に鳴らす)
  • bgm <file> <fadeInMs>(無音から立ち上げる)
  • bgm <channel> <file> [fadeInMs](古い書き方。先頭が 1〜2 桁の数字ならその数字は無視する)

曲をループで鳴らす。鳴らすたびにループを入れ直すので、1 回だけ鳴らしたいときは後に setbgmloop 0 を書く。フェードインは利用者の音量設定を変えずに無音から持ち上げる。待たずに次の行へ進む。

例

bgm title
bgm title 800

bgm_play — BGM を鳴らす

別名: bgm

構文

  • bgm_play <file> [fadeInMs]

bgm と同じ命令。

例

bgm_play title 800

bgm_stop — BGM を止める(フェードアウト可)

構文

  • bgm_stop [fadeOutMs]

時間を書くと、その時間で音量を 0 まで下げてから止める。フェードが終わるまで(+100ms)次の行へ進まない。省略または 0 で即座に止める。

例

bgm_stop 800

stopbgm — BGM を即座に止める

構文

  • stopbgm

BGM をすぐ止める。フェードしたいときは bgm_stop <ms>。

例

stopbgm

bgm_pause — BGM を一時停止する

別名: pausebgm

構文

  • bgm_pause

BGM を一時停止する。bgm_resume で続きから鳴る。

例

bgm_pause

pausebgm — BGM を一時停止する

別名: bgm_pause

構文

  • pausebgm

bgm_pause と同じ。

例

pausebgm

bgm_resume — BGM を再開する

別名: resumebgm

構文

  • bgm_resume

一時停止した BGM を続きから鳴らす。

例

bgm_resume

resumebgm — BGM を再開する

別名: bgm_resume

構文

  • resumebgm

bgm_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

効果音 (9)

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 — 効果音の音量

別名: sevolume

構文

  • se_vol <volume>(0〜100)

効果音の音量を決める。

例

se_vol 50

sevolume — 効果音の音量

別名: se_vol

構文

  • 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

ボイス (15)

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_wait

vo_wait と同じく声の終わりまで待つ。口パクは止めない。

例

voice vo01_0001
voice_wait

stopvoice — ボイスを止める

構文

  • stopvoice

鳴っている声を止める。続きからは鳴らせない(一時停止は voice_pause)。

例

stopvoice

voice_pause — ボイスの一時停止

構文

  • voice_pause

stopvoice とは別物。止めた位置を覚えておき、voice_resume で続きから鳴らす。 台詞の途中で別の画面を開き、閉じたら続きから、という使い方のための命令。 鳴っていないときに呼んでもシナリオは止まらない。

例

vo "vo01_0001"
voice_pause
voice_resume

voice_resume — ボイスの再開

構文

  • voice_resume

voice_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 — ボイスの音量

別名: voice_vol

構文

  • voicevolume <0-100>

声全体の音量を決める。キャラごとの音量は voice_volume。

例

voicevolume 80

voice_vol — ボイスの音量

別名: voicevolume

構文

  • 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

動画 (9)

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 — 動画を止める

別名: movie_stop

構文

  • stopmovie

再生中の動画を止める。

例

stopmovie

movie_stop — 動画を止める

別名: stopmovie

構文

  • movie_stop

stopmovie と同じ。引数は使わない。

例

movie_stop

pausemovie — 動画を一時停止する

構文

  • pausemovie

再生中の動画を一時停止する。resumemovie で続きから再生する。

例

pausemovie

resumemovie — 動画を再開する

構文

  • resumemovie

pausemovie で止めた動画を続きから再生する。引数は使わない。

例

resumemovie

setmovievolume — 動画の音量

構文

  • setmovievolume <0-100>

動画の音量を決める(全体音量が掛かる)。範囲外は 0〜100 に丸める。引数はちょうど 1 つ。

例

setmovievolume 80

seekmovie — 動画の位置を飛ばす

構文

  • seekmovie <ms>

再生中の動画をその位置(ミリ秒)へ飛ばす。引数はちょうど 1 つ。

例

seekmovie 15000

画面エフェクト (14)

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

図形エフェクト(fx_*) (17)

画像を使わずに図形を描く演出。座標は基準解像度(既定 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

カメラ・ブレンド (4)

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

パーティクル (8)

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

アニメ (12)

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

モーション (27)

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

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

制御・分岐 (34)

wait — 指定時間待つ

構文

  • wait <ms>

ms のあいだ次の行へ進まない(その間も描画や演出は進む)。引数は省略できない。スキップ中は長い待ちを飛ばす。

例

wait 1000

click — クリックを待つ

構文

  • click

文章を出さずにクリック(またはオート・スキップ)を待つ。

例

click

label — ラベルを定義する

構文

  • label <name>
  • *name

jump / gosub / 選択肢などの行き先を作る。*name と同じ。名前に : を付けない(付けるとその文字も名前に含まれる)。ラベル名は大文字・小文字を区別し、同じ名前が 2 つあると後ろのものが使われる。

例

label start
*menu

jump — 行き先へ飛ぶ

別名: goto、jumpfile

構文

  • jump *ラベル(同じファイルのラベルへ)
  • jump ラベル(ラベルを探し、無ければ同じ名前のファイルの先頭へ)
  • jump ファイル *ラベル(別のファイルのラベルへ)
  • jump ファイル(別のファイルの先頭へ)

引数が 1 つのときは、まずこのファイルのラベルとして探し、無ければファイル名として扱う。* を付けるとラベルとしてしか探さない(打ち間違いがファイル読み込みに化けない)。ファイル名はフォルダを書かなければ scenario/ の下(拡張子なし)。別のファイルへ移っても変数(setvar / addvar)は引き継がれる。別のファイルへ移る行より後ろは実行されないので、後片付けは飛ぶ前に済ませる。飛び先のラベルがそのファイルに無いと、そのファイルの先頭から始まる。

例

jump *ending
jump demo_split *split_start

goto — 行き先へ飛ぶ

別名: jump、jumpfile

構文

  • goto *ラベル
  • goto ファイル [*ラベル]

jump と同じ命令。書き方も動きも同じ(別のファイルへも飛べる)。

例

goto *start

jumpfile — 行き先へ飛ぶ(古い名前)

別名: jump、goto

構文

  • jumpfile ファイル [*ラベル]

jump と同じ命令。古いシナリオのために残してある名前で、同じファイルのラベルへも飛べる。

例

jumpfile chapter2 *start

gosub — サブルーチンを呼ぶ

構文

  • gosub <ラベル>

今の位置を覚えてラベルへ飛ぶ。return で gosub の次の行へ戻る。* は付けても付けなくてもよい。同じファイルの中だけ。入れ子は 256 段まで。

例

gosub *greet
	戻ってきました。
jump *after

*greet
	(サブルーチンの中です)
return

*after

return — サブルーチンから戻る

構文

  • return

gosub の次の行へ戻る。gosub していないときに書くとエラーとしてログに残し、次の行へ進む。

例

return

end — シナリオを終える

別名: exit

構文

  • end

シナリオを終える。メッセージ枠の文章を消して隠し、動画を止め、シーン送りを止める。end を書かずに最終行まで進んだときも同じように終わる。

例

end

exit — シナリオを終える

別名: end

構文

  • exit

end と同じ。

例

exit

jumpstop — シーンの区切り

別名: scenestop

構文

  • jumpstop

シーン送り(メッセージ枠の ▶▶)が止まる場所であり、シーン戻りの戻り先になる。ふだんの再生では何もしない。章の入口に置く。

例

*chapter1
jumpstop

scenestop — シーンの区切り

別名: jumpstop

構文

  • scenestop

jumpstop と同じ。

例

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 — 選択肢を出す

別名: select

構文

  • choice "文言1" ラベル1 "文言2" ラベル2 ...

select と同じ命令。

例

choice "はい" yes_label "いいえ" no_label

select — 選択肢を出す

別名: choice

構文

  • 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

フラグ・セーブ (7)

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 紹介デモ

システム画面 (3)

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 on
  • menubar off

画面上部のスライド式メニューバーを使えるようにする/しない。on / 1 / true、off / 0 / false が書ける。それ以外はエラー。

例

menubar on

育成・恋愛シミュレーション (14)

週ごとに予定を選んで能力と相手の気持ち(友好度・ときめき度)を育てるゲームの命令。仕組み・設定ファイル・使える名前と変数は 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_begin

sim_ で始まるシナリオ変数をすべて消してから、初期値を入れ直す(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

その他 (3)

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

特殊記法