★第四回────さしすせそ
今回はいよいよゴーストに命を吹き込みます。
つまり、トークや反応などを仕込んでゆくわけです。
辞書についてはいっぺんにやると長くなるので、二回に分けて解説します。
この回では目次の赤い部分を消化してゆきます。
辞書をいじる上での基本技術ばかりなので、じっくり理解してください。
今回いじってゆくのは、ここ。
ゴーストのトーク、反応は基本的に辞書と呼ばれるテキストファイルに記入されています。
ウィンドウズ付属のメモ帳で作れるテキストファイルです。
里々の辞書はほぼ全てのファイル名の頭に「dic」とつきます。
その他「dic」とついていないファイルはセーブデータであるだとか、
何かの記録や処理をするためのものなので、名前は変えないようにしてください。
逆に、「dic」さえついていればどんな名前をつけようと勝手。
全て辞書として読み込まれるのでわかりやすいように名前をつけるのが一番です。
それから、「dicAnchor」はアンカー用のファイル。アンカーについてはこの後説明します。
「dicAnchor」まではいじれませんが、その後は好きな名前にしても平気です。
【タブ】とある箇所は、実際にはタブキーで入れられるタブを挿入してください。
□トークの種類
□基本的な形式
□バリエーション
□イベントトークの書き換え
□replace.txt
□satori_conf.txt
□satori_savedata.txt
□descript.txt
□トークの種類
トークにはランダムトークとイベントトークがあります。
ランダムトークというのは、立たせているときに放っておいてもしゃべるトーク。
イベントトークというのは、特定のときにだけしゃべるトーク。
イベントトークの中には、ネットワーク更新時のトーク、さわり反応でするトーク、
起動したときや切り替えの時のトーク、サイトを開いた時のトークなどが含まれます。
□基本的な形式
早速、フォルダの中を覗いてみましょう。
この中に並んでいるdic01_Base.txtなどのテキストファイルが辞書です。
大量にあるように見えますが、実はこれはわかりやすいように分割されているのです。
実際に、dic01_Base.txtを開いてみると、
頭の方に里々製作者の櫛ヶ浜やぎ様がメモを残してくれています。
さて、里々のトークの基本的な書き方はこうです。
*
:おしゃべりするっすよ。
:うむ、それが仕事だ。
全て全角であることに注意してください。
行頭の「*」がイベント反応…すなわち、「ここからトークだ」という目印です。
何もついておらず、「*」だけならば、ランダムトークの候補になります。
逆に、何かついていればイベントトークや、選択肢の飛び先となります。
「:」はスコープをあらわしています。
\0、\1と記号で区別しますが、
二人立っているキャラのどちらに焦点が当たっているかを指示するものです。
「:」がつくたびにスコープが切り替わります。
はじめに「:」がつくと、\0側にスコープがあたります。
ですから、「おしゃべりするっすよ。」は\0側がしゃべります。
その後にもう一度「:」がついているのでスコープが\1に切り替わり、
「うむ、それが仕事だ。」と\1側が突っ込みを入れることになります。
これが基本です。
複数同じ名前のトークがあればその中からランダムに選ばれます。
□バリエーション
基本のほかに用意されている記号の一部を紹介します。
代入と選択肢はこの後も必要になります。
★代入を使う
会話のバリエーションや、ランダム性のために重要な役割を果たします。
<用例>
*
:海の生き物といえば?
:
(海の生き物)!
@海の生き物
うに
たこ
かに
代入というのは、赤字の部分の中に(つまり括弧に)、
条件のあてはまる単語群の中から一つを選んで入れることです。
ここでは、「括弧」の中に「海の生き物」とあるので、
「海の生き物」という単語群の中から代入しろという指示になります。
「括弧」はここに代入を行うということを示します。
代入するものは括弧の中にに書かれた文字列を参照します。
青い文字の「@海の生き物」というのが、「海の生き物」という単語群です。
「@」マークは単語群であることを表します。
★選択肢を使う
ゴースト固有のメニューなどを作るときに、ほぼ必須となります。
<用例>
*
:しゃべり頻度を変えようか?
_3分おき
_5分おき
_つつくまで黙ってて
_やっぱりやめた
上に挙げた例は簡易なメニューの例です。
「_ 」をつけることで、その行は選択肢となります。
選択肢を作った場合、当然ながらジャンプ先が必要となります。
「_ 」の後が全て、ジャンプ先のトークの名前となるので作っておきましょう。
<ジャンプ先の例>
*3分おき
$喋り間隔【タブ】180秒
:(5)設定完了!
:ご苦労さん。
★変数を使う
変数と言うのは文字通り変化する数であり、代入されるものでもあります。
satori_savedata.txtに書き込まれ記録され、継続して利用されるものです。
フラグの処理やしゃべり頻度の管理、はたまた好感度の処理などのために使われます。
このすぐ真上にある<ジャンプ先の例>にも含まれています。
せっかくなので、これを引きましょう。
*3分おき
$喋り間隔【タブ】180秒
:(5)設定完了!
:ご苦労さん。
ピンク色の部分が変数を使用しているところです。
ここでは、「$喋り間隔」という変数を、「180秒」に設定しているわけです。
これからは「$喋り間隔」という変数を引いた場合には、「180秒」と帰ってきます。
変数は「$」で定義します。
タブを挟んだ場合、前の部分が変数の名前になります。
タブを挟んだ場合、後の数字や文字がそのまま設定される内容となります。
また、タブではなくイコールでつないだ場合、
$計算結果=1+1
変数には右辺の計算結果が代入されます。
これと条件分岐を使えば、好感度などが作れますよ。
★条件分岐
これを使うと、該当するトーク名があった場合はそちらへジャンプします。
もしくは条件式を使ったもの。
設定した条件に合った場合、指定したトークにジャンプします。
複数書くことが出来ますが、上から順番に処理されていきます。
条件分岐は「
>」を使ってかかれます。
<用例>
*対ゴーストコミュニケート
>(隣で起動しているゴースト)に話しかける
>誰かに話しかける
この例文はコミュニケートから引きました。
変数(隣で起動しているゴースト)には、
隣に立っているゴーストのさくら側(\0)の名前が入ります。
つまり、「period α」が立っていたら、変数には「α」が代入されます。
「*αに話しかける」というトークがないか里々は探します。
もしゴーストが一体も立っていなければ、変数には代入されるべきものがありません。
「*に話しかける」というトークを里々は参照することになります。
誰もいないということだから、それに対応したトークを入れます。
さて、上の二つのどちらでもない場合。
つまり、他にゴーストは立っているけれど、対応トークが特に見つからない場合。
ここで初めて次の「>誰かに話しかける」が参照されます。
不特定多数のゴーストに話しかける際のトークを書いておけばいいわけです。
次に、条件に合った場合、特定のトークに飛ばす用法です。
<用例>
*
>好感度高【タブ】(好感度)>50
>好感度低【タブ】(好感度)<10
:…。
:気のない顔してるなー。
*好感度高
:…。
:あのな、黙ってにやけるのやめろよ。
*好感度低
:…。
:おいおい、なに睨んでんだ?
好感度という変数の値によって、トークのジャンプ先が変化します。
タブの右側にある条件式にしたがって飛ばしているわけです。
条件式は、「(好感度)>50」や「(好感度)<10」ですね。
算数でやった等号・不等号と同じ記号を、同じように使用します。
つまり、「>好感度高【タブ】(好感度)>50」は、
変数「好感度」が50よりも大きい数字だったら、
「好感度高」というトークに飛ばす指示。
それから、「>好感度低【タブ】(好感度)<10」は、
変数「好感度」が10よりも小さい数字だったら、
「好感度低」というトークに飛ばす指示。
どちらも該当しなければ、一番下にあるトークが読み上げられるわけです。
★アンカーを使う
アンカーは特定の単語をクリックすると、指定されたトークに飛ぶというものです。
これは必須ではありませんが、知っていると便利。
dicAnchor.txtというファイルを用意して、中に名前をつけたトークを書きます。
dicAnchorが頭についていれば、
dicAnchor_sonoiti.txtでもdicAnchor_unyuugawaとかでもかまいません。
トークにつけた名前が全て自動的にアンカーになります。
<用例>
*たまごやき
:あまぁーい玉子焼きが、こわいのかしら!
:かしらー!!
このようにdicAnchor.txt内に記述すれば、
このトークにつけられた名前である「たまごやき」が全て自動的にアンカー化されます。
◎一口メモ
辞書を書いているうちに、コメントを入れたくなることがあるかもしれません。
そんな時には、行頭に「#」をつけてエスケープしましょう。
#コメント…ここから
のように記入します。
辞書ファイル中に「#」があるとその場所から行末までが無視されるので、
文の途中に「#」を入れると、そこから行末までが無視されることになります。