Tuesday, June 6, 2017

ターゲットSpecificなコールバック関数 その3

街がターゲットの場合。EditorIDは基本的には、クエストユニークなインスタンス要素に付けるパラメータで、「街」のように他のScriptedクエストからも使う要素に付けるとよろしくない。

ではどうしよう、ということで、街がクエスト毎にユニークな名前を持てるようにしてみる。具体的には、街データそのものには「ユニークな名前」データは持たせずに、街のエイリアスを作って、そのエイリアスにユニークな名前を持たせることで、コールバック関数名に利用できるようにしてみた。:D

画像の例では、CreateAlias関数で、ターゲットの街のIndexを指定して、EventScriptで、どのスクリプトの管轄かを指定。AliasNameをその「ユニークな名前」という形でとりあえず。


AliasNameとしたけど、キャラ・アイテムはEditorIDというのを使っていて、混乱するので、「エイリアスの」ということでこれもEditorIDにしようかなあ?
この、コールバック関数名の命名以外でも、「エイリアスのユニークな名前」でターゲット指定できるようにできれば、その方が良さそう。(エイリアスそのものを各種関数にパラメータとして渡す、というのは、色々難しいのでナシ)

Monday, June 5, 2017

ターゲットSpecificなコールバック関数 その2


前の記事に書いたように、こんな感じの記述で、システムからコールバックを受けられるように出来た。:D まだ呼び出しテストしかしてないけど、呼び出せたのでok。

上の例は、
  • クエスト指定(EventScriptパラメータをセット)したキャラに、EditorIDをセット
  • クエスト指定をしたアイテムの、CallbackModuleパラメータに、同クエストスクリプトのサブモジュール名をセット
  • そのアイテムが、(EditorIDを持った)キャラのインベントリに入った時、クエストスクリプトのサブモジュールの中のOnAddToCharacter_EditorID()がシステムから呼ばれる
アイテムごとにサブモジュールを分けたり分けなかったり、必要に応じて。
OnAddToCharacter_PC() か OnAddToCharacter_player()で、PCのインベントリに入った時のコールバック関数を作れる。

Luaはフレキシブルだなあ。:)