里々まとめ

  • 里々WikiやSatoriSpecWikiとは一味違う里々の文法のまとめを目指しています。
  • もうずっと書きかけです
    • デマやウソ情報を見つけたら一番下のコメントフォームへ報告お願いします。
  • 俺、このWikiを書き終えたら界隈から離れるんだ……。

もくじ


里々関連ファイル


satori.dll

初期状態

  • 初期状態では下記が実行された状態になってます。
    $引数区切り追加	、
    $引数区切り追加	、
    $引数区切り追加	,
    $引数区切り追加	,
    $引数区切り追加	(sprintf,%c,1)
  • これらを削除してしまうこともできます。
  • 引数区切りの設定は保存されません。*OnSatoriLoad?で設定するか、あるいは一時的に利用して戻すような感じで。

ssu.dll

  • satori.dllの機能を補うSAORI
  • 「里々はゴースト作成に最小限の機能しか実装しない」という理念のもとに別々になっている。
  • 機能は後述

satorite.exe

  • 里々スクリプトのデバッグ用ソフト。
  • satori.dllをUIをつけたもの。
  • satori.dllと同じフォルダに入れて使うと辞書をロードしてくれる。
  • もちろんsatori_conf.txtも読み込むのでSAORIも使える。
  • 窓中の里々スクリプトを解釈してSakuraScriptを生成し、起動中のゴーストにDirectSSTPで送る。
  • れしばでも内部の動作が見られる。
  • 前回の状態を保存しておいて、次の起動時にはその内容を復帰します。
    • 記録ファイルはsatorite.dat。

れしば.exe

  • satori.dllやsatorite.exeから送られてくる里々スクリプトの実行ログを表示する。
  • 「リアルタイムで表示する」とれしばの表示が追いつかなくて里々本体の処理も遅くなる。
  • Ctrl+Sでログ内容をれしば.exeと同じフォルダにれしば.txtとして保存できる。
    • リアルタイムで表示せず、F5とCtrl+Sを使いまわすと複雑な里々スクリプトの実行ログも追いやすい
      • 表示が速すぎてログを見る前に流れてしまうときに便利。

satori_pack.exe

  • dic***.txtのあるフォルダにsatori_pack.exeを置いて実行。
  • 里々辞書を暗号化したdic*.satを生成できます。

satori_license.txt

  • 里々の著作権について書いてある。
  • 修正BSDライセンスとか。
  • 里々を配布する上で必須のファイル。
  • 別に里々が読み込むわけではない。人間が読むためのもの。
  • 里々を使ってゴーストを配布する際には忘れずにいれておくこと。

里々が読み込むファイル


ファイル読み込み順序

  1. replace.txt
  2. replace_after.txt
  3. characters.ini
  4. satori_conf.txt
  5. satori_savedata.txt
  6. satori_savedata.sat
  7. dic***.txt
  8. dic***.sat

replace.txt

  • 里々が辞書やセーブデータを 読 み 込 む と き に辞書やセーブデータの内容を置換する。
  • 実際にはない里々スクリプトを書いたとしても、ここで整形できる。
  • このファイルがなくても里々は動きます。というか、里々は何もなくても動く。タフなのだ。
    • replace.txt, replace_after.txtのタブ区切り解釈 †
    • 区切り符であるタブ記号が連続していた場合、2つめ以降を無視していた。これを先頭のタブ記号だけを区切り符とし、以降に出現したタブ記号は置き換え後文字列として扱うように変更。
    • また、連続しない複数のタブ記号が含まれる行は存在を無視していたので修正。
  • 文法
    [置換前の単語]【タブ】[置換後の単語]【改行】
  • 【タブ】		
    (hoge,	(call,hoge,
  • 実用例

replace_after.txt

  • 簡易トランスレータ。
  • 里々がMAKOTOトランスレータを積んでるような。
  • 里々が里々スクリプトを実行後、生 成 さ れ た SakuraScript を置換する。
  • このファイルがなくても里々は動きます。
    • replace.txt, replace_after.txtのタブ区切り解釈 †
    • 区切り符であるタブ記号が連続していた場合、2つめ以降を無視していた。これを先頭のタブ記号だけを区切り符とし、以降に出現したタブ記号は置き換え後文字列として扱うように変更。
    • また、連続しない複数のタブ記号が含まれる行は存在を無視していたので修正。
  • replace.txtと同じ文法。
    [置換前の単語]【タブ】[置換後の単語]【改行】
  • 。	。\w8
    、	、\w5
  • 実用例
    • 本体にさくらスクリプトを返す直前、つまり「しゃべる直前」に置き換えます。
    • 例えば、
      :(ゴースト名)さん、またねー
    • みたいなのが
      ととたんさん、またねー
    • になってしまうのを防ぐために、
      たんさん	たん
    • と書くと。
    • replace.txtだと、まだカッコが展開されてないので「たんさん」になっておらず、置き換えが効かないわけです。逆に、カッコを含むものはreplace_after.txtだと既に展開されており、手遅れなわけです。
    • このへんが影響しない場合は、どっちでも同じです。
      • 「里々Wiki - replace.txtとreplace_after.txt」より転載

characters.ini

  • 説明
    • キャラクター設定ファイル。
    • [名前の頭文字]:でスコープ指定可能になる。
    • 現在、名前の情報はfamily-nameしか使用されていない模様。
    • このファイルがなくても里々は動きます。
  • 文法
    [半角スコープ番号]
    popular-name=[一般名、名前]
    initial-letter=[名前の頭文字]
    full-name=[フルネーム]
    family-name=[性]
    first-name=[名]
    base-surface=]デフォルトサーフェス番号]
  • [0]
    popular-name=名雪
    initial-letter=名
    full-name=水瀬名雪
    family-name=水瀬
    first-name=名雪
    base-surface=0
    
    [1]
    popular-name=あゆ
    initial-letter=あ
    full-name=月宮あゆ
    family-name=月宮
    first-name=あゆ
    nickname=あゆあゆ
    base-surface=500
    
    [2]
    popular-name=栞
    initial-letter=栞
    full-name=美坂栞
    family-name=美坂
    first-name=栞
    base-surface=1000
    
    [3]
    popular-name=真琴
    initial-letter=真
    full-name=沢渡真琴
    family-name=沢渡
    first-name=真琴
    nickname=まこぴー
    base-surface=1500
    
    [4]
    popular-name=舞
    initial-letter=舞
    full-name=川澄舞
    family-name=川澄
    first-name=舞
    base-surface=2000
    • このとき、辞書内では
      名:\p[0]
      あ:\p[1]
      栞:\p[2]
      真:\p[3]
      舞:\p[4]
    • のように置換される
  • 関連リンク
  • http://yagi.xrea.jp/SatoriSpecWiki/pukiwiki.php?cmd=read&page=%CA%B8%CB%A1%BE%E5%A4%CE%CC%E4%C2%EA&word=replace#content_1_17 -- SatoriSpecWiki

 影響範囲は

  • 一般名(未使用)
  • 基本サーフェス(サーフェス加算値)
  • 頭文字(う: さ: とかに使える)

