こんにちは、まとんです。
Skyrim Souls は、メニュー操作中にも時間が流れるようになるイマーシブ系MODです。

モンハンのようにメニュー操作中でも容赦なく攻撃されるようになるので、副次効果で戦闘難易度が上がります。
これを Soulsy HUD と組み合わせた時に、ちょっとした問題があったので対策してみました。
問題点
私は Soulsy HUD のショートカットをゲームパッドの十字キーに割り当てて使っています。
ボタン配置の詳しい解説はこちらをご覧ください。
Skyrim Souls 環境では、これがインベントリなどのメニュー操作と被るようになってしまい、アイテム選択やタブ移動のたびに装備がカチャカチャ切り替わるようになってしまいました。
実害はないんですが、ちょっと目障りだし「どうにかならんかなー」とコードを追っかけてみたところ、簡単に対処できそうだったのでやってみました。
準備
コードの修正を行い再ビルドする必要があるので、開発環境を構築する必要があります。
こちらの記事に詳しく書きましたので、よろしければご覧ください。
修正
修正はかなり簡単で、skins.cpp の「NO_INPUT_MENUS」という配列に入力を無効化したいメニュー名を追加するだけです。
私は次のように追加しました。
inline const std::set<std::string_view> NO_INPUT_MENUS{
RE::MapMenu::MENU_NAME,
RE::SleepWaitMenu::MENU_NAME,
RE::LoadingMenu::MENU_NAME,
+ RE::BarterMenu::MENU_NAME, // 追加(取引)
+ RE::CraftingMenu::MENU_NAME, // 追加(鍛冶)
+ RE::GiftMenu::MENU_NAME, // 追加(ギフト)
+ RE::InventoryMenu::MENU_NAME, // 追加(インベントリ)
+ RE::LevelUpMenu::MENU_NAME, // 追加(レベルアップ)
+ RE::MagicMenu::MENU_NAME, // 追加(魔法)
+ RE::StatsMenu::MENU_NAME, // 追加(スキル)
};
メニュー名の探し方
メニュー名は「extern\CommonLibSSE-NG\include\RE」にあります。
「MENU_NAME」でGrepすることで、一覧を取得できます。
CommonLibSSE-NG は、Soulsy HUDを一度ビルドするとextern下に自動ダウンロードされます。
かなり細かく分類されているので、正直分かりにくいものも多いです。
例えば BarterMenu はお店の売買取引で、GiftMenu はフォロワーとの持ち物交換メニューです。
ゲームでは同じ画面に見えてもメニューが違っていたりするので、うまくいかない場合は、他にそれっぽい名前がないか根気よく探しましょう。
ビルド
修正が完了したら、ビルドします。
次のコマンドを順番に実行するだけです。
rd /s /q build ※初回ビルド時は不要
cmake --preset vs2022-windows
cmake --build --preset vs2022-windows --config Release
ビルドの詳しい解説はこちらの記事をご覧ください。
インストール
ビルドしたファイルは、次の場所にあります。
build\Release
この中の「SoulsyHUD.dll」「SoulsyHUD.pdb」をオリジナルのファイルに上書きコピーしてしてインストール完了です。

上書き前に必ずバックアップをとりましょう!
MO2を利用している場合は、空MODを作りMO2の仕組みで上書きされるように(競合が勝つように)配置しておくのがおすすめです。MO2を利用している場合は、空MODを作りMO2の仕組みで上書きされるように(競合が勝つように)配置しておくのがおすすめです。

確認
インストールしたら、ゲームを起動して確認してみましょう。
インベントリやレベルアップメニューなどで装備が切り替わらなくなれば成功です。

切り替わりが起きるメニューが残っている場合は、もう一度CommonLibSSE-NGを覗いて、それっぽいメニューがないか確認しましょう。
まとめ
今回は Skyrim Souls と Soulsy HUD の相性問題を解決してみました。
スクリプト系はプログラミング知識が必要なので修正がちょっと大変ですが、こういうものに徐々に手を出せるようになっていくのも、Moddingの楽しさかなと思いました。

MODをそのまま使うより、合わない部分を自分好みに作り直すのが楽しい。


![最新版 12歳からはじめる ゼロからのC言語ゲームプログラミング教室 [ リブロワークス ]](https://thumbnail.image.rakuten.co.jp/@0_mall/book/cabinet/5065/9784899775065.jpg?_ex=128x128)

コメント