ゴースト3分クッキングを読んだら、次はどんな表現方法があるか調べよう。
特殊記号一覧ファイル構成にも目を通しておくと吉。




トーク

イベントトーク

  • ゴーストが起動した時やマウスでクリックした時など、様々な条件でイベントが発生します。
    行の先頭に「*」を書いた後にイベント名を記述しておくことで、そのイベントが発生した場合にトークさせることが出来ます。
    詳しくは→イベント
    #ゴーストが起動した時のイベント「OnBoot」でのトーク
    *OnBoot
    :起動しました。
    
    #ゴーストがサブルクリックされた時のイベント「OnMouseDoubleClick」でのトーク
    *OnMouseDoubleClick
    :つつかれた。
    
    #別なゴーストから切り替わって起動した時のイベント「OnGhostChanged」でのトーク
    *OnGhostChanged
    :(R0)さんから交代したよ〜。
    上記例の(R0)ではイベントの情報を参照しています。参照出来る情報が複数ある場合は(R1)、(R2)…と続きます。
    これをリファレンスと呼び、イベントによって参照できる情報が異なっています。
    今回のOnGhostChangedなら、(R0)には交代前にいたゴーストのメインキャラクター名が入っています。
    詳しくは→リファレンス

イベントとリファレンスの中身をもっと詳しく→UKADOC SHIORI Eventリスト
里々でのみ発生するイベント→独自イベント

ランダムトーク

  • 行の先頭に「*」を書いた後に何も書かない場合、一定時間毎にその中からランダムで選択されるトークをします。
    *
    :ランダムトークだよ。

詳しくは→ランダムトーク

トーク名付きのトーク

  • 行の先頭に「*」を書いた後にイベント名以外を書いた場合、トーク名付きのトークとなります。
    *トーク名
    :トーク名付きのトークだよー。
    ただし、トーク名付きのトークはイベントやランダムトークと違い、自発的にその内容を喋ることはありません。
    この内容を喋らせたい場合、後述する方法でどこかから呼び出してくる必要があります。

喋るキャラクターを切り替える(スコープの切り替え)

  • 上の例に出ていたトークでは、どれも喋る前に「:」が使われていました。
    これは喋るキャラクターを切り替えるための記号で、これがないとサブキャラクター側から喋りだすこととなります。
    *
    こんばんわ
    なので、メインキャラ側から喋り始めるために次の様に書きます。
    *
    :おはよう 
  • 喋るキャラを途中で切り替える場合は次の様に書きます。
    *
    :おはよう
    :こんばんわ
    :なんでやねん!

詳しくは→スコープ切り替え

別のトークを呼び出す

  • 行の先頭に「>トーク名」と書くと、「*トーク名」を呼び出すことが出来ます。
    このとき呼び出すトークが複数存在する場合、それらからランダムで選ばれます。
    もし「>トーク名」で指定したトークが無かった場合、「>トーク名」の行は無視されます。

    *
    :メールが来てないか確認しよ。
    :お前、自分がポストだと自覚持ってるのか?
    >メール確認トーク
    
    *
    おい、今メールの着信音がしなかったか?
    :えっ、確認してみる。
    :お前じゃなさそうな気がするがな。
    >メール確認トーク
    
    *メール確認トーク
    どうだ?
    :来てなかったよ……
    :薄々感じてたがやっぱりな。
    
    *メール確認トーク
    :あ、メール来てる。
    :珍しいこともあるもんだ。
    :スパムメールだったよ……。
    「>」で呼び出したトークは、今までのトークの表示に続けて表示されます。
    呼び出し直後のスコープは、呼び出す前にどちらが喋っていたかとは関係なくサブキャラクター側になります。

ゴーストの絵を切り替える(サーフェス指定)

  • ()内に表示したいサーフェス番号を入れて指定します、現在スコープがあるキャラのサーフェスが変わります。
*
:(5)おはよう!(7)って昼だよ!!
:(12)ねむねむ

詳しくは→サーフェス

さくらスクリプト

  • さくらスクリプトとは、ゴーストのトークを修飾したりゴーストを制御するコマンドで¥から始まる英数字で記述します。

    他の?等でさくらスクリプトを使ってトークを書くと次の様になります。
    \0\s[0]\1\s[10]\0普通のポストで終わりたくないなぁ…\w2…\w2\n\_w[126]\n[half]
    \1…\w2…\w2っていうかお前、\_w[78]自分を普通だと思ってたのか。\_w[84]\n\n[half]\0え?\e
    これを里々で書く場合、次の様に書くだけで同等の表現になります。
    :普通のポストで終わりたくないなぁ……
    :……っていうかお前、自分を普通だと思ってたのか。
    :え?
    さくらスクリプトはプログラミングの経験のない人にはとっつきにくい面もあり、里々はより簡単にトークを記述するための仕組みとして独自の記法を使ったり自動化しています。
    主にスコープ切替やサーフェス指定などが里々によって最終的にさくらスクリプトへ変換や自動挿入が行われています。
    とはいえ、すべてのさくらスクリプトを里々で置換できるという訳ではありません。
  • また里々の記法で省略したり自動化している物も直接さくらスクリプトで記述する事も出来ます。
    少し難しくなりますがさくらスクリプトを使用するとトークの表現やゴーストで出来る事を広げる事が出来ます。

