[華和梨を使い倒す?・トップ] [概要] [目次] [掲示板] [リンク] [更新情報]

前(4.エントリの動作確認方法)へ


5.イベント反応

ナイン あ、時報の時間だ!
ぐにゅう 何時?
ナイン えーとねぇ…

本章では、華和梨が「何か。(仮)」から通知される各種動作のタイミング情報(イベント)をきっかけに各種のメッセージをしゃべるように設定する方法を扱います。KEEPSなどのキットをそのまま利用するのでは物足りない人は、チャレンジしてみてください。

5−1.イベント反応の基礎

従来、イベントに対する反応は、スクリプト(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からは使えるようになりました。

5−2.基礎イベント反応のサンプル

上の説明だけで理解してバリバリと辞書を書ける人には不要かもしれませんが、基礎イベント反応のサンプルを用意してみました。こんな感じで記述すれば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

次(6.コミュニケート反応)へ

[華和梨を使い倒す?・トップ] [概要] [目次] [掲示板] [リンク] [更新情報]

このページは、偽Meisterが作成しています。

URL無料転送サービスを利用しています。