コマンドリファレンス - Suika2 Wiki

Wikiトップ   編集   新規作成   複製   名称変更   凍結   アップロード   添付ファイル一覧   バックアップ  

Suika2 コマンドリファレンス

索引

  • コマンドとは
  • 画面表示系のコマンド
  • 音声再生系のコマンド
    • @bgm BGMの再生
    • @se SEの再生
    • @vol ボリュームの変更
  • 選択肢表示系のコマンド
  • ウェイト系のコマンド
    • @click クリックされるまで待機
    • @wait 指定した時間だけ待機
    • @skip ウェイトのスキップを禁止
  • シナリオ分岐系のコマンド
    • ラベル
    • @goto ラベルにジャンプ
    • @set 変数に値を設定
    • @if 変数の値でジャンプ
    • @load スクリプトにジャンプ
    • @chapter 章のタイトルを設定
  • システム系のコマンド

コマンドとは

コマンドとは、Suika2に対する指示のことです。Suika2を使ってゲームを作る上で必要なものです。ほとんどのコマンドは @ マークから始まります。

コマンドの名前を覚えておく必要はなく、このページを見ながら書くか、一度使ったものをコピペして使うなどすればよいです。

コマンドの種類は厳選されており、一見して、できることが限られるように思われるかもしれません。しかし、複雑なロジックはコマンドではなく WMS で実現できますし、ボタンの表示は GUI で実現できるため、@コマンドの種類は少なくて済んでいます。


@anime (@アニメ)

@anime [filename.txt] (options)
@anime [file=filename.txt] (options)
@アニメ [ファイル名] (オプション群)
@アニメ [ファイル=ファイル名.txt] (オプション群)

アニメファイルを再生します。レイヤの移動、エフェクトの表示に使います。 アニメファイルはフォルダ anime に配置する必要があります。

レイヤに画像を読み込むには @layer コマンドを利用してください。

Suika2/15.80現在、回転や拡大縮小が順次サポートされている最中です。

使い方1

anime1.txt を再生します。再生完了まで待ちます。(sync)

@anime anime1.txt sync

使い方2

anime1.txt を再生します。再生完了を待ちません。(async)

@anime anime1.txt async
なにかメッセージを表示します。
@anime finish-all

使い方3

anime1.txt を再生します。折りたたみシステムメニューを表示しません。(nosysmenu)

@anime anime1.txt sync,nosysmenu

使い方4

anime1.txt を再生します。メッセージボックスを表示します。(showmsgbox)

@anime anime1.txt sync,showmsgbox

使い方5

ループアニメ loop-anime1.txt を再生します。reg00というのは、登録アニメの00番という意味です。登録されたアニメだけがセーブ・ロードされます。reg00, reg01, ..., reg07まで利用できます。

@anime loop-anime1.txt async,reg00
なにかメッセージを表示します。
@anime stop-all

アニメファイルの記述例

詳細はアニメファイルをご参照ください。下記は例です。

# アニメーションファイル

# 中央キャラを2回移動する
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;   # 終了するアルファ値
}
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 (@レイヤ)

@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

レイヤに画像をロードします。

@layer name=text1 file=switch-bg.png x-0 y=0 a=255

使い方2

レイヤの画像を削除します。

@layer name=text1 file=none

@bg (@背景)

@bg ファイル名 (秒) (エフェクト)
@bg file=ファイル名 (duration=秒) (effect=エフェクト)
@背景 ファイル名 秒 エフェクト=エフェクト
@背景 ファイル=ファイル名 (秒=秒) (エフェクト=エフェクト)

背景を変更します。背景の変更後、キャラクタはステージ上からいなくなります。

使い方1

sample.png を1.5秒かけて背景にセットします。

@bg sample.png 1.5

使い方2

sample.png を即座に背景にセットします。

@bg sample.png

使い方3

sample.png を1.5秒かけて右方向カーテンフェードで背景にセットします。

@bg sample.png 1.5 c

使い方4

色を指定して1.5秒かけて左方向カーテンフェードで背景にセットします。

@bg #ff8080 1.5 curtain-left

使い方5

