コンテンツにスキップ

SAORI の呼び出し

里々は、() の中から SAORI を呼び出せます。

登録

satori_conf.txt の @SAORI に、1 行に 1 つ、次の形式で書きます。

@SAORI
呼び出し名,相対パス,定義済み引数1,定義済み引数2,…
項目 内容
呼び出し名 () の中で使う名前
相対パス SAORI のファイルの、ゴーストの master フォルダからの相対パス
定義済み引数 呼び出しのたびに、先頭に付けて渡す引数(省略可)
  • 同じ呼び出し名を複数登録するとエラーになります。
  • 実行中に登録するときは load_saori を使います。
  • saori/ssu.dll を指定すると、内蔵の ssu が使われます(登録しなくても、ssu の関数名は自動で登録されます)。

種類

種類 条件 動作
SAORI/1.0(universal) 拡張子が .dll DLL を読み込み、GET Version で SAORI/1.0 を確認して使う
SAORI basic 拡張子が .dll 以外(.exe など) 実行ファイルを、引数をコマンドラインに並べて起動し、標準出力を結果にする。SecurityLevel が local のときだけ

呼び出し

(呼び出し名、引数1、引数2、…)
  • 引数は SAORI 引数の計算の設定によって、先に整数の式として計算されることがあります。
  • リクエストの Argument0 から、定義済み引数、() の引数の順に渡されます。
  • 結果(Result)が () の展開結果になり、Value0… は (S0)… に入ります((Sの数) が個数)。
  • 結果に () が含まれていれば、もう一度展開されます。
  • SecurityLevel は、里々の実行権限(local または external)を渡します。

通信

  • 里々から SAORI へは Charset: UTF-8 で送ります。SAORI が loadu をエクスポートしていれば UTF-8 のパスで、なければ従来の load で呼びます。
  • GET Version の応答に Charset ヘッダがない(または空の)SAORI には、Mc203-2以降、ACP 版と同じく Charset: Shift_JIS で送ります。華和梨の SAORI モードのように、Charset ヘッダを見ずに Shift_JIS として読む SAORI があるためです。Shift_JIS にない文字(絵文字など)は ? になります。
  • GET Version の応答に Charset ヘッダがない(または空の)SAORI には、Mc201-9以降、直後に何もしない EXECUTE(Argument0 が空)を 1 回送り、応答を読み捨てます。YAYA as SAORI の古い ayasaori.aym は、GET Version で Charset を返さず、その後の最初の EXECUTE だけ文字コードの設定が合わずに文字化けするためです。ayasaori.aym を yaya-as-saori の現行版に差し替えれば、この呼び出しは行われません。
  • 応答は、応答の Charset ヘッダに従って読みます。ヘッダがなければ、Shift_JIS で送った SAORI の応答は Shift_JIS として、それ以外は内容で判定して読みます(Mc203-2以降)。

エラー

ログの内容 意味
設定ファイルの書式が正しくありません。 呼び出し名か相対パスがない
同じ呼び出し名が複数定義されています。 呼び出し名の重複
プラグインが存在しません。 ファイルがない
SAORI/1.xのdllの読み込みに失敗しました。 読み込みに失敗した
400 Bad Request / 呼び出しの不備 SAORI が 400 を返した
500 Internal Server Error / saori内でのエラー SAORI が 500 を返した

これらのログは DLLのパス - 呼び出し名 : 内容 の形式です。内蔵の ssu を使っている(saori\ssu.dll のファイルがない)場合、Mc201-6以降は DLL のパスの代わりに (internal ssu) と表示されます。

里々を SAORI として呼び出す

satori.dll は、SAORI/1.x のリクエストにも応答できます(Argument0 を ID、Argument1… を Reference0… にして通常と同様に処理し、Result と Value0… で返します)。