あ、時報の時間だ! 何時? えーとねぇ…
本章では、華和梨が「何か。(仮)」から通知される各種動作のタイミング情報(イベント)をきっかけに各種のメッセージをしゃべるように設定する方法を扱います。KEEPSなどのキットをそのまま利用するのでは物足りない人は、チャレンジしてみてください。
従来、イベントに対する反応は、スクリプト(script.txt)と「ぴろ」(piro.dll)が一括して扱っていました。この枠組みの中で、ユーザーは反応を設定するために、スクリプトオーバーライド(「何か。(仮)」参照)などを行なってきました。しかし、現在、「何か。(仮)」は、様々なイベント(従来script.txtで設定していたイベントの一部や、script.txtでは扱えなかった各種の新イベント)をAIルーチンに通知(SAKURA/1.3、SHIORI/2.2)するようになり、華和梨でもこれらのイベントに対する反応の設定を行えるようになりました。
華和梨は、SHIORI/2.2仕様にのっとって通知されるすべてのイベント(これから出現するものも含む)に対応しています。(ごく一部の例外を除く…後述)
華和梨でのイベント反応の設定は、
event.イベント名 : 反応文
という書式で辞書に書き込むことで行ないます。たとえば、「何か。(仮)」が起動したとき(イベント「OnBoot」)の発言を設定するには、次のようにします。
event.OnBoot : \1ユーザー様がお呼びだぞ。\0うー。もうちょっと寝かせてよぉ。\e
event.OnBoot : \0起動〜!!\n\1メモリチェックでERRORとか出たり。\n\0ぴぽっ、ぴーーーー。\e
event.OnClose : \0しゅう〜りょう〜。\n\1けっ、やってられっかよぉ。\0こら、ぐにゅう!\-
同じイベントに対して複数の設定をすると、ランダムにどちらかを選択して動作します。
なお、この設定は辞書のどこに書き込んでも構いませんが、ゴーストを作成する場合は(礼儀上)ghost-(ゴースト名).txt中に記述するのがよいでしょう。(あるいは、event.(ゴースト名).txtなどを作ってもよいかもしれません。)
注意:Phase0.5β2では、システム関係のエントリ名は「compatible.○○」「system-○○」「event-○○」と"-"を使用していましたが、Phase5から「compatible.○○」「system.○○」「event.○○」のように"."を使用するように変わりました。しばらくは過去互換性のために両方使えるようになっていますが、将来"-"文字はエントリ名に使えなくなる可能性が高いので、なるべく早めに移行したほうがよいでしょう。
反応を設定できるイベントには次のようなものがあります(2001/7/8現在)。これ以外のイベントが追加された場合も、まったく同様の書式で反応文を記述することができます。
イベント名 | 発生時点 | 付属するリファレンス値 |
---|---|---|
基礎イベント | ||
OnFirstBoot | ゴーストが初回起動された | Reference…なし |
OnWindowStateMinimize | 最小化された(ここで喋っても表示できないが、このタイミングでスクリプトによる裏処理などを実行できる…最小化されている時間を計りはじめる、など) | |
OnWindowStateRestore | 最小化状態から復元された | |
OnBoot | 起動した | |
OnClose | 終了が指示された (指示されただけで、実際に終了するかどうかは反応文が決める) |
|
OnTeachStart | Teachダイアログがオープンされた | |
切り替えイベント | ||
OnGhostChanging | 自分以外のゴーストへの切り替えが指示された | Reference0…次のゴーストの名前 Reference1…切り替えメソッド (manual:手動で切り替えられた , automatic:システム等により自動で切り替えられた) |
OnGhostChanged | 自分がゴーストになった | Reference0…直前のゴーストの名前 |
OnSurfaceSetChanging | サーフィスセットの切り替えが指示された | Reference…なし |
OnSurfaceSetChanged | サーフィスセットが切り替わった | |
OnShellChanging | シェルの切り替えが指示された | |
OnShellChanged | シェルが切り替わった | |
時間イベント | ||
OnSecondChange | 現在秒が変化した | Reference0…連続起動時間(hour) Reference1…見切れフラグ(1:見切れてる , 0:見切れてない) Reference2…重なりフラグ(1:重なってる , 0:重なってない) |
OnMinuteChange | 現在分が変化した | |
サーフィスイベント | ||
OnSurfaceChange | サーフィスが変わった | Reference0…さくら側で現在表示中のサーフィス番号 Reference1…うにゅう側で現在表示中のサーフィス番号 |
OnSurfaceRestore | サーフィスをファーストサーフィス(さくらは 0、うにゅうは 10)に戻すべきタイミングが来た (タイミングを伝えるだけで、実際に戻すかどうかは反応文が決める) |
|
マウスイベント | ||
OnMouseMove | マウスが移動した | Reference0…マウスカーソルの x 座標(ローカル座標) Reference1…マウスカーソルの y 座標(ローカル座標) Reference2…マウスホイールの回転量および回転方向(数字。値のプラスマイナスが方回転方向を表す) Reference3…イベントのオーナー(0:Sakura / 1:Kero) Reference4…当たり判定識別子(Head:頭 / Face:顔 / Bust:胸 / その他:シェルによって自由に定義される) |
OnMouseClick | マウスが左クリックされた | |
OnMouseDoubleClick | マウスがダブルクリックされた | |
OnMouseWheel | マウスホイールが回転した | |
インストールイベント | ||
OnInstallBegin | インストールシーケンスが開始された | Reference…なし |
OnInstallComplete | インストールが正常終了した | Reference0…インストールされたオブジェクトを識別する識別子 (shell / ghost / balloon / plugin / ghost with balloon / shell with balloon) Reference1…インストールされたオブジェクトの名前 |
OnInstallFailure | インストールが異常終了した | Reference0…失敗の理由 |
OnInstallRefuse | インストールするファイルが他のゴーストを指名していた | Reference0…指名されているゴーストの名前 |
ファイルイベント | ||
OnFileDropping | ファイルがDnDされる | Reference0…ファイルやディレクトリのフルパス |
OnFileDropped | ファイルがDnDされた | |
OnDirectoryDrop | ディレクトリがDnDされた | |
OnWallpaperChange | (画像ファイルのDnDによって)壁紙が変更された | |
BIFFイベント(メールチェック) | ||
OnBIFFBegin | メールチェックが開始された | Reference…なし |
OnBIFFComplete | メールチェックが成功した | Reference0…スプールされているメールの通数 Reference1…スプールされているメールのバイト数 |
OnBIFFFailure | メールチェックが失敗した | Reference0…失敗事由 (timeout:タイムアウト / kick:認証したが蹴られた / defect:ユーザの設定に誤りがある) |
Updateイベント(ネットワーク更新) | ||
OnUpdateBegin | ネットワーク更新が開始された | Reference…なし |
OnUpdateComplete | ネットワーク更新が成功した | Reference0…成功事由 (none:更新すべきファイルはなかった) Reference1…カンマでセパレートされた更新されたファイル名のリスト |
OnUpdateFailure | ネットワーク更新が失敗した | Reference0…失敗事由 (timeout:タイムアウト / md5 miss:MD5不一致 / 404 等:そのステータスコードで失敗) |
OnUpdate.OnDownloadBegin | ファイルのダウンロードが開始された | Reference0…ダウンロードするファイルの名前 |
OnUpdate.OnMD5CompareBegin | MD5の照合が開始された | Reference0…比較するファイルの名前 Reference1…正しいMD5値 Reference2…落としたファイルのMD5値 |
OnUpdate.OnMD5CompareComplete | MD5が一致した | |
OnUpdate.OnMD5CompareFailure | MD5が一致しなかった | |
SNTPイベント(時計合わせ) | ||
OnSNTPBegin | 時計合わせが開始された | Reference0…接続先サーバー |
OnSNTPCompare | サーバの時計の値とローカルマシンの時計の値の比較が開始された | Reference0…接続先サーバー Reference1…カンマでセパレートされた正確な(SNTPサーバ側の)時刻(year,month,day,hour,minute,second) Reference2…カンマでセパレートされた現在の(SNTPクライアント側の)時刻(year,month,day,hour,minute,second) Reference3…ずれ(second) |
OnSNTPCorrect | ローカルマシンの時計をサーバの時計に合わせた | |
OnSNTPFailure | 時計合わせに失敗した | Reference0…接続先サーバー |
ヘッドラインセンスイベント | ||
OnHeadlinesenseBegin | ヘッドラインセンスが開始された | Reference0…対象サイト名 Reference1…対象URL |
OnHeadlinesenseOnFind | ヘッドラインセンスの結果の読み上げが指示された (識別子のない選択肢がページめくりとして機能。例:"\q0[][次のページへ]") |
Reference0…対象サイト名 Reference1…対象URL Reference2…OnFindフェーズ(First:1ページ目で次のページがある / First and Last:1ページ目だが次のページがない / Last:最後のページ / Next:それ以外の途中のページ) Reference3…ヘッドラインデータ本体(さくらスクリプト断片) |
OnHeadlinesenseOnComplete | ヘッドラインセンスが成功した(成功したが読み上げるべきニュースが無かった) | Reference0…事由(no update:更新がなかった) |
OnHeadlinesenseOnFailure | ヘッドラインセンスが失敗した | Reference0…事由(can't download:ファイルが取れなかった / can't analyze:ファイルは取れたが、有効なヘッドラインを取得できなかった) |
うたイベント | ||
OnMusicPlay | 曲の再生が始まった | Reference0…曲名(アーティスト名等の付加情報が付いている可能性有) |
選択肢イベント | ||
OnChoiceSelect | 選択肢が選択された | Reference0…選択された選択肢が持つ識別子 |
OnChoiceTimeout | 選択待ち状態がタイムアウトした | Reference0…タイムアウトしたスクリプト |
例外イベント | ||
OnSSTPBreak | SSTPブレイクされた | Reference0…例外の起きたスクリプト |
ネットワーク渋滞イベント | ||
OnNetworkHeavy | 相手サーバが応答しない、データが渡ってこない、経路が途中で切れている、その他でネットワーク通信を確立できなかった | Reference…なし? |
ディスプレイ関係イベント | ||
OnDisplayChange | ディスプレイの解像度/色深度が変化した | Reference0…変化後の色深度(bpp) Reference1…変化後の解像度(width) Reference2…変化後の解像度(height) |
SSTPブラックリストイベント | ||
OnSSTPBlacklisting | 最終クライアントのブラックリスト行きが指示された | Reference0…最終クライアントのIP アドレス |
SSPスケジュール関連イベント | ||
OnSchedule5MinutesToGo | スケジュールの時間の5分前 | Reference0…イベントのタイプ Reference1…イベントの内容 Reference2…追加データ Reference3…スクリプト |
OnScheduleRead | カレンダーアイコンの上にマウスカーソルがしばらく静止している | |
OnSchedulesenseBegin | スケジュールセンサが接続開始した | Reference0…スケジュールセンサの名前 |
OnSchedulesenseComplete | スケジュールセンサの処理が完了した | Reference0…スケジュールセンサの名前 Reference1…スケジュールセンサの返したスケジュールデータの数 |
OnSchedulesenseFailure | スケジュールセンサが処理に失敗した | Reference0…事由(can't download:ファイルが取れなかった / can't analyze:ファイルは取れたが、有効なヘッドラインを取得できなかった) |
OnSchedulepostBegin | スケジュールセンサが投稿モードで接続を開始した | Reference0…スケジュールセンサの名前 |
OnSchedulepostComplete | スケジュールセンサが投稿処理を完了した | |
きのこイベント | ||
OnKinokoObjectCreate | きのこスキンが頭に生えた | Reference0…生えたきのこスキンの名前 Reference1…きのこスキンが生えたゴーストの名前 Reference2…生えたきのこスキンのカテゴリ |
OnKinokoObjectDestroy | きのこスキンが頭から消えた | Reference0…消えたきのこスキンの名前 Reference1…きのこスキンが消えたゴーストの名前 Reference2…消えたきのこスキンのカテゴリ |
OnKinokoObjectChanging | ユーザーがきのこスキンを切り替えようとしている | Reference0…切り替え前のきのこスキンの名前 Reference1…きのこスキンを切り替えられようとしているゴーストの名前 Reference2…切り替え前のきのこスキンのカテゴリ |
OnKinokoObjectChanged | ユーザーがきのこスキンを切り替えた | Reference0…切り替え後のきのこスキンの名前 Reference1…きのこスキンが切り替えられたゴーストの名前 Reference2…切り替え後のきのこスキンのカテゴリ |
OnKinokoObjectInstalled | ユーザーがきのこスキンをドラッグ&ドロップでインストールした | Reference0…インストールしたきのこスキンの名前 Reference1…きのこスキンのインストールファイルがドラッグ&ドロップされたゴーストの名前 Reference2…インストールしたきのこスキンのカテゴリ |
きのこによるシステム監視イベント | ||
OnBatteryLow | バッテリが低下してきた (きのこPhase5.00では、40%を切ると発生する) |
Reference0…パーセントの数字 |
OnBatteryCritical | バッテリがかなり低下してきた(きのこPhase5.00では、20%を切ると発生する) | |
OnSysResourceLow | システムリソースが低下してきた (きのこPhase5.00では、50%を切ると発生する) |
|
OnSysResourceCritical | システムリソースがかなり低下してきた。 (きのこPhase5.00では、30%を切ると発生する) |
|
猫どりふイベント | ||
OnNekodorifObjectEmerge | 可視領域内に落下物が出現 | Reference0…落下物の名前 Reference1…落下物が主に対象としているゴーストの名前(複数の場合はカンマで区切られる) Reference2…落下物のカテゴリ(複数の場合はカンマで区切られる)) Reference3…きのこフラグ(0:きのこに当たっていない / 1:きのこに当たった) Reference4…落下物のターゲット(sakura.name / kero.name) |
OnNekodorifObjectHit | 落下物がヒット | |
OnNekodorifObjectDrop | 落下物が再落下開始 | |
OnNekodorifObjectVanish | 落下物が可視領域内から消滅 | |
OnNekodorifObjectDodge | よけられてヒットしなかった落下物が可視領域内から消滅 | |
だぶるてぃるイベント | ||
OnDoubleTailScriptSend | 「だぶるてぃる」から、指定のさくらスクリプトを表示するよう指示された | Reference0…表示を指示されたさくらスクリプト断片 |
(「SSP」については「DOIchan!'s HomeStadium」参照、「きのこ」(KINOKO)については「Clear Brain Systems」参照、「猫どりふ」については「猫どりふ」参照。「だぶるてぃる」については「はぴかる▼せぶん」参照。そのほかの本体のイベントまわりについての詳細は、「何か。(仮)」を参照。ほかにもSHIORI/2.2仕様準拠のイベントを発信するソフトがあるかもしれませんが、そうしたイベントにも同様に反応できます)
注意:この表の情報が最新とは限りませんので、かならず各ソフトの最新の仕様書を参照するようにしてください。
リファレンス値とは、イベント発生時に、イベントの通知と一緒にAI側に渡される様々なデータのことです。華和梨では、Reference0〜Reference7の値がそれぞれシステムエントリ${system.Reference0}〜${system.Reference7}に格納されますので、文中でこれらの値を利用することができます。
たとえば、「うたイベント」で曲名を表示する場合、リファレンス値"Reference0"に曲名が入っていますから、華和梨のシステムエントリ${system.Reference0}を呼び出せば
# 曲名表示のサンプル
event.OnMusicPlay : \0『${system.Reference0}』っていう唄だって。\1ふーん。\e
のようにできるでしょう。メールチェックも、
# メールチェックのサンプル
# メールチェック開始
event.OnBIFFBegin : \0郵便箱のぞいてくるねぇ〜。\e
# メールチェック成功
event.OnBIFFComplete : \0${system.Reference0}通、届いてるってさ。\n${system.Reference1}バイトもあって、郵便箱があふれそうだったよ。\1何言ってやがる。\nインラインスクリプト使ってないからサイズの大小もわからんくせに。\e
# メールチェック失敗
event.OnBIFFFailure : \0えぐえぐ、郵便局から通知書が一枚だけ…\n「${system.Reference0}」だってさ…\n私、ヘマした?\1郵政民営化のアオリだな。八つ当たりは新政権にせぇよ。\e
とやれば、メールの通数などを通知できます。
もっとも、このリファレンス値は、インラインスクリプト機能と組み合わせて使用することで真価を発揮します。
注意:イベント名にピリオドを含む場合、華和梨Phase0.5β2ではそのイベントを設定することができませんでしたが、Phase5からは使えるようになりました。
上の説明だけで理解してバリバリと辞書を書ける人には不要かもしれませんが、基礎イベント反応のサンプルを用意してみました。こんな感じで記述すればOKです。(よくわからない人はKEEPSを使っちゃえばOKです。)
# 初回起動時メッセージ
event.OnFirstBoot : \0初回起動だよ〜。略して、しょっか〜。\1…略すなよ。\e
# 起動時メッセージ
event.OnBoot : \0起動ですよん〜。略して…\w8…\w8っ略せるかぁ!!\1逆ギレ!\e
event.OnBoot : \0…叩き起されたぁ…。眠いぃ…\e
# 終了時メッセージ(末尾のさくらスクリプトタグ"\-"で終了させる)
event.OnClose : \0終了〜終了〜。寝るぞ、ぐにゅう!\1ぐぅー。\0…早っ!\-
event.OnClose : \0でぃろまとぉ〜。\1でぃろまとぉ〜。\-
# 最小化(アイコン状態)から復帰したときのメッセージ
event.OnWindowStateRestore : \0「できるだけ小さくたたまれる」のって、すごく痛くてつらいんだね。\1ケンシロウかよ。\e
event.OnWindowStateRestore : \0暗いよ〜せまいよ〜じめじめするよう。……うふふ。\1不気味なヤツだな。\e
event.OnWindowStateRestore : \0せまい部屋でみっちり、ぐにゅうとふたりっきり。\1かんべんしてくれ。\e
# ゴーストが自分から他人に交代するときの退場メッセージ
event.OnGhostChanging : \0役目大儀。\1おまえの台詞じゃないぞ。\e
event.OnGhostChanging : \0浮気するからには、しっかり落としなさい。\1どーゆーソフトやねん!\e
# ゴーストが他人から自分に交代するときの入場メッセージ
event.OnGhostChanged : \0呼ばれても飛び出ない。\1……\e
event.OnGhostChanged : \0呼ばれて飛び出てジャジャジャジャーン。\n\1\w8…帰る。\0待てコラッ!\e
# 自分のサーフィスセットを切り替えるときのメッセージ
event.OnSurfaceSetChanging : \0変身!\e
# サーフィスセットを切り替え完了したときのメッセージ
event.OnSurfaceSetChanging : \0変身完了!\e
# シェルに切り替えるときのメッセージ
event.OnSurfaceSetChanging : \0言葉をとりつくろったって、所詮、浮気よねぇ〜。\1おい。\e
# シェルが切り替え終わったときのメッセージ
event.OnSurfaceSetChanged : \0ここって、普通のゴーストだと読まれないんじゃない?\1そう?\e
このページは、偽Meisterが作成しています。