Sublime Text
Sublime Textのプラグインは公式が出しているものを大人しく使っておいたほうが良さそうです。
SublimePapyrusはSkyrim SEでは問題なく使えていましたが、Fallout 4だとどうやってもLinterを通せませんでした。
CK
起動が遅いです。SkyrimにはCK Fixesという便利ツールがあったのですが、Fallout 4にはないようです。
Skyrimとの違い
公式Wikiの解説を熟読しましょう。
使える部品が増えて出来ることが増えているのはいいことなのですが、Mod開発で重要なのはノウハウです。Skyrimのやり方では通用しない部分がかなりあるのが大変です。
コマンドプロンプトでコンパイル
項目 | ディレクトリ |
---|---|
Fallout 4 | E:\Steam\steamapps\common\Fallout 4 |
MO2のmods | E:\MO2FO4DATA\mods |
ソースコード | MO2のmods\mod名\Source\Scripts |
バイナリ | MO2のmods\mod名\Scripts |
ソースコードのある場所でコマンドプロンプトを開きます。ソースコードのある場所にコマンドプロンプトへのショートカットを作っておいて、それを開くだけです。
以下のコマンドを入力してコンパイルです。
cc ソースコードのファイル名
Fallout 4は階層がサポートされました。ディレクトリを作って分けるのが通例みたいです。
このように、事前にディレクトリを作っておきます。
項目 | ディレクトリ |
---|---|
Fallout 4 | E:\Steam\steamapps\common\Fallout 4\Data\Scripts\Mod名 E:\Steam\steamapps\common\Fallout 4\Data\Source\Scripts\Mod名 |
ソースコード | MO2のmods\mod名\Source\Scripts\Mod名 |
バイナリ | MO2のmods\mod名\Scripts\Mod名 |
ソースとバイナリを完全に分けています。Skyrim方式です。階層の数が重要であって、ディレクトリは統合しても別でもどちらでも問題ありません。配布やバックアップを考慮すると分かれている方がやりやすいと思います。
バッチファイル
カレントディレクトとサブディレクトリにあるすべてのソースコードのコンパイル状況を表示します。
check.bat (bat)
@echo off
setlocal enabledelayedexpansion
echo Source Binary Filename
for %%i in (*.psc) do (
call :MyFunc %%i
)
for /d %%d in (*) do (
for %%i in (%%d\*.psc) do (
call :MyFunc %%i
)
)
exit /b
:MyFunc
set psc=%1
set pex=..\..\scripts\!psc:.psc=.pex!
for %%a in (!psc!) do set psc_time=%%~ta
for %%b in (!pex!) do set pex_time=%%~tb
if "!psc_time!" equ "!pex_time!" (
set cond==
) else (
if "!psc_time!" gtr "!pex_time!" (
set cond=+
) else (
set cond=
)
)
if "!pex_time!" == "" (
set pex_time=
)
echo !psc_time! !pex_time! !cond! !psc!
exit /b
引数に指定したソースコードをコンパイルします。
cc.bat (bat)
@echo off
if ""=="%1" (
echo Usage: cc ^<source^>
exit /b 0
)
set psc=%1
set pex=%psc:.psc=.pex%
set my_psc=%CD%\%psc%
set my_pex=%CD%\..\..\scripts\%pex%
set fo4_dir=E:\Steam\steamapps\common\Fallout 4
set mo2_dir=E:\MO2FO4DATA\mods
set fo4_pex_dir=%fo4_dir%\Data\Scripts
set fo4_psc_dir=%fo4_dir%\Data\Scripts\Source
set src_base_dir=%fo4_dir%\Data\Scripts\Source\Base
set src_user_dir=%fo4_dir%\Data\Scripts\Source\User
set src_mcm_dir=%mo2_dir%\Mod Configuration Menu\Scripts\Source\User
set fo4_psc=%fo4_psc_dir%\%psc%
set fo4_pex=%fo4_pex_dir%\%pex%
set cc_bin=%fo4_dir%\Papyrus Compiler\PapyrusCompiler.exe
set cc_opt=-f="Institute_Papyrus_Flags.flg" -i="%src_user_dir%;%src_base_dir%;%fo4_psc_dir%;%src_mcm_dir%" -o="%fo4_pex_dir%"
echo === from %my_psc% ===
echo === to %fo4_psc% ===
if exist "%fo4_psc%" (
echo "%fo4_psc%" が既に存在するのでコピーできません
exit /b 0
)
if exist "%my_psc%" (
copy "%my_psc%" "%fo4_psc%"
) else (
echo "%my_psc%" が見つかりません
exit /b 0
)
"%cc_bin%" "%fo4_psc%" %cc_opt%
del "%fo4_psc%"
echo === from %fo4_pex% ===
echo === to %my_pex% ===
if exist "%fo4_pex%" (
move "%fo4_pex%" "%my_pex%"
) else (
echo "%fo4_pex%" が見つかりません
)