ソースファイルを準備する
Skyrim Special Editionのインストール直後はソースファイルがありません。
以下のzipファイルの中にありますので、これを展開します。
Data\Scripts.zip
展開後は以下のパスになります。
Data\Source\Scripts\*.psc
SKSE
SKSEを使っている場合は、SKSEに含まれる以下のファイルを上記のパスに上書きコピーします。
Data\Scripts\Source\*.psc
ちなみに src
以下のファイルはSKSE自体をビルドするためのものなので不要です。
Source\Scripts と Scripts\Source のどちらが正解なのか
どちらでもいいです。
以下で説明しているバッチファイルは Source\Scripts
であることを前提に設定しています。Scripts\Source
の方が好みなのであれば、そのようにバッチファイルを修正すればいいだけです。
コンパイル用バッチファイル
パスは環境に合わせて変更してください。
FISSSEやPapyrusUtil SEを組み込む場合のやり方も入っています。
cc.bat
667 (bat)
@echo off
if ""=="%1" (
echo Usage: cc ^
exit /b 0
)
set psc=%1
set pex=%psc:.psc=.pex%
set my_psc=%CD%\%psc%
set my_pex=%CD%\..\..\scripts\%pex%
set sk_dir=E:\Steam\steamapps\common\Skyrim Special Edition
set mo_dir=E:\MO2\mods
@rem set sky_dir=%mo_dir%\SkyUI SDK\scripts\source
set sky_dir=%mo_dir%\SkyUI SDK schlangster\scripts\source
@rem set fiss_dir=%mo_dir%\FileAccess Interface for Skyrim SE Scripts - FISSES\source\scripts
@rem set pu_dir=%mo_dir%\PapyrusUtil SE - Modders Scripting Utility Functions\Source\Scripts
set sk_pex_dir=%sk_dir%\Data\Scripts
set sk_psc_dir=%sk_dir%\Data\Source\Scripts
set sk_psc=%sk_psc_dir%\%psc%
set sk_pex=%sk_pex_dir%\%pex%
set cc_bin=%sk_dir%\Papyrus Compiler\PapyrusCompiler.exe
@rem set cc_opt=-f="TESV_Papyrus_Flags.flg" -i="%sk_psc_dir%;%sky_dir%;%pu_dir%" -o="%sk_pex_dir%"
set cc_opt=-f="TESV_Papyrus_Flags.flg" -i="%sk_psc_dir%;%sky_dir%" -o="%sk_pex_dir%"
echo === %sk_psc% ===
if exist "%sk_psc%" (
echo "%sk_psc%" が既に存在するのでコピーできません
exit /b 0
)
if exist "%my_psc%" (
copy "%my_psc%" "%sk_psc%"
) else (
echo "%my_psc%" が見つかりません
exit /b 0
)
"%cc_bin%" "%sk_psc%" %cc_opt%
del "%sk_psc%"
if exist "%sk_pex%" (
move "%sk_pex%" "%my_pex%"
) else (
echo "%sk_pex%" が見つかりません
)
check.bat
673 (bat)
@echo off
setlocal enabledelayedexpansion
echo Source Binary Filename
for %%i in (*.psc) do (
set psc=%%i
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!
)
make.bat
6 (bat)
@echo off
setlocal enabledelayedexpansion
for %%i in (*.psc) do (
set psc=%%i
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!" (
echo ---
echo !psc! and pex is same time
) else (
if "!psc_time!" gtr "!pex_time!" (
call cc.bat !psc!
)
)
)
バッチファイルの使い方
pscファイルのあるディレクトリでコマンドプロンプトを開いて、以下のコマンドを実行します。
コマンド | 動作 |
cc <pscファイル名> | pscファイルを指定して1つコンパイルします。 |
check | コンパイル状況を一覧表示します。 |
make | pscファイルをまとめてコンパイルします。 |