里々の辞書で使う特殊記号。(全て全角入力)
トークを書くときに必要な記号。里々の全てはこれから始まると言っても過言ではありません。
難しく言うと、辞書内においてトーク、栞リソース、ユーザー関数の始まりを表す記号になります。
この記号の次行以降にトーク等を記述します。
*に限らず、里々の特殊記号は行頭に記述しなければ効果のないものがあります。
これらは文中では通常の文字として扱われることに注意して下さい。
以下、記述の例。
* :ランダムトーク1です。 * :(0)ランダムトーク2です。(道具)を使って銀行に向かいます。 :(11)落ち着け! @道具 つるはし バールのようなもの
* >カレーに関すること *カレーに関すること :スパイスの種類が少ないほど辛く! 種類が多いほどマイルドに!
*OnBoot :(5)起動完了です。 *sakura.portalsites 里々Wiki https://soliton.sub.jp/satori/index.php?FrontPage
ここでは*の他に、>、:、@、(数字)などが使われています。これらの説明はそれぞれの記号の項で説明します。さて、上記の例ですが…
ゴーストはトークの集合によって形作られるので、初めての人はよく覚えておいて下さい。
トークは候補が複数あれば普通はランダムで選択されますが、トーク名の後ろに【タブ】と条件式を付与することで、それ自体が選択される条件として設定する事が可能です。これが(トークの)採用条件です。
@単語群名【タブ】条件式
*トーク名【タブ】条件式
このように、各要素に条件式を付けると、結果が真のものだけが選択される候補となります。
#使用例 *【タブ】(現在曜日)==日 :今日は日曜日~♪ *【タブ】(現在曜日)!=日 :今日は平日。 * :今日はいい天気だね。
日曜日の時は「今日は日曜日~♪」「今日はいい天気だね。」
それ以外の日の時は「今日は平日。」「今日はいい天気だね。」
が、それぞれ候補になります。
単語群を定義する記号。
やはり行頭に記述する必要があります。
これ以降に定義したものは、一行ごとに単語として分割されます。
単語群の挙動を熟知しているならばトークを書くことも可能です。
*と同じく、後述する丸括弧()を使い、(単語群名)とすることでランダムに単語を呼び出すことができます。
また、単語の追加関数を使用すると、辞書を変更する事無くユーザー側で単語の追加を行う事もできます。
@季節 春 夏 秋 冬 * :(季節)はいいね~ :どの季節でも言ってるジャン
例では一語だけですが長文も使えます。
関連→:関数一覧 単語の追加、追加単語の削除、追加単語の全削除、合成単語群
ざっくり言えば@による単語群は「トークではない」というのが*との違いです。
一行ごとに分割されることと、単語群で使える専用の関数がある、末尾に改行が含まれない、といったところ。
末尾に改行が含まれないので、単語群としてだけでなく次のような時も利用されています。
スコープの切り替えを行います。詳細はスコープ切り替えを参照
ざっくりいうと、:がくる度に\0(本体側)と\1(相方)が交互に入れ替わります。
* :おはよう :こんにちわ :なんでやねん!
この例では、本体側「おはよう」、相方「こんにちは」、本体側「なんでやねん!」、という順で喋ります。
* おはよう :こんにちわ :なんでやねん!
上の例は相方「おはよう」、本体側「こんにちは」、相方「なんでやねん!」。
つまり上の例と喋る人物が逆になります。
挙動的には、最初の:は\0に置換されます。
なので:が来るまでの最初の文章は\1(相方)の台詞になるというわけです。
変数の操作を行います。
主に値を代入をしたり、削除したりします。
行頭に記述する必要があります。
変数の詳細は変数を参照。
$変数名【タブ】値
$変数名=値
前者は【タブ】を使用して変数名に値を文字列として代入し、後者は=によって変数名に値を計算してから代入します。
変数名はほぼ自由に設定できますが、いわゆる予約語にあたる情報取得変数にあるものは使うべきではありません。また、特殊変数にある里々の内部設定およびコマンド実行はこの記号を通して使用するため、こちらも変数名には使わないようにして下さい。
サーフェス切替、トーク・関数・単語群・変数の呼び出しに使い、(括弧ごと)置き換わります。
プログラム経験者でも最初は戸惑う。
* :(5)こんにちは! 今日の貴方の運勢は(今日の運勢)だよ! @今日の運勢 吉 凶
上の例では(5)がサーフェス変更の¥s[5]、(今日の運勢)が単語群にそれぞれ置換されます。
()中に書かれた改行は全て無視されます。
以下極端な例ですが同じ意味です。
(へんすう)
(へ んす う)
()自体を入れ子にできます。
ただし、入れ子になった括弧は内側から順に展開されることに注意してください。
φでエスケープする以外でも、括弧が展開されないケースもあります。
(R0)や(S0)の中に()があっても、それ以上括弧展開しません。(φが自動付加されているようだ)
例えばイベントのOnFileDrop2で、名前に"(1)"等が入ったファイルを渡された場合。
(R0)
(replace,(R0),\,/)
$ファイル名=(R0) (ファイル名)
これらを使用したとき、一つ目の記述はファイル名がそのまま表示されます。
二つ目の記述は関数を通したケースで、¥s[1]に変換されてしまいます。ただし(S0)は大丈夫。
三つ目は先に変数に保存してから呼び出すケース。やっぱり¥s[1]に変換されてしまいます。
関連
コメントの始まりを表す記号。
トーク中で記述するとそれ以降の文字はトークとして表示されません。
またトーク中で記述した場合それ以降の行に表示される有効文が続く場合、コメント以降の改行も有効になります。
辞書
#テスト * :テスト#てすと # テスツ # #
実際の表示
テスト テスツ
指定した*トークへとジャンプします。
行頭に記述する必要があります。
>ジャンプ先
>ジャンプ先【タブ】条件式
>に続いてトーク名を記述すると、一致するトーク名があった場合そのトークにジャンプします。
ジャンプ先トークが無い場合、または条件式が真にならない場合はスルーされ、次行の文を処理します。
従って、条件式による分岐に用いる最も基本的な記号になります。
* >謎ジャム *謎ジャム :今日のご飯はー? >ジャム未経験【タブ】(変数「ジャム」の存在) またこのジャムか! *ジャム未経験 $ジャム【タブ】経験した :なに?このケバい色したジャム…。
ジャンプが成立すると、そのままジャンプ先のトークにつながります。
* >(現在時)時トーク > * >15時トーク【タブ】(現在時)==15 > *15時トーク :3時だよ、おやつくれ
上の例では二つのランダムトークはどちらも15時の場合のみ15時トークへジャンプします。(それ以外は別のランダムトーク)
演算子については演算子一覧を参照して下さい。
あいまい検索のジャンプ。ものすごい特殊。
詳細はこちらを参照のこと→https://ukiya.hatenadiary.org/entry/20080119/1200772181
里々Mc163-1以降で使用可能。
「タグ検索」によってジャンプ。
* :きょうのおやつはね・・・ ≧たべもの「 おやつ *たべもの「 ごはん おやつ :ホットケーキにしよう! *たべもの「 ごはん :お好み焼きがいいな。 *たべもの「 おやつ :たいやきに決定!
上の例では『たべもの 「○○』の中から『おやつ』のタグがあるものを探し、当てはまるものの中からランダムに選んでジャンプする。
結果は「ホットケーキ」か「たいやき」のトークのどちらか。
コミュニケートと違ってタグは「完全一致」しているものだけがジャンプ先の候補になるので「もも」と「すもも」は別物扱い。
『「』の次やタグの間には全角スペースをいれる。
なお、ジャンプ先の書き方はあいまい検索やコミュニケートと同じ書き方。
バルーンに選択肢を表示してユーザーに選択させます。
行頭に記述する必要があります。
詳細は選択肢を参照。
同時起動している他のゴーストと会話に使用します。
→は行頭に書く必要があります。
詳細はコミュニケートを参照。
エスケープ記号。
現時点では主に「次の特殊記号を無効化する」目的で使用します。
「ふぁい」で変換すると出ます。
φ記号そのものを使う場合はφφと記述してください。φが一つ出力されます。
色々なものを無効化するので、たとえばφ(と記述してカッコを始めると、置き換えせず単なるカッコとして出力します。
閉じカッコを表示したい場合はφ)で。
もちろん、置き換え対象が無い場合はそのままカッコつきで出力されます。
\\φuとすれば\uがちゃんと出せます。
φ…とすると、replaceも無効化できます。
行末にφを置くと、その改行は無いものとして扱われます。
次の行とつながるってことね。
カッコ内では同じ処理が自動的に行われます。
*OnBoot :φ (iflist、(現在時)、 <6、こんばんは。、 <11、おはようございます。、 <18、こんにちは。、 <24、こんばんは。 )
ついでに、カッコの中の改行は全て無視されます。