DEF_SSW Survival Stats widget redone

Mod紹介

サバイバルモードでHUDに各種状態を表示してくれるModです。Neankaさんの作品です。

Nexus

ゲームロード後に表示内容が更新されない

ゲームのロード直後は表示内容が更新されないという不具合があります。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にもわずかに不具合はあったのですが、スクリプトなので直せたのでそれで良しとしました。

タイトルとURLをコピーしました