はじめに

  • 互換性を重視しない。
  • 汎用性を軽視する。
  • 既存機能を軽視しない。
  • わかりやすさを重視する。

本書の見方・使い方

もくじ

基本スクリプト

実用スプリクト

里々リファレンス

前書き

  • トーク宣言、または単語群宣言が存在する行までは前書き空間となります。
  • ここには何を書いても構いません。里々スクリプトと見なされず、読み込まれません。
  • 関連ワード
    • →コメントアウト

トーク要素

*[トーク名]【タブ】[採用条件式]    ←[トーク宣言]
[トーク本文]             ←[トーク空間]
  • トークはトーク宣言とトーク空間からなります。
  • トークとは、“ゴーストの会話及びその挙動”を簡単に記すための定義です。
    • “ゴーストの会話及びその挙動”とは、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

トーク宣言

*[トーク名]
*[トーク名]【タブ】[採用条件式]
  • トーク宣言を行うには、行頭に「*」と入力します
  • トーク宣言以後、他のトーク宣言、単語群が来るまで全てトーク空間に属します。

トーク名

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

採用条件式

トーク空間

ジャンプ

選択肢

話しかけ

トーク本文

単語群

単語群宣言

単語群名

採用条件

単語空間

括弧

エスケープ

φ

  • [これ。:http://ja.wikipedia.org/wiki/%CE%A6]
  • ギリシャ文字、英語で「ファイ」とか読む。
  • 全角カッコとかスコープ切り替え「:」とか変数宣言「$」とかの前につけると無効化される。
    *エスケープ例
    φ*
    φ@
    φ><無理です!
    :こんにちは。コロン→「φ:」
    φ$←ドルだよー。
  • 他にも何かあったような。

コメントアウト

  • 全角#以下の一行は里々スクリプトとして読み込まれません。
    *ほげほげ#コメントアウトだよ
    #コメントアウトしてるけどこの行の改行までは無効化できないよ
    :ああ、#(ユーザ名)さん大好き!←コメントアウトされてますから!
    >ふがふが【タブ】(へごへご)#ここもコメントアウト
  • たしかこんな感じ。*2

ファイルの先頭

  • 辞書ファイルの前書き。
  • 辞書ファイルの先頭から一つ目のトーク宣言あるいは単語宣言まではコメントアウトと見なされます。
    ------------------------
    ファイルの先頭。
    ここには何を書いても無視される。
    
    *
    ここからスクリプト。
    
    @ほげ
    もうずっとスクリプト
  • 関連ワード
    • →前書き

演算子

変数

環境変数

リクエスト情報

(ID)
  • 送られてたイベント名。
(Reference[半角数字])
  • リファレンス。
  • Event通知時の引数取得。
(status code)
  • SHIORI 3.0 GET
    • かな?*3
(Status)
  • 喋り中は「talking」
(Sender)
  • ベースウェアの名前
(Charset)
  • リクエストの文字コード

([全半角R][全半角数字])
  • Event通知時の引数取得。
  • (Refference[半角数字])の省略
([全半角R]の数) [#b23042dc]
  • リクエストのリファレンス番号の最大値を返す。

内部情報

(里々のバージョン)
  • 整備班カスタムから実装
  • バグ報告するときにはこれで里々のバージョンを確認しておこう。
(pwd)
  • satori.dllのあるフォルダまでの絶対パスを返す。
(本体の所在)
  • ベースウェアがインストールされているフォルダを取得。
(直前の選択肢名)
([全半角H][全半角数字])
  • 過去に括弧で展開した値を取得。
  • 1オリジン。
(サーフェス[全半角スコープ番号])
  • 現在の指定したスコープのキャラクターが表示しているサーフェス番号を返す。*5
  • (サーフェス[全半角スコープ番号])って動かないんじゃね? -- legokichi 2008-09-26 (金) 00:26:17
  • (サーフェス[半角スコープ番号])かも? -- legokichi 2008-09-26 (金) 01:08:03
(前回終了時サーフェス[全半角スコープ番号])
  • 前回終了時の指定したスコープのキャラクターが表示していたサーフェス番号を返す。*6
(ウィンドウハンドル[全半角スコープ番号])
  • 指定したスコープのウィンドウハンドルを返す。*7

外部情報

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

辞書情報

(countTalk)
  • 全トーク数(*の数)
(countEventTalk)
  • イベントトーク数
  • 主にOn?で始まっているもの。
(countOtherTalk)
  • その他のトーク数
(countNoNameTalk)
  • ランダムトーク数
  • トークのラベル(名前)がないもの。
(countWords)
  • 単語群数(@の数)
(countWord)
  • 総単語数
(countParenthesis)
  • 辞書中の括弧の数
  • たぶん「(」の数*13
(countVariable)
  • 変数の数
(countAnchor)
  • アンカー数
(countLine)
  • 辞書中の改行の数

存在判定

(文「[トーク名]」の存在)
  • 指定したトークが存在する場合は「1」
  • 存在しない場合は「0」
(文「[トーク名]」の数 )
  • 指定したトークの数
(単語群「[単語群名]」の存在)
  • 指定した単語群が存在する場合は「1」
  • 存在しない場合は「0」
(単語群「[単語群名]」の数)
  • 指定した単語群の数
(変数「[変数名]」の存在)
  • 指定した変数が存在する場合は「1」
  • 存在しない場合は「0」

時間情報

(time_t)
  • 万国標準時(UCT)の1970年1月1日の00:00:00からの経過時間を秒単位で表した数値
  • 半角数字
(現在年)
  • 全角数字
(現在曜日)
  • 月火水木金土日のうちどれか
(現在月)
  • 全角数字
(現在日)
  • 全角数字
(現在時)
  • 全角数字
(現在分)
  • 全角数字
(現在秒)
  • 全角数字
(起動時)
  • 本体が起動してからの時間の時間の部分
(起動分)
  • 本体が起動してからの時間の分の部分
(起動秒)
  • 本体が起動してからの時間の秒の部分
(単純起動秒)
  • 本体が起動してからの秒単位の時間
(単純起動分)
  • 本体が起動してからの分単位の時間
(OS起動時)
  • OS(Windows)が起動してからの時間の時間の部分
  • 実は「OS起動?」の情報が実際には取得できていないというウワサが*14
(OS起動分)
  • OS(Windows)が起動してからの時間の分の部分
(OS起動秒)
  • OS(Windows)が起動してからの時間の秒の部分
(単純OS起動秒)
  • OSが起動してからの秒単位の時間
(単純OS起動分)
  • OSが起動してからの分単位の時間
(累計時)
  • このゴーストを起動した累計時間の時間の部分
(累計分)
  • このゴーストを起動した累計時間の分の部分
(累計秒)
  • このゴーストを起動した累計時間の秒の部分
(単純累計秒)
  • このゴーストを起動した秒単位の累計時間
(単純累計分)
  • このゴーストを起動した分単位の累計時間
(最終トークからの経過秒)
  • 最後のトークから経過した秒。*15

(ゴースト起動時間累計ミリ秒)
  • このゴーストを起動したミリ秒単位の累計時間
  • セーブデータに自動的に保存される。
    • satori_savedata.sat
    • satori_savedata.txt
    • satori_savebackup.sat
    • satori_savebackup.txt
      • に保存されます。
  • TODO*16
    • 保存されるタイミング
    • 上書きは反映されるのか

トーク予約情報

(予約トーク数)
  • 現在予約されているトーク数*17

特殊変数

  • これらの変数は「変数に値を代入することによって何らかの効果を得るもの」です。
    • satori_savedata.sat
    • satori_savedata.txt
    • satori_savebackup.sat
    • satori_savebackup.txt
      • に保存されます。(一部例外あり)

トーク予約

(次のトーク)
  • 次の予約されているトーク名
  • (次から1回目のトーク)と同義?*18
(次から[全半角数字]回目のトーク)
  • 指定した回に予約されているトークがあればそのトーク名
  • なければ何も返さない*19
(トーク「[トーク名]」の予約有無)
  • 指定したトークが予約されていれば「1」
  • されていない場合は「0」*20

あああ変数

関数

内部関数

ああ

ssu.dll

ああ

その他

ライセンス

付録

さとりて

れしば

satori.dllやsatorite.exeから送られてくる里々スクリプトの実行ログを表示する。

  • 「リアルタイムで表示する」とれしばの表示が追いつかなくて里々本体の処理も遅くなる。
  • Ctrl+Sでログ内容をれしば.exeと同じフォルダにれしば.txtとして保存できる。
    • リアルタイムで表示せず、F5とCtrl+Sを使いまわすと複雑な里々スクリプトの実行ログも追いやすい
      • 表示が速すぎてログを見る前に流れてしまうときに便利。
  • 以下の特殊変数を設定することでれしばに送る情報を制御できるらしい。*21
    $Log
    $RequestLog
    $OperationLog
    $ResponseLog

*1 要検証
*2 要確認
*3 要確認
*4 要確認
*5 要確認
*6 要確認
*7 要確認
*8 要確認
*9 要確認
*10 要確認
*11 要確認
*12 要確認
*13 要確認
*14 要確認
*15 要確認
*16 要確認
*17 要確認
*18 要確認
*19 要確認
*20 要確認
*21 要確認

トップ   編集 凍結 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2009-02-12 (木) 00:38:45