目を閉じるような演出を行います。

@bg #000000 1.5 eye-close

使い方6

目を開けるような演出を行います。

@bg sample.png 1.5 eye-open

使い方7

ルール画像を使ってトランジションを行います。 ルール画像はグレースケールで、黒い部分から白い部分にかけて順に描画されます。

@bg sample.png 1.5 rule:rule-star.png

背景/キャラで共通のエフェクト

フェードには次のエフェクトを指定できます。すべてのエフェクトをこちらのページでお試しいただけます。(スクリプト配布元はこちらのサイトです。)

エフェクトの種類エフェクト名エフェクト短縮名1エフェクト短縮名2日本語名
標準のアルファブレンドnormaln標準
ルール指定トランジション(1BIT)rule:ルール画像ファイル
ルール指定トランジション(8BIT)melt:ルール画像ファイル
右方向カーテンcurtain-rightcurtainc右カーテン
左方向カーテンcurtain-leftcl左カーテン
上方向カーテンcurtain-upcu上カーテン
下方向カーテンcurtain-downcd下カーテン
右方向スライドslide-rightsr右スライド
左方向スライドslide-leftsl左スライド
上方向スライドslide-upsu上スライド
下方向スライドslide-downsd下スライド
右方向シャッターshutter-rightshr右シャッター
左方向シャッターshutter-leftshl左シャッター
上方向シャッターshutter-upshu上シャッター
下方向シャッターshutter-downshd下シャッター
時計回りclockwisecw時計回り
反時計回りcounterclockwiseccw反時計回り
時計回り(20°刻み)clockwise20cw20
反時計回り(20°刻み)counterclockwise20ccw20
時計回り(30°刻み)clockwise30cw30
反時計回り(30°刻み)counterclockwise30ccw30
目を開くような効果eye-open
目を閉じるような効果eye-close
目を開くような効果(垂直)eye-open-v
目を閉じるような効果(垂直)eye-close-v
スリットが開くような効果slit-open
スリットが閉じるような効果slit-close
スリットが開くような効果(垂直)slit-open-v
スリットが閉じるような効果(垂直)slit-close-v

@bgm (@音楽)

@bgm [filename.ogg] (once)
@bgm [file=filename.ogg] (once)
@音楽 [ファイル名.ogg] (once)
@音楽 [ファイル=ファイル名.ogg] (once)

BGMを再生します。

BGMファイルはフォルダ bgm に格納されている必要があります。

再生可能なファイル形式は、44.1kHzのOgg Vorbisのみです。もし特定の音楽ファイルが遅く聞こえたり、早く聞こえたりした場合は、そのファイルのサンプリングレートを44.1kHzに変換してください。

使い方1

sample.oggを再生します。

@bgm sample.ogg

使い方2

BGMを停止します。

@bgm stop

使い方3

BGMをループしないで1回だけ再生します。

@bgm sample.ogg once

応用例

BGMを2秒かけてフェードアウトします。

@vol bgm 0 2
@wait 2
@bgm stop

@se (@効果音)

@se [filename.ogg] (loop)
@se [file=filename.ogg] (loop)
@効果音 [ファイル名.ogg] (loop)
@効果音 [ファイル=ファイル] (loop)

SE(効果音)を再生します。

SEファイルはフォルダ se に格納されている必要があります。

再生可能なファイル形式は、44.1kHzのOgg Vorbisのみです。

使い方1

SEを再生します。

@se click.ogg

使い方2

SEを停止します。

@se stop

使い方3

SEをループ再生します。

@se sample.ogg loop

特殊な使い方

ボイストラックでSEを再生します。この機能は音量設定画面でボイス再生を行う際に使います。音声ファイルは se フォルダのものが用いられます。

@se click.ogg voice

@vol (@音量)

@vol [track-name] [volume-value] (seconds)
@vol [track=track-name] [volume=volume-value] (duration=seconds)
@音量 [トラック名] [音量=音量] (秒=秒)
@音量 [トラック=トラック] [音量=音量] (秒=秒)

時間を指定してボリュームを調整します。

トラックの種類は下記の通りです。

