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