伺かアドベントカレンダー2012 12/2

今回のテーマは「YAYA でのゴースト起動・終了時の処理の書き方について」です。

起動・終了時の処理って?

ゴーストを起動・終了する時には、単に起動・終了時のトークを喋らせるだけではなく、常駐型SAORIの読み込み、変数の初期化など、裏で行いたい処理というのもある訳です。ここで YAYA をある程度触っている方であれば、「知ってるよ、OnGhostLoad/OnGhostUnload を使えばいいんでしょ?」となるかもしれません。

OnGhostLoad
{
  // ここに起動時に行う処理を書く
}

OnGhostUnload
{
  // ここに終了時に行う処理を書く
}

現在の YAYA での起動・終了時の処理について

上記の方法でも、決して間違っている訳ではありませんが、最新の YAYA*1 を使うからには、裏でどのような動きになっているのかを知っておくのも悪くはありません。
そこで、最新の YAYA で、起動・終了時にどういった処理が呼び出されるかを紹介しておきます。

  • 起動時
    1. 関数の名前が "OnGhostLoad" で始まるものを、アルファベット順に実行する
    2. 関数の名前が "OnSystemLoad" で始まるものを、アルファベット順に実行する
  • 終了時
    1. 関数の名前が "OnGhostUnload" で始まるものを、アルファベット順に実行する
    2. 関数の名前が "OnSystemUnload" で始まるものを、アルファベット順に実行する

どのような場合に、このようなスタイルが活きてくるのかというと、たとえば「あやりりす」のように、ゴーストに外付けでプログラムを追加する場合です。そうすると、「ゴースト起動時の初期化も必要、あやりりすの起動時の初期化も必要」というように、複数の起動・終了時処理がゴーストの中に分かれて存在する格好になるのですが、そうした場合でも、関数の名前をルール付けしてやるだけで、後は YAYA が上手いこと認識して、処理を実行してくれるのです。

  • 起動時の関数名の例
処理名 関数名
ゴースト(共通処理) OnGhostLoad
ゴースト(表人格モード) OnGhostLoad.表人格モード
ゴースト(裏人格モード) OnGhostLoad.裏人格モード
あやりりす OnSystemLoad.゚AYALILITH
あやりりすEX OnSystemLoad.AAA_AYLEX

結び

まぁ、特別に難しいことをやろうというのでなければ、あまり気にする必要の無いところですが、裏ではこんな感じで処理が組まれているんだよ、ということで。

*1:ここでは、yaya.dll と システム辞書 yaya_shiori3.dic の両方を指す