スクリプト値

提供:ck3wiki
ナビゲーションに移動 検索に移動

※2025/10/6、英wikiよりkagi翻訳を通しました。機械翻訳なので一部不自然な日本語があるかもしれません。ぜひ編集してくれるとありがたいです。

スクリプト値は、値を計算する関数であり、スクリプト内のほぼどこでも使用できます。

.txt ファイルの common/script_values に定義します。

スクリプト値は単一の数値にもできます:

minor_stress_gain = 20

次のように使用します:

add_stress = minor_stress_gain

また、数式として、数式演算子・エフェクト・トリガーを使うこともできます:<syntaxhighlight lang="c"> sum_of_all_skills_value = { add = intrigue add = diplomacy add = stewardship add = martial add = learning } </syntaxhighlight>

数式[編集 | ソースを編集]

数式は波括弧で宣言し、次の形式に従います:<syntaxhighlight lang="c"> name_of_scripted_value = { # 数学的な操作 add = number/scripted value/scope.something subtract = ... multiply = ... divide = ... # 0 で割らないように注意 modulo = ...

value = ... # 値をこの数に設定

max = ... # 現在値がこれより高い場合、この数に切り下げます。例: "max = 10" は 15 を 10 にします min = ... # 現在値がこれより低い場合、この数に引き上げます

round = yes # 四捨五入 ceiling = yes # 切り上げ(正の無限大方向) floor = yes # 切り下げ(負の無限大方向)

if = { # 条件を満たす場合に処理します。"if" の中にさらに "if" を入れることも可能 limit = { いくつかの条件 } add = 5 divide = ... ... } else_if = { # 直前の "if" を満たさなかった場合に、こちらの条件をチェックして処理します。複数の "else_if" を並べられます limit = { いくつかの条件 } operations... } else = { # 上の "if" と "else_if" が満たされなかった場合の処理 }

fixed_range = { # 固定小数の乱数を範囲で与えます(例: 1.242) min = ... script value max = ... }

integer_range = { # 整数の乱数を範囲で与えます(例: 1) min = ... max = ... } } </syntaxhighlight>スクリプト値はゲーム状態を変更できない点に注意してください。変数の設定や多くのエフェクトの実行はできません。

スクリプト値をどのスコープで使っているかを忘れないでください。それによって使用できるトリガーやエフェクトが制限されます。たとえば、州(province)には age はありません。

実行順序[編集 | ソースを編集]

操作は定義された順に実行されます。例:<syntaxhighlight lang="c"> value = { add = 5 multiply = 4 max = 10 add = 5 } </syntaxhighlight>これは結果が「15」になります。"max = 10" が最後の "add = 5" の前に適用されるためです。

インライン化[編集 | ソースを編集]

数式はスクリプト値が使える場所ならどこでもインラインで書けます。

したがって、数式を 1 回しか使わない場合は、名前を付けて script_values フォルダに置く必要はありません。

例:<syntaxhighlight lang="c"> add_gold = { value = gold multiply = { # そう、数式演算子の中にもインラインで書けます value = 1 multiply = 0.5 } } </syntaxhighlight>

チェーン[編集 | ソースを編集]

名前付きスクリプト数式はスコープのチェーンで参照できます。たとえば、次の数式を定義した場合:<syntaxhighlight lang="c"> example_age = { value = age } </syntaxhighlight>次のように動作します:<syntaxhighlight lang="c"> add_gold = { value = mother.example_age } </syntaxhighlight>

範囲[編集 | ソースを編集]

スクリプト値は範囲も定義できます。

add_gold = { 1 5 } は 1 から 5 のゴールドを加算します。

add_gold = { named_value another_named_value } は名前付き値(数式を含む)を解決します。

範囲の中に数式をインラインで書くことはできません。例えば add_gold = { { value = 1 add = 2 } some_named_value } のようにはできません。

その必要がある場合は、スクリプト数学システムの integer_range または fixed_range を使用してください。

リスト[編集 | ソースを編集]

スクリプト値は every_ および ordered_ リストをサポートします。

add_gold = { every_child = { add = 1 } } は、子どもの数だけゴールドを加算します。<syntaxhighlight lang="c"> add_gold = { ordered_child = { order_by = age max = 3 add = age } } </syntaxhighlight>any_ リストは使用しないでください。これらはトリガーで使用します!

スコーピング[編集 | ソースを編集]

通常のスクリプトと同様に、スクリプト値の中でもスコープを変更できます。例:<syntaxhighlight lang="c"> add_gold = { father = { every_child = { add = 1 } } } </syntaxhighlight>これは、あなたの父親に子どもがいる数だけゴールドを加算します。

現在の値の保存[編集 | ソースを編集]

計算の途中で現在の値を取得するために save_temporary_value_as を使用できます。<syntaxhighlight lang="c"> temp = {

 add = 10
 divide = 2
 save_temporary_value_as = temp_total
 multiply = scope:temp_total

} </syntaxhighlight>これは 25 になります。値をそれ自身で乗算しています = (10/2)^2

これは、同じ値を何度も再計算しないようにするため、負荷の高いスクリプト値で役立ちます。

また、その値が正か負かに基づいて異なる計算を適用するためにも使用できます。

UI での表示[編集 | ソースを編集]

キャラクター向けのスクリプト値であれば、ルートをプレイヤーとして次のように表示できます:<syntaxhighlight lang="c"> text_single = {

 raw_text = "[GetPlayer.MakeScope.ScriptValue('my_value')]"

} </syntaxhighlight>GetPlayer は、必要に応じて HoldingView.GetProvince など他のプロモートに置き換えてください。

特定のスコープが不要なスクリプト値であれば、EmptyScope 上で実行できます。

"[EmptyScope.ScriptValue('my_value')]"

また、次の構文を使って UI から値やスコープを渡すこともできます:

"[GuiScope.SetRoot( GetPlayer.MakeScope ).AddScope( 'target', CharacterWindow.GetCharacter.MakeScope ).ScriptValue('sval_name')]"

注意! UI は 毎フレーム スクリプト値を計算します。

複雑なスクリプト値の大きなリストは大きなラグの原因になります。

そのような場合は、変数にそのスクリプト値を代入して、それを表示することを検討してください。

詳細は Interface/Displaying_a_variable_or_script_value を参照してください。

ドキュメンテーション スクリプトスコープ効果トリガー変数補正リスト
スクリプト AIブックマークキャラクターコマンド評議会文化ディシジョン王朝イベント政府歴史領地ライフスタイル連隊宗教スクリプト値ストーリーサイクル闘争称号特性
インターフェース インターフェースデータ型ローカライズカスタムローカライズフレーバー化
マップ マップ地形
グラフィック 3Dモデルエクスポーター紋章グラフィックアセットフォントパーティクルシェーダーユニットモデル
オーディオ 音楽サウンド
その他 コンソールコマンドチェックサムModの構造Mod制作ツールトラブルシューティング