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




トーク

ランダムトーク

ランダムトークはトーク名なしのトーク()を辞書ファイルに記述して置くと、その中よりランダムで選択され一定時間毎にトークします。

*
:ランダムトークです。

*
:(2)隣の客はよく柿食う客だ!
:へー 

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

イベントトーク

イベントトークは、ゴーストが起動した時や、マウスでクリックした時などなんらかのイベントが発生した時に呼び出されるトークで、の後にトーク名としてイベント名を記述して置くとイベント発生時に呼ばれてトークします。

*OnBoot
:起動しました。

#別なゴーストから切り替わって起動した時のトーク 
*OnGhostChanged
:(R0)さんから交代したよ〜。

上記例の(R0)はリファレンスと呼び、イベントの情報を参照出来ます、参照出来る情報が複数ある場合はR1、R2…と続きます。

イベント及びリファレンスの種類については下記リンクを参照して下さい。
栞イベントについては里々の仕様に含まれないので、里々wikiでは全てに触れません。

  • ?イベント→Ukadoc SHIORI Eventリスト(外部サイト)
    • アイコンのあるベースウェアでのみそのイベントが利用できます。
    • Reference0、Reference1、Reference2…がそのイベントで参照できるリファレンスで里々ではR0、R1、R2…と省略して書くことが出来ます。
  • 里々独自イベント→独自イベント
    里々でのみ発生するイベント

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

通常メインキャラ側から喋りはじめる時は次の様に書きます。

*
:おはよう

サブキャラ側から喋り始める場合は次の様に書きます。

*
こんばんわ

喋るキャラを途中で切り替える場合

*
:おはよう
:こんばんわ
:なんでやねん!

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

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

()内に表示したいサーフェス番号を入れて指定します、現在スコープがあるキャラのサーフェスが変わります。

*
:(5)おはよう!(7)って昼だよ!!
:(12)ねむねむ

詳しくは→サーフェス

ウェイトを入れる

ウェイトとはトーク中に入れる"間"の事、長文を読みやすくしたり、抑揚をつけたりします。

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

詳しくは→ウェイト

さくらスクリプト

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

他の?等でさくらスクリプトを使ってトークを書くと次の様になります。

\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

これを里々で書く場合、次の様に書くだけで同等の表現になります。

:普通のポストで終わりたくないなぁ……
:……っていうかお前、自分を普通だと思ってたのか。
:え?

さくらスクリプトはプログラミングの経験のない人にはとっつきにくい面もあり、里々はより簡単にトークを記述するための仕組みとして独自の記法を使ったり自動化しています、主にスコープ切替やサーフェス指定などが里々によって最終的にさくらスクリプトへ変換や自動挿入が行われています。

里々の記法や自動化ですべてのさくらスクリプトがフォローされている訳ではありません、 また里々の記法で省略したり自動化している物も直接さくらスクリプトで記述する事も出来ます、 少し難しくなりますがさくらスクリプトを使用するとトークの表現やゴーストで出来る事を広げる事が出来ます。

どんなスクリプトがあるのかは下記の外部サイトを参照して下さい。

名前について

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

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

バルーン中をリセットする時にはさくらスクリプト「¥c」を使います。

*
:今日のあなたの運勢は\w8・\w8・\w8・\w8
\c大吉です!よかったねー

「今日のあなたの運勢は・・・」と表示されたあと
バルーンがリセットされて、
「大吉です!よかったねー」と表示されます。
ウェイトとかを考えておかないと、前の文章を
読み終わらないうちに消えてしまったりするので注意。
トークを何往復もさせる場合、バルーンにスクロールが出ないよう
適宜¥cを使うゴーストは多いです。
反面、¥cを使わずに全て表示させておくゴーストもいるので
そのあたりは好みによるでしょう。

終了する

さくらスクリプト「¥-」を使うと、そこで即時終了します。

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

さくらスクリプト「¥_s」を使う。

:\_sいっしょにしゃべるよ。\e

¥_sか¥eで閉じ。

前に出たランダム単語と同じものを使う

@あれ
えー
びー
しー

*
:(あれ)がほしいなー。
:(H1)ですか。
:(あれ)もほしいんだけどねー。
:(H3)もですか。

これで、
「えーがほしいなー。」
「えーですか。」
「しーもほしいんだけどねー。」
「しーもですか。」
になるはず。

Hの後にはトーク中にその変数が現れた順番を入れます。 この時(0)(1)(2)…や(H○)や(R○)なども変数としてカウントされます。

*
:(1)(あれ)がほしいなー。
:(H2)ですか。
:(2)(あれ)もほしいんだけどねー。
:(H5)もですか。

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

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

*OnBoot
:起動しました!

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

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

*選択肢1
:おめでとうございます。

参考)イベント発生時にゴーストが喋るパターンを多数用意したいだけならば     次のようにすると記述を簡素・短くできます。     つつき反応など、短い反応をたくさん用意したいときなどに有効です。

