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

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


SHIORIイベントの入出力

  • ベースウェアから渡される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関数を呼び出します。*1
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: Emilyres_reference*(*は数字)という名前のグローバル変数があった場合、ここに入ります。*2


ランダムトーク

  • ランダムトークを簡単に行えるようにするために、「OnAiTalk」関数を「aitalkinterval」秒毎に呼び出す機能を持ちます。*3


内部トランスレート

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


チェイントーク

  • チェイントークとは、「あるトークを契機として、一連のトークを指定した順序で行う」機能です。これもyaya_shiroi3.dicで実装されています。
  • トークの「\e」の後に「:chain=○○」と書くことで、チェイントークが発動します。*4
  • チェイントークが発動した場合、OnAiTalkではランダムトークではなく上で書いた○○関数(チェイン関数)が呼び出されます*5
  • チェイン関数は、通常の関数とは異なり、下記のように記載します。(:chain=hogeとした場合)
hoge
{{CHAIN
    "\0\s[0]りんご\e"
    "\0\s[1]ごりら\e"
    "\0\s[0]らっぱ\e:chain=end"
}}CHAIN
  • 通常の関数では、上記「りんご」「ごりら」「らっぱ」はどれか一つが無作為選択されますが、チェイン関数では、上から順番にトークが連鎖します。
  • 「\e」の後に「:chain=end」と書くことで、チェイントークを停止できます。


遅延EVAL

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


インストール済みゴーストリスト

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


SAORI呼び出し(FUNCTIONEX)

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

形式

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

引数

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

返り値

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


配列操作

JOIN

配列を一番最後の要素で区切る。

  0
  1
  2
  3
  4
  5
request {
_配列=("A","B","C","D","E")
結果=JOIN(_配列,"★")
}
 
「結果」の内容 "A★B★C★D★E"

REVERSE

配列を逆順に並べかえる。

UNIQUE

配列から重複する要素を取り除く。

SPLITEX

YAYAの関数「SPLIT」と同じだが、SPLITと違い中身が空白の要素は配列化しない。

MAX

配列の最大値を求める。文字列が入っている場合辞書順で最後の物が返る。

MIN

配列の最小値を求める。文字列が入っている場合辞書順で最初の物が返る。

AVERAGE

配列の平均値を求める。文字列が入っている場合空文字が返る。


「遅れて喋る」イベント

SHIORI3FW.SetDelayEvent( '発生させるイベント名' , 遅れる秒数 )


その他の関数

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

時刻系関数

関数名返り値
year現在日時の年の数値
month現在日時の月の数値
day現在日時の日の数値
weekday現在日時の曜日の数値(0=日曜日、1=月曜日・・・6=金曜日)
hour現在日時の時の数値(24時間制)
ampm現在日時の午前午後の数値(0=AM,1=PM)
hour12現在日時の時の数値(12時間制)
minute現在日時の分の数値
second現在日時の秒の数値
systemuptimeOS連続起動時間(単位:秒)
systemupsecondOS連続起動時間を時分秒とした場合の秒の数値
systemupminuteOS連続起動時間を時分秒とした場合の分の数値
systemuphourOS連続起動時間を時分秒とした場合の時の数値
ghostuptimeゴーストの連続起動時間(単位:秒)

メモリ系関数

関数名返り値
memoryload物理メモリの使用率
memorytotalphys物理メモリ量
memoryavailphys空き物理メモリ量
memorytotalvirtual仮想+物理メモリ量
memoryavailvirtual仮想+物理空きメモリ量

センダーヘッダ系関数

関数名返り値
basewarenameexゴーストが起動しているベースウェア名(MATERIAは「embryo」、CROWは「crow」、SSPは「SSP」)
basewarenameセンダーヘッダ名(ベースウェア名以外のものが入っている事もある)
senderbasewarenameと同じ


関連ページ


*1 先頭に「On」がつかないIDは、「On_」をつけた関数を呼び出します。(例:hwnd→On_hwnd)
*2 ベースウェアはSHIORIから返されたReference0をコミュニケート相手のゴースト名として認識します。
*3 本来OnAiTalkはベースウェアには存在しない機能であり、yaya_shiori3.dicがその機能を追加しています
*4 ○○はチェイントークを区別するための識別子で、「end」以外ならどんな文字列でも構いません
*5 この機能はyaya_shiori3.dicではなくゴーストテンプレート側で記載されています