里々の辞書で使う特殊記号。(全て全角入力)




トークを書くときに必要な記号。里々の全てはこれから始まると言っても過言ではありません。

この記号の次行以降にトーク等を記述します。
*に限らず、里々の特殊記号は行頭に記述しなければ効果のないものがあります。
これらは文中では通常の文字として扱われることに注意して下さい。

以下、記述の例。

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

*
:(0)ランダムトーク2です。(道具)を使って銀行に向かいます。
:(11)落ち着け!

@道具
つるはし
バールのようなもの
*
>カレーに関すること

*カレーに関すること
:スパイスの種類が少ないほど辛く!
種類が多いほどマイルドに!
*OnBoot
:(5)起動完了です。

*sakura.portalsites
里々Wiki
http://soliton.sub.jp/satori/index.php?FrontPage

ここでは*の他に、(数字)などが使われています。これらの説明はそれぞれの記号の項で説明します。さて、上記の例ですが…

  • *の後になんらかの文字列
    そのままでは使われず、()等を使って任意に呼び出せるトークになります。
    好きな名前を付けることができますが、イベント変数と名前が被ってしまわないように注意してください。
  • *の後にイベント・リソース名
    イベントトークや、右クリックメニューに表示される「お気に入り」等の設定になります。
    里々Wikiでは全てのイベント・リソースの種類についての解説はありません(この辺は里々の範疇ではないため)。 イベントリファレンスを参照しながら、必要に応じて伺かの仕様サイトを参照して下さい。
    参考サイト→UKADOC Project

ゴーストはトークの集合によって形作られるので、初めての人はよく覚えておいて下さい。


補足

  • 辞書ファイル名dicAnchor○○.txt内で記述した場合は、トーク名は自動アンカーの対象文字列となり、トークはアンカーを踏んだときに呼ばれるトークになります。詳しくは→アンカー
  • 何らかの方法でトークを呼び出したとき、同じトーク名が複数あった場合、それらのうち一つだけが選択されます。選択方法はデフォルトではランダムですが、変更も可能です(特殊変数-重複回避)。
  • トーク名の後ろに【タブ】を付け、採用条件を設定する事もできます。
  • *が呼び出された時、スコープを相方側に変更するさくらスクリプト「\1」が自動的にトークの先頭に挿入されます。
  • 変数「会話時サーフェス戻し」が"有効"だと、上記「\1」に加えて、「デフォルトサーフェス0」「デフォルトサーフェス1」で設定されるサーフェス表示スクリプトがトークの先頭に自動挿入されます。
  • 自動挿入されるスクリプトの前に文を記述したい場合は変数「スクリプトの一番頭」を使って記述するか、後述の@を使って記述します。

単語群を定義する記号。上記と共に、トークの定義の始まりを表す記号になります。
*と異なる点は以下です。

  • @以降に定義したものは、一行ごとに単語として分割されます。
  • @の中では、*で使えたなどの記号が使えません。例外的に()のみ使えます。
  • 「\1」などのスクリプトは自動挿入されません

また、ここにトークを書くこともできますが、推奨はされません。

定義した単語群は、かっこ()を用いて(単語群名)とすることでランダムに単語を一つ呼び出すことができます。

@季節
春
夏
秋
冬

*
:(季節)はいいね〜
:どの季節でも言ってるジャン

この例では一語だけですが、長文も使えます。
また、単語の追加関数を使用すると、辞書を変更する事無くユーザー側で単語の追加を行う事もできます。

関連→内部関数:単語の追加,追加単語の削除,追加単語の全削除,合成単語群

@は単語群としてだけでなく、次の利用もされています。

  • SAORI定義 satori_conf.txtに記述)
  • 右クリックメニュー等の栞リソース (ゴースト「ポストと狛犬」では dic06_string.txt に記述)
  • ()call関数、loop関数等から呼び出すトーク・ユーザー関数
    上記は単語が1個の単語群として使用します。
    これは*でトーク・ユーザー関数を書いて()等で呼び出すとスコープとか改行とか自動挿入が入ってしまうため。参照→ユーザー関数

スコープの切り替えを行います。

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

詳細はスコープ切り替えを参照

変数の代入・削除を行います。(行頭に記載する必要があります。)
詳細は変数を参照。

$変数名【タブ】値
$変数名=値

前者は【タブ】を使用して変数名に値を文字列として代入し、後者は=によって変数名に値を計算してから代入します。
例えば、「1+1」を値として入れてから、(変数名)としてトーク中に表示させた場合、前者は「1+1」、後者は「2」と表示されます。
変数名はほぼ自由に設定できますが、名前が重複してはいけません。
変数同士のみでなく、トークの名前、単語軍の名前、情報取得変数特殊変数内部関数など全てと被らないようにする必要があります。
例えば、変数の名前を必ず「変数〜〜」にするなど、運用のルールで回避してください。

()

サーフェス切替、トーク・関数・単語群・変数の呼び出しに使い、(括弧ごと)置き換わります。プログラム経験者でも最初は戸惑う。

  • ()内に数字を記述した場合
    ゴーストのサーフェスを指定した番号の物に変更します。
    詳しく→サーフェス
  • ()内に文字を記述した場合
    該当する文(トーク)*単語群@関数変数があれば置き換えます。
    置き換える対象がなかった場合は括弧ごとそのまま表示されます。
  • ()内に何も記述しない場合
    ランダムトークに置き換わります。
*
:(5)こんにちは!
今日の貴方の運勢は(今日の運勢)だよ!

@今日の運勢
吉
凶

上の例では(5)がサーフェス変更のさくらスクリプト「¥s[5]」、(今日の運勢)が単語群にそれぞれ置換されます。

改行

()中に書かれた改行は全て無視されます。
以下極端な例ですが同じ意味です。

