SAORIについて。
簡単にいうとゴーストに機能を追加するプラグイン。dllやexe形式で提供されます。
難しく言うとSHIORIから利用するプラグイン。見た目は関数っぽい何か。
さおりちゃんと遊ぼう、さおこれ、さおりんなど外部サイトも参照。
wiki内関連ページ:SAORI/YAYA、SAORI/YAYA/統合関数一覧
SAORIの使うには †
- ghost\master\saoriフォルダに、使いたいSAORIの本体を置く。
- satori_conf.txtの「@SAORI」以降の行に次のように書いて登録する。
登録名,saori/SAORI本体のファイル名
- 呼び出すには次のように書く。
(登録名[,引数n…])
登録名には好きな名前を付けられます。
特に決まりはなく、そのSAORIの名前をそのまま使ったり、短縮したものなど、自分が把握しやすいものがいいでしょう。
呼び出す方法は、関数のそれと全く同じです。
引数が必要ないSAORIなら、(登録名)だけでOK。
使用例 †
MIYさんのmciaudio.dllを組み込む例。
tips †
- SAORI本体はsaoriフォルダ以外に置く事もできます。
登録時の「saori/」はsaoriフォルダを指しているので、これを削除するとghost\masterになる他、自分で好きなフォルダを作って指定するのもありです。
- 「@SAORI」であらかじめ引数付きで設定しておくことも可能で、
曲読み込み,saori/mciaudio.dll,load
演奏,saori/mciaudio.dll,play
上のように宣言した場合は下記のように呼び出しできるようになります。
(曲読み込み,鳥の詩.mp3)(演奏)
SAORI使用説明書の補足 †
配布されているさおり同梱の説明は里々以外の栞に向けて書かれている事が多いので、ちょっと補足。
- Argument
- これはSAORIの引数です。
「第○パラメータ」と書かれてる事もあります。
里々では引数1,引数2...と指定します。
(登録名,Argument0,Argument1,…)
- Value
- SAORIからの返り値です。
里々ではValue0なら(S0)、Value1なら(S1)…と書いて取得します。
- ウィンドウハンドル(HWND)
- 引数にウィンドウハンドルを要求するSAORIもあります。後述しますが、大抵は(本体ハンドル0)を使えばOK。
使用テクニック †
同期呼び出し †
関数はもちろん、SAORIの呼び出しも例外なく、そのトークが呼ばれた時点で実行されます。
なので、トークを再生中のあるタイミングでSAORIを実行させたい場合、文中にただ書いただけではダメ。
これを実現するには二つの方法があります。
どちらも@SAORIに
fill_desktop,saori/fill_desktop.dll
fill_red,saori/fill_desktop.dll,255,0,0
が設定されているとします。
- sync関数
- 里々で用意されたsync関数を使う方法。
:3・2・1・(sync,fill_red)はい!\w9\w9
(sync,fill_desktop)びっくりした?\w9\w9
- \![raise,]
- さくらスクリプトの\![raise,〜]を使い、任意のタイミングで別のセクションを呼ぶ方法。
*
:3・2・1・\![raise,塗りつぶし]はい!\w9\w9
\![raise,塗りつぶし解除]びっくりした?\w9\w9
*塗りつぶし
(fill_red)
*塗りつぶし解除
(fill_desktop)
これで想定したタイミングで発生します。
戻り値は捨てられます。挿入されたりはしません。
ウィンドウハンドル †
ウィンドウハンドルの通知時に *hwnd が呼ばれます。
ここで変数に保存するか、SAORIに直接渡しましょう。
(R0)には本体ウィンドウ、(R1)にはバルーンウィンドウのハンドルが入ります。
それぞれ、\0,\1,\2...(\2以降はCROW/SSP限定)のハンドルがバイト値1で区切られたもの。
これをsplitで分割して、目的のウィンドウハンドルを得る事になります。
例
*hwnd
(split,(R0),(sprintf,%c,1))
$本体ハンドル0=(S0)
$本体ハンドル1=(S1)
(split,(R1),(sprintf,%c,1))
$バルーンハンドル0=(S0)
$バルーンハンドル1=(S1)
#\0・\1の本体・バルーンのハンドルを変数に保存する。~
#この変数をハンドルを必要とするさおり呼び出しに使用する。~
#(S2)以降を参照することで\2以降のハンドルも取得できるが、~
#ウィンドウが初期化されていない場合無効なハンドルが~
#渡されてくるかもしれない。(未検証)~
引数がSAORIで処理する前に計算されてしまうのを防ぐ †
例えばこう記述して「1+1+1」内の「+」を消そうとすると
(erase、1+1+1、+)
「1+1+1」がerase処理前に計算され、「111」ではなく「3」という結果が出てしまう。
計算されなくても全角数字にが勝手に半角になってしまい困る場合もある。
これを防ぐには、特殊変数の$SAORI引数の計算を使おう。
$SAORI引数の計算【タブ】無効
ただし、これを無効にしたままだと他のSAORIが正常に動かなくなる可能性があるので、用が済んだら「$SAORI引数の計算【タブ】自動」に戻すようにしよう。
$SAORI引数の計算【タブ】有効
計算する。
$SAORI引数の計算【タブ】無効
計算しない。
$SAORI引数の計算【タブ】自動
各引数の先頭文字が数値または+、−記号のいずれかであれば計算する。
何も指定しなければこれ。今までと同じ動作。
SHIORIをSAORIとして使う †
栞(SHIORI)の中には、SAORIとしても使えるようになっているものもあります。
特に文/YAYAや華和梨を使ってその関数を借りれば、里々の簡単さを損なわないままに、できる事を大幅に拡張する事ができます。
文/YAYA †
SAORI/YAYAへ。
華和梨 †
最新版の華和梨8.2.5をSAORIとして使う方法。
YAYAほどメジャーではなく、基本的にKIS*1をそのまま利用するか、処理を自分で組む必要があります。華和梨利用者向け。
YAYAと比べた場合、ファイル操作などの面で劣るものの、変数処理機能の扱いやすさで優位かも?
詳細は華和梨ユーザーズマニュアルを参照。
- 必要なファイル
以下の二つをセットにし、satori_conf.txtにて他のSAORIと同じように登録する。
元々SHIORIとして使うだけあってファイル名がshiori.dllなので、分かり難いとか被りやすいとか思ったらファイル名だけ変えてしまうのも手かも?(kawari.dllとか)
shiori.dll | 華和梨本体。 |
kawarirc.kis | 華和梨の初期辞書。本体と同じフォルダに置くこと。 |
- SAORIとして使う時のエントリ
System.Callback.OnSaoriExecute | saoriとして呼び出された時に評価される。 |
System.Request.Argument0 | 引数が格納されている(末尾数値で1,2,3...と対応)。 |
System.Response.Result | 返したい結果及びスクリプトをセットするエントリ。 |
System.Response.Value0 | 追加情報をセットするエントリ(末尾数値で1,2,3...と対応)。 里々側は(S○)で受け取る。 |
System.Response | ステータスコードをセットするエントリ。 |
この例では第一引数のイベントを呼び出す。
返すべきステータスコードは200(正常+戻り値あり)、204(正常+戻り値なし)、400(おかしい)から選ぶ。上記ユーザーズマニュアル参照。
KAWARI as SAORI セット一例 †
華和梨のSAORI用サブセットを組むのは、他のSHIORIに比べれば楽なほう。
要は引数にそのままKIS名ごと渡す方法なら記述も少なく楽。
が、それはそれで設計安全上の問題があるのと、KISの活用にも華和梨に精通している必要があるので、やっぱり華和梨ユーザ向け。
里々 †
里々自体もさおりとして使うことができます。
里々をさおりとして使用する際には特別必要なものはありません。
satoriで登録したならば、(satori,起動)のようにして使えます。この時、引数の間にスペースが入ってはいけません。
最初から使える関数以外の定義(例えば上記の"起動")は自分で里々形式のスクリプトを書き、さおりと同じフォルダに配置しなければなりません。
忍をさおりとして使用する際には特別必要なものはありません。
shinoで登録したならば、(shino, get, OnBoot?)のようにgetというコマンドを使います。
OnBoot?等の定義は自分で忍形式のスクリプトを書き、さおりと同じフォルダに配置しなければなりませんが、サンプルとなるゴーストが既にダウンロードできない状態のようですので利用は難しいと思います。
里珠 †
里珠をさおりとして使うためには、別途さおりとして扱うためのスクリプトが必要ですが、現在のところ公開されているものはないようです。