スクリプトをコマンドラインでコンパイルする方法

Modを作ろう

バッチファイルを用意すれば楽にコンパイルできるようになります。

ソースファイルを準備する

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コンパイル状況を一覧表示します。
makepscファイルをまとめてコンパイルします。
タイトルとURLをコピーしました