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

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

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

MOD 本体

fileExampleActivateMultiThread.zip

  • ExampleActivateMultiThread.esp
  • Scripts
    • ExampleActivateMultiThread.pex
    • Source
      • ExampleActivateMultiThread.psc

インストール方法

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

アンインストール方法

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

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

概要

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

coc example

石碑は内部にカウンターを持っており石碑をアクティベートすると、

  • 開始時にカウンターが1増える。
  • &papyrus_object_method_link(Utility,Sleep) で 10 秒待つ。
  • 終了時にカウンターが1減る。

という動きをします。

OnActivate イベントが、

  • シングルスレッドであればカウンターは 1 と 0 を行き来する。
  • マルチスレッドであればカウンターは 0 以上を上がったり下がったりする。

という確認をするだけのサンプルです。

結果からマルチスレッドで動作することがわかります。

カウントアップカウントダウン
countup.jpgcountdown.jpg

スクリプト概要(Example)

Scriptname ExampleActivateMultiThread extends ObjectReference  

int activatingCount = 0

Event OnActivate(ObjectReference akActionRef)
	activatingCount = activatingCount + 1
	Debug.Notification("Begin activity ... " + activatingCount)
	Utility.Wait(10)
	activatingCount = activatingCount - 1
	Debug.Notification("End activity ... " + activatingCount)
endEvent