トラック名省略形日本語用途
bgmb音楽BGMの音量
voicevボイスの音量
ses効果音SEの音量

音量の値は 0.0 から 1.0 の範囲で指定できます。 0.0 が無音で、 1.0 が最大音量です。

音量は初期値で 1.0 で、セーブデータごとに別な値に変化します。

使い方

BGMの音量を 1.0 秒かけて 0.5 にします。

@vol bgm 0.5 1.0
@wait 1.0

@wait (@時間待ち)

@wait [seconds]
@wait [duration=seconds]
@時間待ち 秒=秒
@時間待ち 秒=秒

時間を指定して待機します。

途中、キーボードやマウスの入力があれば待機を終了します。待機中、メッセージボックスは表示されません。

使い方

5秒待ちます。

@wait 5.0

@ch (@キャラ)

記法

@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オフセット) (アルファ=アルファ値)

キャラクタを表示、変更、消去します。

キャラクタの位置は、上位レイヤから順に、次のものがあります。

表示位置コマンドでの指定方法短縮形
leftl
左中left-centerlc
中央centerc
右中right-centerrc
rightr
背面backb
facef

エフェクトの種類は @bg と同じです。

使い方1

sample.png を0.5秒かけて中央前面にセットします。

@ch center sample.png 0.5

使い方2

center は c と省略して構いません。

@ch c sample.png 0.5

使い方3

none を指定するとキャラクタを退場させます。

@ch c none 0.5

使い方4

時間を指定しないと即座に表示されます。

@ch c sample.png

使い方5

normal あるいは n を指定すると通常のアルファブレンドを使います。指定を省略したときにも通常のアルファブレンドが利用されます。

@ch c sample.png 1.0 normal

使い方7

キャラクタ表示位置をずらすことができます。下記の例では右に100ピクセル、下に50ピクセルずらします。

@ch c sample.png 1.0 n 100 50

使い方8

アニメの起点を指定するために、アルファ値を指定してキャラクタ画像を読み込みます。 アルファ値には 0 から 255 を指定できます。 また、アルファ値には 255 の別名で show を指定できるほか、 0 の別名で hideを指定できます。

@ch c sample.png 1.0 n 0 0 show

使い方9

メッセージボックスの上にキャラの顔を表示します。消す場合はファイル名にnoneを指定します。

@ch face face-001.png

@cha (@キャラ移動)

@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

中央に表示したキャラクタを1.0秒かけて左側に600ピクセル移動して非表示にします。

@cha center 1.0 move -600 0 hide

使い方2

使い方1との差分は、移動を加速(アクセル)しながら行うことです。

@cha center 1.0 accel -600 0 hide

使い方3

使い方1との差分は、移動を減速(ブレーキ)しながら行うことです。

@cha center 1.0 brake -600 0 hide

使い方4

初めに画面の外にキャラクタを読み込んでおいて、画面の中に移動させます。

@ch right sample.png 0 n 600 0 hide
@cha right 2.0 move -600 0 show

@chapter (@章)

@chapter "title-name"
@chapter title="title-name"
@章 "タイトル"
@章 タイトル="タイトル"

章のタイトルを設定します。

使い方

@chapter 第一章


@choose (@選択肢)

@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

3つの選択肢を表示します。

@choose label1 おはよう label2 こんにちは label3 こんばんは
:label1
おはよう。
@goto end
:label2
こんにちは。
@goto end
:label3
こんばんは。
:end

使い方2

ラベルを書くのが面倒な場合、拡張switch文を利用できます。

<<<
switch "おはよう" "こんにちは" "こんばんは" {
case "おはよう":
    @ch center good-morning.png
    おはよう。
    break
case "こんにちは":
    @ch center good-afternoon.png
    こんにちは。
    break
case "こんばんは":
    @ch center good-evening.png
    こんばんは。
    break
}
>>>

@ichoose (@インライン選択肢)

@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 (@場面転換)

