トップ / チュートリアル7. イベントとスクリプト
チュートリアル 7. イベントとスクリプト

スクリプトは、Silhouette の動作を制御する文字列です。
第 2 章から登場している、<c,とねり><s,素><d,1> や、<c,とねり>はじめまして、とねりです。 と言った 文字列がスクリプトです。これまでくわしい説明をしていませんでしたが、本章ではスクリプトの機能とイベントについて、少しくわしく説明します。

イベントとスクリプトの関係
Silhouette は、「イベント」と「スクリプト」によって動作しています。

「イベント」は機会です。たとえば、「起動した」。あるいは「マウスでクリックされた」。「12 時になった」もそうです。

そして「スクリプト」は、動作です。起動したから、「笑顔で"おはよう"と言う」。マウスでクリックされたから、 「メニューを表示する」。 12 時になったから、「"お昼になりましたよ。"と言う。」これがスクリプトです。

デスクトップマスコットアプリを作るというのは、イベントとスクリプトをたくさん記述していくという作業にほかなりません。 これはたぶん、絵を用意するのと同じくらい大変な作業です。すべてを一人でやらずに、絵を描く人と、イベント・スクリプトを書く人で、 作業を分担してもいいかもしれません。

イベントの種類
イベントには、Silhouette システムから送られてくる「システム・イベント」と、 マスコットアプリを作っている人が自分で定義する「ユーザー・イベント」の 2 種類があります。

ユーザー・イベントは、メニューやタイマー、単語辞書などの機能を使う際に重要になります。 今はそれは置いておいて、システム・イベントだけを見てみましょう。 (単語辞書については次の第 8 章で説明します)

こちらのページを参照してください。 Silhouette システムが発行するシステム・イベントのすべてが説明されています。 起動したことを知らせる「OnFirstBoot」イベントと「OnBoot」イベントについては、第 2 章で説明しましたね。 その他にも、時刻を知らせるイベントや、マウスに関するイベント等が用意されているのがわかります。

うすうす感づいていたかと思いますが、コンソールに「イベント Onなんとか が発生しました。」という メッセージが、たまにポロッと追加されていますよね。あるいは、マウスポインタを「とねり」の上に重ねたり、 クリックしたりすると、またメッセージがズラッと出てきます。これが、現在発生しているイベントなのです。


スクリプト・タグとその種類
スクリプトは、テキストの平文(キャラクタがしゃべるセリフ)と、タグから構成されています。たとえば「とねり」が 「おはようございます。」とお話するスクリプトは、
<c,とねり>おはようございます。
ですが、<c,とねり>がタグで、「おはようございます。」が、テキストです。そして、テキストとタグを合わせた全体のことを、 スクリプトと呼んでいます。

これから代表的な 4 つのタグ、<c>、<s>、<d>、そして<exit>を説明します。
4 つともすでに第 2 章で登場済ですが、あらためて説明しましょう。

  • <c>タグは、もっとも重要なタグです。このタグは、操作対象のウィンドウを指定します。
    具体的には、「とねり」と「ひだるま」の 2 つのウインドウがあるうちの、どちらに「おはようございます。」と言わせるのか。 または、どちらの絵を「素」にするのか。これらはすべて、<c>タグによって指定されている方が対象となります。
    <c>タグによって選択されているウィンドウは、「カレント・ウィンドウ」と呼ばれます。<c>タグは、 カレント・ウィンドウを指定するタグです。

  • <s>タグは、カレント・ウィンドウに表示する画像を指定します。たとえば<s,素>と言うタグは、カレント・ウィンドウに 画像「素」を割り当てます。

  • <d>タグは、カレント・ウィンドウの表示を指示します。先ほど説明した<s>タグは、画像を割り当てるだけで、表示はしません。 <d,1>という<d>タグによる指示によって、はじめて画像が画面に表示されます。<d,0>とすると、カレント・ウィンドウ は非表示になります。

  • <exit>タグは、Silhouette を終了します。

とりあえずこの 4 つのタグを知っていれば、最低限の制御はおこなうことができるでしょう。

その他のタグについては、こちらのページをご覧ください。 たくさんありますが、自分が使うものだけを覚えていれば OK です。 なかでも<w>、<br>などが、先に紹介した 4 つの次くらいに重要なタグと言えるでしょう。

条件式つきイベント
イベントには「発生条件」をつけることができます。これをうまく使うことによって、Silhouette に複雑な反応を させることが可能となります。

例として OnHourChange イベントを見てみましょう。このイベントはは、何時かのちょうどになると発行されます。 何時になったのかは、ref0 という「システム変数」に格納されています。「システム変数?」と思うでしょうが、 まぁ詳細はともかくとして、これをうまく利用すれば、「ちょうど12時になった時に"お昼ごはんを食べましょう!" とお話させる」などという動作を実行できるのです。

メニューから[イベント|管理...]を選択して、[イベント]ダイヤログを表示します。次に[追加...]ボタンをクリックして イベントの追加ダイヤログを開き、[名前]に「OnHourChange」を指定します。さらに、[条件式]に、 ref0==12と入力して、[OK]をクリックしてください。(右図)

これで、「12時になった」ことを知らせるイベントを記述することができました。



[イベント]ダイヤログを閉じて、メニューから[イベント|スクリプト...]を実行し、[イベントスクリプト]ダイヤログを表示します。 [イベント]欄に先ほど追加した OnHourChange$ref0==12 を選択して、 スクリプト <c,とねり>お昼ごはんを食べましょう! を追加してください。

これで完成です。正午になった時、とねりが「お昼ごはんを食べましょう!」とお話してくれます。



もうひとつ、条件つきイベントの例を挙げておきます。

第 6 章で、「とねり」の胸に領域「胸」を設定しましたね。 そこで、マウスでクリックされたことを知らせるイベントと組み合わせることで、 「とねりの胸がクリックされた時に"きゃーーっ!!さわらないでください!"」とお話させることができます。 それが右の図です。

OnLButtonClick イベントの ref0 はウィンドウの名前、ref1 は領域の名前です。このように書けばいいのです。


スクリプトのランダム択一
いつもワンパターンな内容のお話しかしないと、見ている人が飽きてしまいますから、 お話する内容に揺らぎを持たせるべきでしょう。

いままでは、ひとつのイベントにつきスクリプトもひとつしか登録してきませんでしたが、実はスクリプトはいくつでも登録できます。 実際に再生されるとき、登録されたスクリプトのうちひとつがランダムに選ばれて、再生されます。

たくさん登録しておけば、いろいろなことを言ってくれるようになるので、より楽しめますね。


前の章へ ← → 次の章へ

[↑ページ先頭に戻る]
Silhouette