どんなスクリプトがあるのかはこちら(UKADOC SakuraScriptリスト)を参照して下さい。

ウェイトを入れる

  • ウェイトとはトーク中に入れる"間"の事、長文を読みやすくしたり、抑揚をつけたりします。
    • 里々では句読点等でウェイトが自動的に入る様になってます。(初期設定だとあまり実感出来ません)
      関連設定→自動挿入ウェイトタイプ,自動挿入ウェイトの倍率
    • ゴースト「ポストと狛犬」では、replace_after.txtによる設定で、トークに「・」「‥」「…」を記述するとウェイトが入る様になっています。
    • ゴースト「ポストと狛犬」では、replace.txtによる設定で、トークに「w1」「w2」...「w9」を記述するとウェイトに置き換わる様になっています。
  • 任意にウェイトを入れるには、さくらスプリクト「¥w9」「¥_w[300]」等を使用します。
    :お、\w3は、\w3よ、\w3う

詳しくは→ウェイト

バルーンの表示を工夫する

バルーンに表示された文章を消す

  • バルーン中をリセットする時にはさくらスクリプト「¥c」を使います。
    *
    :今日のあなたの運勢は\w8・\w8・\w8・\w8\w8
    \c大吉です!よかったねー
    「今日のあなたの運勢は・・・」と表示されたあとバルーンがリセットされて、「大吉です!よかったねー」と表示されます。
    ウェイトとかを考えておかないと、前の文章を読み終わらないうちに消えてしまったりするので注意。

バルーンでクリック待ち状態にする

  • クリック待ちにするには、さくらスクリプト「¥x」を使います。
    ¥x実行直後は、スコープがメインキャラ側になるので注意してください。
    *
    :んー……どうしよう
    :どうした?
    \x手紙失くしちゃった。
    :ポスト失格だな……
    「んー……どうしよう」「どうした?」まで表示された後、バルーンがクリック待ちになり、バルーン内でアイコンが点滅します。
    その状態でバルーンをクリックすると、バルーンがリセットされた後に「手紙失くしちゃった。」「ポスト失格だな……」と表示されます。

選択肢を出す

  • 行の先頭に_選択文字列と書くと選択肢となり、ユーザが選択肢をクリックしたときに「*選択文字列」を呼び出すことが出来ます。
    *
    :何か用事ある?
    _あるよ
    _ないよ
    
    *あるよ
    :お、なにかな?
    
    *ないよ
    :そっかー
  • 選択肢はほとんどの場合、カーソルを置かないと分からないため、なにか分かりやすい記号を置くなどした方が親切です。
    *
    :何か用事ある?
    _◯あるよ
    _◯ないよ
    
    *◯あるよ
    :お、なにかな?
    
    *◯ないよ
    :そっかー

¥0と¥1を同時にしゃべらせる

  • さくらスクリプト「¥_s」を使います。
:\_sいっしょにしゃべるよ。\_s

¥_sか¥eで喋る範囲を閉じます。

ランダムに単語を喋らせる

  • 一つの例として、choiceを使う方法があります。
    *
    :何が釣れた?
    :(choice,鯛,イワシ,鮫,くじら,長靴)が釣れたよ。
    このように書くと、「鯛、イワシ、鮫、くじら、長靴」の中から一つが選ばれて、「何が釣れた?」「鯛が釣れたよ。」等と喋ります。 詳しく→内部関数 choice
  • ですが、同じものを何回もランダムに喋らせようとすると、少し面倒になってしまいます。
    単語群を作り、それを呼び出せば何度もchoiceを使う必要がなくなります。
    詳しくは→特殊記号 @
    @釣れたもの
    鯛
    イワシ
    鮫
    くじら
    長靴
    
    *
    :何が釣れた?
    :(釣れたもの)が釣れたよ。
    :(釣れたもの)とか釣れないの?
    :あの釣り場では無理かな……。

上記は「(釣れたもの)」が「@釣れたもの」の中身にランダムで置き換わり、例えば「何が釣れた?」「イワシが釣れたよ。」「くじらとか釣れないの?」「あの釣り場では無理かな……。」等と表示されます。
初期設定では、単語群に書かれた単語が一度使われると、そのトーク内ではすべての単語が使われきるまで同じものが選ばれることはありません。
詳しくは→単語群の重複回避 関連TIPS→ランダムに選んだ単語を再利用する