@chs [中央ファイル] [右ファイル] [左ファイル] [背面ファイル] (秒) (背景ファイル) (エフェクト)
@chs [center=中央ファイル] [right=右ファイル] [left=左ファイル] [back=背面ファイル] (duration=秒) (background=背景ファイル) (effect=エフェクト)
@場面転換 [中央ファイル] [右ファイル] [左ファイル] [背面ファイル] (秒) (背景ファイル) (エフェクト)
@場面転換 [中央=中央ファイル] [右=右ファイル] [左=左ファイル] [背面=背面ファイル] (秒=秒) (背景=背景ファイル) (エフェクト=エフェクト)

このコマンドは非推奨です。Suika2/12.37以降では @chsx をご利用ください。

キャラクタの一括変更を行います。また、キャラクタと同時に背景も変更できます。キャラクタの指定順は、中央、右、左、後ろです。エフェクトの種類は @bg と同じです。

使い方1

中央と右にキャラクタを1.0秒かけて表示します。他のキャラクタは変更しません。(stay の指定)

@chs center.png right.png stay stay 1.0

使い方2

中央のキャラクタを1.0秒かけて退場させます(none の指定)。他のキャラクタは変更しません(stay の指定)。

@chs none stay stay stay 1.0

使い方3

キャラクタを表示させたまま(stay の指定)、背景を1.0秒かけて変更します。

@chs stay stay stay stay 1.0 background.png

使い方4

中央のキャラクタを1.0秒かけて変更します。背景も変更します。エフェクトはカーテンです。

@chs center.png stay stay stay 1.0 background.png curtain

@chsx (@場面転換X)

@chsx (center=center-image) (center-x=center-x-offset) (center-y=center-y-offset) (center-a=center-alpha) (right=right-image) (right-x=right-x-offset) (right-y=right-y-offset) (right-a=right-alpha) (right-center=right-center-image) (right-center-x=right-center-x-offset) (right-center-y=right-center-y-offset) (right-center-a=right-center-alpha) (left=left-image) (left-x=left-x-offset) (left-y=left-y-offset) (left-a=left-alpha) (left-center=left-center-image) (left-center-x=left-center-x-offset) (left-center-y=left-center-y-offset) (left-center-a=left-center-alpha) (back=back-image) (back-x=back-x-offset) (back-y=back-y-offset) (back-a=back-alpha) (background=background-image) (bg-x=background-x-offset) (bg-y=background-y-offset) (effect=effect) (duration=seconds)
@場面転換X (中央=中央ファイル) (中央X=中央キャラのXオフセット) (中央Y=中央キャラのYオフセット) (中央A=中央キャラのアルファ) (右=右ファイル) (右X=右キャラのXオフセット) (右Y=右キャラのYオフセット) (右A=右キャラのアルファ) (右中=右中ファイル) (右中X=右中キャラのXオフセット) (右中Y=右中キャラのYオフセット) (右中A=右中キャラのアルファ) (左=左ファイル) (左X=左キャラのXオフセット) (左Y=左キャラのYオフセット) (左A=左キャラのアルファ) (背面=背面ファイル) (背面X=背面キャラのXオフセット) (背面Y=背面キャラのYオフセット) (背面A=背面キャラのアルファ) (背景=背景ファイル) (背景X=背景のXオフセット) (背景Y=背景のYオフセット) (エフェクト=エフェクト) (秒=秒)

キャラクタの一括変更を行います。背景のみの変更や、キャラクタと同時に背景も変更できます。

このコマンドに限って、center= のような引数の名前が必須です。その代わり、引数の指定順に制限がありません。

変更のないキャラは指定しなくて構いません。退場させるキャラにはnoneを指定します。

エフェクトの種類は @bg と同じです。

使い方1

中央と右にキャラクタを1.0秒かけて表示します。他のキャラクタは変更しません。

@chsx center=center.png right=right.png duration=1.0

使い方2

中央のキャラクタを1.0秒かけて退場させます(none の指定)。他のキャラクタは変更しません。

@chsx center=none duration=1.0

使い方3

キャラクタを表示させたまま(stay の指定)、背景を1.0秒かけて変更します。

@chsx background=background.png duration=1.0 center=stay left=stay right=stay back=stay

使い方4

中央のキャラクタを1.0秒かけて変更します。背景も変更します。エフェクトはカーテンです。

