![]() |
![]() |
![]() |
![]() |
||||||||||||
![]() |
![]() |
ホーム > キャラクターを作ろう!! > 講座 - [キャラデリを使いこなす(仮)] キャラデリに関する解説です。正式な解説文までのつなぎとして、開発掲示板に投稿した簡単な概念説明と記述例を掲載します。 ![]() ■簡単なキャラデリのしくみ キャラデリ(VisitTo関数)では,「訪問定義ファイル」(vstファイル)にファイル名を列挙したファイルを、キャラクターの起動に必須であるpsnファイルや,プロパティファイル(aya.prp,sys.prp)と共に通信相手に送信し,規定のフォルダ配置にセットしたあと,相手側で新規キャラクター(プロセス)として起動します. vstファイルにパスを指定すれば、どんなファイルでも送信することができます.キャラクターの通常起動とは全く別に訪問専用のexaファイルを用意し,それを使って起動したほうが良いでしょう.また,音声や画像データは専用のものを用意しても良いし,共有しても良いです. VisitTo関数は,キャラクターが返信されてくるとコールバック関数を呼び出します.このコールバック関数の中で「ただいまー!」的なふるまいを記述します.
注意すべきことは,VisitTo関数によってキャラクターの訪問が成功しても,Chararina・システムはそのキャラクターの動作を停止しないことです.(訪問の可否がわかった時点でVisitTo関数を抜け,基底状態に戻ります)訪問中はクリックされても反応しないとか,時報やタイマーを再生しないといった挙動は,制作者自ら綾織で条件分岐して記述していく必要があります.逆に言えば,訪問中でも他のキャラクターを表示して機能を継続するようなことが可能です.
![]() ■キャラデリを行うまでの作業(例) 1.訪問(先方に送る)専用のexaファイルを記述する. 2.exapack.lstで1で用意したexaファイルを除外する. 3.vst定義ファイルを記述する. 4.メッセージ送信ダイアログからのコールバックを受ける. 5.VisitTo関数を呼び出す. 6.返答を受ける. ![]() [1.exaファイルの作成] 訪問させるexaファイルを,これまでの通常稼働用exa群と別に用意します.ここではファイル名をvisitor.ayaとします(コンパイルするとvisitor.exaになる).
このvisitor.exaは2点を除いて通常稼働用exaと同じ記述が可能です.その2点とはStartUp/ShutDown標準アクションで,訪問用exa(ここではvisitor.exa)ではこれらのかわりに, を使用します.訪問用exaがロードされるとVisitorStartUpが最初に呼び出されます.(関数詳細はリファレンス参照)マウスクリックへの反応などは,これまで通りaction MouseUpL@( false )等で記述できます. 訪問キャラクターを帰還させるには,送り先のユーザが「お休みする」の操作を行うか,訪問キャラクターが自分でExitPersona関数を呼び出します.するとVisitorShutDownが呼ばれたうえで終了(帰還)します.
[2.exapack.lstの準備] そこで,通常起動時にvisitor.exaがロードされることのないよう,exapack.lstに,visitor.exaなど訪問でしか使用しないexaファイルを"除いた"exaファイルを列挙します.
[3.vst定義ファイルの準備] VST V1.00 visitor.exa image\body1.hp3となります. hogehoge.vstというファイル名にしたとき,VisitTo関数の第2引数は"hogehoge"になることに注意してください.
[4.cIMMessageInputDialogコールバック関数の記述] この関数定義は以下の通りです.
[5.VisitTo関数の呼び出し] void cIMMessageInputDialog( int result, string to,string message,string param ) { if( result == 0 )//0はキャンセル return; VisitTo( to, "hogehoge", message, 1, VisitReturn, "meke" ); } //さらに,コールバック関数VisitReturnの記述が必要. //下記は記述例 void VisitReturn( string cid , string message , string param ) { Talk( "\eただいま戻りました。\wお返事は" + message + "です。" ); }--------------- ここで,VisitTo関数の各引数の意味は以下の通りです.
[6.コールバックで返答を受ける] VisitToの第4引数で0を指定した場合は,送信側のキャラクターが待機状態(メニューを開いている等の処理を行っていない状態)でのみこのVisitReturnが呼び出されます.
|
![]() |
||||||||||||
![]() |
![]() |
![]() |
![]() |