里々まとめ †
もくじ †
里々関連ファイル †satori.dll †
初期状態 †
ssu.dll †
satorite.exe †
れしば.exe †
satori_pack.exe †
satori_license.txt †
里々が読み込むファイル †ファイル読み込み順序 †
replace.txt †
replace_after.txt †
characters.ini †
影響範囲は
satori_conf.txt †
*セーブデータ $辞書フォルダ【タブ】. であったとき、実質的に $辞書フォルダ【タブ】mjk,. となります。 しかし、里々アンロード時や手動セーブ時に出力されるsatori_savedata.txtには *セーブデータ $辞書フォルダ【タブ】. としか記載されません。
satori_savedata.sat †
satori_savedata.txt †
satori_savebackup.sat †
satori_savebackup.txt †
dicAnchor.txt †
dic○○.sat †
dic○○.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の歌」のように括弧付きで書く(バルーン内では括弧なしで表示されます)という方法があります。 こんな面倒なことしなくても、全角登録・全角表示でいいじゃんって話かもですけど。 文法 †前書き †トーク宣言、または単語群宣言が存在する行までは前書き空間となります。 ここには何を書いても構いません。すべてエスケープされます。 トーク要素 †*[トーク名]【タブ】[採用条件式] ←[トーク宣言] [トーク本文] ←[トーク空間]
¥uから喋る *[トークラベル]【タブ】[採用条件式] ¥uのスコープ。 :¥hのスコープ。 :¥uのスコープ。 characters.iniを設定していると *[トークラベル]【タブ】[採用条件式] :¥hのスコープ。 :¥uのスコープ。 名:¥p[0]のスコープ。 あ:¥p[1]のスコープ。 栞:¥p[2]のスコープ。 真:¥p[3]のスコープ。 舞:¥p[4]のスコープ。 とかできる。 トーク宣言 †*[トーク名] *[トーク名]【タブ】[採用条件式]
トーク名 †
採用条件式 †
トーク空間 †
変数代入 †$[変数名]【タブ】[値] $[変数名]=[値]
変数。=で計算式代入の場合、値を計算。タブの場合文字列として扱う。 数字のみの変数名無効。代入するものが無かった場合変数の削除 ジャンプ †>[トーク名] >[トーク名]【タブ】[採用条件式]
完全一致ジャンプ >変数ジャンプ_(利用変数) とした場合、(利用変数)が存在していなければ「変数ジャンプ_」がジャンプ先になる。 ssu.dllとの兼ね合いも考えれば、出来るだけ初期化した方がいいかも。・・・要検証! コミュニケートサーチ †≫ and検索ジャンプ。 選択肢 †_[トーク名] _[選択肢ラベル]【タブ】[トーク名] _選択肢ラベル【タブ】ジャンプ先 (全角アンダーバー) 選択肢。SakuraScript?置き換え。 話しかけ †→ トーク本文 †
単語群 †単語群解釈 † 各行が要素。それぞれに定義行が適用される。 末尾空行を認識しないのはまぁいいか。明示的に「文字列」を指定する書式を用意する?
単語群宣言 †単語群名 †採用条件 †単語空間 †括弧 †
情報取得系 条件として取得されるケース 情報設定系 そのまま 文字列の再解釈(eval) 文字列 := ('(' | ')' | ':')以外* エスケープ †コメントアウト †演算子 †演算 †論理演算 †文字列操作 †==、!=で両辺の文字列が同じかどうか比較。 -で左辺から右辺文字列消去。 *で、例えば■*5なら■■■■■。 <、>、>=、<=は文字列の長さを比較。 変数 †
http://yagi.xrea.jp/SatoriSpecWiki/pukiwiki.php?%CA%B8%CB%A1 : †スコープ切り替え。
コミュニケートについて †
単語群 †演算子 †括弧 †括弧 †
情報取得系 条件として取得されるケース 情報設定系 そのまま 文字列の再解釈(eval) 文字列 := ('(' | ')' | ':')以外*
○○ †単語を選択した ○○ †*に定義があれば文を取得 ○○ †変数名であれば変数の内容を返す ○ †サーフェス切り替え 「:」(数字)引くことの現在のスコープのデフォルトサーフェスの値。 * :(6)→\s[6] :(0)\s[10] :(10)\s[10] :(11)\s[21] †見つからなかった。通常喋り? 変数 †
イベント †
特殊イベント †OnBoot? †
OnClose? †OnGhostChanged? †このラベルのトークが無かった場合、「他のゴーストから変更」へ飛ぶ。 OnGhostChanging? †このラベルのトークが無かった場合、「他のゴーストへ変更」へ飛ぶ。 OnMouseDoubleClick? †このラベルのトークが無かった場合、自動的に下記のように補完される。 *OnMouseDoubleClick >(R3)(R4)つつかれ () OnMouseWheel? †ころころ OnAnchorSelect? †OnChoiceSelect? †$選択ラベル【タブ】(R0) $選択名【タブ】(R1) ・・・わすれた!(ぇ OnCommunicate? †このトークが無かった場合、里々が独自にコミュニケート探索を行う。 詳しくはコミュニケートを参照。 OnSecondChange? †
OnSurfaceChange? †OnUpdateReady? †OnWindowStateRestore? †OnShellChanged? †OnSurfaceRestore? †OnRecommendsiteChoice? †独自イベント †
OnSatoriLoad? †
OnSatoriUnload? †
OnSatoriBoot? †
OnSatoriClose? †
OnTalk? †(R0):0なら「今話すべきトークはない=ランダムトークでいい」、1なら予約あり。 (R1):(R0)が1の場合、そのトーク名。 COMMUNICATE該当なし †「OnCommunicate?」が無く、里々が独自のコミュ探索を行った後で、一致するトークがなかったときに呼び出される。 OnDirectSaoriCall? †
初回 †
起動 †終了 †他のゴーストから変更 †
他のゴーストへ変更 †
消滅指示 †
消滅撤回 †
消滅決定 †
消滅中断 †
特殊単語群 †@\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_float,[計算式]) †
(if,[条件式],[真の場合に返す文字列],[偽の場合に返す文字列]) †
(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 †
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,[括弧で呼び出すモノの名前],[開始値],[終了値]) †
(loop,[括弧で呼び出すモノの名前],[開始値],[終了値],[増分]) †
[括弧で呼び出すモノの名前]カウンタ †
(remember,[全半角自然数]) †今からn回前のランダムトークのスクリプトを取得する。 (call,[括弧呼び出しの対象の名前][,[引数0],[引数1],...]) †
(A[全半角数字]) †
(Aの数) †
(バイト値,[1以上の全半角数字]) †(単語の追加,[単語群名],[単語名]) †(追加単語の削除,[単語群名],[単語名] †(追加単語の全削除,[単語群名]) †(合成単語群,[単語群名],[単語群名],...) †
(乱数[全半角数字]?[全半角数字]) †
環境変数 †変数取得 変数名であれば変数の内容を返す
リクエスト情報 †
(ID) †
(Reference[半角数字]) †
(R[全半角数字]) †
(Rの数) †
(status code) †
(Status) †
Sender †
Charset †
内部情報 †
(里々のバージョン) †
(pwd) †
(本体の所在) †
(直前の選択肢名) †(H[全半角数字]) †
(サーフェス[全半角スコープ番号]) †
(前回終了時サーフェス[全半角スコープ番号]) †
(ウィンドウハンドル[全半角スコープ番号]) †
外部情報 †
(FMO[半角数字][半角英数]) †
([ゴーストの\0の名前]の存在) †
([ゴーストの\0の名前]のサーフェス) †
(隣で起動しているゴースト) †
(起動しているゴースト数) †
存在判定 †
(文「[トーク名]」の存在) †
(文「[トーク名]」の数 ) †
(単語群「[単語群名]」の存在) †
(単語群「[単語群名]」の数) †
(変数「[変数名]」の存在) †
時間情報 †
(time_t) †
(現在年) †
(現在曜日) †
(現在月) †
(現在日) †
(現在時) †
(現在分) †
(現在秒) †
(起動時) †
(起動分) †
(起動秒) †
(単純起動秒) †
(単純起動分) †
(OS起動時) †
(OS起動分) †
(OS起動秒) †
(単純OS起動秒) †
(単純OS起動分) †
(累計時) †
(累計分) †
(累計秒) †
(単純累計秒) †
(単純累計分) †
(最終トークからの経過秒) †
(ゴースト起動時間累計ミリ秒) †
辞書情報 †
(countTalk) †
(countEventTalk?) †
(countOtherTalk?) †
(countNoNameTalk?) †
(countWords) †
(countWord) †
(countParenthesis) †
(countVariable) †
(countAnchor) †
(countLine) †
トーク予約情報 †
(次のトーク) †
(次から[全半角数字]回目のトーク) †
(トーク「[トーク名]」の予約有無) †
(予約トーク数) †
特殊変数 †
スクリプト挿入 †
$スコープ切り換え時【タブ】[任意の文字列] †
$さくらスクリプトによるスコープ切り換え時【タブ】[任意の文字列] †
$スクリプトの一番頭【タブ】[任意の文字列] †
$トーク開始時【タブ】[任意の文字列] †$トーク終了時【タブ】[任意の文字列] †$選択肢開始時【タブ】[任意の文字列] †$選択肢終了時【タブ】[任意の文字列] †$自動挿入ウェイトの倍率 †
$自動挿入ウェイトタイプ †
ランダムトーク設定 †
$喋り間隔【タブ】[全半角数字] †
喋り間隔誤差【タブ】[全半角数字] †
システム設定 †
$見切れてても喋る【タブ】有効 †
$呼び出し回数制限【タブ】[全半角数字] †
ジャンプ回数制限 †
会話時サーフェス戻し †
サーフェス加算値○ †デフォルトサーフェス○ †BalloonOffset?○ †$SAORI引数の計算【タブ】[任意のコマンド] †
$引数区切り追加【タブ】[任意の1文字] †
$引数区切り削除【タブ】[任意の1文字] †
$自動セーブ間隔【タブ】 †$セーブデータ暗号化【タブ】有効 †
なでられ設定 †
トーク中のなでられ反応 †なでられ持続秒数 †なでられ反応回数 †れしば †
$Log【タブ】[有効] †
$RequestLog?【タブ】[有効] †
$OperationLog?【タブ】[有効 †
$ResponseLog?【タブ】[有効] †
括弧取得の設定 †
$単語群「[単語群名]」の重複回避【タブ】[呼び出す方法]、[有効期間] †
$文「[単語群名]」の重複回避【タブ】[呼び出す方法]、[有効期間] †
トーク予約 †
$次のトーク【タブ】[トーク名] †
$次から[全半角数字]回目のトーク【タブ】[トーク名] †
$トーク予約のキャンセル【タブ】[トーク名] †
タイマ †
$[トーク名]タイマ【タブ】[全半角数字] †
$全タイマ解除 †$全タイマ解除 実行 実行変数 †
$教わること †
$Value[全半角数字]【タブ】[任意の値] †
$今回は喋らない【タブ】有効 †
$辞書リロード【タブ】実行 †
$辞書フォルダ【タブ】[フォルダパス] †
$手動セーブ【タブ】実行 †
品質保証部 †
|