@chsx center=center.png background=background.png effect=curtain duration=1.0

@click (@クリック)

@click
@クリック

クリックされるのを待ちます。待っている間、メッセージボックスは非表示となります。

使い方

クリックを待ちます。

@click

@gosub

@gosub [行き先ラベル]

サブルーチンにジャンプします。 @return で戻ります。

サブルーチンはファイルにまとめておいて、usingで取り込むことができます。

使い方

サブルーチン SUB を実行します。

@gosub SUB
....
:SUB
ここに何らかの処理やメッセージを記述します。
@return

@goto (@ジャンプ)

@goto [label]
@goto [destination=label]
@ジャンプ [行き先ラベル]
@ジャンプ [行き先=行き先ラベル]

ラベルにジャンプします。ループを作成するときや、ループから抜け出す際にも使用します。

拡張if文や拡張switch文が導入されたため、ラベルを作らなくても分岐が可能です。

使い方1

ラベル abc にジャンプします。

:abc
ここに何らかの処理やメッセージを記述します。ループします。
@goto abc

@gui (@メニュー)

@gui [filename.txt] (options)
@gui [file=filename.txt] (options)
@メニュー [ファイル=ファイル名.txt] (オプション群)
@メニュー [ファイル=ファイル名.txt] (オプション群)

GUIを表示します。GUIでは最大128個のボタンを作成できます。

ボタンの種類には、押されるとラベルにジャンプするものや、フラグがセットされているときだけ表示されるものなどがあります。

なお、GUI定義ファイルはコンフィグ画面やセーブ・ロード・履歴画面の定義にも利用されます。

GUI定義ファイルの作り方は、 タイトル画面の作り方 をご覧ください。

使い方1

GUI定義ファイル menu.txt を読み込んでGUIを実行します。

@gui menu.txt

使い方2

右クリックによるキャンセルを許可します。

@gui menu.txt cancel

使い方3

ロード画面を表示します。

@gui load.txt cancel

使い方4

セーブ画面を表示します。

@gui save.txt cancel

使い方5

コンフィグ画面を表示します。

@gui system.txt cancel

@if (@フラグでジャンプ)

@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

ローカル変数の値でシナリオを分岐します。ローカル変数 $1 の値が 1 であれば、ラベル abc にジャンプします。つまり、フラグが立っていればシナリオを分岐します。

@if $1 == 1 abc
変数の値が1以外です。つまり、フラグが立っていないということです。
ここにシナリオを記述します。
@goto end
:abc
変数の値が1です。つまり、フラグが立っているということです。
ここにシナリオを記述します。
:end

使い方2

ラベルやジャンプがわかりにくいときは、拡張 if 文を使うことができます。

<<<
if $1 == 0 {
    おはよう。
}-
else if $1 == 1 {
    こんにちは。
}-
else {
    こんばんは。
}
>>>

使い方3

名前変数の値でシナリオを分岐します。名前変数 %a の値が みどり であれば、ラベル MIDORI にジャンプします。デフォルトの名前のときだけイベントを発生させるときに使えます。

@if %a == みどり MIDORI
名前がみどり以外です。
ここにシナリオを記述します。
@goto end
:MIDORI
名前がみどりです。
ここにシナリオを記述します。
:end

ラベル

:ラベル名

ジャンプ先となるラベルを作成します。ラベルはゲームの見た目には影響しません。ラベルの名前には日本語を使うことも可能です。

Suika2/13系列以降では、拡張if文や拡張switch文を使うことで、ラベルを使わずにゲームを記述できます。

使い方

ループします。

:ジャンプ先
何かメッセージを表示する
@goto ジャンプ先

@load (@シナリオ)

@load [file-name.txt] [label-name]
@load [file=ファイル名.txt] [label=label-name]
@シナリオ [ファイル名.txt] [ラベル名]
@シナリオ [ファイル=ファイル名.txt] [ラベル=ラベル名]

スクリプトファイルにジャンプします。スクリプトファイルはフォルダtxtの中に存在する必要があります。

使い方1

スクリプトファイル 001.txt にジャンプします。

