Top / システム辞書 / yaya_shiori3.dic
  トップページへ   [ 一覧 | 単語検索 | 最終更新 ]   [ 差分 | バックアップ ]

yaya_shiori3.dicは、基本的には以下の機能を有します。

#contents

~
* SHIORIイベントの入出力 [#w97a4fb9]

- ベースウェアから渡されるSHIORIイベントは、例えば以下のような文字列です。

 GET SHIORI/3.0
 Sender: SSP
 Charset: UTF-8
 SecurityLevel: local
 ID: OnSecondChange
 Status: talking
 Reference0: 107
 Reference1: 0
 Reference2: 0
 Reference3: 1
 Reference4: 0

- yaya_shiori3.dic は上記文字列を解釈し、以下の動作を行います。

|ID: OnSecondChange|イベント名として解釈し、OnSecondChange関数を呼び出します。((先頭に「On」がつかないIDは、「On_」をつけた関数を呼び出します。(例:hwnd→On_hwnd)))|
|Sender: SSP|グローバル変数「basewarename」「sender」に値("SSP")を格納します。|
|Charset: UTF-8|文字コードです。適切に解釈し出力時にその文字コードへの変換を行います。|
|Status: talking|グローバル変数「status」に値("talking")を格納します。|
|Reference0: 107|グローバル変数「Reference[0]」に値(107)を格納します。|

- 上記動作の結果、OnSecondChange関数内で処理が行われた後、yaya_shiori3.dicはその結果を下記のような文字列としてベースウェアに返します。

 SHIORI/3.0 200 OK
 Sender: AYA
 Charset: UTF-8
 Value: \0\s[0]あ、エミリさん。\1\s[10]テディも元気そうだな。
 Reference0: Emily

|SHIORI/3.0 200 OK|自動的に適切なコードを返します。|
|Sender: AYA|自動付加されます。|
|Charset: UTF-8|自動的に適切なコードを返します。|
|Value: ~|関数の実行結果(要するにトーク)の内容が入ります。|
|Reference0: Emily|res_reference*(*は数字)という名前のグローバル変数があった場合、ここに入ります。((ベースウェアはSHIORIから返されたReference0をコミュニケート相手のゴースト名として認識します。))|

~
* ランダムトーク [#f8d1f793]

- ランダムトークを簡単に行えるようにするために、「OnAiTalk」関数を「aitalkinterval」秒毎に呼び出す機能を持ちます。((本来OnAiTalkはベースウェアには存在しない機能であり、yaya_shiori3.dicがその機能を追加しています))

~
* 内部トランスレート [#w081d044]

- 全てのイベントの処理後、「OnTranslateInternal」関数を呼び出す機能を持ちます。その際の引数(_argv[0])はベースウェアに出力しようとしているトーク内容になります。
- この関数で返した内容が、実際にベースウェアに出力されるトークになります。
- したがって、「OnTranslateInternal」内で_argv[0]を適当に加工し返すことにより、全てのトークに一律変換を行う、等の処理が可能となります。

~
* チェイントーク [#d219aea5]

- チェイントークとは、「あるトークを契機として、一連のトークを指定した順序で行う」機能です。これもyaya_shiroi3.dicで実装されています。
- トークの「\e」の後に「:chain=○○」と書くことで、チェイントークが発動します。((○○はチェイントークを区別するための識別子で、「end」以外ならどんな文字列でも構いません))
- チェイントークが発動した場合、OnAiTalkではランダムトークではなく上で書いた○○関数(チェイン関数)が呼び出されます((この機能はyaya_shiori3.dicではなくゴーストテンプレート側で記載されています))。
- チェイン関数は、通常の関数とは異なり、下記のように記載します。(:chain=hogeとした場合)

 hoge
 {{CHAIN
     "\0\s[0]りんご\e"
     "\0\s[1]ごりら\e"
     "\0\s[0]らっぱ\e:chain=end"
 }}CHAIN

- 通常の関数では、上記「りんご」「ごりら」「らっぱ」はどれか一つが無作為選択されますが、チェイン関数では、上から順番にトークが連鎖します。
- 「\e」の後に「:chain=end」と書くことで、チェイントークを停止できます。

~
* 遅延EVAL [#n1ff2b9d]

- 「\e」の後に「:eval=式」と書くことで、その「式」を実行(実際には「EVAL(式)」と書くのと同じ)することができます。
- 例えば「"\0\s[0]はじめまして。\e:eval=aisatu=1"」などと書くことで、「あるトークを喋ることを契機としたフラグ処理」のようなものを簡単に行うことができます。

~
* インストール済みゴーストリスト [#tb78a077]

- ID: installedghostlist を解釈し、グローバル変数「installedghostname」(ゴースト名の汎用配列)を作成します。

~
* SAORI呼び出し(FUNCTIONEX) [#kf524be0]

- SAORI呼び出しを簡単に行えるよう、yaya_shiori3.dicで「FUNCTIONEX」関数を提供しています。
- SAORIのロード、アンロードもFUNCTIONEXを利用した際、自動的に行われます。
-「SAORI」でも実行可。一段下駄が入る分FUNCTIONEXより低速になりますが、気にするほどではありません。

** 形式 [#r3add039]

>FUNCTIONEX( dllname [, Argument0 , Argument1 , ... ] )

** 引数 [#pb0926da]

:dllname|呼び出したいSAORI DLL名。YAYA.DLLからの相対パスで指定。
:Argument0,1,...|SAORIに与える引数。省略可能。

** 返り値 [#b410f1a9]

- FUNCTIONEXの返り値は、SAORIの返り値(Resultの値)になります。
- SAORIがそれ以上の返り値(Value0,1,...)を返した場合、グローバル変数「valueex0,1,...」に格納されます。

~
*配列操作 [#b90fd032]

**JOIN [#d02a9157]
配列を一番最後の要素で区切る。~
#code(aya,nooutline,nolink){{

request {
_配列=("A","B","C","D","E")
結果=JOIN(_配列,"★")
}

「結果」の内容 "A★B★C★D★E"
}}

**REVERSE [#lfb7caac]
配列を逆順に並べかえる。

**UNIQUE [#x6a0d2e4]
配列から重複する要素を取り除く。

**SPLITEX [#u195cded]
YAYAの関数「[[SPLIT>マニュアル/関数/SPLIT]]」と同じだが、SPLITと違い中身が空白の要素は配列化しない。

**MAX [#a1f71571]
配列の最大値を求める。文字列が入っている場合空文字が返る。
配列の最大値を求める。文字列が入っている場合辞書順で最後の物が返る。

**MIN [#z8108ba5]
配列の最小値を求める。文字列が入っている場合空文字が返る。
配列の最小値を求める。文字列が入っている場合辞書順で最初の物が返る。

**AVERAGE [#hb7168e4]
配列の平均値を求める。文字列が入っている場合空文字が返る。

~
*「遅れて喋る」イベント [#pe13c64e]
>SHIORI3FW.SetDelayEvent( '発生させるイベント名' , 遅れる秒数 )

~
* その他の関数 [#v1f77b82]

- そのままでは利用が面倒な関数を簡単に利用するため、以下の関数を提供しています。いずれの関数も引数なしです。

**時刻系関数 [#ta7752a4]
|関数名|返り値|h
|year|現在日時の年の数値|
|month|現在日時の月の数値|
|day|現在日時の日の数値|
|weekday|現在日時の曜日の数値(0=日曜日、1=月曜日・・・6=金曜日)|
|hour|現在日時の時の数値(24時間制)|
|ampm|現在日時の午前午後の数値(0=AM,1=PM)|
|hour12|現在日時の時の数値(12時間制)|
|minute|現在日時の分の数値|
|second|現在日時の秒の数値|
|||
|systemuptime|OS連続起動時間(単位:秒)|
|systemupsecond|OS連続起動時間を時分秒とした場合の秒の数値|
|systemupminute|OS連続起動時間を時分秒とした場合の分の数値|
|systemuphour|OS連続起動時間を時分秒とした場合の時の数値|
|||
|ghostuptime|ゴーストの連続起動時間(単位:秒)|

**メモリ系関数 [#j493f763]
|関数名|返り値|h
|memoryload|物理メモリの使用率|
|memorytotalphys|物理メモリ量|
|memoryavailphys|空き物理メモリ量|
|memorytotalvirtual|仮想+物理メモリ量|
|memoryavailvirtual|仮想+物理空きメモリ量|

**センダーヘッダ系関数 [#caf4f99b]
|関数名|返り値|h
|basewarenameex|ゴーストが起動しているベースウェア名(MATERIAは「embryo」、CROWは「crow」、SSPは「SSP」)|
|basewarename|センダーヘッダ名(ベースウェア名以外のものが入っている事もある)|
|sender|basewarenameと同じ|
~
* 関連ページ [#xd9814bd]
-[[システム辞書/yaya_optional.dic]]