ラベルを定義する

 さて、選択肢を使う前にラベルの説明をしなければなりません。
 選択肢を選択したら、選択先にシナリオの制御が移らなければなりません。そのときの制御の移動の目印となるのがラベルです。

 ラベルは、行の先頭に * のついた行です。いままでのサンプルでも出てきていましたね。たとえば・・・

[wait time=200]
*start|スタート
[cm]
こんにちは。

 となっていました。この場合、ここで *start という名前のラベルを定義したわけです。じゃあ | (縦棒) 以降の "|スタート" ってなに、って事になりますが、それについては別の場所 ( → セーブ・ロードに対応させよう ) で説明します。| 以降は書かなくてもかまいません。

 ラベルの名前には任意の物を指定できますが、半角英数のみにしておいた方が無難でしょう。また、ラベル名に半角スペースは使わないでください。

 ラベルの機能には、このように制御の移動の際の道しるべになる以外に、セーブ・ロードの位置にもなるという重要な機能があります。これも | (縦棒) の意味と一緒に別の場所でお話しいたします。

選択肢を使ってみる

 KAG では選択肢というよりもむしろハイパーリンクに近い考え方で選択肢を実現します。
 選択肢を使うには linkendlink というタグを使います。この2つのタグで選択肢となる文章を挟むと、そこがマウスやキーボードで選択可能になります。マウスでクリックされたり、キーボードで Enter キーが押されると、該当する link タグに書かれた target 属性のラベルにジャンプします。
 また、選択肢待ちや、シナリオの終了など、動作を停止したい場合は [s] タグを書きます。メニューから「次の選択肢まで進む」を選ぶと、この [s] タグが来るまでノンストップでシナリオを実行します。
 これらを使って、以下のように記述することができます。target= の後の * (アステリスク) は必要ですので忘れないようにしてください。また、| (縦棒) 以降は、target の後に指定するときには必要ありません。


[wait time=200]
*start|スタート
[cm]
[link target=*select1]選択肢1[endlink][r]
[link target=*select2]選択肢2[endlink][r]
[link target=*select3]選択肢3[endlink][r]
[s]


*select1
選択肢1が選択されました。[l]
[s]

*select2
選択肢2が選択されました。[l]
[s]

*select3
選択肢3が選択されました。[l]
[s]

 これをこのまま実行させると、選択肢を選択しても選択肢が消えません。
 消すには、通常ラベルの次に [cm] を書きます。

[wait time=200]
*start|スタート
[cm]
[link target=*select1]選択肢1[endlink][r]
[link target=*select2]選択肢2[endlink][r]
[link target=*select3]選択肢3[endlink][r]
[s]


*select1
[cm]
選択肢1が選択されました。[l]
[s]

*select2
[cm]
選択肢2が選択されました。[l]
[s]

*select3
[cm]
選択肢3が選択されました。[l]
[s]



Diverge.png
選択肢の例


Note
     選択肢は一回選択されると、新しい選択肢が表示されるか、unlocklink タグが実行されるまでは選択することはできません。
     また、すでに画面に表示されている選択肢を選択不能にするために locklink タグがあります。
     通常の記述ではこのことは気にする必要はありません。

2つ以上のシナリオファイル

 管理上、シナリオファイルを2つ以上に分けたい場合があるとおもいます。
 答えは簡単で、link タグに storage 属性をつけるだけです。たとえば、scn2.ks というシナリオを用意して、そこの *scn2start というラベルにジャンプするには・・・。

[link storage="scn2.ks" target=*scn2start]scn2.ks の scn2start[endlink]


と記述します。この選択肢がクリックされると、scn2.ks が読み込まれ、*scn2start というラベルにジャンプします。

そのほかのシナリオ分岐に関するもの

 ただ単に指定したラベルにジャンプしたいときのために jump タグがあります。
 また、link タグにはクリックされたときに TJS ( 吉里吉里が直接理解できるスクリプト ) の式を実行する機能などもあります。  また、button タグは、テキストを選択肢にするのではなく、ボタンとして用意された画像を選択肢にする物です。グラフィカルな選択肢の実現に用います。
 タグリファレンス を参照してみてください。