@load 001.txt

使い方2

スクリプトファイル 001.txt のラベルAAAにジャンプします。

@load 001.txt AAA

メッセージ

メッセージボックスにテキストを出力します。

  • 行の先頭に \ を記述することで、前の行を継続することが可能です(全画面ノベルで使用)
  • $0のように$数字でローカル変数やグローバル変数の値の数値を出力できます
  • %aのように%アルファベット小文字で名前変数の値の文字列を出力できます
  • 利用できる装飾は下記の通りです。
    記述装飾の内容
    \n改行する
    \#{RRGGBB}フォントの色を変更する
    \@{サイズ}フォントのサイズを変更する
    \^{ルビ}ルビを振る
    \f{g]グローバルフォントを使用する(ユーザがコンフィグ画面で選択)
    \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{秒数}ウェイトを挿入する

使い方

こんにちは。


@news

@news [...長い...]

注意: このコマンドは隠しコマンドです。使い方はDiscordでご質問ください。

@switch の亜種です。2階層の選択肢で、1階層目の選択肢の最初の4つが、北(N)、東(E)、西(W)、南(S)に表示されます。ダンジョン探索のような場面のために存在します。1階層目の選択肢に限り、表示メッセージに * を指定することで、選択肢を非表示にすることができます。


@return

@return

サブルーチンから戻ります。

使い方

サブルーチン SUB を実行します。

@gosub SUB

:SUB
ここに何らかの処理やメッセージを記述します。
@return

セリフ

キャラ名「セリフ」
*キャラ名*セリフ 
*キャラ名*音声ファイル*セリフ

メッセージボックスにセリフのテキストを出力します。また、名前ボックスにキャラクタの名前を出力します。

ボイスを再生することができます。ボイスファイルは、フォルダ cv の中に存在する必要があります。ボイスファイルの形式は、44.1kHzのOgg Vorbisである必要があります。

メッセージと同様の装飾が使えます。

使い方1

セリフを出力します。

みどり「こんにちは、Suika2です。」

使い方2

ボイスを再生して、セリフを出力します。

*みどり*001.ogg*こんにちは、Suika2です。 

使い方3

指定したビープ音をリピート再生して、セリフを出力します。

*名前*@beep.ogg*こんにちは。

@set (@フラグをセット)

@set [variable] [operator] [value]
@フラグをセット [変数] [演算子] [値]

ローカル変数、グローバル変数、名前変数に値をセットします。

変数の種類説明
ローカル変数セーブデータごとに値が異なり、 $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

ローカル変数 $0 に値 1 を代入します。フラグのセットに利用します。ローカル変数の初期値は 0 なので、フラグが立ったことになります。

@set $0 = 1

使い方 2

ローカル変数 $10 に値 23 を加算します。 好感度の加算などに応用できます。

@set $10 += 23

使い方3

ローカル変数 $0 に 0 から 9 までのランダムな値を代入します。最初にランダムな数を $RAND で求めてから、 10 で割った余りを計算しています。ランダムなイベント発生に応用できます。

@set $0 = $RAND
@set $0 %= 10

使い方4

ローカル変数 $1 にローカル変数 $2 を加算します。好感度の計算などに利用できます。

@set $1 += $2

使い方5

名前変数 %a に文字列 みどり を代入します。デフォルトの名前を設定するのに利用できます。

@set %a = みどり

@setconfig

@setconfig [コンフィグ名] (値)

コンフィグをゲーム実行中に書き換えられる便利コマンドです。

使い方

メッセージボックスを変更します。例えば、テキストを画面いっぱいに表示するノベルスタイルと、画面の下の方に表示するアドベンチャー形式を切り替えるのに使います。

@setconfig msgbox.bg.file msgbox-bg.png
@setconfig msgbox.fg.file msgbox-fg.png

@setsave

@setsave [disable/enable]

セーブ・ロードを禁止・解禁します。

使い方1

セーブ・ロード画面を有効化(解禁)します。 [デフォルト設定]

@setsave enable

使い方2

セーブ・ロード画面を無効化(禁止)します。

@setsave disable

@shake (@振動)

