Papyrus による世界の創造 - Skyrim MOD 制作

初期化イベントの順序確認 - 簡単な Papyrus サンプル群

最終更新: 2015-04-02 (木) 21:36:11 (2275d)

MOD 本体

fileExampleInitEvent.zip

  • example_init_event.esp
  • Scripts
    • ExampleInitEvent.pex
    • Source
      • ExampleInitEvent.psc

インストール方法

解凍して Data フォルダにコピーもしくは NMM での導入も可能です。

アンインストール方法

アンインストールは、導入したファイルを全て削除すれば完了です。Data フォルダを「Example」で検索すれば該当ファイルが全て検索できるので簡単です。

NMM で導入した場合は、NMM が全部やってくれます。

概要

CenterOnCell - coc(セル移動) コンソールコマンドにて部屋を行き来します。

coc example
coc qasmoke
coc example
coc qasmoke
coc example

qasmoke は Skyrim に標準で用意されている実験用セルです。

ObjectReference(オブジェクト参照) には、2つの初期化イベント

  • &papyrus_command_method_link(ObjectReference,OnCellAttach);
  • &papyrus_command_method_link(ObjectReference,OnCellLoad);

があります。

石碑に2つのイベントを割り当て、ログを出力させることで、呼び出しの順序を確認します。

確認の結果、以下の通りとなりました。

順番イベント
1OnCellAttach
2OnCellLoad
3OnCellAttach
4OnCellAttach

OnCellLoad はセルが最初にロードされたときに1度だけ呼び出されます。

それに対して OnCellAttach はセルに移動するたびに呼び出されます。

スクリプト概要(Example)

Scriptname ExampleInitEvent extends ObjectReference  

Event OnCellAttach()
	 Debug.Trace("[" + GetFormID() + "] in [" + GetParentCell()+ "] OnCellAttach")
endEvent

Event OnCellLoad()
	Debug.Trace("[" + GetFormID() + "] in [" + GetParentCell()+ "] OnCellLoad")
endEvent