「Half-Life: Blue Shift」を日本語化する

## 事前情報
[Blue Shiftを日本語化する方法を解説してくれるサイト](https://sites.google.com/view/furnisedchunk/)は既にあるが，指示通りに進めてもエラーが続出して上手くいかなかった．
そのため基本的には先駆者の手法を踏襲しつつ修正箇所を付け加えていく．

また，日本語化にはMetahookSvを用いるが<font color="red">**これを導入したままオンラインゲームをプレイした場合VACバンされる可能性がある**</font>ため注意．

## 事前準備
:::note alert
**PCにインストールされているウィルス対策ソフトのリアルタイムスキャンをオフにしなければならない**
:::
諸悪の根源．こいつのせいでめちゃめちゃ時間と労力がかかった．くたばれ．
日本語化する際にプログラムを走らせるのだが，そのプログラムで生成されるファイルがウィルスだと誤認識されて削除されるためである．

## Half-Life: Blue Shiftのインストール
普通にインストールするだけ
なお，以降は「Half-Life：Blue Shift」を「BS」と略して扱う．

## Half-Lifeをダウングレード
翻訳をするときに使うMetahookSvのCaptionModがHalf-Lifeの最新版(25th記念アップデート)には対応していないらしい．
そのためSteamのライブラリからHalf-Life(BSではない)を見つけ，歯車のマークからプロパティを選択．
ベータの欄で「steam_legacy - Pre-25th Anniversary Build」を選択する

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/919127/26ba1726-92ba-edb5-2eb4-81ecd28dd8e5.png)

この段階でBSにアップデートが入ると思うのでアップデート&整合性の確認

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/919127/37fc87c6-0151-ffd6-4b68-d48fd4753315.png)

