選択肢を使おう

# ラベルを定義する

さて、選択肢を使う前にラベルの説明をしなければなりません。
選択肢を選択したら、選択先にシナリオの制御が移らなければなりません。そのときの制御の移動の目印となるのがラベルです。
ラベルは、行の先頭に * のついた行です。いままでのサンプルでも出てきていましたね。たとえば・・・
`[wait time=200]
*start|スタート
[cm]
こんにちは。
`
となっていました。この場合、ここで *start という名前のラベルを定義したわけです。じゃあ | (縦棒) 以降の "|スタート" ってなに、って事になりますが、それについては別の場所 ( → セーブ・ロードに対応させよう ) で説明します。| 以降は書かなくてもかまいません。
ラベルの名前には任意の物を指定できますが、半角英数のみにしておいた方が無難でしょう。また、ラベル名に半角スペースは使わないでください。
ラベルの機能には、このように制御の移動の際の道しるべになる以外に、セーブ・ロードの位置にもなるという重要な機能があります。これも | (縦棒) の意味と一緒に別の場所でお話しいたします。

# 選択肢を使ってみる

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

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

管理上、シナリオファイルを2つ以上に分けたい場合があるとおもいます。
答えは簡単で、link タグに storage 属性をつけるだけです。たとえば、scn2.ks というシナリオを用意して、そこの *scn2start というラベルにジャンプするには・・・。
`[link storage="scn2.ks" target=*scn2start]scn2.ks の scn2start[endlink]
`
と記述します。この選択肢がクリックされると、scn2.ks が読み込まれ、*scn2start というラベルにジャンプします。

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

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