satori_conf.txt

  • 説明
    • 里々の設定ファイル。
    • 里々が辞書及びセーブデータをロードをする前に読み込まれる。
    • 変数の初期化とSAORI呼び出しについて定義する。
    • このファイルがなくても里々は動きます。
  • *初期化
    • 説明
      • 変数等の初期化。
      • 上書きしないので、途中追加した変数にも初期値を設定できます。
      • 里々がセーブデータや辞書を読み込む前に初期化変数を定義する。
      • SAORI定義よりも先に読まれるのでSAORIは使用できない。
      • 謎の理由で里々の内部関数も使用できない。
      • トークを書いても無視される。
      • $辞書フォルダ
        *初期化
        $辞書フォルダ【タブ】mjk
        $辞書フォルダ【タブ】kwsk
        としたとき、
        *初期化
        $辞書フォルダ【タブ】.,mjk,kwsk
        と同義。satori.dllのルートフォルダは強制的に読み込まれ、他の辞書フォルダもまとめて読み込まれてまう。
  • ↑確認できませんでした。間違いのようです。
    • 推定される原因は下記の通り。
  • ここに辞書フォルダを定義するとロードするたびに必ずその指定した辞書フォルダが読み込まれます。
    • ここでの辞書フォルダ定義はセーブデータには反映されません。
      • 例えば
        *初期化
        $辞書フォルダ【タブ】mjk
*セーブデータ
$辞書フォルダ【タブ】.

であったとき、実質的に

$辞書フォルダ【タブ】mjk,.

となります。 しかし、里々アンロード時や手動セーブ時に出力されるsatori_savedata.txtには

*セーブデータ
$辞書フォルダ【タブ】.

としか記載されません。

  • つまり、satori_conf.txtに書かれた辞書フォルダの内容は、セーブデータによって上書きされるのではなく、追記されます。
  • 文法
    • 通常トークと同じ。
  • @SAORI
    • 説明
      • 各栞共通プラグイン規格『SAORI』用の定義。
      • 使うdllは予めここで列挙してください。
      • カンマ区切りで、左から順に
      • ・辞書からの呼び出すときの名前。dll名そのままでも構いません。
      • ・プラグインdllの相対パス。スラッシュ「/」、バックスラッシュ「\」どちらでも可。
      • ・自動設定される引数。これは省略可。
    • 文法
      [SAORI呼び出しに使う名前]【半角カンマ】[satori.dllからSAORIまでの相対パス][【半角カンマ】[引数1]【半角カンマ】[引数2]【半角カンマ】...]【改行】
  • *初期化
    $喋り間隔	180秒
    $喋り間隔誤差	10%
    $会話時サーフェス戻し	有効
    $デフォルトサーフェス0	0
    $デフォルトサーフェス1	10
    $スコープ切り換え時	\n[half]
    $ユーザ名	ユーザ
    $自動挿入ウェイトの倍率	100%
    
    @SAORI
    fill_desktop,saori/fill_desktop.dll
    fill_red,saori/fill_desktop.dll,255,0,0
    mciaudio,saori/mciaudio.dll
  • 関連リンク

satori_savedata.sat


satori_savedata.txt

  • 説明
    • 里々のセーブデータ。
    • (単語の追加)で追加した単語もここに保持される
  • *セーブデータ
    • 説明
      • 変数がソートされて列挙される。
      • 特殊変数「ゴースト起動時間累計ミリ秒」は強制的に書き込まれる。
      • 特殊変数「起動回数」は強制的に書き込まれる。
      • 変数「辞書フォルダ」の値も保存される。
  • @○○
    • 説明
      • (単語の追加)で追加した値が保存される。
      • (追加単語の削除)で消せる。
  • *セーブデータ
    $ゴースト起動時間累計ミリ秒	15650236
    $サーフェス加算値0	0
    $サーフェス加算値1	0
    $スコープ切り換え時	\n[half]
    $デフォルトサーフェス0	0
    $デフォルトサーフェス1	10
    $ユーザ名	ユーザ
    $会話時サーフェス戻し	有効
    $起動回数	19
    $自動挿入ウェイトの倍率	100
    $辞書フォルダ	.
    $選択ID	気分はどう?
    $選択ラベル	気分はどう?
    $選択番号	3
    $喋り間隔	180秒
    $喋り間隔誤差	10%
    
    @hoge
    hoge
    HOGE
    hoge
    HOGE
    ほげ
    ホゲ
    ホゲ
    
    @ぬるぽ
    ガッ!

satori_savebackup.sat

  • セーブデータのバックアップの暗号化バージョン。
  • satori_savebackup.txtの項を参照。

satori_savebackup.txt

  • セーブデータのバックアップ。
  • 里々のセーブデータが消える?というバグ対策の名残。
  • 実際にはSSPのバグだったらしい。
  • このファイルは里々にはロードされません。
  • (多分)書き出し専用です。

dicAnchor.txt

  • 特殊辞書。
  • 他の辞書ファイルのトーク中にこのファイルに書いたトークの名前があった場合、自動的にアンカーになる。
  • \_a[]
    • dicAnchor.txt
      *親父の秘密
      :実はでべそ。
    • dic○○.txt
      *
      :僕の親父の秘密知りたい?
      :いいや。
      • →\1\0僕の\_a[親父の秘密]知りたい?\n\1いいや。\w8\e

dic○○.sat

  • 説明
    • 暗号化辞書ファイル
    • 詳しくはdic○○.txtの項を参照。

dic○○.txt

  • 7文字以上。最低「dic.sat」「dic.txt」
  1. dicAnchor.txt
    • 自動アンカー用の特殊な処理がされる
■2009/11/05■

里々のアンカー処理の話。既出、間違い、勘違いでしたらスミマセン。
dicAnchor.txtに半角英数字が先頭に来るワードを登録した場合に、
トーク内の書き出しまたは改行の先頭に登録ワードが来た場合、
もしくはその行の登録ワードの直前が半角英数字の文字列のみの場合、
アンカー処理がスルーされます。

先頭が半角英字の ABCの歌 という語句をdicAnchor.txtに登録していた場合の
アンカー処理がスルーされる具体例として、

*
:ABCの歌アンカーテストです。
:アンカーされてへんな。
:あれれ。

*
:え~っともう一回、
ABCの歌アンカーテストです。
:やっぱアンカーされてへんな。
:あれれ~。

*
:三度目の正直!
194ABCの歌アンカーテスト!
KONDOKOSOABCの歌アンカーテスト!
\w6ABCの歌アンカーテスト~!
:今回もアンカーされてへん。
:そんな~

