WARNING
バージョン要件:CWL 1.21.0 以上
コンソールスクリプト
デバッグ、バグ修正、数値テスト、またはちょっとした実験用。
C# 式を直接実行
次のコンソールコマンドを使用します:
cwl.cs.eval EClass.pc.party.membersスクリプトの戻り値はそのままコンソールに表示され、 コレクションは自動的に展開されます。
簡単なロジックコードの実行
1 行の中で変数定義や少し複雑な処理を書くこともできます:
cwl.cs.eval var i = EClass.rnd(150) * 2; EClass.pc.AddElement("featMetal", i);外部スクリプトファイルの実行
スクリプトが長い場合や、繰り返し使用したい場合は、 ファイルを直接実行できます(絶対パスが必要):
cwl.cs.file D:\...\demo_script.csスクリプトステート(Script State)
スクリプトステートは、複数回の cwl.cs.eval 実行の間で 変数を保持するための仕組みです。
CWL はスクリプトステートのスタックを提供しており、 すべてのスクリプトはスタックの最上位にあるステートを通して データを共有できます。
スクリプトステートを有効化してスタックの先頭に追加
cwl.cs.state.push my_state共有変数の読み書き
cwl.cs.eval Script["counter"] = 25;
cwl.cs.eval var value = (int)Script["counter"];注意:有効なスクリプトステートが存在しない場合、 各スクリプトの実行は完全に独立となり、 Script[...] は使用できません。
スクリプトステートの管理
現在のステートをポップ(データは保持):
cwl.cs.state.pop指定したステートをクリアして削除:
cwl.cs.state.remove my_state現在のステートスタックを表示:
cwl.cs.stateスクリプトのコンパイル
TIP
初めてスクリプト Mod を作成し、より多くの機能を使いたい場合は、 IDE を使った開発方法について スクリプト Mod ガイド を読むことを強くおすすめします。
CWL には 組み込みのスクリプトコンパイラ が用意されています。
Script フォルダの自動コンパイル
Mod の Script フォルダに .cs ファイルを置くと、 CWL が自動的にアセンブリへコンパイルし、 デバッグ用の PDB も生成します。 追加のコンパイルツールやプロジェクトファイルは不要です。
カスタム型やイベントを提供するだけの シンプルなコードに適しています。
例:カスタム型の定義
namespace MyMod;
public class ReligionGeeGeeBon : Religion;
public class FeatGoodStuff : Feat
{
internal void _OnApply(int add, ElementContainer eleOwner, bool hint)
{
eleOwner.SetFeat(FEAT.featMetal, add * 50);
}
}コンパイル特性について
スクリプトは、ゲーム本体および ロード済みのすべてのアセンブリ(Mod 含む)を自動的に参照します。 コンパイル後、未使用の参照は自動的に削除されます。
C# 14 の構文機能に対応しています。
スクリプトのライフサイクルイベント
CwlScript クラスを定義することで、 スクリプトのロード/アンロード時のイベントを監視できます。
public class CwlScript
{
internal static void CwlScriptLoad()
{
// スクリプトアセンブリがロードされた時に呼び出される
}
internal static void CwlScriptUnload()
{
// スクリプトアセンブリがアンロードされた時に呼び出される
}
}