*OnBoot
:(OnBoot時台詞集)

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

真偽とは

「真または偽、どちらかの状態をとるもの」のこと。
たぶん一般的なプログラミング用語。分岐のための条件(条件式)の結果を真偽と呼ぶ。
文字通り、正しいか間違っているかの二種類。「YES」か「NO」かをチェックする。

A==Bという計算式は、以下の真偽いずれかの計算結果を返す。

  • 「AとBが等しければ真」
  • 「AとBが等しくなければ偽」

A!=Bという計算式は、以下の真偽いずれかの計算結果を返す。

  • 「AとBが等しくなければ真」
  • 「AとBが等しければ偽」

A>Bという計算式は、以下の真偽いずれかの計算結果を返す。

  • 「AがBより大きければ真」
  • 「AがBより小さい、またはAとBが等しければ偽」

真偽値を数値へと変換する場合、一般に以下のようになる。

  • 真 ←→ 1
  • 偽 ←→ 0

ただし、条件式としての真は「0以外の全ての数値」なので1に限らない。
計算式として条件式を用いた場合はこのどちらかが返ってくる。

条件式

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

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

とあった場合、条件式の計算結果が真(0以外の数値)であればジャンプし、偽(0)であればこの行を無視して次の行へ進む、ということになる。
ちなみに、条件式は最終的に数値であればいいので、極端な例では

*なんとか
>ジャンプ先0【タブ】0
>ジャンプ先3【タブ】3

とすると、「ジャンプ先0」は永遠にスルーされ、「ジャンプ先3」へと進む事になる。

ssuif関数の第1引数も、この条件式と同じ扱い。
真であれば第2引数に置き換えられ、偽であれば第3引数に置き換えられる。第3引数がなければ何も返さない。
採用条件でもこの条件式が使われている。

比較に関する話

数値ではなく文字列を比較する場合、数字や算術記号が含まれているとエラーが出る事があるためssucompare関数を使用した方が安全。

>イベント【タブ】(変数)==比較文字列

これを下の様に書き換える。

>イベント【タブ】(compare,(変数),比較文字列)

ただし、compare関数では半角と全角の文字を同一とみなす判定が行われる。

条件分岐に使える演算子

  • 演算子一覧を参照。
  • 条件式は、計算結果が0ならジャンプしないで続行し、0以外ならジャンプします。
  • 記号も数字も半角全角問わず使えます。
  • 条件式はいくつでも並べる事ができます。
< 左辺が右辺より小さければ1、さもなくば0。
> 左辺が右辺より大きければ1、さもなくば0。
<= 左辺が右辺と等しいか小さければ1、さもなくば0。
>= 左辺が右辺と等しいか大きければ1、さもなくば0。
   
== 左辺と右辺が等しければ1、さもなくば0
!= 左辺と右辺が違えば1、さもなくば0

! 右辺が0なら1、0以外なら0に。

&& 左辺と右辺が両方とも0以外なら1、さもなくば0
|| 左辺と右辺のいずれか片方が0以外なら1、さもなくば0

・式が間違っていて計算不能な場合、ゴーストがエラーメッセージを喋ります。

&&や||の使い方

  • &&。下記の例では好感度が30以上、累計起動時間が5時間以上の時「なで好反応」にジャンプする
    *0Headなでられ
    >なで好反応【タブ】(好感度)>=30&&(累計起動時)>=5
    :……。
    
    *なで好反応
    :………ありがと。
  • ||。下記の例では現在月が12か1か2のどれかの時「寒い」にジャンプする
    *起動
    >寒い【タブ】(現在月)==12||(現在月)==1||(現在月)==2
    :こんにちは〜。
    
    *寒い
    :こんにちは〜。
    寒いね〜。

これらはssu.dllでも使えます。

*起動
:こんにちは〜。
(if、(現在月)==12||(現在月)==1||(現在月)==2、寒いね〜。)

単語単体を条件式にする

条件式の部分に単語単体だけ書いても条件式として扱われます。

*OnMinuteChange
>見切れ【タブ】(R1)

*見切れ
:画面の外からこんにちは。
:黙ってろ。
:うー。

この場合(R1)に文字列や0以外の数字が入っている場合「見切れ」にジャンプします。 (R1)が0か、又は存在しない変数だった場合はジャンプしません。 つまり

*OnMinuteChange
>見切れ【タブ】(R1)!=0

こう記述した時と同じという事です。

*OnMinuteChange
>見切れてない【タブ】!(R1)
:画面の外からこんにちは。
:黙ってろ。
:うー。

単語の左に「!」を入れると逆の意味になります。 (R1)が0か存在しない変数の時「見切れてない」へジャンプします。

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

install.txtに

refresh,1
refreshundeletemask,satori_savedata.txt

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

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


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2018-02-28 (水) 00:21:50 (51d)