3つ目の例はかなり無理やりですが・・・。で、これを回避する方法として、

dicAnchor.txtに ABCの歌 のように先頭文字(A)だけ全角で登録し、
ABCの歌【タブ】\_a[ABCの歌]ABCの歌\_a
とreplace.txt(replace_after.txtでも可)に登録する方法や、

「ABCの歌」【タブ】\_a[ABCの歌]ABCの歌\_a
とreplace.txt(replace_after.txtでも可)に登録し、
アンカーさせたい語句はトーク辞書内で「ABCの歌」のように括弧付きで書く(バルーン内では括弧なしで表示されます)という方法があります。

こんな面倒なことしなくても、全角登録・全角表示でいいじゃんって話かもですけど。

文法


前書き

トーク宣言、または単語群宣言が存在する行までは前書き空間となります。 ここには何を書いても構いません。すべてエスケープされます。


トーク要素

*[トーク名]【タブ】[採用条件式]    ←[トーク宣言]
[トーク本文]             ←[トーク空間]
  • トークはトーク宣言とトーク空間からなります。
  • トークとは、“ゴーストの会話及びその挙動”を簡単に記すための定義です。
    • “ゴーストの会話及びその挙動”とは、SakuraScriptのことです。 例
      *[トーク名]【タブ】[採用条件式]
      :¥hのスコープ。
      :¥uのスコープ。
      これは
      \1\s[10]\1 \n[half]\_w[9]\0¥hのスコープ。\_w[48]\n \n[half]\_w[9]\1¥uのスコープ。\_w[48]\e
      こんな風になる。ウエイトやら半行改行やらは設定で変更できる。
      →特殊変数

¥uから喋る

*[トークラベル]【タブ】[採用条件式]
¥uのスコープ。
:¥hのスコープ。
:¥uのスコープ。

characters.iniを設定していると

*[トークラベル]【タブ】[採用条件式]
:¥hのスコープ。
:¥uのスコープ。
名:¥p[0]のスコープ。
あ:¥p[1]のスコープ。
栞:¥p[2]のスコープ。
真:¥p[3]のスコープ。
舞:¥p[4]のスコープ。

とかできる。


トーク宣言

*[トーク名]
*[トーク名]【タブ】[採用条件式]
  • トーク宣言を行うには、行頭に「*」と入力します

トーク名

  • 「*」以降はトーク名になります。
  • トーク名には文字列を使います。
  • 同じトーク名の複数のトーク要素があった場合、ランダムに1つ選ばれます。
  • トーク名末尾に「「」をつけると、コミュニケートサーチに引っかかるようになります。
    ■里々のあいまい検索について
    
    ・以下の記載において△は全角空白を表します。
    ・以下の記載において""はキーワードを示す表現であり、実際の
     処理中または辞書中には記載しません。
    
    【サマリ】
    ・あいまい検索は、コミュニケート及び"≫"記法において用いられます。
    ・あいまい検索では、△で区切った単語の得点を評価して行われます。
    ・あいまい検索は、ゴースト名部分が異なる候補を選ばなくなりました。
     (Mc136-901にて実装、MC139-3にて再修正)
    
    【前提】
    
    ・コミュニケートとユーザ入力は同じ処理です。
     ユーザ入力の場合、ゴースト名を"ユーザ"と読み替えてください。
    
    ・対象文とは以下のものを言います
     (1)コミュニケートで他のゴーストのしゃべった言葉
        対象文=ゴースト名「コミュニケート文字列」
    
     (2)辞書内で"≫"記法で記載された文
        対象文="≫"以降の文字列そのまま
    
    ・候補文とは以下のものを言います
     辞書内の"*○○「△ほげほげ△へもへも ・・・"形式の記載
    
    ・特定候補文は、"○○"のあるものを、汎用候補文は、"○○"の無いものを言います。
     (例)
     *ユーザ「△ほげほげ =特定候補文
     *「△へもへも    =汎用候補文
    
    ・対象文に"「"が含まれるかどうかによって動作が異なります(MC139-3からの新機能)
     対象文に"「"が含まれる場合を名前限定モード、
     対象文に"「"が含まれない場合を通常コミュ探索モードと呼びます。
     MC139-3より前の場合、常に通常コミュ探索モードです。
    
    【候補の絞込み処理】
    (1)名前限定モードの場合
    ・ヒットする候補は、特定候補文のうち○○の部分が一致するものと、
     汎用候補文に絞られます。
    ・ヒットテストの処理は、"「"以降の文字列についてのみ行われます。
     (具体的には、対象文から"「"までの文字列が除かれ、
      候補文から最初の単語("○○「"もしくは"「")が除かれます)
    
    (2)通常コミュ探索モードの場合
    ・ヒットテストする候補は、候補文すべてです。
    ・ヒットテストする対象は、対象文そのままです。
    ・つまり、ヒットテストの処理は、"○○「"もしくは"「" 部分も
     1つの単語とみなして行われます。
    
    【ヒットテスト】
    ・絞込み後の候補文すべてを、△で分解し、単語にします。
    ・単語のそれぞれの部分が、対象文に含まれているかどうかのテストが行われます。
    ・対象文に単語が含まれていればヒットです。
    
    ・ヒットした単語は10点+単語の長さ1文字につき1点の得点を得ます。
    ・但し、最後が「で終わっている単語は4点固定です。
    ・ヒットしなかった単語は、コミュニケートの場合0点、≫記法の場合-999点です。
    ・それぞれの単語の点数を合計したものが、その候補文の得点となります。
    
    【結果確定】
    ・最高点を得た候補文が最終的な結果となります。
    ・ただし、4点以下のものしかなかった場合は結果なしとなります。

採用条件式

  • 式が1を返した場合、採用されます。
  • 同じトーク名の複数のトーク要素が採用された場合、ランダムに1つ選ばれます。
  • トーク名が同じで、採用条件式が書いてあるトーク要素と、採用条件式を書いていないトーク要素が混在した場合、
    • phase124までは 条件式なしトーク要素のグループだけで評価
      *起動            ←評価対象が無いので真、ランダムにどちらか採用
      *起動            ←評価対象が無いので真、ランダムにどちらか採用
      *起動【タブ】(現在時)==11 ←式に関係なく評価されない。不採用
      *起動【タブ】(現在時)==12 ←式に関係なく評価されない。不採用
    • phase Mc-*からは 先に条件式のあるトーク要素を評価して、真のトーク要素が無かった場合、条件式のないトーク要素がランダムに採用される
      *起動            ←条件式つきトーク要素が採用されなかった場合、どちらかを採用
      *起動            ←条件式つきトーク要素が採用されなかった場合、どちらかを採用
      *起動【タブ】(現在時)==11 ←式が真なら採用
      *起動【タブ】(現在時)==12 ←式が真なら採用
      • として扱われます。

