Don/メモ

ナビゲーション >> Top(FrontPage) > Don > メモ

何のページですか

  • 気付いたことを忘れないうちにメモしておくためのページです。

里々の「辞書フォルダ」に関する調査

  • 「$辞書フォルダ【タブ】」をsatori_conf.txtに書くことに関しての現状を調査しています。

仕様書を見てみよう

■satori_conf.txt
satori_conf.txt の「*初期化」で

$辞書フォルダ【タブ】
の定義をしない。
  • 注意書きが書いてありますね。守りましょう。
    • 08/11/11 定義した場合の簡単な説明を追記しました。
satori_conf.txtに辞書フォルダ記述するとまずい

仮にsatori_conf.txtに
$辞書フォルダ【タブ】.
と記述すると、hogeフォルダを読み込んで起動する際に
$辞書フォルダ【タブ】hoge
とならずに
$辞書フォルダ【タブ】.,hoge
となってしまう。
  • こんなことがあった気がします。3月より前のログが残っていないのが残念。
*初期化
$辞書フォルダ【タブ】mjk
$辞書フォルダ【タブ】kwsk

としたとき、

*初期化
$辞書フォルダ【タブ】.,mjk,kwsk

と同義。satori.dllのルートフォルダは強制的に読み込まれ、他の辞書フォルダもまとめて読み込まれてまう。
  • なんと。

結論

  • satori_conf.txtに定義すると強制的にルートフォルダが読み込まれるらしいですね。
  • そして起動中に"$辞書フォルダ"に代入してリロードするとsatori_conf.txtに書いてあるフォルダもプラスして読み込んでしまうみたい。
  • satori_conf.txtにあるフォルダは常にロード対象となる!

現状を見てみよう

  • 自分の環境でインストール済のゴースト約500体(里々以外含む)の中でsatori_conf.txtで「$辞書フォルダ」を定義しているゴーストを検索してみた

結果

  • 500体のゴーストの中でsatori_conf.txtに「$辞書フォルダ」を定義しているゴーストは1体もいませんでした。
  • 私の観測範囲は狭いので、もしそういうゴーストご存じでしたらタレコミ願います。
  • 現状、satori_conf.txtに「$辞書フォルダ」を定義する使用例は無いように思います。
    • 実際は挙動がおかしくなるので誰も使わなくなっただけかも。

あえて有効な活用例を考えてみよう

  • ルートフォルダは強制的に読み込まれるので、デフォルトの人格でも別ファイルに置くべき。
  • 各モードで共通の処理をまとめたフォルダを定義すれば便利かも。

こんな感じでしょうか

# satori_conf.txt内
*初期化
$辞書フォルダ【タブ】commmon
  • ./
    ■satori.dll
    ■satori_conf.txt
    • ./commmon
      ■dic_Event.txt
    • ./default
      ■dic_Talk0.txt
    • ./another1
      ■dic_Talk1.txt
    • ./another2
      ■dic_Talk2.txt
*人格1と交代
$辞書フォルダ【タブ】another1
:人格1と交代するよー。

SSPの仕様

COMMUNICATE送信と\![raiseother]送信

  • 全員に送信する場合、"__SYSTEM_ALL_GHOST__"の指定はどちらでも使える。
*コミュニケート送信
$Value0【タブ】__SYSTEM_ALL_GHOST__
:こんにちは、みなさん。

*raiseother送信
\![raiseother,__SYSTEM_ALL_GHOST__,OnCommunicate,(FMO0name),\0\s[0\]こんにちは、みなさん。\e]
  • 複数に送信する場合、バイト値1区切りはコミュニケートにおいてのみ指定できる。
*AとBに話しかける
$Value0【タブ】A(バイト値,1)B
:こんにちは、Aさん、Bさん。

*AとBにイベント送信
\![raiseother,A,OnCommunicate,(FMO0name),\0\s[0\]こんにちは、Aさん、Bさん。\e]φ
\![raiseother,B,OnCommunicate,(FMO0name),\0\s[0\]こんにちは、Aさん、Bさん。\e]
  • SSP/2.01.49にてraiseotherもバイト値1区切りで複数指定できるよになりました。多謝!

里々の仕様

イベントは*でも@でも記述できる

*OnBoot
:おはー。
:おはようさん。
@OnBoot
\1\s[10]\0\s[0]おはー。\1おはようさん。\e

callは変数も呼び出せる

*
$変数【タブ】ほげ
:(call,変数)#←「ほげ」に展開される
  • (変数)で呼ぶと「変数」が定義されていない時は「φ(変数φ)」として表示される。
    (call,変数)とすると「変数」が定義されていない時は空白となる。

replace.txtを記述する際の注意

  • 「、」を「、\w9」のように置換する際は要注意
    • 「、」は里々で関数を呼び出す際に引数区切りとして使用できる特殊文字である
      • 「、」を引数区切りとして使用しないよう常に心掛けるor別の置換方法を利用するべき

callを使って引数を渡す時の注意

*
:(call、test、1+1)

*test
:(A0)

こう書くと、"2"って返ってきます。"1+1"って返すにはどうやるのん?

  • /* SAORI引数の計算は内部関数?にも適用されるっぽいです */ - 某ベースウェア開発者談
    • なので、「$SAORI引数の計算【タブ】無効」を使えば防げます。
*
$SAORI引数の計算【タブ】無効
:(call、test、1+1)

*test
$SAORI引数の計算【タブ】自動
:(A0)

関連リンク

Referenceに全角括弧が渡された場合

  • Referenceに(hoge)とあった場合は()は展開されないようです。φ(hogeφ)として表示されます。