@shake [direction] [seconds] [times] [amplitude]
@shake [direction=direction] [duration=seconds] [times=times] [amplitude=amplitude]
@振動 [方向] [秒] [回数] [大きさ]
@振動 [方向=方向] [秒=秒] [回数=回数] [大きさ=大きさ]

画面を揺らします。

使い方1

1.0秒かけて、3回、横方向に100px、画面を揺らします。なお、 horizontal は h と省略できます。

@shake horizontal 1.0 3 100

使い方2

1.0秒かけて、3回、縦方向に100px、画面を揺らします。なお、 vertical は v と省略できます。

@shake vertical 1.0 3 100

@skip (@スキップ)

@skip [enable/disable]
@スキップ [許可/不許可]

待ち時間のあるコマンドのスキップを禁止・解禁します。

主に、ゲーム起動時にブランドロゴを表示するのに使用できます。

使い方1

スキップを有効にします。 [デフォルト設定]

@skip enable

使い方2

スキップを無効にします。

@skip disable

@switch

@switch [...長い...]

注意: このコマンドは隠しコマンドです。使い方はDiscordでご質問ください。

2階層の選択肢を表示します。1階層目を親選択肢と呼び、2階層目を子選択肢と呼びます。親選択肢が最大8個、子選択肢が最大8個で、合計で最大64分岐を記述できます。

「動詞+目的語」で探索する80年代から90年代のアドベンチャーゲームを移植するのに使います。

使い方

2階層で4つの選択肢を表示します。

@switch 親選択肢1 親選択肢2 * * * * * * LABEL1 子選択肢1 LABEL2 子選択肢2 * * * * * * * * * * * * LABEL3 子選択肢3 LABEL4 子選択肢4 * * * * * * * * * * * *
:LABEL1
:LABEL2
:LABEL3
:LABEL4

@video (@動画)

@video [ファイル名]
@video [file=ファイル名]
@動画 [ファイル名]

@動画 [ファイル=ファイル名]

動画を再生します。

Windowsで再生できる動画は .wmv ファイルです。その他の環境で再生できる動画は .mp4 ファイルです。ファイル名の指定で拡張子(.wmv や .mp4)を省略すれば、その環境用にファイルが自動選択されます。

動画ファイルは mov ディレクトリに格納します。mov ディレクトリは data01.arc ファイルにパッケージングされません。

Webブラウザでは、プレイヤが最初にクリックを行う前に動画を再生しようとすると、ブラウザでの違反となりゲームが止まります。 Web版でゲームの先頭で動画を再生するときは、事前に @click コマンドを入れるなどの対策を行ってください。

使い方

動画を再生します。 Windowsでは sample.wmv が再生されます。 その他の環境では sample.mp4 が再生されます。

@video sample


@wms (@スクリプト)

@wms [filename]
@wms [file=filename.txt]
@スクリプト [ファイル名.txt]
@スクリプト [ファイル=ファイル名.txt]

WMS (Watermelon Script) を実行します。

WMSはプログラミング言語です。シナリオのスクリプトでは複雑なプログラミングが大変なので、ロジックを記述したい場合はシナリオからWMSを呼び出します。

使い方

wms/hello.txt を実行します。

@wms hello.txt

@pencil

@pencil [text1/text2/text3/text4/text5/text6/text7/text8] [テキスト]

テキストレイヤにテキストを描画します。あらかじめ利用するテキストレイヤ(text1からtext8のいずれか)に、@layerコマンドで画像を読み込んでおく必要があります。

使い方

テキストレイヤ1 (text1) にテキストを描画します。

@layer name=text1 file=text-layer-image.png x=0 y=0 a=255
@pencil text1 "このテキストが描画されます。"

マクロの取り込み

using [マクロファイル]

ファイルにまとめたマクロを取り込みます。

マクロ内で定義したサブルーチンを @gosub で呼び出してください。

使い方

txt/macro.txt を取り込みます。 マクロがそのまま実行されないように、@gotoでガードします。各シナリオファイルの末尾の方に書くことが望ましいです。

@goto MACRO_END
using macro.txt
:MACRO_END