トーク空間

  • トーク空間にはゴーストに関する挙動を書いていきます。
  • 最後の文字列のある行までがトーク空間になります。 トーク空間では、変数代入、ジャンプ、選択肢、コミュニケート、コミュニケートサーチが出来ます。

変数代入

$[変数名]【タブ】[値]
$[変数名]=[値]
  • 「=」で代入すると、値が式と見なされ、計算可能ならば、計算されてから変数に代入されます。
    $計算結果=1+1
    :1+1は、(計算結果)!
    :小学生か。
  • 変数に【タブ】で代入した場合はそのまま値が代入されます。
  • 変数名には変数も指定できます。
    $(今晩のおかず)【タブ】おいしかった。

変数。=で計算式代入の場合、値を計算。タブの場合文字列として扱う。 数字のみの変数名無効。代入するものが無かった場合変数の削除


ジャンプ

>[トーク名]
>[トーク名]【タブ】[採用条件式]
  • トーク本文を他のトーク要素のトーク本文に繋げて分岐することができます。
  • 単語群要素へはジャンプできません。ジャンプできるのはトーク要素だけです。
  • トーク名には変数を指定できます。

完全一致ジャンプ

>変数ジャンプ_(利用変数)

とした場合、(利用変数)が存在していなければ「変数ジャンプ_」がジャンプ先になる。 ssu.dllとの兼ね合いも考えれば、出来るだけ初期化した方がいいかも。・・・要検証!

コミュニケートサーチ

and検索ジャンプ。


選択肢

_[トーク名]
_[選択肢ラベル]【タブ】[トーク名]
_選択肢ラベル【タブ】ジャンプ先

(全角アンダーバー) 選択肢。SakuraScript置き換え。


話しかけ


トーク本文

  • トーク空間のスコープはうにゅう側から始まります。
    • さくら側から会話を始めるときにはスコープ切り替えを使います。
      :こんにちは。さくらです。
      :どうも、うにゅうです。
      \1\s[10]\0こんにちは。\w9さくらです。\w9\n\n[half]\w9\w9\1どうも、\w5うにゅうです。\w9\e
    • スコープ切り換えをすると、初期設定で半分改行するのSakuraScript「\n\[half]」が自働挿入されます。
      • 特殊変数「スコープの切り替え時」で設定できます。
  • トーク空間でトーク本文を改行すると、改行するSakuraScript「\n」が自働挿入されます。
    • 自働改行を無効にしたい場合は行末にエスケープ文字「φ」を書きます。
      こんφ
      にちは
      \1\s[10]こんにちは\e
  • 「。」「、」「!」「?」などには自動的にSakuraScriptのウェイトタグが挿入されます。
    • 特殊変数「自働挿入ウェイトの倍率」や「自働挿入ウェイトタイプ」で自働挿入ウェイトの設定ができます。
  • トーク本文の末尾には\eが自働挿入されます。

単語群

単語群解釈 †

 各行が要素。それぞれに定義行が適用される。

 末尾空行を認識しないのはまぁいいか。明示的に「文字列」を指定する書式を用意する?

  • 単語群定義 := 単語群宣言 単語内容+
  • 単語群宣言 := '@' 単語群名 '\n'
  • 単語群名 := 文字列
  • 単語内容 := 項 '\n'
  • 項 := (文字列|かっこ)+

単語群宣言


単語群名


採用条件


単語空間


括弧

  • かっこ := '(' 項 (区切り子 項)* ')'
  • 区切り子 := がんばれ。

 情報取得系   条件として取得されるケース  情報設定系   そのまま

文字列の再解釈(eval)

文字列 := ('(' | ')' | ':')以外*

エスケープ

コメントアウト

演算子

演算

論理演算

文字列操作

==、!=で両辺の文字列が同じかどうか比較。 -で左辺から右辺文字列消去。 *で、例えば■*5なら■■■■■。 <、>、>=、<=は文字列の長さを比較。

変数

  • 計算式(calc、calc_float、SAORI引数、ジャンプ時条件)

http://yagi.xrea.jp/SatoriSpecWiki/pukiwiki.php?%CA%B8%CB%A1

スコープ切り替え。

  • 関連リンク

コミュニケートについて

  • http://d.hatena.ne.jp/ukiya/20080119/1200772181#seemore
  • より転載。
    ■里々のあいまい検索について
    
    ・以下の記載において△は全角空白を表します。
    ・以下の記載において""はキーワードを示す表現であり、実際の
     処理中または辞書中には記載しません。
    
    【サマリ】
    ・あいまい検索は、コミュニケート及び"≫"記法において用いられます。
    ・あいまい検索では、△で区切った単語の得点を評価して行われます。
    ・あいまい検索は、ゴースト名部分が異なる候補を選ばなくなりました。
     (Mc136-901にて実装、MC139-3にて再修正)
    
    【前提】
    
    ・コミュニケートとユーザ入力は同じ処理です。
     ユーザ入力の場合、ゴースト名を"ユーザ"と読み替えてください。
    
    ・対象文とは以下のものを言います
     (1)コミュニケートで他のゴーストのしゃべった言葉
        対象文=ゴースト名「コミュニケート文字列」
    
     (2)辞書内で"≫"記法で記載された文
        対象文="≫"以降の文字列そのまま
    
    ・候補文とは以下のものを言います
     辞書内の"*○○「△ほげほげ△へもへも ・・・"形式の記載
    
    ・特定候補文は、"○○"のあるものを、汎用候補文は、"○○"の無いものを言います。
     (例)
     *ユーザ「△ほげほげ =特定候補文
     *「△へもへも    =汎用候補文
    
    ・対象文に"「"が含まれるかどうかによって動作が異なります(MC139-3からの新機能)
     対象文に"「"が含まれる場合を名前限定モード、
     対象文に"「"が含まれない場合を通常コミュ探索モードと呼びます。
     MC139-3より前の場合、常に通常コミュ探索モードです。
    
    【候補の絞込み処理】
    (1)名前限定モードの場合
    ・ヒットする候補は、特定候補文のうち○○の部分が一致するものと、
     汎用候補文に絞られます。
    ・ヒットテストの処理は、"「"以降の文字列についてのみ行われます。
     (具体的には、対象文から"「"までの文字列が除かれ、
      候補文から最初の単語("○○「"もしくは"「")が除かれます)
    
    (2)通常コミュ探索モードの場合
    ・ヒットテストする候補は、候補文すべてです。
    ・ヒットテストする対象は、対象文そのままです。
    ・つまり、ヒットテストの処理は、"○○「"もしくは"「" 部分も
     1つの単語とみなして行われます。
    
    【ヒットテスト】
    ・絞込み後の候補文すべてを、△で分解し、単語にします。
    ・単語のそれぞれの部分が、対象文に含まれているかどうかのテストが行われます。
    ・対象文に単語が含まれていればヒットです。
    
    ・ヒットした単語は10点+単語の長さ1文字につき1点の得点を得ます。
    ・但し、最後が「で終わっている単語は4点固定です。
    ・ヒットしなかった単語は、コミュニケートの場合0点、≫記法の場合-999点です。
    ・それぞれの単語の点数を合計したものが、その候補文の得点となります。
    
    【結果確定】
    ・最高点を得た候補文が最終的な結果となります。
    ・ただし、4点以下のものしかなかった場合は結果なしとなります。

