- 追加された行はこの色です。
- 削除された行はこの色です。
#author("2023-11-20T23:04:58+09:00","default:discord","discord")
#author("2024-05-11T08:26:07+09:00","default:discord","discord")
* Suika2 コマンドリファレンス [#vaae6a00]
** 索引 [#j5e7f3bc]
- [[コマンドとは>#ud116d2a]]
- 画面表示系のコマンド
-- [[メッセージ>#ja1c52ac]]
-- [[セリフ>#yd0ca4df]]
-- [[@bg>#kca5c778]] 背景の表示
-- [[@ch>#k2eeb4a7]] キャラクタの表示
-- [[@chsx>#y4c04486]] キャラクタと背景の一括変更
-- [[@all>#y4c04486]] キャラクタと背景の一括変更
-- [[@cha>#oc32420a]] キャラクタの移動
-- [[@shake>#cf5122d8]] 画面を揺らす
-- [[@video>#p65cc7a3]] 動画の再生
-- [[@anime>#zaa1841a]] アニメーションの表示
-- [[@layer>#k5a4fa64]] レイヤへの画像読み込み
-- [[@pencil>#db5f68f1]] テキストレイヤへの描画
- 音声再生系のコマンド
-- [[@bgm>#zc4169a9]] BGMの再生
-- [[@se>#te846f73]] SEの再生
-- [[@vol>#a4a9233c]] ボリュームの変更
- 選択肢表示系のコマンド
-- [[@choose>#j833cb8d]] 選択肢の表示
-- [[@ichoose>#cf919972]] インライン選択肢の表示
-- [[@gui>#x5321807]] GUIの表示
- ウェイト系のコマンド
-- [[@click>#fff6552c]] クリックされるまで待機
-- [[@wait>#p24189e0]] 指定した時間だけ待機
-- [[@skip>#zc4a8ced]] ウェイトのスキップを禁止
- シナリオ分岐系のコマンド
-- [[ラベル>#jfebae13]]
-- [[@goto>#ufbc28a7]] ラベルにジャンプ
-- [[@set>#p4badd92]] 変数に値を設定
-- [[@if>#g3151a59]] 変数の値でジャンプ
-- [[@load>#h7be1f8e]] スクリプトにジャンプ
-- [[@chapter>#v65c528c]] 章のタイトルを設定
- システム系のコマンド
-- [[@setconfig>#v5c67773]] コンフィグの書き換え
-- [[@setsave>#dae21e96]] セーブ許可/禁止
-- [[using>#r3c95140]] マクロの取り込み
----
** コマンドとは [#ud116d2a]
コマンドとは、Suika2に対する指示のことです。Suika2を使ってゲームを作る上で必要なものです。ほとんどのコマンドは @ マークから始まります。
コマンドの名前を覚えておく必要はなく、このページを見ながら書くか、一度使ったものをコピペして使うなどすればよいです。
コマンドの種類は厳選されており、一見して、できることが限られるように思われるかもしれません。しかし、複雑なロジックはコマンドではなく [[WMS>WMSの使い方]] で実現できますし、ボタンの表示は [[GUI>タイトル画面の作り方]] で実現できるため、@コマンドの種類は少なくて済んでいます。
----
** @anime (@アニメ) [#zaa1841a]
@anime [filename.txt] (options)
@anime [file=filename.txt] (options)
@アニメ [ファイル名] (オプション群)
@アニメ [ファイル=ファイル名.txt] (オプション群)
アニメファイルを再生します。レイヤーの移動、エフェクトの表示に使います。
アニメファイルを再生します。レイヤの移動、エフェクトの表示に使います。
アニメファイルはフォルダ anime に配置する必要があります。
Suika2/14.6現在、回転や拡大縮小はサポートされていませんが、順次サポートされさす。
レイヤに画像を読み込むには @layer コマンドを利用してください。
@animeタグでは、画像の移動・拡大・縮小・回転などをサポートしています。
*** 使い方1 [#ma66156d]
anime1.txt を再生します。再生完了まで待ちます。(sync)
@anime anime1.txt sync
*** 使い方2 [#z7eaee21]
anime1.txt を再生します。再生完了を待ちません。(async)
@anime anime1.txt async
なにかメッセージを表示します。
@anime finish-all
*** 使い方3 [#le3c1138]
anime1.txt を再生します。折りたたみシステムメニューを表示しません。(nosysmenu)
@anime anime1.txt sync,nosysmenu
*** 使い方4 [#b0154217]
anime1.txt を再生します。メッセージボックスを表示します。(showmsgbox)
@anime anime1.txt sync,showmsgbox
*** 使い方5 [#x5db5a32]
ループアニメ loop-anime1.txt を再生します。
@anime loop-anime1.txt async
ループアニメ loop-anime1.txt を再生します。reg00というのは、登録アニメの00番という意味です。登録されたアニメだけがセーブ・ロードされます。reg00, reg01, ..., reg07まで利用できます。
@anime loop-anime1.txt async,reg00
なにかメッセージを表示します。
@anime stop-all
*** アニメファイルの記述例 [#z0f46131]
詳細は[[アニメファイル]]をご参照ください。下記は例です。
# アニメーションファイル
# 中央キャラを2回移動する
move {
move1 {
layer: chc; # 中央キャラクタ CHaracter Center
clear: chc; # 既存のアニメーションを破棄する(そのレイヤの最初のmoveにだけ記述)
start: 0.0; # 時刻0.0(秒)から開始する
end: 2.0; # 時刻2.0(秒)に終了する
from-x: 0; # 開始するX座標
from-y: 0; # 開始するY座標
from-a: 255; # 開始するアルファ値
to-x: 100; # 終了するX座標
to-y: 100; # 終了するY座標
to-a: 255; # 終了するアルファ値
}
move {
move2 {
layer: chc; # 中央キャラクタ CHaracter Center
start: 2.0; # 時刻2.0(秒)から開始する
end: 4.0; # 時刻4.0(秒)に終了する
from-x: 100; # 開始するX座標
from-y: 100; # 開始するY座標
from-a: 255; # 開始するアルファ値
to-x: 0; # 終了するX座標
to-y: 0; # 終了するY座標
to-a: 255; # 終了するアルファ値
}
# それと同時に、右キャラを1回移動する
move {
layer: chr; # 中央キャラクタ CHaracter Right
clear: chr; # 既存のアニメーションを破棄する(そのレイヤの最初のmoveにだけ記述)
start: 0.0; # 時刻0.0(秒)から開始する
end: 3.0; # 時刻3.0(秒)に終了する
from-x: 1000;# 開始するX座標
from-y: 0; # 開始するY座標
from-a: 255; # 開始するアルファ値
to-x: 0; # 終了するX座標
to-y: 0; # 終了するY座標
to-a: 255; # 終了するアルファ値
}
----
** @layer (@レイヤ) [#k5a4fa64]
@layer レイヤ名 ファイル名 X Y alpha
@layer name=レイヤ名 file=ファイル名 x=X y=Y a=アルファ
@レイヤ レイヤ名 ファイル名 X Y alpha
@レイヤ 名前=レイヤ名 ファイル=ファイル名 X=x Y=y a=アルファ
レイヤに画像を読み込みます。次の表示系コマンドに進むまで画面には反映されませんのでちらつきません。
ファイル名にnoneを指定すると削除します。
利用できるレイヤ名は下記です。
|レイヤの名前|
|bg|
|bg2|
|effect5|
|effect6|
|effect7|
|effect8|
|chb|
|chl|
|chlc|
|chr|
|chrc|
|chc|
|effect1|
|effect2|
|effect3|
|effect4|
|text3|
|text4|
|text5|
|text6|
|text7|
|text8|
*** 使い方1 [#hca6977b]
レイヤに画像をロードします。
@layer name=text1 file=switch-bg.png x-0 y=0 a=255
*** 使い方2 [#q364f65d]
レイヤの画像を削除します。
@layer name=text1 file=none
----
** @bg (@背景) [#kca5c778]
@bg &color(red,white){ファイル名}; (秒) (エフェクト)
@bg ファイル名 (秒) (エフェクト)
@bg file=ファイル名 (duration=秒) (effect=エフェクト)
@背景 ファイル名 秒 エフェクト=エフェクト
@背景 ファイル=ファイル名 (秒=秒) (エフェクト=エフェクト)
背景を変更します。背景の変更後、キャラクタはステージ上からいなくなります。
*** 使い方1 [#y9f83e66]
sample.png を1.5秒かけて背景にセットします。
@bg sample.png 1.5
*** 使い方2 [#yd4b973f]
sample.png を即座に背景にセットします。
@bg sample.png
*** 使い方3 [#aa234de2]
sample.png を1.5秒かけて右方向カーテンフェードで背景にセットします。
@bg sample.png 1.5 c
*** 使い方4 [#aa408acd]
色を指定して1.5秒かけて左方向カーテンフェードで背景にセットします。
@bg #ff8080 1.5 curtain-left
*** 使い方5 [#fe29bb79]
目を閉じるような演出を行います。
@bg #000000 1.5 eye-close
*** 使い方6 [#i7a4f574]
目を開けるような演出を行います。
@bg sample.png 1.5 eye-open
*** 使い方7 [#k6e31dae]
ルール画像を使ってトランジションを行います。 ルール画像はグレースケールで、黒い部分から白い部分にかけて順に描画されます。
@bg sample.png 1.5 rule:rule-star.png
*** 背景/キャラで共通のエフェクト [#d1eaec13]
フェードには次のエフェクトを指定できます。すべてのエフェクトを[[こちらのページ:https://akatsuki-club.com/tools/suika2_bg/]]でお試しいただけます。(スクリプト配布元は[[こちらのサイト:https://akatsuki-club.com/blog/suika2_background_effect_tool/]]です。)
|LEFT:300|LEFT:300|LEFT:150|LEFT:150|LEFT:150|c
|エフェクトの種類|エフェクト名|エフェクト短縮名1|エフェクト短縮名2|日本語名|
|標準のアルファブレンド|normal|n||標準|
|ルール指定トランジション(1BIT)|rule:ルール画像ファイル||||
|ルール指定トランジション(8BIT)|melt:ルール画像ファイル||||
|右方向カーテン|curtain-right|curtain|c|右カーテン|
|左方向カーテン|curtain-left|cl||左カーテン|
|上方向カーテン|curtain-up|cu||上カーテン|
|下方向カーテン|curtain-down|cd||下カーテン|
|右方向スライド|slide-right|sr||右スライド|
|左方向スライド|slide-left|sl||左スライド|
|上方向スライド|slide-up|su||上スライド|
|下方向スライド|slide-down|sd||下スライド|
|右方向シャッター|shutter-right|shr||右シャッター|
|左方向シャッター|shutter-left|shl||左シャッター|
|上方向シャッター|shutter-up|shu||上シャッター|
|下方向シャッター|shutter-down|shd||下シャッター|
|時計回り|clockwise|cw||時計回り|
|反時計回り|counterclockwise|ccw||反時計回り|
|時計回り(20°刻み)|clockwise20|cw20|||
|反時計回り(20°刻み)|counterclockwise20|ccw20|||
|時計回り(30°刻み)|clockwise30|cw30|||
|反時計回り(30°刻み)|counterclockwise30|ccw30|||
|目を開くような効果|eye-open||||
|目を閉じるような効果|eye-close||||
|目を開くような効果(垂直)|eye-open-v||||
|目を閉じるような効果(垂直)|eye-close-v||||
|スリットが開くような効果|slit-open||||
|スリットが閉じるような効果|slit-close||||
|スリットが開くような効果(垂直)|slit-open-v||||
|スリットが閉じるような効果(垂直)|slit-close-v||||
----
** @bgm (@音楽) [#zc4169a9]
@bgm [filename.ogg] (once)
@bgm [file=filename.ogg] (once)
@音楽 [ファイル名.ogg] (once)
@音楽 [ファイル=ファイル名.ogg] (once)
BGMを再生します。
BGMファイルはフォルダ bgm に格納されている必要があります。
再生可能なファイル形式は、44.1kHzのOgg Vorbisのみです。もし特定の音楽ファイルが遅く聞こえたり、早く聞こえたりした場合は、そのファイルのサンプリングレートを44.1kHzに変換してください。
*** 使い方1 [#qe88da97]
sample.oggを再生します。
@bgm sample.ogg
*** 使い方2 [#zbc47c2b]
BGMを停止します。
@bgm stop
*** 使い方3 [#g5b3f31c]
BGMをループしないで1回だけ再生します。
@bgm sample.ogg once
*** 応用例 [#z6707b39]
BGMを2秒かけてフェードアウトします。
@vol bgm 0 2
@wait 2
@bgm stop
----
** @se (@効果音) [#te846f73]
@se [filename.ogg] (loop)
@se [file=filename.ogg] (loop)
@効果音 [ファイル名.ogg] (loop)
@効果音 [ファイル=ファイル] (loop)
SE(効果音)を再生します。
SEファイルはフォルダ se に格納されている必要があります。
再生可能なファイル形式は、44.1kHzのOgg Vorbisのみです。
*** 使い方1 [#g0e72f5f]
SEを再生します。
@se click.ogg
*** 使い方2 [#pe7272e5]
SEを停止します。
@se stop
*** 使い方3 [#vb538029]
SEをループ再生します。
@se sample.ogg loop
*** 特殊な使い方 [#e6ed2db6]
ボイストラックでSEを再生します。この機能は音量設定画面でボイス再生を行う際に使います。音声ファイルは se フォルダのものが用いられます。
@se click.ogg voice
----
** @vol (@音量) [#a4a9233c]
@vol [track-name] [volume-value] (seconds)
@vol [track=track-name] [volume=volume-value] (duration=seconds)
@音量 [トラック名] [音量=音量] (秒=秒)
@音量 [トラック=トラック] [音量=音量] (秒=秒)
時間を指定してボリュームを調整します。
トラックの種類は下記の通りです。
|トラック名|省略形|日本語|用途|
|bgm|b|音楽|BGMの音量|
|voice|v|声|ボイスの音量|
|se|s|効果音|SEの音量|
音量の値は 0.0 から 1.0 の範囲で指定できます。 0.0 が無音で、 1.0 が最大音量です。
音量は初期値で 1.0 で、セーブデータごとに別な値に変化します。
*** 使い方 [#ic8c2101]
BGMの音量を 1.0 秒かけて 0.5 にします。
@vol bgm 0.5 1.0
@wait 1.0
----
** @wait (@時間待ち) [#p24189e0]
@wait [seconds]
@wait [duration=seconds]
@時間待ち 秒=秒
@時間待ち 秒=秒
時間を指定して待機します。
途中、キーボードやマウスの入力があれば待機を終了します。待機中、メッセージボックスは表示されません。
*** 使い方 [#ue62c8aa]
5秒待ちます。
@wait 5.0
** @ch (@キャラ) [#k2eeb4a7]
記法
@ch [position] [filename.png] (seconds) (effect) (x-offset) (y-offset) (alpha)
@ch [position=position] [file=filename.png] (duration=seconds) (effect=effect) (right=x-offset) (down=y-offset) (alpha=alpha)
@キャラ [位置] [ファイル名] (秒) (エフェクト名) (Xオフセット) (Yオフセット) (アルファ値)
@キャラ [位置=位置] [ファイル=ファイル名] (秒=秒) (エフェクト=エフェクト名) (右=Xオフセット) (下=Yオフセット) (アルファ=アルファ値)
キャラクタを表示、変更、消去します。
キャラクタを表示、変更、消去します。[[目パチの使用方法>目パチの使用方法]](口パクも同様)。
キャラクタの位置は、上位レイヤから順に、次のものがあります。
|表示位置|コマンドでの指定方法|短縮形|
|顔アイコン|face|f|
|中央前面|center|c|
|左|left|l|
|左中|left-center|lc|
|中央|center|c|
|右中|right-center|rc|
|右|right|r|
|左|left|l|
|中央背面|back|b|
|背面|back|b|
|顔|face|f|
エフェクトの種類は @bg と同じです。
エフェクトの種類は [[@bg>#kca5c778]] と同じです。
*** 使い方1 [#e01caa4f]
sample.png を0.5秒かけて中央前面にセットします。
@ch center sample.png 0.5
*** 使い方2 [#vd990553]
center は c と省略して構いません。
@ch c sample.png 0.5
*** 使い方3 [#efcfc55c]
none を指定するとキャラクタを退場させます。
@ch c none 0.5
*** 使い方4 [#e02fe0c6]
時間を指定しないと即座に表示されます。
@ch c sample.png
*** 使い方5 [#a9f5dcd8]
normal あるいは n を指定すると通常のアルファブレンドを使います。指定を省略したときにも通常のアルファブレンドが利用されます。
@ch c sample.png 1.0 normal
*** 使い方7 [#f964965b]
キャラクタ表示位置をずらすことができます。下記の例では右に100ピクセル、下に50ピクセルずらします。
@ch c sample.png 1.0 n 100 50
*** 使い方8 [#t4160ba8]
アニメの起点を指定するために、アルファ値を指定してキャラクタ画像を読み込みます。
アルファ値には 0 から 255 を指定できます。 また、アルファ値には 255 の別名で show を指定できるほか、 0 の別名で hideを指定できます。
@ch c sample.png 1.0 n 0 0 show
*** 使い方9 [#wdc4f51e]
メッセージボックスの上にキャラの顔を表示します。消す場合はファイル名にnoneを指定します。
@ch face face-001.png
----
** @cha (@キャラ移動) [#oc32420a]
@cha [position] [seconds] [acceleration] [x-offset] [y-offset] [alpha]
@cha [position=position] [duration=seconds] [acceleration=acceleration] [x=x-offset] [y=y-offset] [alpha=alpha]
@キャラ移動 [位置] [秒] [加速タイプ] [Xオフセット] [Yオフセット] [アルファ値]
@キャラ移動 [位置=位置] [秒=秒] [加速=加速タイプ] [x=Xオフセット] [Y=Yオフセット] [アルファ=アルファ値]
キャラクタの移動(アニメーション)を行います。キャラクタの位置の指定とアルファ値の指定は @ch コマンドを参照してください。
*** 使い方1 [#dd87dd6b]
中央に表示したキャラクタを1.0秒かけて左側に600ピクセル移動して非表示にします。
@cha center 1.0 move -600 0 hide
*** 使い方2 [#s2062bc8]
使い方1との差分は、移動を加速(アクセル)しながら行うことです。
@cha center 1.0 accel -600 0 hide
*** 使い方3 [#v1f531e1]
使い方1との差分は、移動を減速(ブレーキ)しながら行うことです。
@cha center 1.0 brake -600 0 hide
*** 使い方4 [#mb34a3f2]
初めに画面の外にキャラクタを読み込んでおいて、画面の中に移動させます。
@ch right sample.png 0 n 600 0 hide
@cha right 2.0 move -600 0 show
----
** @chapter (@章) [#v65c528c]
@chapter "title-name"
@chapter title="title-name"
@章 "タイトル"
@章 タイトル="タイトル"
章のタイトルを設定します。
*** 使い方 [#m3bf3313]
@chapter 第一章
----
** @choose (@選択肢) [#j833cb8d]
@choose [行き先1] [選択肢1] (行き先2) (選択肢2) (行き先3) (選択肢3) (行き先4) (選択肢4) (行き先5) (選択肢5) (行き先6) (選択肢6) (行き先7) (選択肢7) (行き先8) (選択肢8)
@choose [destination1=行き先1] [option1=選択肢1] (destination2=行き先2) (option2=選択肢2) (destination3=行き先3) (option3=選択肢3) (destination4=行き先4) (option4=選択肢4) (destination5=行き先5) (option5=選択肢5) (destination6=行き先6) (option6=選択肢6) (destination7=行き先7) (option7=選択肢7) (destination8=行き先8) (option8=選択肢8)
@選択肢 [行き先1] [選択肢1] (行き先2) (選択肢2) (行き先3) (選択肢3) (行き先4) (選択肢4) (行き先5) (選択肢5) (行き先6) (選択肢6) (行き先7) (選択肢7) (行き先8) (選択肢8)
@選択肢 [行き先1=行き先1] [選択肢1=選択肢1] (行き先2=行き先2) (選択肢2=選択肢2) (行き先3=行き先3) (選択肢3=選択肢3) (行き先4=行き先4) (選択肢4=選択肢4) (行き先5=行き先5) (選択肢5=選択肢5) (行き先6=行き先6) (選択肢6=選択肢6) (行き先7=行き先7) (選択肢7=選択肢7) (行き先8=行き先8) (選択肢8=選択肢8)
選択肢を表示してラベルにジャンプします。選択肢の数は最大で8つです。
*** 使い方1 [#l58b6b57]
3つの選択肢を表示します。
@choose label1 おはよう label2 こんにちは label3 こんばんは
:label1
おはよう。
@goto end
:label2
こんにちは。
@goto end
:label3
こんばんは。
:end
*** 使い方2 [#ufaf854f]
ラベルを書くのが面倒な場合、拡張switch文を利用できます。
<<<
switch "おはよう" "こんにちは" "こんばんは" {
case "おはよう":
@ch center good-morning.png
おはよう。
break
case "こんにちは":
@ch center good-afternoon.png
こんにちは。
break
case "こんばんは":
@ch center good-evening.png
こんばんは。
break
}
>>>
----
** @ichoose (@インライン選択肢) [#cf919972]
@ichoose [行き先1] [選択肢1] (行き先2) (選択肢2) (行き先3) (選択肢3) (行き先4) (選択肢4) (行き先5) (選択肢5) (行き先6) (選択肢6) (行き先7) (選択肢7) (行き先8) (選択肢8)
@ichoose [destination1=行き先1] [option1=選択肢1] (destination2=行き先2) (option2=選択肢2) (destination3=行き先3) (option3=選択肢3) (destination4=行き先4) (option4=選択肢4) (destination5=行き先5) (option5=選択肢5) (destination6=行き先6) (option6=選択肢6) (destination7=行き先7) (option7=選択肢7) (destination8=行き先8) (option8=選択肢8)
@インライン選択肢 [行き先1] [選択肢1] (行き先2) (選択肢2) (行き先3) (選択肢3) (行き先4) (選択肢4) (行き先5) (選択肢5) (行き先6) (選択肢6) (行き先7) (選択肢7) (行き先8) (選択肢8)
@インライン選択肢 [行き先1=行き先1] [選択肢1=選択肢1] (行き先2=行き先2) (選択肢2=選択肢2) (行き先3=行き先3) (選択肢3=選択肢3) (行き先4=行き先4) (選択肢4=選択肢4) (行き先5=行き先5) (選択肢5=選択肢5) (行き先6=行き先6) (選択肢6=選択肢6) (行き先7=行き先7) (選択肢7=選択肢7) (行き先8=行き先8) (選択肢8=選択肢8)
メッセージボックス内に選択肢を表示してラベルにジャンプします。
選択肢をメッセージボックス内に表示する以外は、 @choose と同じです。
この機能を使用するときには、コンフィグの switch.bg.file と switch.fg.file に透明な画像を指定してください。
----
** @chs (@場面転換) [#m763af75]
@chs [中央ファイル] [右ファイル] [左ファイル] [背面ファイル] (秒) (背景ファイル) (エフェクト)
@chs [center=中央ファイル] [right=右ファイル] [left=左ファイル] [back=背面ファイル] (duration=秒) (background=背景ファイル) (effect=エフェクト)
@場面転換 [中央ファイル] [右ファイル] [左ファイル] [背面ファイル] (秒) (背景ファイル) (エフェクト)
@場面転換 [中央=中央ファイル] [右=右ファイル] [左=左ファイル] [背面=背面ファイル] (秒=秒) (背景=背景ファイル) (エフェクト=エフェクト)
*** @all (旧称 @chsx, @場面転換X) [#y4c04486]
@all 引数は自由
このコマンドは非推奨です。Suika2/12.37以降では @chsx をご利用ください。
キャラクタの一括変更を行います。背景のみの変更や、キャラクタと同時に背景も変更できます。
キャラクタの一括変更を行います。また、キャラクタと同時に背景も変更できます。キャラクタの指定順は、中央、右、左、後ろです。エフェクトの種類は @bg と同じです。
このコマンドに限って、center= のような引数の名前が必須です。その代わり、引数の指定順に制限がありません。
*** 使い方1 [#v2673138]
中央と右にキャラクタを1.0秒かけて表示します。他のキャラクタは変更しません。(stay の指定)
@chs center.png right.png stay stay 1.0
&br;
*** 使い方2 [#je287f9d]
中央のキャラクタを1.0秒かけて退場させます(none の指定)。他のキャラクタは変更しません(stay の指定)。
@chs none stay stay stay 1.0
引数の一覧は以下です。
|LEFT:300|LEFT:150|LEFT:150|LEFT:150|c
|指定|引数・英語|引数・日本語|短縮形|
|中央キャラ画像|center=|中央=|c=|
|中央キャラのXオフセット|center-x=|中央X=|cx=|
|中央キャラのYオフセット|center-y=|中央Y=|cy=|
|中央キャラのアルファ|center-a|中央A|ca=|
|中央キャラを暗くする|center-dim||cd=|
|右キャラ画像|right=|右=|r=|
|右キャラのXオフセット|right-x=|右X=|rx=|
|右キャラのYオフセット|right-y=|右Y=|ry=|
|右キャラのアルファ|right-a=|右A=|ra=|
|右キャラを暗くする|right-dim=||rd=|
|右中キャラ画像|right-center=|右中=|rc=|
|右中キャラのXオフセット|right-center-x=|右中X=|rcx=|
|右中キャラのYオフセット|right-center-y=|右中Y=|rcy=|
|右中キャラのアルファ|right-center-a=|右中A=|rca=|
|左キャラ画像|left=|左=|l=|
|左キャラのXオフセット|left-x=|左X=|lx=|
|左キャラのYオフセット|left-y=|左Y=|ly=|
|左キャラのアルファ|left-a=|左A=|la=|
|左キャラを暗くする|left-dim=||ld=|
|左中キャラ画像|left-center=|左中=|lc=|
|左中キャラのXオフセット|left-center-x=|左中X=|lcx=|
|左中キャラのYオフセット|left-center-y=|左中Y=|lcy=|
|左中のアルファ|left-center-a=|左中A=|lca=|
|左中キャラを暗くするか|left-center-dim=||lcd=|
|中央背面キャラ画像|back=|背面=|b=|
|中央背面キャラのXオフセット|back-x=|背面X=|bx=|
|中央背面キャラのYオフセット|back-y=|背面Y=|by=|
|中央背面キャラのアルファ|back-a=|背面A=|ba=|
|背景画像|background=|背景=|bg=|
|背景のXオフセット|bg-x=|背景X=|bgx=|
|背景のYオフセット|bg-y=|背景Y=|bgy=|
|背景のYオフセット|bg-y=|背景Y=|bgy=|
|エフェクト|effect=|エフェクト=|e=|
|演出時間|duration=|秒=|t=|
*** 使い方3 [#b6b746ea]
キャラクタを表示させたまま(stay の指定)、背景を1.0秒かけて変更します。
@chs stay stay stay stay 1.0 background.png
&br;
*** 使い方4 [#oebed6ca]
中央のキャラクタを1.0秒かけて変更します。背景も変更します。エフェクトはカーテンです。
@chs center.png stay stay stay 1.0 background.png curtain
変更のないキャラは指定しなくて構いません。退場させるキャラにはc=noneのように指定します。
----
エフェクトの種類は [[@bg>#kca5c778]] と同じです。
*** @chsx (@場面転換X) [#y4c04486]
@chsx (center=center-image) (center-x=center-x-offset) (center-y=center-y-offset) (right=right-image) (right-x=right-x-offset) (right-y=right-y-offset) (left=left-image) (left-x=left-x-offset) (left-y=left-y-offset) (back=back-image) (back-x=back-x-offset) (back-y=back-y-offset) (background=background-image) (bg-x=background-x-offset) (bg-y=background-y-offset) (effect=effect) (duration=seconds)
@場面転換X (中央=中央ファイル) (中央X=中央キャラのXオフセット) (中央Y=中央キャラのYオフセット) (右=右ファイル) (右X=右キャラのXオフセット) (右Y=右キャラのYオフセット) (左=左ファイル) (左X=左キャラのXオフセット) (左Y=左キャラのYオフセット) (背面=背面ファイル) (背面X=背面キャラのXオフセット) (背面Y=背面キャラのYオフセット) (背景=背景ファイル) (背景X=背景のXオフセット) (背景Y=背景のYオフセット) (エフェクト=エフェクト) (秒=秒)
オフセット値はキャラ画像の変更と共に初期位置に戻されます。オフセット値の変更を継続しつつ画像を変更する場合、オフセット指定にkeepと指定します。
キャラクタの一括変更を行います。背景のみの変更や、キャラクタと同時に背景も変更できます。
このコマンドに限って、center= のような引数の名前が必須です。その代わり、引数の指定順に制限がありません。
変更のないキャラには stay を指定します。指定されなかったキャラは退場します。
エフェクトの種類は @bg と同じです。
*** 使い方1 [#d6cd74cc]
中央と右にキャラクタを1.0秒かけて表示します。他のキャラクタは変更しません(stay の指定)。
@chsx center=center.png right=right.png left=stay back=stay duration=1.0
中央と右にキャラクタを1.0秒かけて表示します。他のキャラクタは変更しません。
@all center=center.png right=right.png duration=1.0
*** 使い方2 [#ef4d0559]
中央のキャラクタを1.0秒かけて退場させます(none の指定)。他のキャラクタは変更しません(stay の指定)。
@chsx center=none left=stay right=stay back=stay duration=1.0
中央のキャラクタを1.0秒かけて退場させます(none の指定)。他のキャラクタは変更しません。
@all center=none duration=1.0
*** 使い方3 [#x537a73e]
キャラクタを表示させたまま(stay の指定)、背景を1.0秒かけて変更します。
@chsx background=background.png duration=1.0 center=stay left=stay right=stay back=stay
@all background=background.png duration=1.0 center=stay left=stay right=stay back=stay
*** 使い方4 [#mf2cc487]
中央のキャラクタを1.0秒かけて変更します。背景も変更します。エフェクトはカーテンです。
@chsx center=center.png background=background.png left=stay right=stay back=stay effect=curtain duration=1.0
@all center=center.png background=background.png effect=curtain duration=1.0
*** 使い方5 [#ed498fca]
中央のキャラクタを1.0秒かけて変更します。背景も変更します。キャラクタのX位置とY位置は前に指定していたものを継続しています。引数は省略形を用いています。
@all bg=bg.png c=center.png cx=keep cy=keep t=1.0
----
** @click (@クリック) [#fff6552c]
@click
@クリック
クリックされるのを待ちます。待っている間、メッセージボックスは非表示となります。
*** 使い方 [#vea11749]
クリックを待ちます。
@click
----
** @gosub [#tdc94466]
@gosub [行き先ラベル]
サブルーチンにジャンプします。 @return で戻ります。
サブルーチンはファイルにまとめておいて、usingで取り込むことができます。
*** 使い方 [#m8a6d626]
サブルーチン SUB を実行します。
@gosub SUB
....
:SUB
ここに何らかの処理やメッセージを記述します。
@return
----
** @goto (@ジャンプ) [#ufbc28a7]
@goto [label]
@goto [destination=label]
@ジャンプ [行き先ラベル]
@ジャンプ [行き先=行き先ラベル]
ラベルにジャンプします。ループを作成するときや、ループから抜け出す際にも使用します。
拡張if文や拡張switch文が導入されたため、ラベルを作らなくても分岐が可能です。
*** 使い方1 [#r6ba4af9]
ラベル abc にジャンプします。
:abc
ここに何らかの処理やメッセージを記述します。ループします。
@goto abc
----
** @gui (@メニュー) [#x5321807]
@gui [filename.txt] (options)
@gui [file=filename.txt] (options)
@メニュー [ファイル=ファイル名.txt] (オプション群)
@メニュー [ファイル=ファイル名.txt] (オプション群)
GUIを表示します。GUIでは最大128個のボタンを作成できます。
ボタンの種類には、押されるとラベルにジャンプするものや、フラグがセットされているときだけ表示されるものなどがあります。
なお、GUI定義ファイルはコンフィグ画面やセーブ・ロード・履歴画面の定義にも利用されます。
GUI定義ファイルの作り方は、 https://suika2.com/doc/title.html をご覧ください。
GUI定義ファイルの作り方は、 [[タイトル画面の作り方]] をご覧ください。
*** 使い方1 [#ldfe7c99]
GUI定義ファイル menu.txt を読み込んでGUIを実行します。
@gui menu.txt
*** 使い方2 [#uf6674c8]
右クリックによるキャンセルを許可します。
@gui menu.txt cancel
*** 使い方3 [#x2bb6008]
ロード画面を表示します。
@gui load.txt cancel
*** 使い方4 [#reb12080]
セーブ画面を表示します。
@gui save.txt cancel
*** 使い方5 [#hbd7967d]
コンフィグ画面を表示します。
@gui system.txt cancel
----
** @if (@フラグでジャンプ) [#g3151a59]
@if [variable] [condition] [value] [label]
@フラグでジャンプ [変数] [条件] [数値] [行き先]
条件式とマッチするときだけラベルにジャンプします。
Suika2/13系列において拡張if文が導入されたため、ラベルなしで分岐が行えます。
利用できる条件の種類は下記の通りですが、 普通のノベルゲームを作る分には == (等しい場合) だけの利用で問題ありません。
|条件の種類|意味|
|>|a > b (aがbより大きい)|
|>=|a ≧ b (aがbより大きいか等しい)|
|==|a = b (aとbが等しい)|
|<=|a ≦ b (aがbより小さいか等しい)|
|<|a < b (aがbより小さい)|
|!=|a ≒ b (aとbが等しくない)|
条件文の左側はローカル変数名($0 など)か、グローバル変数名($10000 など)か、名前変数名(%a など)である必要があります。
条件文の左側がローカル変数名かグローバル変数名のとき、条件文の右側は整数(1 など)か、ローカル変数名($0 など)か、グローバル変数名($10000 など)を指定できます。
条件文の左側が名前変数のとき、条件文の右側には文字列のみ指定できます。文字列中の変数名は展開されません。
*** 使い方1 [#ice44787]
ローカル変数の値でシナリオを分岐します。ローカル変数 $1 の値が 1 であれば、ラベル abc にジャンプします。つまり、フラグが立っていればシナリオを分岐します。
@if $1 == 1 abc
変数の値が1以外です。つまり、フラグが立っていないということです。
ここにシナリオを記述します。
@goto end
:abc
変数の値が1です。つまり、フラグが立っているということです。
ここにシナリオを記述します。
:end
*** 使い方2 [#ma859158]
ラベルやジャンプがわかりにくいときは、拡張 if 文を使うことができます。
<<<
if $1 == 0 {
おはよう。
}-
else if $1 == 1 {
こんにちは。
}-
else {
こんばんは。
}
>>>
*** 使い方3 [#j1911718]
名前変数の値でシナリオを分岐します。名前変数 %a の値が みどり であれば、ラベル MIDORI にジャンプします。デフォルトの名前のときだけイベントを発生させるときに使えます。
@if %a == みどり MIDORI
名前がみどり以外です。
ここにシナリオを記述します。
@goto end
:MIDORI
名前がみどりです。
ここにシナリオを記述します。
:end
----
** ラベル [#jfebae13]
:ラベル名
ジャンプ先となるラベルを作成します。ラベルはゲームの見た目には影響しません。ラベルの名前には日本語を使うことも可能です。
Suika2/13系列以降では、拡張if文や拡張switch文を使うことで、ラベルを使わずにゲームを記述できます。
*** 使い方 [#af55dcf3]
ループします。
:ジャンプ先
何かメッセージを表示する
@goto ジャンプ先
----
** @load (@シナリオ) [#h7be1f8e]
@load [file-name.txt] [label-name]
@load [file=ファイル名.txt] [label=label-name]
@シナリオ [ファイル名.txt] [ラベル名]
@シナリオ [ファイル=ファイル名.txt] [ラベル=ラベル名]
スクリプトファイルにジャンプします。スクリプトファイルはフォルダtxtの中に存在する必要があります。
*** 使い方1 [#b2a2e642]
スクリプトファイル 001.txt にジャンプします。
@load 001.txt
*** 使い方2 [#ied7cc20]
スクリプトファイル 001.txt のラベルAAAにジャンプします。
@load 001.txt AAA
----
** メッセージ [#ja1c52ac]
メッセージボックスにテキストを出力します。
- 行の先頭に \ を記述することで、前の行を継続することが可能です(全画面ノベルで使用)
- $0のように$数字でローカル変数やグローバル変数の値の数値を出力できます
- %aのように%アルファベット小文字で名前変数の値の文字列を出力できます
- 利用できる装飾は下記の通りです。
|記述|装飾の内容|
|\n|改行する|
|\#{RRGGBB}|フォントの色を変更する|
|\#{DEF}|フォントの色をデフォルトに戻す|
|\@{サイズ}|フォントのサイズを変更する|
|\^{ルビ}|ルビを振る|
|\f{g]|グローバルフォントを使用する(ユーザがコンフィグ画面で選択)|
|\f{m]|メインフォントを仕様する(conf/config.txtで指定)|
|\f{a]|代替1フォントを仕様する(conf/config.txtで指定)|
|\f{b]|代替2フォントを仕様する(conf/config.txtで指定)|
|\f{m]|メインフォントを使用する(conf/config.txtで指定)|
|\f{a]|代替1フォントを使用する(conf/config.txtで指定)|
|\f{b]|代替2フォントを使用する(conf/config.txtで指定)|
|\o{+}|フォントのふちどり(アウトライン)をONにする|
|\o{-}|フォントのふちどり(アウトライン)をOFFにする|
|\p{x座標,y座標}|描画位置を変更する|
|\w{秒数}|ウェイトを挿入する|
*** 使い方 [#i355c749]
こんにちは。
----
** @news [#i3a21173]
@news [...長い...]
注意: このコマンドは隠しコマンドです。使い方はDiscordでご質問ください。
@switch の亜種です。2階層の選択肢で、1階層目の選択肢の最初の4つが、北(N)、東(E)、西(W)、南(S)に表示されます。ダンジョン探索のような場面のために存在します。1階層目の選択肢に限り、表示メッセージに * を指定することで、選択肢を非表示にすることができます。
----
** @return [#g3c671e9]
@return
サブルーチンから戻ります。
*** 使い方 [#h61d32b8]
サブルーチン SUB を実行します。
@gosub SUB
:SUB
ここに何らかの処理やメッセージを記述します。
@return
----
** @se (@効果音) [#te846f73]
@se [filename.ogg] (loop)
@se [file=filename.ogg] (loop)
@効果音 [ファイル名.ogg] (loop)
@効果音 [ファイル=ファイル] (loop)
SE(効果音)を再生します。
SEファイルはフォルダ se に格納されている必要があります。
再生可能なファイル形式は、44.1kHzのOgg Vorbisのみです。
*** 使い方1 [#g0e72f5f]
SEを再生します。
@se click.ogg
*** 使い方2 [#pe7272e5]
SEを停止します。
@se stop
*** 使い方3 [#vb538029]
SEをループ再生します。
@se sample.ogg loop
*** 特殊な使い方 [#e6ed2db6]
ボイストラックでSEを再生します。この機能は音量設定画面でボイス再生を行う際に使います。音声ファイルは se フォルダのものが用いられます。
@se click.ogg voice
----
** セリフ [#yd0ca4df]
キャラ名「セリフ」
*キャラ名*セリフ
*キャラ名*音声ファイル*セリフ
メッセージボックスにセリフのテキストを出力します。また、名前ボックスにキャラクタの名前を出力します。
ボイスを再生することができます。ボイスファイルは、フォルダ cv の中に存在する必要があります。ボイスファイルの形式は、44.1kHzのOgg Vorbisである必要があります。
メッセージと同様の装飾が使えます。
*** 使い方1 [#ac4039fc]
セリフを出力します。
みどり「こんにちは、Suika2です。」
*** 使い方2 [#n4fa7cc8]
ボイスを再生して、セリフを出力します。
*みどり*001.ogg*こんにちは、Suika2です。
*** 使い方3 [#fcd80a68]
指定したビープ音をリピート再生して、セリフを出力します。
指定したビープ音をリピート再生して、セリフを出力します。なお、コンフィグに「beep.adjustment=○○」を追加することにより、ビープ音の長さを調整することが出来ます。
*名前*@beep.ogg*こんにちは。
----
** @set (@フラグをセット) [#p4badd92]
@set [variable] [operator] [value]
@フラグをセット [変数] [演算子] [値]
ローカル変数、グローバル変数、名前変数に値をセットします。
|LEFT:100|LEFT:400|c
|変数の種類|説明|
|ローカル変数|セーブデータごとに値が異なり、 $0 から $9999 までの10000個を利用できます。初期値は0です。 |
|グローバル変数|全てのセーブデータで共通の値となり、 $10000 から $10999 までの1000個を利用できます。初期値は0です。|
|名前変数|セーブデータごとに値が異なり、%aから%zまでの26個を利用できます。初期値は空の文字列です。|
@set で利用できる計算には下記のものがあります。名前変数には代入以外使えません。
|計算の種類|意味|
|=|単純に a に b を入れます(代入)|
|+=|a に b を足し算します(加算)|
|-=|a から b を引き算します(減算)|
|*=|a に b をかけ算します(乗算)|
|/=|a を b で割り算します(除算)|
|%=|a を b で割った余りを求めます(剰余)|
*** 使い方1 [#ab238d76]
ローカル変数 $0 に値 1 を代入します。フラグのセットに利用します。ローカル変数の初期値は 0 なので、フラグが立ったことになります。
@set $0 = 1
*** 使い方 2 [#xa774e1d]
ローカル変数 $10 に値 23 を加算します。 好感度の加算などに応用できます。
@set $10 += 23
*** 使い方3 [#l1144a0f]
ローカル変数 $0 に 0 から 9 までのランダムな値を代入します。最初にランダムな数を $RAND で求めてから、 10 で割った余りを計算しています。ランダムなイベント発生に応用できます。
@set $0 = $RAND
@set $0 %= 10
*** 使い方4 [#c495c1fb]
ローカル変数 $1 にローカル変数 $2 を加算します。好感度の計算などに利用できます。
@set $1 += $2
*** 使い方5 [#k08e4185]
名前変数 %a に文字列 みどり を代入します。デフォルトの名前を設定するのに利用できます。
@set %a = みどり
----
** @setconfig [#v5c67773]
@setconfig [コンフィグ名] (値)
コンフィグをゲーム実行中に書き換えられる便利コマンドです。 ですが、コンフィグ変更はできるだけWMSにまとめて実行するのをおすすめします。
コンフィグをゲーム実行中に書き換えられる便利コマンドです。
*** 使い方 [#tba5ec97]
メッセージボックスを変更します。画面いっぱいを使うノベルと、アドベンチャー形式を切り替えるのに使います。
メッセージボックスを変更します。例えば、テキストを画面いっぱいに表示するノベルスタイルと、画面の下の方に表示するアドベンチャー形式を切り替えるのに使います。
@setconfig msgbox.bg.file msgbox-bg.png
@setconfig msgbox.fg.file msgbox-fg.png
...
@setconfig update-msgbox-and-namebox
----
** @setsave [#dae21e96]
@setsave [disable/enable]
セーブ・ロードを禁止・解禁します。
*** 使い方1 [#ua97409c]
セーブ・ロード画面を有効化(解禁)します。 [デフォルト設定]
@setsave enable
*** 使い方2 [#hf6dcac7]
セーブ・ロード画面を無効化(禁止)します。
@setsave disable
----
** @shake (@振動) [#cf5122d8]
@shake [direction] [seconds] [times] [amplitude]
@shake [direction=direction] [duration=seconds] [times=times] [amplitude=amplitude]
@振動 [方向] [秒] [回数] [大きさ]
@振動 [方向=方向] [秒=秒] [回数=回数] [大きさ=大きさ]
画面を揺らします。
*** 使い方1 [#h9ccdaa2]
1.0秒かけて、3回、横方向に100px、画面を揺らします。なお、 horizontal は h と省略できます。
@shake horizontal 1.0 3 100
*** 使い方2 [#l12c44cc]
1.0秒かけて、3回、縦方向に100px、画面を揺らします。なお、 vertical は v と省略できます。
@shake vertical 1.0 3 100
----
** @skip (@スキップ) [#zc4a8ced]
@skip [enable/disable]
@スキップ [許可/不許可]
待ち時間のあるコマンドのスキップを禁止・解禁します。
主に、ゲーム起動時にブランドロゴを表示するのに使用できます。
*** 使い方1 [#p1c0188e]
スキップを有効にします。 [デフォルト設定]
@skip enable
*** 使い方2 [#d47534bc]
スキップを無効にします。
@skip disable
----
** @switch [#s5e47fa0]
@switch [...長い...]
注意: このコマンドは隠しコマンドです。使い方はDiscordでご質問ください。
2階層の選択肢を表示します。1階層目を親選択肢と呼び、2階層目を子選択肢と呼びます。親選択肢が最大8個、子選択肢が最大8個で、合計で最大64分岐を記述できます。
「動詞+目的語」で探索する80年代から90年代のアドベンチャーゲームを移植するのに使います。
*** 使い方 [#f8d6b170]
2階層で4つの選択肢を表示します。
@switch 親選択肢1 親選択肢2 * * * * * * LABEL1 子選択肢1 LABEL2 子選択肢2 * * * * * * * * * * * * LABEL3 子選択肢3 LABEL4 子選択肢4 * * * * * * * * * * * *
:LABEL1
:LABEL2
:LABEL3
:LABEL4
----
** @video (@動画) [#p65cc7a3]
@video [ファイル名]
@video [file=ファイル名]
@動画 [ファイル名]
@動画 [ファイル=ファイル名]
動画を再生します。
Windowsで再生できる動画は .wmv ファイルです。その他の環境で再生できる動画は .mp4 ファイルです。ファイル名の指定で拡張子(.wmv や .mp4)を省略すれば、その環境用にファイルが自動選択されます。
動画ファイルは mov ディレクトリに格納します。mov ディレクトリは data01.arc ファイルにパッケージングされません。
Webブラウザでは、プレイヤが最初にクリックを行う前に動画を再生しようとすると、ブラウザでの違反となりゲームが止まります。 Web版でゲームの先頭で動画を再生するときは、事前に @click コマンドを入れるなどの対策を行ってください。
*** 使い方 [#o330fe68]
動画を再生します。 Windowsでは sample.wmv が再生されます。 その他の環境では sample.mp4 が再生されます。
@video sample
----
** @vol (@音量) [#a4a9233c]
@vol [track-name] [volume-value] (seconds)
@vol [track=track-name] [volume=volume-value] (duration=seconds)
@音量 [トラック名] [音量=音量] (秒=秒)
@音量 [トラック=トラック] [音量=音量] (秒=秒)
時間を指定してボリュームを調整します。
トラックの種類は下記の通りです。
|トラック名|省略形|日本語|用途|
|bgm|b|音楽|BGMの音量|
|voice|v|声|ボイスの音量|
|se|s|効果音|SEの音量|
音量の値は 0.0 から 1.0 の範囲で指定できます。 0.0 が無音で、 1.0 が最大音量です。
音量は初期値で 1.0 で、セーブデータごとに別な値に変化します。
*** 使い方 [#ic8c2101]
BGMの音量を 1.0 秒かけて 0.5 にします。
@vol bgm 0.5 1.0
@wait 1.0
----
** @wait (@時間待ち) [#p24189e0]
@wait [seconds]
@wait [duration=seconds]
@時間待ち 秒=秒
@時間待ち 秒=秒
時間を指定して待機します。
途中、キーボードやマウスの入力があれば待機を終了します。待機中、メッセージボックスは表示されません。
*** 使い方 [#ue62c8aa]
5秒待ちます。
@wait 5.0
----
** @wms (@スクリプト) [#gc79026a]
@wms [filename]
@wms [file=filename.txt]
@スクリプト [ファイル名.txt]
@スクリプト [ファイル=ファイル名.txt]
WMS (Watermelon Script) を実行します。
WMSはプログラミング言語です。シナリオのスクリプトでは複雑なプログラミングが大変なので、ロジックを記述したい場合はシナリオからWMSを呼び出します。
*** 使い方 [#t76a593b]
wms/hello.txt を実行します。
@wms hello.txt
----
** @pencil [#db5f68f1]
@pencil [0/1/2/3/4/5/6/7] [テキスト]
@pencil [text1/text2/text3/text4/text5/text6/text7/text8] [テキスト]
テキストレイヤにテキストを描画します。あらかじめ利用するテキストレイヤ(text1からtext8のいずれか)に、@animeコマンドで画像を読み込んでおく必要があります。
テキストレイヤにテキストを描画します。あらかじめ利用するテキストレイヤ(text1からtext8のいずれか)に、@layerコマンドで画像を読み込んでおく必要があります。
*** 使い方 [#g3ecb568]
テキストレイヤ1 (text1) にテキストを描画します。
@anime load-text1.txt sync
@pencil 0 このテキストが描画されます。
anime/load-text1.txt:
load {
layer: text1;
start: 0.0;
end: 0.00001;
file: text-layer-image.png;
to-a: 255;
}
@layer name=text1 file=text-layer-image.png x=0 y=0 a=255
@pencil text1 "このテキストが描画されます。"
----
** マクロの取り込み [#r3c95140]
using [マクロファイル]
ファイルにまとめたマクロを取り込みます。
マクロ内で定義したサブルーチンを @gosub で呼び出してください。
マクロ内で定義したサブルーチンを @gosub で呼び出してください。詳細はこちらに記載しています。[[共通処理の呼び出し]]
*** 使い方 [#x0b38697]
txt/macro.txt を取り込みます。 マクロがそのまま実行されないように、@gotoでガードします。各シナリオファイルの末尾の方に書くことが望ましいです。
@goto MACRO_END
using macro.txt
:MACRO_END