イベントトークやジャンプ先をランダムに入れ替える

  • 「*OnBoot」や「*OnGhostChanging」などのイベントを複数用意すると、そのイベントが発生した時に、そのうちのどれか1つをランダムにトークします。
    「>」を使ったジャンプについても同様です。
*OnBoot
:起動しました!

*OnBoot
:呼ばれました!
*OnGhostChanging
:次の方へ交代しますね。

*OnGhostChanging
:え〜、交代ですか〜?
*選択肢1
:正解です!

*選択肢1
:おめでとうございます。
  • イベント発生時にゴーストが喋るパターンを多数用意したいだけならば次のようにすると記述を簡素・短くできます。
    つつき反応など、短い反応をたくさん用意したいときなどに有効です。
*OnBoot
:(OnBoot時台詞集)

@OnBoot時台詞集
(5)呼ばれました!
(5)起動しました!
(4)……うぃー。
(5)起動してしまいました!

この仕組みは便利なものの、複数の書いたことを忘れてしまいどれか1つだけに処理を追加すると、特定しづらいバグを引き起こします。
OnBootなどのベースウェアから発行されるイベントは1つにしておくなど、バグが出にくくなるよう工夫すると良いでしょう。

例。今後の追加時、コピペミスなどでバグを起こすかもしれません。

*OnBoot
$起動時に処理したい変数とか=1
:起動しました!

*OnBoot
$起動時に処理したい変数とか=1
:呼ばれました!

対処。OnBootを1個にしておいて処理を書いておき、トークのみをランダムにすればバグを起こしにくくなります。

*OnBoot
$起動時に処理したい変数とか=1
>起動トーク

*起動トーク
:起動しました!

*起動トーク
:呼ばれました!

マウス操作に反応する

里々では、マウスのなで操作(クリックせずマウスを一定時間動かす)、ダブルクリック操作に反応する仕組みがデフォルトであります。

*0なでられ
:どこなでてるの?

*0Headなでられ
:頭をなでられた!

*0つつかれ
:どこつついてるの?

*0Bustつつかれ
:えっち!

*1つつかれ
こっちをつついてもなんもないぞ。

*0Headころころ
:頭の上で何かが転がってる!

以下のルールで記述すると、対応したトークが存在する場合に呼び出されます。

*[スコープ(メインキャラは0、サブキャラは1)][シェルで設定した部位(設定のない部分で反応させたい場合不要)][操作方法(なでられ/つつかれ/ころころ)]

HeadやBustなどはシェルでの設定が必要なので注意。
SWポストと狛犬のshell/master/surfaces.txtの記述をコピペして改造したり、ざっくりした解説を読んで設定しておいてください。

条件式

里々では、様々な箇所に条件式を使うことができます。

>ジャンプ先【タブ】条件式

とあった場合、条件式が成立すれば真(0以外の数値)であればジャンプし、偽(0)であればこの行を無視して次の行へ進む、ということになります。
詳しくは→条件式

名前について

里々では、変数トーク等を呼び出しや展開する時()を使用しますが、何でもかんでも()を使うので、あとで辞書を見返した時にそれがトーク関数なのか、変数なのか、単語群なのか、この変数名はトーク名と重複していないかとが解らなくなる事があります。
同じ名前のトークが複数ある場合ならランダムで選択されますが、トーク変数が同じ名前になっていた場合、おかしなことになり正常に動作しません。
なので変数なら、"〜変数"の名前にするとか英数で命名するとか、トークなら"〜トーク"とか日本語で命名するとかのルールを予め作っておいた方がよいかもしれません。
…ただし里々やshioriのイベント・リソースの予約名とか「ポストと狛犬」で使ってる変数やトークの名前とかが既にフリーダムなので完全にどうこう出来るわけではありません。

narアーカイブの上書き時、全ファイルを入れ直す

install.txtに

refresh,1
refreshundeletemask,satori_savedata.txt

と書き加えれば、元からあるファイルを全て削除したあと、 改めてインストールします。 refreshundeletemaskで指定したファイルは削除されません。 (上の例なら、里々のセーブデータを削除せずに残します)

追加シェルのあるゴーストの場合追加シェルまで消えてしまうケースがあるため「refresh,0」の方が良いです。(消去したいファイルはdelete.txtで指定)

ゴーストが完成したら

ネットワーク更新のページを参考にして、公開しましょう。
オンラインアップデートの機能を使わずに公開する方法についても記述しています。


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2017-10-31 (火) 06:51:14 (24d)