美坂覚え書き
Memo for MISAKA.

この文書は覚え書きであり、解説書ではないことに注意してください。

用語。
bool値
 真偽判定値のこと。0 か 1、もしくは true か false で表される。基本的に与えられた条件に対し、現在の式の値と合致しておれば(真であれば) true もしくは 1、合致しなければ(偽であれば) false もしくは 0 が返る。
 if文は与えられた条件式のbool値を調べ、trueなら実行、falseなら実行しない・もしくは別の動きを実行する。たとえば現在時刻が12時の場合、次の式はtrueを返す。

{$if ({$hour}==12})};

 なお、bool値は「ブール」と読み、boolean(ブーリアン)とも呼ばれる。

変数
 処理の中で数値や文字列を取り扱うことは多いが、状況によって変化する数値や文字を扱いたいときは変数を使う。変数は数値や文字・文字列を入れておく「箱」と考えるといい。ゴーストが稼働するとき、変数の中身はゴーストマスタが意図したように変化させることができる。変数は大きく分けてシステム変数とユーザー変数に分けられる。

代入
 ゴーストが稼働している時に、処理に応じて変数の中の数値や文字・文字列を入れたり変化させたりすることを言う。
 変数の中に入っているものが数値の場合は計算ができるが、小数は扱うことができない。小数の場合は文字列と判断されるので注意。
 実際の代入は以下のようにする。

{$temp=128}

 こうすることで変数 $temp に整数の 128 が代入される。このときの「=」は数学の等号とは違うので注意。プログラムの世界では「=」は代入を意味している。
 文字列の場合は、

{$temp="なんちゃってプー"}

 と代入したい文字列を""で囲む。なお""で囲むと数字であっても文字としてみなされるので注意。つまり計算ができなくなる。

配列変数
 通常1つの変数は1つのものしか入れることはできない。が、美坂の変数は2つ以上のものを入れることができる。これを配列という。たとえば

 $gundam
 ガンダム
 Zガンダム
 ガンダムZZ
 νガンダム
 マンダラガンダム

と辞書に記述すれば、変数$gundamに五種類のガンダムを定義することができる。

 また配列変数をふくめた変数はあらかじめ辞書ファイルに定義しておくことができ、これを辞書変数という。辞書変数は基本的に内容を書き換えたすることができず(リードオンリー)、またif文などによる採用条件式がもてる。

 配列変数、もしくは配列として機能している辞書変数は、「{$gundam}」といった記述をすれば定義された複数のなかからランダムでひとつを選び出して取り出される。上記の例で言えばどのガンダムの名前が出てくるかはゴーストマスタにはわからない。この性質を利用して、配列の中身をさくらスクリプトにすれば、ランダムトークのできあがりである。
 ゴーストマスタがガンダムの種類を特定したい場合は「{$gundam[4]}」のように変数名の後ろに「[数値]」と記述すればいい。ただしあくまでも配列はゼロオリジンであり、最初は 0 から始まることに注意。上記の場合取り出されるガンダムはνガンダムではなく、マンダラガンダムである。
 またこの指定する数値は別に純粋な数字でなくてもいい。数値の入った変数でもかまわない。美坂が処理を行った時、結果的にそこにセットさせるのが数値であればいい。つまり、

 {$temp=4}

とした上で、

{$gundam[{$temp}]}

 とした場合でも、マンダラガンダムが取り出される。

辞書変数
 辞書変数とはあらかじめゴーストマスタがスクリプトファイルに登録しておく変数のことである。美坂はスクリプトファイルに定義されている「$」で始まるシンボルは全て辞書変数とみなしてくれる。
 また辞書変数は後述する採用条件式を付与することができる。同じシンボルを持つ辞書変数を、条件によって使い分けたいときにこれが必要となる。
 また
変数からの値の取り出しと上位モジュールへの送信
 このように美坂はスクリプトに埋め込まれた変数の中身を全て処理、つまり{}で囲まれた変数などを全て置き換えた上で、MATERIA や SSP 、CROW と言った上位モジュールに対してさくらスクリプトを送信する。上位モジュールはそのさくらスクリプトを解析して、バルーンに表示するわけだ。
 最終的に変数の中身が取り出さればいいため、美坂はきちんとその処理をしてくれる。