AMMO UI HUD and my hud config

Mod紹介

弾薬がHUD上に表示されるようになるので、現在使用中の武器がわかるようにもなっています。

Nexus

表示されない場合がある

Horizon環境だからなのかわかりませんが、一部の武器は正常に表示されません。

スクリプトを修正したら表示されるようになりました。

プレイヤーが「WeaponTypePlasmaまたはQuickkeyGunというキーワードを持つ何かを装備していたら」という条件をなくしました。これが何を意味しているのかは不明ですが、Horizon環境では不適切ということなのだと思います。

ammoUItoounScript.psc (papyrus)

Function showammotype()
    Actor PlayerREF = Game.GetPlayer()
    Form curchangeammotype_ = Self.GetcurrentWPAmmotype()

    if PlayerREF.GetEquippedWeapon(0) == WEAP_syringer
        cur_wp_ammoicon = 5
    endif

    ;if PlayerREF.WornHasKeyword(KYWD_92a86) || PlayerREF.WornHasKeyword(KYWD_92a85)
        loadgameEquipped_only = 1
        cur_HasSilencer = PlayerREF.WornHasKeyword(KYWD_1e05d6)
        Ammo curammotypeammo = None

        if curchangeammotype_ != None
            curammotypeammo = curchangeammotype_ as Ammo

            if curammotypeammo
                cur_ammotype_ = curammotypeammo.GetName()

                if cur_ammotype_ == ""
                    curammotypeammo = PlayerREF.GetEquippedWeapon(0).GetAmmo()

                    if curammotypeammo
                        cur_ammotype_ = curammotypeammo.GetName()
                    endif
                endif
            else
                cur_ammotype_ = ""
            endif
        else
            curammotypeammo = PlayerREF.GetEquippedWeapon(0).GetAmmo()

            if curammotypeammo
                cur_ammotype_ = curammotypeammo.GetName()
            else
                cur_ammotype_ = ""
            endif
        endif

        if cur_ammotype_ == ""
            cur_ammotype_ = "unknown"
        endif

        cur_wp_ammoicon = 0

        if curammotypeammo
            if curammotypeammo == Ammo_plasma || curammotypeammo == Ammo_fusion0 || curammotypeammo == Ammo_fusion1 || curammotypeammo == Ammo_fusion2 || curammotypeammo == Ammo_fusion3 || curammotypeammo == Ammo_fusion4 || curammotypeammo == Ammo_fusion5 || curammotypeammo == Ammo_fusion6 || curammotypeammo == Ammo_fusion7 || curammotypeammo == Ammo_fusion8 || curammotypeammo == Ammo_fusion9
                cur_wp_ammoicon = 2
            elseif curammotypeammo == Ammo_Missile0 || curammotypeammo == Ammo_Missile1 || curammotypeammo == Ammo_Missile2
                cur_wp_ammoicon = 3
            elseif curammotypeammo == Ammo_Flamer0 || curammotypeammo == Ammo_Flamer1
                cur_wp_ammoicon = 4
            endif
        endif

        if Game.IsPluginInstalled("LString_Bow.esp")
            Keyword bowkeybow = Game.GetFormFromFile(60697, "LString_Bow.esp") as Keyword
            if PlayerREF.WornHasKeyword(bowkeybow)
                cur_wp_ammoicon = 1
            endif
        elseif Game.IsPluginInstalled("LString_Bow.esl")
            Keyword bowkeybow = Game.GetFormFromFile(60697, "LString_Bow.esl") as Keyword
            if PlayerREF.WornHasKeyword(bowkeybow)
                cur_wp_ammoicon = 1
            endif
        endif

        Self.swfmessage(cur_ammotype_, 1, 0)
        Self.StartTimer(9.5, 31457660)
    ;else
    ; cur_ammotype_ = ""
    ; Self.swfmessage("", 0, 0)
    ;endif

    loadgameEquipped_only = 0
EndFunction

弾薬名を調整する

ソートModを使っている場合、アイテム名にタグが含まれているので、それがそのまま「(Ammo) 5mm弾」という形で表示されてしまいます。これを何とかしてみました。

SkyrimであればPapyrusUtilに文字列加工関数が用意されているので簡単に整形できますが、Fallout 4にはないので、どうやればいいのかわかりませんでした。仕方がないので弾薬の一覧を保持して置換しています

Baka FrameworkにStringUtilと同等のモジュールがあるため、それを使えば除去できます。

cur_Throwntypename_ = cur_mine.GetName()
; ===== remove sort tag start
int i = StringUtil.Find(cur_Throwntypename_, "] ")
if i >= 0
	cur_Throwntypename_ = StringUtil.Substring(cur_Throwntypename_, i)
endif
; ===== remove sort tag end
タイトルとURLをコピーしました