## MetahookSvをダウンロード
上記したように，対応したバージョンでないといけないため，[**ここ**](https://github.com/hzqst/MetaHookSv/releases/tag/v20231116a)から「metahooksv-windows-x86.zip」をダウンロードする．

## 日本語ファイルのダウンロード
上記の先駆者のHPからダウンロードするか，面倒くさい人は[**ここ**](https://drive.google.com/file/d/11zg-cu7UxUXVH9dSsdf2fz6jGMEgJHj1/view?usp=sharing)からダウンロードする．
なお中身は同じファイル

## MetahookSvの実行
ダウンロードした「MetaHookSv-windows-x86.zip」を好きな場所に解凍し，「MetaHookSv」とリネームする．
このまま実行してもゲームのインストール先が見つからないというエラーが出るので「MetaHookSv」フォルダ内の「install-to-BlueShift.bat」を右クリックして"編集"をクリック．

多分，下と同じようなプログラムになっていると思う．
```bat:install-to-BlueShift.bat
echo off

if not exist "%~dp0Build\svencoop.exe" goto fail_nobuild

set LauncherExe=metahook.exe
set LauncherMod=bshift
set FullGameName=Half-Life : Blue Shift
set ShortGameName=BlueShift

for /f "delims=" %%a in ('"%~dp0SteamAppsLocation/SteamAppsLocation" 130 InstallDir') do set GameDir=%%a

if "%GameDir%"=="" goto fail

echo -----------------------------------------------------

echo Copying files...

copy "%~dp0Build\svencoop.exe" "%GameDir%\%LauncherExe%" /y
copy "%~dp0Build\SDL2.dll" "%GameDir%\" /y
copy "%~dp0Build\FreeImage.dll" "%GameDir%\" /y
xcopy "%~dp0Build\svencoop" "%GameDir%\%LauncherMod%" /y /e
xcopy "%~dp0Build\valve" "%GameDir%\%LauncherMod%" /y /e

if not exist "%GameDir%\%LauncherMod%\metahook\configs\plugins.lst" copy "%GameDir%\%LauncherMod%\metahook\configs\plugins_goldsrc.lst" "%GameDir%\%LauncherMod%\metahook\configs\plugins.lst" /y

del "%GameDir%\%LauncherMod%\metahook\configs\plugins_goldsrc.lst"
del "%GameDir%\%LauncherMod%\metahook\configs\plugins_svencoop.lst"
del "%GameDir%\%LauncherMod%\metahook\configs\plugins_svencoop_avx2.lst"

powershell $shell = New-Object -ComObject WScript.Shell;$shortcut = $shell.CreateShortcut(\"MetaHook for %ShortGameName%.lnk\");$shortcut.TargetPath = \"%GameDir%\%LauncherExe%\";$shortcut.WorkingDirectory = \"%GameDir%\";$shortcut.Arguments = \"-insecure -game %LauncherMod%\";$shortcut.Save();

echo -----------------------------------------------------

echo Make sure that you have all plugins you want in the plugins.lst

notepad "%GameDir%\%LauncherMod%\metahook\configs\plugins.lst"

echo Done
echo Please launch game from shortcut "MetaHook for %ShortGameName%"
pause
exit

:fail

echo Failed to locate GameInstallDir of %FullGameName%, please make sure Steam is running and you have %FullGameName% installed correctly.
pause
exit

:fail_nobuild

echo Compiled binaries not found ! You have to download compiled zip from github release page or compile the sources by yourself before installing !!!
pause
exit
```
このままではゲームのインストール先を指定するための`%GameDir%`が上手く取得できなくて詰むので直接打ち込んでやるとうまくいく．
仮にゲームが「C:\Program Files (x86)\Steam\steamapps\common\Half-Life」にインストールされているなら下のように変更すればいい．

```bat:install-to-BlueShift.bat
echo off

set GameDir=C:\Program Files (x86)\Steam\steamapps\common\Half-Life
set LauncherExe=metahook.exe
set LauncherMod=bshift
set FullGameName=Half-Life : Blue Shift
set ShortGameName=BlueShift

echo -----------------------------------------------------

echo Copying files...

copy "%~dp0Build\svencoop.exe" "%GameDir%\%LauncherExe%" /y
copy "%~dp0Build\SDL2.dll" "%GameDir%\" /y
copy "%~dp0Build\FreeImage.dll" "%GameDir%\" /y
xcopy "%~dp0Build\svencoop" "%GameDir%\%LauncherMod%" /y /e
xcopy "%~dp0Build\valve" "%GameDir%\%LauncherMod%" /y /e

if not exist "%GameDir%\%LauncherMod%\metahook\configs\plugins.lst" copy "%GameDir%\%LauncherMod%\metahook\configs\plugins_goldsrc.lst" "%GameDir%\%LauncherMod%\metahook\configs\plugins.lst" /y

del "%GameDir%\%LauncherMod%\metahook\configs\plugins_goldsrc.lst"
del "%GameDir%\%LauncherMod%\metahook\configs\plugins_svencoop.lst"
del "%GameDir%\%LauncherMod%\metahook\configs\plugins_svencoop_avx2.lst"

powershell $shell = New-Object -ComObject WScript.Shell;$shortcut = $shell.CreateShortcut(\"MetaHook for %ShortGameName%.lnk\");$shortcut.TargetPath = \"%GameDir%\%LauncherExe%\";$shortcut.WorkingDirectory = \"%GameDir%\";$shortcut.Arguments = \"-insecure -game %LauncherMod%\";$shortcut.Save();

echo -----------------------------------------------------

echo Make sure that you have all plugins you want in the plugins.lst

notepad "%GameDir%\%LauncherMod%\metahook\configs\plugins.lst"

echo Done
echo Please launch game from shortcut "MetaHook for %ShortGameName%"
pause
exit
```
ゲームがどこに保存されているか分からない場合はBSのプロパティから"参照"をクリックすれば自動的に該当フォルダが開く

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/919127/582f74ed-dc1a-1f8a-62ea-0993c9744799.png)

エクスプローラーの上のところをクリックしたらインストールフォルダまでの絶対パスが取得できるので，そのままコピペすればいい．

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/919127/fb2d7a08-2887-1015-94ef-ade6810c286e.png)

ここまでやって，やっと実行が可能になる．
変更内容を保存して，「install-to-BlueShift.bat」をダブルクリックする．ファイルのコピーみたいなコマンド出力がいっぱい出てきたら多分成功．
メモ帳が開くので適宜×ボタンを押して閉じる．

最期に「MetaHook for BlueShiftを実行してください」と言われるので，「MetaHookSv」フォルダ内の「MetaHook for BlueShift」をダブルクリックする．
なんか一瞬出てきて消えるはず．多分これで良し．

## 日本語ファイルの移動
ダウンロードした日本語ファイルを解凍し，中身を丸ごとゲームのインストール先(今回で言うところのC:\Program Files (x86)\Steam\steamapps\common\Half-Life)に移動する．
「bshift」フォルダ内の「config.cfg」をメモ帳で開き、新しい行に`cap_max_distance "5000"`を追加．

## ゲームの実行
同封されている「Play BlueShift.bat」をダブルクリックしてゲームを起動する．
上手くいった人はおめでとう．

ゲーム画面でファイルが見つからないみたいなことを言われた人は「bshift」フォルダ内にある「metahook」フォルダ内のPlugin.lstをメモ帳で開き、CaptionMod.dll以外を削除すればきっとうまくいくはず．

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/919127/1d9d795b-2e41-4942-3d83-2a83f4ca45d2.png)

## さいごに
ここまで読んでくれてありがとう
僕は疲れたのでもう寝るよ

あ，そうそう．
くれぐれもMetahookを導入したままオンラインゲームをしてはダメだよ．VACバンされるからね．