サバイバルモードでHUDに各種状態を表示してくれるModです。Neankaさんの作品です。
ゲームロード後に表示内容が更新されない
ゲームのロード直後は表示内容が更新されないという不具合があります。F4SEのDLLなので(私のスキルでは)改変できません。これをなんとかしてみました。
ゲームのロード直後にSSWの表示を更新する (papyrus)
Scriptname SampleScript Extends Quest
Hardcore:HC_ManagerScript Property HC_Manager Const Auto Mandatory
Event OnQuestInit()
RegisterForRemoteEvent(Game.GetPlayer(), "OnPlayerLoadGame")
EndEvent
Event Actor.OnPlayerLoadGame(Actor akActorRef)
Utility.Wait(3.0)
HC_Manager.DamageFatigue()
EndEvent
色々試したのですが、Actorの状態を変化させても画面には反映されず、仕方なくDamageFatigue関数を呼ぶことにしました。
推測ですが、HUD側ではこの関数が呼ばれるのを監視して、表示を更新しているのではないかと思います。Fallout 4にはRemote Eventという機能が追加されているので、こういったことも可能になっているのですね。
ロード直後から3秒待機してから実行していますが、最速で実行するとWidgetの初期化が済んでいないらしく、色がおかしくなるためです。
たまにHUDが消えてしまう
エレベーターでロード画面を経由しないエリア移動、寝る時など暗転を挟んだMoveToなどで、HUDが消えてしまいます。
Perk画面を開いて閉じると再びHUDが表示されるようになります。
手動でなおすのが面倒なので、スクリプトからSWFを制御することでなんとかしてみました。
Function ShowSSW()
if UI.IsMenuRegistered("SSW_Menu")
UI.OpenMenu("SSW_Menu")
endif
EndFunction
Function HideSSW()
if UI.IsMenuRegistered("SSW_Menu")
UI.CloseMenu("SSW_Menu")
endif
EndFunction
これをエリア移動後などに自動で実行するようにすれば改善しそうです。
代替Mod
DLLなのでパフォーマンスの点で優れていると思われるのですが、上記の以外にもいくつか不具合が確認でき、DLLであるがゆえに私には直せないため、スクリプトベースで実装されているSurvival Stats Widget tuneに移行しました。
Survival Stats Widget tuneにもわずかに不具合はあったのですが、スクリプトなので直せたのでそれで良しとしました。