実験1

  • 文ゴーストから送信
{
	"\![raiseother,【里々ゴースト名】,OnTest1,(ほげ)]"
}
  • 里々ゴーストが受信
*OnTest1
:(R0)

@ほげ
へも
  • 「(ほげ)」と表示された。

実験2

  • 文ゴーストから送信
{
	"\![raiseother,【里々ゴースト名】,OnTest2,(,)]"
}
  • 里々ゴーストが受信
*OnTest2
:(R0)ほげ(R1)

@ほげ
へも
  • 「(ほげ)」と表示された。

エスケープされた全角括弧を引数に入れたらどうなる?

*
(replace,φ(てすとφ),,)

@てすと
ほげ
  • これを実行すると「ほげ」が表示されます。

ダブルクォートの扱い

*
:(call、test、"1+1")

*test
:(A0)

こうかくと、「"1+1"」って返ってくる。ダブルクォート付き。

*
\![raise,OnTest,"A,B,C","D,E,F,G"]

*OnTest
:(R0)★(R1)

こうかくと、「A,B,C★D,E,F,G」って返ってくる。ダブルクォート無し。

「*」と「@」の使い分け

  • /* @は単語/単語群/フレーズ用の設計しかしてない */ - 某ベースウェア開発者談
    • なので、特に触り反応とかで@使ってタグとか使うのはよくない。
#ダメな例
*OnMouseDoubleClick
>(R3)(R4)つつかれFrom(Sender)
>(R3)(R4)つつかれFromUser

*0HeadつつかれFromUser
(0Headつつかれ反応)

@0Headつつかれ反応
\0\s[4]いたいー。
\0\s[4]やめてー。
\0\s[3]たすけてー。
#よい例
*OnMouseDoubleClick
>(R3)(R4)つつかれFrom(Sender)
>(R3)(R4)つつかれFromUser

*0HeadつつかれFromUser
(0Headつつかれ反応)

*0Headつつかれ反応
:(4)いたいー。

*0Headつつかれ反応
:(4)やめてー。

*0Headつつかれ反応
:(3)たすけてー。

上のように書いて突付く度にデフォルトサーフェスに戻ってえらい目にあった。

φを改行無効に使う

  • 行末の"φ"は改行無効。ちょうべんり。
    • でも次の行の最初が"$"とか">"とかだとそれを無効化しちゃってアウトみたい。
    • "("はOKみたいなので、次の行以降を"()"で置き換えてしまうしかない。
#ダメな例
*
:あいうえおφ
>ほげ【タブ】!(乱数0~3)
>もけ

*ほげ
:かきくけこ

*もけ
:さしすせそ
#よい例
*
:あいうえおφ
(おきかえ)

*おきかえ
>ほげ【タブ】!(乱数0~3)
>もけ

*ほげ
:かきくけこ

*もけ
:さしすせそ

ナゾの遅延現象

  • 通常はあまり気にしなくてよいと思われる。
  • "ほげ"や"もけ"にループとか使ったときに稀に現れる怪現象。
*
:\_q(ほげ)\n(もけ)\_q

こう書くと改行時に一瞬時間が空くみたい。カコワルイ。

*
:\_q(ほげ)(改行)(もけ)\_q

@改行
\n

こう書いたら大丈夫だった。なんぞこれー^^

  • いろいろわかってきた。ナゾはすべてとけた。
    • @で呼び出すと、自動ウェイトが挿入されない。直に\nって書くと、自動ウェイトが挿入される。らしい。

コメント

  • 怪現象というか多分里々の仕様上\nに自動ウェイトついてるだけだから一時的に$自動挿入ウェイトの倍率を0にすればいいんじゃない? -- 2008-01-19 (土) 13:38:00
  • 謎の遅延現象か自動でウェイトタグが入ってるのか知りたい時はSSPのスクリプトログで確認するといい。もうしてるかもしれないが。 -- 2008-01-19 (土) 13:40:42
  • だとすると\nを(改行)に置き換えて@改行で呼び出したときの挙動の違いが更に謎なんですよね...。何か新しいことが解り次第追記していきたいと思います。 -- Don 2008-01-19 (土) 14:08:57
  • @で呼び出すと、自動ウェイトが挿入されないみたいでした。ありがとうございます。 -- Don 2008-01-19 (土) 14:24:08
  • 「Referenceに全角括弧が渡された場合」→実は括弧をネストしなければ括弧が展開されます -- レゴキチ 2008-09-26 (金) 00:18:32
  • 括弧をネストってどういう状態でしょうか…。具体的なスクリプトの例を教えて頂けますか? -- Don 2008-09-25 (Thu) 13:15:12
  • 括弧のネストとは括弧を入れ子にすることです。「(if,(R0),0,1)」みたいな。 -- レゴキチ 2008-09-27 (土) 01:19:46
  • ところが「(R0)」を剥き出しにしておいて、リファレンスに括弧が入っていると展開されたりします -- レゴキチ 2008-09-27 (土) 01:21:09
  • わかんない>< 上の方に再現スクリプト一式書いてくだしあ>< -- Don 2008-09-26 (Fri) 17:52:00

URL B I U SIZE Black Maroon Green Olive Navy Purple Teal Gray Silver Red Lime Yellow Blue Fuchsia Aqua White

Reload   New Edit Freeze Diff ファイルUp Copy Rename   Front page List of pages Search Recent changes Backup   Help
feed rss feed rdf feed rss20 feed lirs emily4 inside marble note
Last-modified: Tue, 11 Nov 2008 01:15:30 HADT