カメラの制御にCustom Cameraを使用しています。他のModが何かをするタイミングでカメラを切り替えたいと思います。その手順についてまとめます。
シナリオ
Tactical Action Extension Packageで伏せている間はカメラのプリセットを3にして、伏せるのをやめたら元のプリセットに戻します。
Mod間の連携はRegisterForCustomEventを使います。SkyrimのModEventとは使い方が違っています。
Custom Camera側の改造
コンパイルにはTactical Action Extension Packageのソースコードが必要になります。パスを通しておきましょう。
CustomCamera.psc (papyrus)
toounAnimationpackScriptmcm toounAnimationpack
Function Register()
RegisterForExternalEvent("OnMCMSettingChange|" + MCMName, "OnMCMSettingChange")
RegisterForControl("SecondaryAttack")
if Game.IsPluginInstalled("tooun_Animationpack.esl")
toounAnimationpack = Game.GetFormFromFile(0x801, "tooun_Animationpack.esl") as toounAnimationpackScriptmcm
RegisterForCustomEvent(toounAnimationpack, "OnEnterProne")
RegisterForCustomEvent(toounAnimationpack, "OnEnterLying")
RegisterForCustomEvent(toounAnimationpack, "OnLeavePrevent")
endif
EndFunction
Event toounAnimationpackScriptmcm.OnEnterProne(toounAnimationpackScriptmcm akSender, Var[] akArgs)
if CC_Profile.GetValueInt() != 2
SwitchProfile(2)
endif
EndEvent
Event toounAnimationpackScriptmcm.OnEnterLying(toounAnimationpackScriptmcm akSender, Var[] akArgs)
if CC_Profile.GetValueInt() != 2
SwitchProfile(2)
endif
EndEvent
Event toounAnimationpackScriptmcm.OnLeavePrevent(toounAnimationpackScriptmcm akSender, Var[] akArgs)
if CC_Profile.GetValueInt() == 2
SwitchProfile(0)
endif
EndEvent
Tactical Action Extension Package側の改造
私の作った改造版に既に組み込んであります。
コツは、SendCustomEventは実行は速くてすぐに次の処理に進めますが、相手側に届いて処理が完了するまで時間がかかるので、早めに実行することです。
toounAnimationpackScriptmcm.psc (papyrus)
CustomEvent OnEnterProne
CustomEvent OnEnterLying
CustomEvent OnLeavePrevent
; うつ伏せに伏せる
Function EnterProne()
SendCustomEvent("OnEnterProne")
; 以下略
EndFunction
; 仰向けになる
Function EnterLying()
SendCustomEvent("OnEnterLying")
; 以下略
EndFunction
Function LeavePrevent()
UpdateHUD(0)
if IsProne || IsLying
SendCustomEvent("OnLeavePrevent")
; 以下略
endif
EndFunction