(へんすう)
(へ
んす


う)

入れ子

()自体を入れ子にできます。
ただし、入れ子になった括弧は内側から順に展開されることに注意してください。

@数字1
1
@数字2
2
*
((数字1)(数字2))

上の例では、まず内側の括弧が順次展開されていき、((数字1)(数字2))→(1(数字2))→(12)となり、その後外側の括弧が展開されてサーフェス変更のさくらスクリプト「¥s[12]」となります。
入れ子の回数に制限はなく、他にも以下のように関数を入れ子にすることも出来ます。

(when,(条件),(when,(条件),2つめのwhenの真,2つめのwhenの偽),1つめのwhenの偽)

括弧が展開されない場合

あとで述べるφでエスケープする場合の他に括弧が展開されないケースもあります。
(R0)(S0)の中に()で括られた文や数字があってもそれ以上括弧展開しません。(φが自動付加される)
例えば

*OnFileDrop2
:\_q\_!(R0)\_!\_q

とした場合、ファイル名に"(1)"等が入ったファイル名でもそのまま表示されます。

しかし下記のケースでは、ファイル名に"(1)"が入ってると¥s[1]に変換されてしまいます。

  • OnTranslateで何らかの処理をする
    *OnTranslate
    $引数区切り追加
    (when,(猫語フラグ),(replace(バイト値,2)(R0)(バイト値,2)です。(バイト値,2)にゃん。))
    OnTranslateではφ(1φ)が(1)になっているため、展開されてしまいます。
    これはSSPがバルーンに表示する予定の内容がそのまま(R0)に入っているためで、余分なφはバルーンに表示されないように外されています。
    参照→OnTranslate
  • saori関数などを通す
    *OnFileDrop2
    :\_q\_!(replace,(R0),\,/)\_!\_q
    ※関数の戻り値が、関数戻り値ではなく配列戻り値(S0)だと括弧展開されない。
  • =を使って変数に代入する
    *OnFileDrop2
    $ファイル名=(R0)
    :\_q\_!(ファイル名)\_!\_q
    ※【タブ】を使って変数に代入した場合やset関数を使用した場合は括弧展開されない。

このケースにおけるファイル名やユーザ名の入力等、外部から文字列を引っ張ってくるときには取り扱いに注意が必要です。

関連

コメントの始まりを表す記号、トーク中で記述するとそれ以降の文字はトークとして表示されません。
またトーク中で記述した場合それ以降の行に表示される有効文が続く場合コメント以降の改行も有効になります。

辞書

#テスト
*
:テスト#てすと
#
テスツ
#
#

実際の表示

テスト

テスツ

指定した*トークへとジャンプします。(行頭に記載する必要があります。)

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

>に続いてトーク名を記述すると、一致するトーク名があった場合そのトークにジャンプします。ジャンプ先トークが無い場合、または条件式が真にならない場合はスルーされ、次行の文を処理します。
従って、条件式による分岐に用いる最も基本的な記号になります。

  • ジャンプ先のトーク名を記述しない場合、ランダムトークにジャンプします。
  • 指定したトークを呼び出す性質から()と似ていますが、ジャンプが成立すると以降の行を処理しなくなること、単語群@を呼び出せないこと等の違いがあります。
*
>謎ジャム

*謎ジャム
:今日のご飯はー?
>ジャム未経験【タブ】(変数「ジャム」の存在)
またこのジャムか!

*ジャム未経験
$ジャム【タブ】経験した
:なに?このケバい色したジャム…。

ジャンプが成立すると、そのままジャンプ先のトークにつながるので、以降の行を処理しなくなる事を覚えておきましょう。

*
>(現在時)時トーク
>

*
>15時トーク【タブ】(現在時)==15
>

*15時トーク
:3時だよ、おやつくれ

上の例では二つのランダムトークはどちらも15時の場合のみ15時トークへジャンプし、次の行のランダムトークは実行されません。
それ以外は別のランダムトークを表示するようにしています。

あいまい検索のジャンプ。ものすごい特殊。(行頭に記載する必要があります。)

*
≫何かあいまいな文字列

*あいまい
:このトークは「≫何かあいまいな文字列」からジャンプして表示されるよ。

≫の後に文字列を入れると、その一部を名前として持つトークへジャンプします。
基本的に呼ぶべきトークがわかっている辞書内で使われることはなく、どんな文が来るかわからないコミュニケートゴースト切り替えで使われています。

詳細はこちらを参照のこと→http://d.hatena.ne.jp/ukiya/20080119/1200772181

_

バルーンに選択肢を表示してユーザーに選択させます。(行頭に記載する必要があります。)
詳細は選択肢を参照

同時起動している他のゴーストと会話に使用します。(行頭に書く必要があります)
詳細はコミュニケートを参照

φ

エスケープ記号、現時点では主に「次の特殊記号を無効化する」目的で使用します。この後で説明。
「ふぁい」で変換すると出ます。
φ記号そのものを使う場合はφφと記述してください。φが一つ出力されます。

φ(と記述してカッコを始めることで、置き換え等の特殊機能を抑制し、
単なるカッコとして出力することができます。
また、カッコ内で閉じカッコを表示したい場合はφ)で可能。
もちろん、置き換え対象が無い場合はそのままカッコつきで出力されます。

φ…とすると、replace.txtreplace_after.txtも無効化できます。


行末にφを置くと、その改行は無いものとして扱われます。
辞書

*
:あいφ
うφ
φ
えお

実際の表示

あいうえお

カッコ内では同じ処理が自動的に行われます。

*OnBoot
:φ
(whenlist、(現在時)、
<6、こんばんは。、
<11、おはようございます。、
<18、こんにちは。、
<24、こんばんは。
)

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2017-10-28 (土) 18:17:59 (26d)