カケラの樹 Logo 里々メモ

今までに試したことや試している途中のメモと記録。

ご使用は自己責任で。


色々な方に助けて頂きました。

この場を借りてお礼申し上げます。

  1. sendでsenderが送り、それに対してSIORIがresponseを返す。

    それ以外の通信タイミングはないのだそうで。


    sendがこない限りSHIORIは動けないということ、らしい。

  2. ループは要するに変数呼び出しだから、

    (loop,単語処理,(単語群「単語」の数))とかけばその単語群の一覧をしゃべらせることができる。


    (単語群「単語」の数)はこれで2なので、

    二回(単語処理)が呼び出されてループが終了する。

    @の内容は、ランダムではあるが全て回るまで重複はされない。


    *fが押された
    :知ってる単語の一覧。
    
    C(loop,単語処理,(単語群「単語群」の数))
    (単語群「単語群」の数)個の単語を知っています。
    
    
    @単語群
    こんにちは
    こんばんは
    
    
    *単語処理
    :(単語群)
    

    ちゃんとループからも脱出。

    ループ抜けも別途設定しておいた方が安全なのかもしれないが。

  3. リプレイスを使うと、どうも記号関係で勝手にが入ったりなどするように思う。

    リプレイスでは変換できないものもあるみたいだ。

  4. 今のところ残念ながら取得方法はないそうな。

  5. 里々Wikiに項目ができている。

    「特殊変数」の中の「引数区切り追加」と「引数区切り削除」がそれ。

    「特殊変数」:http://www.mac.gn.to/satori/index.php?%5B%5B%C6%C3%BC%EC%CA%D1%BF%F4%5D%5D


    バイト値1は使用されているので、メールチェック時などにエラーが出る。

    引数区切りは自分で追加削除が可能なので、自分が使っていない記号を使うのも手。


    ここではバイト値3を使用している。

    実際にトランスレート用などの引数区切りに記号を使用しているゴーストもいる。*1


    *OnSatoriLoad
    $引数区切り追加 (sprintf,%c,3)
    $byte3 (sprintf,%c,3)
    

    引数区切りの設定は保存されないので、毎回設定してやる必要がある。

    里々Wikiによれば、以下のものが初期状態では実行された状態になっているそうな。

    $引数区切り追加【タブ】、
    $引数区切り追加【タブ】、
    $引数区切り追加【タブ】,
    $引数区切り追加【タブ】,
    $引数区切り追加【タブ】(sprintf,%c,1)
    

    また、「,」を削除するとSAORIを(sync~)で実行できなくなるのだそうで。

    *1: WANDERLUSTなど

  6. (sender)はイベントの送り主が入る。


    *OnSecondChangeなどでベースウェアがイベントを送ってくるので、

    (sender)には基本的にベースウェアの名前が入るのだそうだ。


    「The Hand」や「ぬるぽいんたーはい」はイベントを送ってくるので、

    (sender)で対応が可能となる。

  7. 当たり判定はつけたくない人や、

    シェルごとに当たり判定を変えるのが嫌な人向け。


    基本的に、変数「$現在のシェル」が必要になる。


    *OnNotifySelfInfo
    $現在のシェル【タブ】(R3)
    

    で取得、さらに*OnShellChangedにシェル名を上書きして辞書を手動セーブすると良い。

    いちいちセーブするのは、セーブデータ読みSAORIに対応するため。

    せっかくシェル名がわかるのなら、活用した方が便利で面白い。

    1. (かなり古いものなので汚いスクリプトです。


      判定は入れ子にして、一つの式から、

      複数の内容に飛ばせるようにした方が見やすく美しいです。)


      スカートのときだけめくれるようになる。

      当たり判定を増やさずに処理だけを変えられる。


      *OnShellChanging
      :べ、別にあなたのために着替えてくるんじゃないんだからねっ。
      >シェル判定1【タブ】(R0)!=スカート
      $現在のシェル【タブ】1
      
      *シェル判定1
      $現在のシェル【タブ】0
      
      *0ころころ
      >めくられた【タブ】(現在のシェル)>0
      >めくれません
      
      *めくられた
      :だからスカートは嫌なのよっ!
      
      *めくれません
      :ズボンはめくれないわよ、残念でした♪
      
    2. ゴースト「Un Known」のdic_k-modeで乱用している。

      ゴースト「図書館バイト」の触り反応にも何種類か入っているのでどうぞ。


      *0headつつかれ【タブ】(compare,(現在のシェル),k-mode)
      :ぱっくり。
      

      のように書いておくと、

      条件が一致した場合にしか、選ばれる台詞の候補にならない。

      母群自体が変わるので非常に便利、しかも綺麗に書くことが可能である。


      上のは実際に「Un Known」で使用しているもので、

      シェルがk-modeでなければいかにheadをつついてもこの反応は返ってこない。

  8. =========================================

    里々の自動挿入ウェイトを調整

    =========================================

    句読点がまるでない文章だと効果が出にくい。

    それでも、長文になると、読み上げるスピードそのものがスロウダウンする。


    自動挿入ウェイトを減らしてやると、逆に早口にさせることが出来る。

    作りかけの奴で試しに半分にしたら、早すぎてかなりいらいらしたが。


    →ウェイトやトランスレートに関してはCMNが手本になります。

    すごいゴーストなので、里々使いは一見の価値あり。


    *
    :トークスピードの調整。
    
    _ゆっくり
    _ふつう
    _せかせか
    
    
    *ゆっくり
    $自動挿入ウェイトの倍率【タブ】400
    :うん、このくらいでどうかな。
    まだ聞きにくかったら、言ってね。
    
    
    *ふつう
    $自動挿入ウェイトの倍率【タブ】200
    :うん、そうさせてもらうね。
    
    
    *せかせか
    $自動挿入ウェイトの倍率【タブ】0
    :じゃあ、早口いきます。
    舌をかんでも見逃して。
    
    1. 直置きしているウェイトを変えたい場合は強引だけどこれでできなくもない。

      はっきりいってこれは使わないほうがいい。

      CMNあたりを参考にして自作を勧める。


      ただし、w5にしようと思って、

      inputboxから5を入れると5しか入力していないはずなのにとなる。


      はけろ側にさくら側をひっつけるサクラスクリプトなので、シェルが動くことになる。

      実際に使うときには、選択肢から選ばせたほうがいい。


      まず、satori_conf.txtに初期変数としてこの変数を追加。

      $ウェイト変数【タブ】0


      replace_after.txtにはこれを追加。

      w【タブ】w


      辞書の何処かにこの単語群を追加。

      @ウェイト

      w(ウェイト変数)


      テスト用のトーク。(ウェイト)が実際の出力時にはw○に変換される。

      実際にはinputboxではなくて、選択肢で選ばせたほうがいい。


      *ウェイト手動調整テスト

      :うぃ、じゃ、テスト。

      絶対に半角で入れてね。

      どのくらいにする?

      ![open,inputbox,ウェイト変数]


      *ウェイト変数を教えてもらった

      :実際に適用した文は、(ウェイト)こんな感じ。

      今のウェイト変数は(ウェイト変数)で、(ウェイト)

      リプレイスアフターから、(ウェイト)置き換えを使ってる。(ウェイト)

      …どう?


  9. *
    :今日のおやつは(お菓子)だよ!
    >和菓子【タブ】(H1)==ようかん
    :洋菓子!
    
    
    @お菓子
    ようかん
    ケーキ
    チョコレート
    クッキー
    

    かっこの中身を捕らえて分岐させる。

    いくつもの台詞に対応させたい場合は、


    >和菓子【タブ】(H1)==ようかん||(H1)==おせんべ
    

    のように書くことになる。

  10. @以下などで「もう片方にスコープ切替」をしたい時に、

    あらかじめ記述しておくことで場合に応じて同じ台詞中でもスコープを切り替えられる。


    同じ台詞群を

  11. 里々で括弧を使って判定する際に気がついたことメモ。


    ○((FMO0name)の言いたいこと)

    ×(%selfnameの言いたいこと)


    「カレカノ」の場合、さくら側のネームは「彼」なので、

    どちらも(彼の言いたいこと)となるはずだが、


    (%selfnameの言いたいこと)は括弧のまま、

    (彼の言いたいこと)として出力されてしまう。


    ((FMO0name)の言いたいこと)と書いた場合には、

    きちんと語群「@彼の言いたいこと」から代入される。


    わざわざ(FMO0name)や%selfnameを使っているのは、

    シェルによってネームが変化した際にトーク内容を変化させるため。

  12. 里々の場合。

    AYAなどは始めから

  13. 数字と文字が混じるとエラーが出るので、ssu.dllのcompareを使ったほうが良い。

    また、英数だけであっても、スペースが入るとやはりエラーが出る。

    これは結構起こる事態なので注意。


    *
    >ほげほげ【タブ】(変数なんとか)==1
    

    ではなく、


    *
    >ほげほげ【タブ】(compare,(変数なんとか),1)
    

    のように書く。

    「変数なんとか」という変数に、1が入っていればジャンプ先へと飛ぶ。

  14. タイマによって呼び出されたトークで同じタイマを予約することは出来ない。


    そのため、循環させたい場合には、

    二種類のタイマを用意して、リレーさせる必要がある。


    *
    :タイマの実験を始めるよ。
    $実験1タイマ【タブ】30
    
    
    *実験1
    :実験2タイマにリレー。
    
    _脱出!
    
    $実験2タイマ【タブ】30
    
    
    *実験2
    :実験1タイマにリレー。
    
    _脱出!
    
    $実験1タイマ【タブ】30
    
    
    *脱出!
    :実験終了!
    $実験1タイマ【タブ】0
    $実験2タイマ【タブ】0
    

    これで永久循環が可能。

    脱出用に何か用意しておかないと脱出できないので注意。

    ここでは、「脱出!」を設けて脱出できるようにしてあります。

  15. >彼は怒っているの?【タブ】(サーフェス0)==7

    >彼女は怒っているの?【タブ】(サーフェス1)==17


    トーク中で使うと判定が間に合わないことがある。

    なので、本来はOntalkに持ってきてサーフェス戻しトークなどで使うためのもののようだ。

  16. つつき反応を二段階にわけ、かつ、

    しばらく放っておかないと反応が一段階目には戻らないようになります。


    1.

    変数につつかれた回数を記録し、一定数以上で別反応へ飛ばす。

    一定時間がたつと、タイマでつつかれた回数が0に戻るように仕込む。


    2.

    別反応時につつかれると、タイマの時間が少し延長される。


    *0つつかれ
    >つつかれまくり0 (つつき回数カウント0)==3
    %selfnameは危険だからつつかないほうが…。
    $つつき回数カウント0=(つつき回数カウント0)+1
    $つつき回数カウント0初期化タイマ【タブ】30
    
    
    *つつかれまくり0
    :傷物にされるっ!
    $つつき回数カウント0初期化タイマ=(つつき回数カウント0初期化タイマ)+5
    
    
    *つつき回数カウント0初期化
    $つつき回数カウント0【タブ】0
    

    「カレカノ」につんでいるもの。

    実際に見てみたい場合は、ダブルクリックしてみたください。

  17. 「特定シェルから特定シェル」への変更で台詞を変化させられます。

    また、「特定シェル」への変更もまとめて記述が可能です。



    最初にsatori_conf.txtに変数として、


    $現在のシェル【タブ】master
    

    を仕込んでおきましょう。

    変数の初期化というやつです。

    初期化忘れをすると、初めて動かしたときにエラーが出ます。


    辞書に以下を追加。

    また、現在のシェルを記録しておくと何かと便利です。


    *OnNotifySelfInfo
    $現在のシェル【タブ】(R3)
    
    
    *OnShellChanging
    $一つ前のシェル【タブ】(現在のシェル)
    $現在のシェル【タブ】(R0)
    >(一つ前のシェル)から(現在のシェル)へ変更
    >(一つ前のシェル)から変更
    >通常のシェルチェンジ開始
    
    
    *OnShellChanged
    >(現在のシェル)へ(一つ前のシェル)から変更
    >(現在のシェル)に変更
    >通常のシェルチェンジ完了
    
  18. トランスレート。


    コピペと初期変数追加だけで動かせる例を、

    「ネコミミモード」と称して用意しておきました。

    興味がおありの方はちょいちょいと放り込んでみてください。


    satori_conf.txtに初期値を追加する。
    $トランスレートモード【タブ】OFF
    
    
    *OnSatoriLoad
    $引数区切り追加 (sprintf,%c,3)
    $byte3 (sprintf,%c,3)
    
    
    *OnTranslate
    >トランスレート【タブ】(compare,(トランスレートモード),ON)
    
    
    *eが押された
    $トランスレートモード【タブ】(if,(compare,(トランスレートモード),OFF)==1,ON,OFF)
    :トランスレート(トランスレートモード).
    
    
    *トランスレート
    $voice【タブ】(R0)
    $voice【タブ】(replace(byte3)(voice)(byte3)。(byte3)にゃ。)
    (voice)
    

    引数区切りとして追加するものは、使っていない記号とかでもよい。*1

    特定の場合には変換を回避しないと、不自然になるので、

    あるいは、さらに下に特定変換用のを追加するとか。


    【参考文献】


    「里々Wiki」

    http://www.mac.gn.to/satori/index.php?%5B%5Bssu%5D%5D#content_1_4


    レゴキチさんの「里々でのOnTranslateの使い方」

    http://emily.nanika.jp/specwiki/?%A5%EC%A5%B4%A5%AD%A5%C1%2F%CE%A4%A1%B9%A4%C7%A4%CEOnTranslate%A4%CE%BB%C8%A4%A4%CA%FD

    *1: たとえば、「○」とか

    1. お前もねこみみになれ!!


      *ネコミミモードをメニューなどから呼び出してください。

      呼び出すたびに、トランスレートのON・OFFが切り替わるはず。


      satori_conf.txtに初期値を追加する。
      $トランスレートモード【タブ】OFF
      
      *OnSatoriLoad
      $引数区切り追加 【タブ】(sprintf,%c,3)
      $byte3【タブ】(sprintf,%c,3)
      
      
      *OnTranslate
      >トランスレート【タブ】(compare,(トランスレートモード),ON)
      
      
      *ネコミミモード
      $トランスレートモード【タブ】(if,(compare,(トランスレートモード),ON)==1,OFF,ON)
      :ネコミミモード(トランスレートモード).
      
      
      *トランスレート
      $voice【タブ】(R0)
      $voice【タブ】(replace(byte3)(voice)(byte3)。(byte3)にゃ。))
      (voice)
      
      
      $voice【タブ】(R0)
      $voice【タブ】(replace(byte3)(voice)(byte3)よー。(byte3)にゃー。)
      $voice【タブ】(replace(byte3)(voice)(byte3)てー。(byte3)てだにゃー。)
      $voice【タブ】(replace(byte3)(voice)(byte3)るー。(byte3)るにゃー。)
      $voice【タブ】(replace(byte3)(voice)(byte3)くー。(byte3)くにゃー。)
      $voice【タブ】(replace(byte3)(voice)(byte3)たー。(byte3)たにゃー。)
      $voice【タブ】(replace(byte3)(voice)(byte3)よね。(byte3)よにゃ。)
      $voice【タブ】(replace(byte3)(voice)(byte3)いる。(byte3)いるにゃ。)
      $voice【タブ】(replace(byte3)(voice)(byte3)なよ。(byte3)にゃよ。)
      $voice【タブ】(replace(byte3)(voice)(byte3)ても。(byte3)てもにゃ。)
      $voice【タブ】(replace(byte3)(voice)(byte3)い。(byte3)いにゃ。)
      $voice【タブ】(replace(byte3)(voice)(byte3)だ。(byte3)にゃ。)
      $voice【タブ】(replace(byte3)(voice)(byte3)よ。(byte3)にゃ。)
      $voice【タブ】(replace(byte3)(voice)(byte3)が。(byte3)がにゃ。)
      $voice【タブ】(replace(byte3)(voice)(byte3)う。(byte3)うにゃ。)
      $voice【タブ】(replace(byte3)(voice)(byte3)た。(byte3)たにゃ。)
      $voice【タブ】(replace(byte3)(voice)(byte3)ね。(byte3)にゃ。)
      $voice【タブ】(replace(byte3)(voice)(byte3)に。(byte3)ににゃ。)
      $voice【タブ】(replace(byte3)(voice)(byte3)す。(byte3)すにゃ。)
      $voice【タブ】(replace(byte3)(voice)(byte3)る。(byte3)るにゃ。)
      $voice【タブ】(replace(byte3)(voice)(byte3)か。(byte3)かにゃ。)
      $voice【タブ】(replace(byte3)(voice)(byte3)つ。(byte3)つにゃ。)
      $voice【タブ】(replace(byte3)(voice)(byte3)です。(byte3)だにゃ。)
      $voice【タブ】(replace(byte3)(voice)(byte3)ます。(byte3)ますにゃ。)
      $voice【タブ】(replace(byte3)(voice)(byte3)ような。(byte3)ようにゃ。)
      $voice【タブ】(replace(byte3)(voice)(byte3)くらい。(byte3)くらいにゃ。)
      $voice【タブ】(replace(byte3)(voice)(byte3)だけど。(byte3)だけどにゃ。)
      $voice【タブ】(replace(byte3)(voice)(byte3)ところ。(byte3)ところだにゃ。)
      $voice【タブ】(replace(byte3)(voice)(byte3)ない。(byte3)ないにゃ。)
      $voice【タブ】(replace(byte3)(voice)(byte3)なん。(byte3)にゃん。)
      $voice【タブ】(replace(byte3)(voice)(byte3)すか。(byte3)すかにゃ。)
      $voice【タブ】(replace(byte3)(voice)(byte3)とけ。(byte3)とけにゃ。)
      $voice【タブ】(replace(byte3)(voice)(byte3)には。(byte3)にはにゃ。)
      $voice【タブ】(replace(byte3)(voice)(byte3)しく。(byte3)しくにゃ。)
      $voice【タブ】(replace(byte3)(voice)(byte3)かも。(byte3)かもにゃ。)
      $voice【タブ】(replace(byte3)(voice)(byte3)あり。(byte3)ありにゃ。)
      $voice【タブ】(replace(byte3)(voice)(byte3)みる。(byte3)みるにゃ。)
      $voice【タブ】(replace(byte3)(voice)(byte3)だな。(byte3)だにゃ。)
      $voice【タブ】(replace(byte3)(voice)(byte3)ながら。(byte3)にゃがら。)
      $voice【タブ】(replace(byte3)(voice)(byte3)ないか。(byte3)にゃいか。)
      $voice【タブ】(replace(byte3)(voice)(byte3)なんだって。(byte3)にゃんだって。)
      $voice【タブ】(replace(byte3)(voice)(byte3)なんだってー。(byte3)にゃんだってー。)
      $voice【タブ】(replace(byte3)(voice)(byte3)なんと。(byte3)にゃんと。)
      $voice【タブ】(replace(byte3)(voice)(byte3)なあ。(byte3)にゃあ。)
      $voice【タブ】(replace(byte3)(voice)(byte3)っけ。(byte3)っけにゃ。)
      $voice【タブ】(replace(byte3)(voice)(byte3)つっ。(byte3)つにゃっ。)
      $voice【タブ】(replace(byte3)(voice)(byte3)るっ。(byte3)るにゃっ。)
      $voice【タブ】(replace(byte3)(voice)(byte3)ないかにゃ。(byte3)にゃいか。)
      
      (voice)
      
  19. レゴキチさまに教えていただいたもの。


    ON・OFFスイッチ。

    呼び出されるたびに、ONならOFFに、OFFならONに切り替わる。


    (if,(compare,(スイッチの状態),ON)==1,OFF,ON)
    

    【中身を展開】

    すでにONの場合、


    (compare,(スイッチの状態),ON)で、

    (スイッチの状態)にONが代入されて(compare,ON,ON)で1、

    (if,(compare,(スイッチの状態),ON)==1,OFF,ON)は(if,1==1,OFF,ON)。


    (if,1==1,OFF,ON)ならOFF、(if,0==1,OFF,ON)ならON。


    かな。

    【展開ここまで】


    実際に使っている例は、「図書館バイト」の話題選択と、「カレカノ」の猫語トランスレート。

    図書館バイトで使っているものを貼っておく。


    *話題選択メニュー
    :話題の選択をしてね。
    _q
    q[神話  (話題・神話),話題スイッチ神話]
    q[民話  (話題・民話),話題スイッチ民話]
    q[雑談  (話題・雑談),話題スイッチ雑談]
    
    _閉じる
    _q
    
    *閉じる
    :はい。
    
    *話題スイッチ神話
    $話題・神話	(if,(compare,(話題・神話),ON)==1,OFF,ON)
    :(話題・神話)にしたよ。
    
    >話題選択メニュー
    
    
    *話題スイッチ民話
    $話題・民話	(if,(compare,(話題・民話),ON)==1,OFF,ON)
    :(話題・民話)にしたよ。
    
    >話題選択メニュー
    
    
    *話題スイッチ雑談
    $話題・雑談	(if,(compare,(話題・雑談),ON)==1,OFF,ON)
    :(話題・雑談)にしたよ。
    
    >話題選択メニュー
    

    今の状態が表示され、選択するたびに切り替わる。

  20. 実用にならないお遊び。

    要するに役に立たないもの。

    1. ただのお遊びで実用性は皆無です。

      普通に記述した方がいいし、トランスレートを使いたいならMAKOTOか*OnTraslateを使いましょう。

      *wが押された
      $その1 (split,そんなことしちゃだめ!★そのようなことをなさってはいけません!★そんなことしちゃ、だめだめです!,★)
      
      
      $Tスイッチ【タブ】0
      :(S(Tスイッチ))
      (言い方を変えてください)
      
      
      *言い方を変えてください
      もっと面白く言ってくれなきゃやだ。
      $Tスイッチ【タブ】2
      :そ、(S(Tスイッチ))
      
      
      *言い方を変えてください
      もっと丁寧に言ってくれなきゃやだ。
      $Tスイッチ【タブ】1
      :そ、(S(Tスイッチ))
      

      2で丁寧語、3でちょっと無理した感じのにそれぞれかわります。

      スイッチを切り替えっぱなしだと、ずっと指定のものが入ります。


      1が普通。

雨上がりの青空を探して。