単語群


演算子



括弧

括弧

  • かっこ := '(' 項 (区切り子 項)* ')'
  • 区切り子 := がんばれ。

 情報取得系   条件として取得されるケース  情報設定系   そのまま

文字列の再解釈(eval)

文字列 := ('(' | ')' | ':')以外*


○○

単語を選択した

○○

*に定義があれば文を取得

○○

変数名であれば変数の内容を返す

サーフェス切り替え

「:」(数字)引くことの現在のスコープのデフォルトサーフェスの値。

*
:(6)→\s[6]
:(0)\s[10]
:(10)\s[10]
:(11)\s[21]

見つからなかった。通常喋り?


変数


  • 計算式(calc、calc_float、SAORI引数、ジャンプ時条件)

イベント


特殊イベント

OnBoot

  • OnFirstBoot」が無かった場合。
  • 「初回」が無かった場合。
  • OnGhostChanged」が無かった場合。
  • 「他のゴーストから変更」が無かった場合。 このラベルのトークが無かった場合、「起動」へ飛ぶ。

OnClose

  • OnGhostChanging」が無かった場合。
  • 「他のゴーストへ変更」が無かった場合。
  • OnGhostCalled」が無かった場合? このラベルのトークが無かった場合、「終了」へ飛ぶ。

OnGhostChanged

このラベルのトークが無かった場合、「他のゴーストから変更」へ飛ぶ。

OnGhostChanging

このラベルのトークが無かった場合、「他のゴーストへ変更」へ飛ぶ。

OnMouseDoubleClick

このラベルのトークが無かった場合、自動的に下記のように補完される。

*OnMouseDoubleClick
>(R3)(R4)つつかれ
()

OnMouseWheel

ころころ

OnAnchorSelect

OnChoiceSelect

$選択ラベル【タブ】(R0)
$選択名【タブ】(R1)

