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




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

難しく言うと、辞書内においてトーク、栞リソース、ユーザー関数の始まりを表す記号になります。
この記号の次行以降にトーク等を記述します。
*に限らず、里々の特殊記号は行頭に記述しなければ効果のないものがあります。
これらは文中では通常の文字として扱われることに注意して下さい。

以下、記述の例。

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

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

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

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

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

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

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

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


補足

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

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

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

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

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

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

前者は【タブ】を使用して変数名に値を文字列として代入し、後者は=によって変数名に値を計算してから代入します。
変数名はほぼ自由に設定できますが、いわゆる予約語にあたる情報取得変数にあるものは使うべきではありません。また、特殊変数にある里々の内部設定およびコマンド実行はこの記号を通して使用するため、こちらも変数名には使わないようにして下さい。

()

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

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

@今日の運勢
吉
凶

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

改行

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

(へんすう)
(へ
んす


う)

入れ子

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

括弧が展開されない場合

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

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

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

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

  • 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

_

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

単語群を定義する記号。 これ以降に定義したものは、一行ごとに単語として分割されます。
ここにトークを書くこともできますが、推奨はされません。

かっこを使い、(単語群名)とすることでランダムに単語を呼び出すことができます。
また、単語の追加関数を使用すると、辞書を変更する事無くユーザー側で単語の追加を行う事もできます。

@季節
春
夏
秋
冬

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

例では一語だけですが長文も使う事が出来ます。

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

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

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

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

φ

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

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

\\φuとすれば\uがちゃんと出せます。
φ…とすると、replaceも無効化できます。


行末にφを置くと、その改行は無いものとして扱われます。
次の行とつながるってことね。
カッコ内では同じ処理が自動的に行われます。

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

ついでに、カッコの中の改行は全て無視されます。


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2018-02-24 (土) 22:48:56 (54d)