・・・わすれた!(ぇ

OnCommunicate

このトークが無かった場合、里々が独自にコミュニケート探索を行う。 詳しくはコミュニケートを参照。

OnSecondChange

  • 存在するタイマのディクリメント
    • →タイマがカウントされる。
  • 自動セーブ
    • →自動セーブのタイミングならセーブされる。
  • タイマ
    • →タイマが発動したかどうか確認する
  • タイマ予約発話
  • 自動発話
    • →しかるべきタイミングならランダムトークをする
  • 喋らない
    • →とくにすることがなければしゃべらない。
  • scriptへの付与処理
  • 喋りカウント初期化
    • 初回のみ。続行時にはここでクリアはしない。
  • 1トーク中でのみ有効な重複回避をクリア
  • バルーン位置が有効なら設定

OnSurfaceChange

OnUpdateReady

OnWindowStateRestore

OnShellChanged

OnSurfaceRestore

OnRecommendsiteChoice


独自イベント

  • 関連リンク

OnSatoriLoad

  • satori.dllのロードが終了したとき。
  • OnSatoriLoadは変数の初期化とか設定とか里々の内部の準備用イベントとして使う
    • 例:単語群の処理とか
  • トーク無視。

OnSatoriUnload

  • satori.dllのアンロードの直前。
  • トーク無視。

OnSatoriBoot

  • OnSatoriLoad」の後、ベースウェアからイベントが送信され始める直前。
  • OnSatoriBootは起動イベント全般に分岐をかけたい時に使うといいかも
    • 例:特定の日付の起動トークとか
    • OnSatoriBootでトークを書くと、どういうわけかOnBootOnGhostChangedOnGhostCalled(多分)が発生しなくなります
  • おそらく里々がOnSatoriBootのイベントを処理したときにトークがあった場合、そのトークをOnBootOnGhostChanged、OnGhostCalledの本来のイベント処理を無視して使っているのかと。

OnSatoriClose

  • OnCloseの後。

OnTalk

(R0):0なら「今話すべきトークはない=ランダムトークでいい」、1なら予約あり。 (R1):(R0)が1の場合、そのトーク名。

COMMUNICATE該当なし

OnCommunicate」が無く、里々が独自のコミュ探索を行った後で、一致するトークがなかったときに呼び出される。

OnDirectSaoriCall

  • (sync)でSAORIを呼び出したとき。

初回

起動

終了

他のゴーストから変更

他のゴーストへ変更

消滅指示

消滅撤回

消滅決定

消滅中断

特殊単語群

@\ms

%msを定義

@\ml

%mlを定義

@\mc

%mcを定義

@\mh

%mhを定義

@\mt

%mtを定義

@\me

%meを定義

@\mp

%mpを定義

@\m?

%m?を定義

@\dms

%dmsを定義

オーナードローメニュー定義

sakura.recommendsites

()展開有効です。


SAORI

  • 関連リンク

(S[数字])

SAORIなどコール時の結果処理

  • 関連リンク

(Sの数)

  • 関連リンク

ssu.dll

(calc,[計算式])

  • calcは小数点以下を無視(切り捨て)して計算する。
  • ifやswitchなどの引数は、暗黙のうちにこれを実行している。
  • 「$SAORI引数の計算【タブ】自動」だと、calcが実行される前に引数として計算式が計算されてしまう。
    $SAORI引数の計算【タブ】自動
    (calc,1+1)
    1. (calc,1+1)
    2. (calc,(calc,1+1))
      • (calc,1+1)→2
    3. (calc,2)
      • (calc,2)→2

(calc_float,[計算式])

  • calc_floatは小数点以下も計算する。
  • 「$SAORI引数の計算【タブ】自動」だと、calcが実行される前に引数として計算式が計算されてしまう。
    $SAORI引数の計算【タブ】自動
    (calc_float,5÷2)
    1. (calc_float,5÷2)
    2. (calc_float,(calc,5÷2))
      • (calc,5÷2)→2
    3. (calc_float,2)
      • (calc_float,2)→2
  • 「$SAORI引数の計算【タブ】無効」にしてから使おう
    $SAORI引数の計算【タブ】無効
    (calc_float,5÷2)
    1. (calc_float,5÷2)
      • (calc_float,5÷2)→2.5

(if,[条件式],[真の場合に返す文字列],[偽の場合に返す文字列])

  • 条件式を評価し、真(0以外)ならば真の結果を返す。
  • そうでないならば、偽の結果を返す(偽の結果が書かれている場合)か、空を返す(偽の結果を省略している場合)。
  • ※重要なこと
    • 普通のプログラミング言語と違って、括弧の中身が先に評価される。
      (if,(乱数0?1),(set,値,0),(set,値,1))
      (値)
    1. (if,(乱数0?1),(set,値,0),(set,値,1))
      • (乱数0?1)→0
    2. (if,0,(set,値,0),(set,値,1))
      • (set,値,0)→
    3. (if,0,,(set,値,1))
      • (set,値,1)→
    4. (if,0,,)
      • (if,0,,)→
    5. (値)
      • (値)→1
      • このとき、必ず「(値)→1」になる。
    • 解決策
      ((if、(乱数0?1)、set,値,0、set,値,1))
      (値)
    1. (if、(乱数0?1)、set,値,0、set,値,1)
      • (乱数0?1)→0
    2. (if、0、set,値,0、set,値,1)
      • (if、0、set,値,0、set,値,1)→set,値,1
    3. (set,値,1)
      • (set,値,1)→
    4. (値)
      • (値)→1

(unless,[条件式],[偽の場合に返す文字列],[真の場合に返す文字列])

(iflist,[条件式の左辺],[条件式の右辺1],[真の場合に返す文字列1],[条件式の右辺2],[真の場合に返す文字列2],…,,[条件式の右辺n],[真の場合に返す文字列n],[それ以外の場合])

ifと違う点は、条件式が左右に分かれたことと、複数の条件を順番に評価できること。

まず、左辺と右辺1を組み合わせた条件式を評価し、真ならば結果1を返す。 そうでなければ次の右辺2と組み合わせ、真ならば結果2を返す。 そうでなければ…(以下略)。 いずれの右辺を評価しても真にならばければ、空を返す。

switch

nswitch

substr

split

replace

replace_first

erase

erase_first

count

compare

compare_head

compare_tail

length

sprintf

is_empty

is_digit

is_alpha

han2zen

zen2han

  • ssu.dll han2zen / zen2hanで変換タイプ指定可能に
    • 例:(zen2han、ABC123アイウガギグ?、数字 アルファベット カナ 記号)
    • 2番目に空白等適当な文字で区切って指定します。
    • 省略時は全指定。 数字・アルファベット・カナ・記号 が指定可能(複数指定・任意の組み合わせ可能)

kata2hira

hira2kata

join

choice

reverse

at

lsimg

mkdir


内部関数


(set,[変数名],[値])

変数へ代入

(set,ほげ,ふが)

$ほげ【タブ】ふが

に等しい。

(nop,[,...])

何も返さない。

(nop,ほげ)→

(sync,呼び出す関数,引数1,引数2...引数n)

(sync,fill_desktop,255,255,255)

\![raise,OnDirectSaoriCall,fill_desktop,255,255,255]

になる・・・ハズ。

(loop,[括弧で呼び出すモノの名前],[回数])

  • 例文
    *
    (loop、犬、3)
    @犬
    マルチーズ
    パピヨン
    ゴールデンレトリバー
  • 実行結果
    マルチーズパピヨンゴールデンレトリバー

(loop,[括弧で呼び出すモノの名前],[開始値],[終了値])

  • 例文
    *
    (loop、エヴァンゲリオン、0、3)
    @エヴァンゲリオン
    エヴァ(エヴァンゲリオンカウンタ)号機
  • 実行結果
    エヴァ0号機エヴァ1号機エヴァ2号機エヴァ3号機

(loop,[括弧で呼び出すモノの名前],[開始値],[終了値],[増分])

  • 例文
    *
    (loop、エヴァンゲリオン、0、3、3)
    @エヴァンゲリオン
    エヴァ(エヴァンゲリオンカウンタ)号機
  • 実行結果
    エヴァ0号機エヴァ3号機

[括弧で呼び出すモノの名前]カウンタ


(remember,[全半角自然数])

今からn回前のランダムトークのスクリプトを取得する。

(call,[括弧呼び出しの対象の名前][,[引数0],[引数1],...])

(A[全半角数字])

  • callによる呼び出しの引数

(Aの数)

  • callの引数の数を返す。
  • 最後の引数の番号とは(A(Aの数)-1)の関係。

(バイト値,[1以上の全半角数字])

(単語の追加,[単語群名],[単語名])

(追加単語の削除,[単語群名],[単語名]

(追加単語の全削除,[単語群名])

(合成単語群,[単語群名],[単語群名],...)

  • (合成単語群、A、B、C)と書くとA/B/Cそれぞれの単語群の内容全てからランダム選択
    • 今のところ「重複回避」設定はできません。

(乱数[全半角数字]?[全半角数字])

  • 指定範囲内のランダムな値を返す。

環境変数

変数取得 変数名であれば変数の内容を返す

  • 関連リンク

リクエスト情報

  • 関連リンク

(ID)

  • 送られてたイベント名。

(Reference[半角数字])

  • リファレンス。
  • Event通知時の引数取得。

(R[全半角数字])

  • Event通知時の引数取得。
  • (Refference[半角数字])の省略

(Rの数)

  • リクエストのリファレンス番号の最大値を返す。

(status code)

  • SHIORI 3.0 GET
    • かな?

(Status)

  • 喋り中は「talking」

Sender

  • ベースウェアの名前

Charset

  • リクエストの文字コード

内部情報

  • 関連リンク
  • (サーフェス[全半角スコープ番号])って動かないんじゃね? -- legokichi 2008-09-26 (金) 00:26:17
  • (サーフェス[半角スコープ番号])かも? -- legokichi 2008-09-26 (金) 01:08:03


(里々のバージョン)

  • 整備班カスタムから実装
  • バグ報告するときにはこれで里々のバージョンを確認しておこう。

(pwd)

  • satori.dllのあるフォルダまでの絶対パスを返す。

(本体の所在)

  • ベースウェアがインストールされているフォルダを取得。

(直前の選択肢名)

(H[全半角数字])

  • ([全半角H][全半角数字])
  • 過去に括弧で展開した値を取得。
  • 1オリジン。

(サーフェス[全半角スコープ番号])

  • 現在の指定したスコープのキャラクターが表示しているサーフェス番号を返す。

(前回終了時サーフェス[全半角スコープ番号])

  • 前回終了時の指定したスコープのキャラクターが表示していたサーフェス番号を返す。

(ウィンドウハンドル[全半角スコープ番号])

  • 指定したスコープのウィンドウハンドルを返す。

外部情報

  • 関連リンク

(FMO[半角数字][半角英数])

  • 本体が提供してくれる謎の情報。
    • ベースウェアごとに提供されるFMOの名前には差があるらしい。
  • [半角数字]にはゴーストの番号。
  • [半角英数]にはFMOの名前。
  • 呼び出し時に里々は保持するゴースト情報を更新する。
  • SSPのFMOテーブルの例。
    ghostpath:○○\ghost\karekano\
    hwnd:66702
    kerohwnd:66752
    keroname:彼女
    name:彼
    path:○○\
    • 上から順に(うろ覚え)
      本体からnamedのルートフォルダまでの相対パス
      \0側のウィンドウハンドル
      \1側のウィンドウハンドル
      \1側の名前
      \0側の名前
      本体までの絶対パス
  • 関連リンク

([ゴーストの\0の名前]の存在)

  • わすれた
  • 呼び出し時に里々は保持するゴースト情報を更新する。

([ゴーストの\0の名前]のサーフェス)

  • わすれた
  • 呼び出し時に里々は保持するゴースト情報を更新する。

(隣で起動しているゴースト)

  • (FMO1name)と同義(だったハズ

(起動しているゴースト数)

  • 半角数字

存在判定

  • 関連リンク

(文「[トーク名]」の存在)

  • 指定したトークが存在する場合は「1」
  • 存在しない場合は「0」

(文「[トーク名]」の数 )

  • 指定したトークの数

(単語群「[単語群名]」の存在)

  • 指定した単語群が存在する場合は「1」
  • 存在しない場合は「0」

(単語群「[単語群名]」の数)

  • 指定した単語群の数

(変数「[変数名]」の存在)

  • 指定した変数が存在する場合は「1」
  • 存在しない場合は「0」

時間情報

  • 関連リンク

(time_t)

  • 万国標準時(UCT)の1970年1月1日の00:00:00からの経過時間を秒単位で表した数値
  • 半角数字

(現在年)

  • 全角数字

(現在曜日)

  • 月火水木金土日のうちどれか

(現在月)

  • 全角数字

(現在日)

  • 全角数字

(現在時)

  • 全角数字

(現在分)

  • 全角数字

(現在秒)

  • 全角数字

(起動時)

  • 本体が起動してからの時間の時間の部分

(起動分)

  • 本体が起動してからの時間の分の部分

(起動秒)

  • 本体が起動してからの時間の秒の部分

(単純起動秒)

  • 本体が起動してからの秒単位の時間

(単純起動分)

  • 本体が起動してからの分単位の時間

(OS起動時)

  • OS(Windows)が起動してからの時間の時間の部分
  • 実は「OS起動?」の情報が実際には取得できていないというウワサが・・・

(OS起動分)

  • OS(Windows)が起動してからの時間の分の部分

(OS起動秒)

  • OS(Windows)が起動してからの時間の秒の部分

(単純OS起動秒)

  • OSが起動してからの秒単位の時間

(単純OS起動分)

  • OSが起動してからの分単位の時間

(累計時)

  • このゴーストを起動した累計時間の時間の部分

(累計分)

  • このゴーストを起動した累計時間の分の部分

(累計秒)

  • このゴーストを起動した累計時間の秒の部分

(単純累計秒)

  • このゴーストを起動した秒単位の累計時間

(単純累計分)

  • このゴーストを起動した分単位の累計時間

(最終トークからの経過秒)

  • 最後のトークから経過した秒。

(ゴースト起動時間累計ミリ秒)

  • このゴーストを起動したミリ秒単位の累計時間
  • セーブデータに自動的に保存される。

辞書情報

  • 関連リンク

(countTalk)

  • 全トーク数(*の数)

(countEventTalk

  • イベントトーク数
  • 主にOn?で始まっているもの。

(countOtherTalk

  • その他のトーク数

(countNoNameTalk

  • ランダムトーク数
  • トークのラベル(名前)がないもの。

(countWords)

  • 単語群数(@の数)

(countWord)

  • 総単語数

(countParenthesis)

  • 辞書中の括弧の数
  • たぶん「(」の数

(countVariable)

  • 変数の数

(countAnchor)

  • アンカー数

(countLine)

  • 辞書中の改行の数

トーク予約情報

  • 関連リンク

(次のトーク)

  • 次の予約されているトーク名
  • (次から1回目のトーク)と同義。

(次から[全半角数字]回目のトーク)

  • 指定した回に予約されているトークがあればそのトーク名
  • なければ何も返さない

(トーク「[トーク名]」の予約有無)

  • 指定したトークが予約されていれば「1」
  • されていない場合は「0」

(予約トーク数)

  • 現在予約されているトーク数

特殊変数


スクリプト挿入

  • 関連リンク

$スコープ切り換え時【タブ】[任意の文字列]

  • デフォルトでは
    $スコープ切り換え時【タブ】\n[half]

$さくらスクリプトによるスコープ切り換え時【タブ】[任意の文字列]

  • 「$スコープ切り換え時」のさくらスクリプト版。
  • \0,\1,\h,\u,\p[n]が対象です。デフォルトで設定なし。
  • 改行せずにキャラを切り替える用途で\0,\1,\h,\u,\p[n]が使えます。
  • :と全く同じ動作にしたい時は\n[half]と設定してください。

$スクリプトの一番頭【タブ】[任意の文字列]

  • 里々Mc131-1以降で使用可。
  • 里々はスクリプトの先頭に自動でデフォルトサーフェイス等が挿入される為、任意のタグ等をスクリプトの先頭に書く事が出来ませんでした。
  • "$スクリプトの一番頭"に代入する事で次のスクリプトの先頭に挿入されます。
  • また一度使用されると変数は初期化されます。
  • 利用例としては\Cタグはスクリプト先頭に記述する必要がある為これで利用します。

$トーク開始時【タブ】[任意の文字列]

$トーク終了時【タブ】[任意の文字列]

$選択肢開始時【タブ】[任意の文字列]

$選択肢終了時【タブ】[任意の文字列]

$自動挿入ウェイトの倍率

  • 「。」「、」「!」「?」などに自動的に挿入されるウエイトタグの倍率。
  • 0で無効
  • %指定
  • 「**%」と数値以外の文字が付いた場合、文字は無視される。
    $自動挿入ウェイトの倍率【タブ】5%

$自動挿入ウェイトタイプ

  • 「無効」で自動挿入全て無効、
  • 「里々」で従来の処理、
  • 「一般」でゴーストで一般的に使われるウェイトを自動挿入します。
    • 「一般」=「、」で\w5ぐらい、「。!?」や改行など文末で\w9ぐらい、話者変更で\w9\w9ぐらい。「ぐらい」はわざと微妙にランダム調整してるので。

ランダムトーク設定

  • 関連リンク

$喋り間隔【タブ】[全半角数字]

  • 秒単位
  • 「**秒」と数値以外の文字が付いた場合、文字は無視される。
  • 3未満は喋らない

喋り間隔誤差【タブ】[全半角数字]

  • %指定
  • 「**%」と数値以外の文字が付いた場合、文字は無視される。

システム設定

  • 関連リンク

$見切れてても喋る【タブ】有効

  • 有効以外の値を入れると無効になる。

$呼び出し回数制限【タブ】[全半角数字]

  • 里々Mc128-1以降で使用可。
  • 数値を代入し、最大呼び出し回数を設定する。
  • デフォルトでは200。
  • 主にcallによる呼び出し回数を制限している。
  • callによる再帰ループとか多用する人(俺みたいな人)とか最低2000は欲しいところ。

ジャンプ回数制限

  • デフォルト20000回。

会話時サーフェス戻し

  • $会話時サーフェス戻し=強制で、スクリプトの頭で必ずサーフェス戻しを実行
  • 有効
  • 強制 ※それ以外無効

サーフェス加算値○

デフォルトサーフェス○

BalloonOffset

$SAORI引数の計算【タブ】[任意のコマンド]

  • 「有効」
  • 「無効」
  • それ以外の文字を代入した場合「自動」
    $SAORI引数の計算【タブ】
    $SAORI引数の計算【タブ】

$引数区切り追加【タブ】[任意の1文字]

  • callやSAORI呼び出しに使う引数区切りを追加できる。
    $引数区切り追加【タブ】(バイト値、5)
    (split(バイト値、5)(html)(バイト値、5)<)
  • ちなみに起動直後では
    $引数区切り追加【タブ】、#全角句点
    $引数区切り追加【タブ】、#半角句点
    $引数区切り追加【タブ】,#全角カンマ
    $引数区切り追加【タブ】,#半角カンマ
    $引数区切り追加【タブ】(バイト値,1)
  • が有効。
  • この変数はセーブデータに保存されないので、OnSatoriLoadやOnSatoriBootなどに入れておくと吉。

$引数区切り削除【タブ】[任意の1文字]

  • 追加した引数を削除する。

$自動セーブ間隔【タブ】

$セーブデータ暗号化【タブ】有効

  • セーブデータを暗号化する
  • 「有効」以外の文字を入れると無効。

なでられ設定

  • 関連リンク

トーク中のなでられ反応

なでられ持続秒数

なでられ反応回数


れしば

  • 関連リンク

$Log【タブ】[有効]

  • れしばにログを送るか否か
  • 「有効」以外の文字を入れると無効。

RequestLog【タブ】[有効]

  • れしばにログのリクエストの部分を送るか否か
  • 「有効」以外の文字を入れると無効。

OperationLog【タブ】[有効

  • れしばにログの里々の内部動作の部分を送るか否か
  • 「有効」以外の文字を入れると無効。

ResponseLog【タブ】[有効]

  • れしばにログのベースウェアに返す値の部分を送るか否か
  • 「有効」以外の文字を入れると無効。

括弧取得の設定


$単語群「[単語群名]」の重複回避【タブ】[呼び出す方法]、[有効期間]

  • ↓参照

$文「[単語群名]」の重複回避【タブ】[呼び出す方法]、[有効期間]

  • コマンド区切りに使える文字「、」「,」
  • 呼び出す方法
    • 「直前」
      • 直前の単語呼び出しとの重複を回避するランダム。
    • 「降順」or「正順」
      • 上から下へ順番に呼び出す。
    • 「昇順」or「逆順」
      • 下から上へ順番に呼び出す。
    • 「有効」or「完全」
    • 「無効」
      • 重複回避しない。完全にランダム。
  • 有効期間
    • 「トーク中」
      • そのトーク内だけ。
    • 「起動中」
      • 起動ちゅずっと。
        $文「[単語群名]」の重複回避【タブ】[呼び出す方法]、[有効期間]

トーク予約

  • 関連リンク

$次のトーク【タブ】[トーク名]

  • 次のランダムトークで喋るトークを予約できる。
    $次のトーク【タブ】[トーク名]
    (set,次のトーク,[トーク名])

$次から[全半角数字]回目のトーク【タブ】[トーク名]

  • 次の任意の回数のトーク後にで喋るトークを予約できる。

$トーク予約のキャンセル【タブ】[トーク名]

  • 値に「*」を指定することで予約トークを全てキャンセルできる。
    $トーク予約のキャンセル【タブ】*
    

タイマ

  • 関連リンク

$[トーク名]タイマ【タブ】[全半角数字]

  • 代入する値に文字が含まれていた場合、自動的に数字だけを抽出するようだ
    $[トーク名]タイマ	5秒
    (set,[トーク名]タイマ,5秒)

$全タイマ解除

$全タイマ解除	実行

実行変数

  • 特定の名前の変数に特定の値を入れると里々が何らかの動作をする。
  • 関連リンク

$教わること

  • teachboxを開くようだ

$Value[全半角数字]【タブ】[任意の値]

$今回は喋らない【タブ】有効

  • $今回は喋らない=有効 で、何をしようが常に204 No Contentを返す機能追加
    • 一度SHIORI呼び出しが来るごとに「無効」に戻ります。
    • 必要な時は毎回設定してください。
  • トークが無視され、発話しない。
  • レスポンスが204 NoConectになる。
  • 「有効」以外の文字を入れると無効。
    $今回は喋らない	有効
    (set,今回は喋らない,有効)

$辞書リロード【タブ】実行

  • 辞書フォルダをリロードする。
  • 辞書ロードのタイミングは本体へのレスポンス直後。
  • (set)を使うときは引数区切りを半角コンマ以外を使用すること。辞書フォルダの複数指定と被る。
    $辞書リロード	実行
    (set,辞書リロード,実行)

$辞書フォルダ【タブ】[フォルダパス]

  • ロードする辞書フォルダをsatori.dllからの相対パス指定する。
  • 「/」「\」どちらでも可。
  • 相対パスの末尾に「/」「\」がない場合自動的に付けられる。
  • 深い階層のフォルダも指定可能。
  • 半角カンマ区切りで複数のフォルダを指定可能。
  • satori.dllと同じフォルダは「.」
  • 辞書ロードのタイミングは本体へのレスポンス直後。
    $辞書フォルダ	.,other/hiru/
    (set、辞書フォルダ、.,other/hiru/)
  • satori_conf.txtに記述するとルートフォルダも強制的に呼び出されます。詳しくは「satori_conf.txt」の項で。

$手動セーブ【タブ】実行

  • セーブデータにセーブする。
  • 書き出しのタイミングは本体へのレスポンス直後。
    $手動セーブ【タブ】実行
    (set,手動セーブ,実行)

品質保証部

  • クレーム対応とかしてます
  • 採用条件について。 「先に条件式のあるトーク要素を評価して、真のトーク要素が無かった場合 、条件式のないトーク要素がランダムに採用される」とありますが、実際には「条件式が無い場合、常に条件式が真と判断される」が正しいようです。つまり、条件式が真のトークの有無に拘わらず、条件式が無いトークは採用される可能性があります。 -- 匿名 2010-12-19 (日) 12:47:58


トップ   編集 凍結 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2010-12-19 (日) 13:06:25