変数
※2025/10/6、英wikiよりkagi翻訳を通しました。機械翻訳なので一部不自然な日本語があるかもしれません。ぜひ編集してくれるとありがたいです。
変数は削除されるまで情報を永続的に保存します。
変数の設定[編集 | ソースを編集]
変数は、effectが実行されるscopeのコンテキストでset_variable effectを使用して設定されます。
set_variable = {
name = X
value = Y
}
変数の名前は任意に選択できる文字列です。変数を設定することで定義され、ゲーム内に既存または事前定義された変数のリストはありません。
変数の値は以下のようになります:
- ブール値
set_variableエフェクトには、ブール値を設定する簡単な形式もあります。
set_variable = X
これは以下と同じです:
set_variable = {
name = X
value = yes
}
キャラクターscopeで使用する場合、紛らわしい名前のadd_character_flagエフェクトを使用するのと同じです:
add_character_flag = X
- 数値
変数は任意の小数値に設定できます:
set_variable = {
name = test
value = 2.37
}
値はscript mathブロックを使用して動的に計算することもできます:
set_variable = {
name = test
value = {
value = 5
add = 2
multiply = 3
}
}
... またはスクリプト値に直接設定することもできます
set_variable = {
name = test
value = some_script_value
}
数値と比較する(つまり、<、<=、=、!=、>、>=演算子をサポートする)ほとんどのtriggersは、スクリプト値としても使用できることを思い出してください:
set_variable = {
name = test
value = prestige
}
set_variable = {
name = test
value = "culture.cultural_acceptance(culture:french)"
}
- フラグ値
変数はフラグ値を保存できます:
set_variable = {
name = test
value = flag:some_flag
}
変数はスコープを保存できます:
set_variable = {
name = test
value = scope:some_scope
}
この例では保存されたスコープを使用していますが、スコープにアクセスする任意の手段をvalueパラメータに使用できます:データベースアクセス、イベントターゲットなど。
- メイン記事へ: Scopes
変数はスコープのコピーを保存するのではなく、そのスコープへのポインタとして機能します。
変数の変更[編集 | ソースを編集]
変数がスコープに既に設定されている場合、同じ名前で新しい変数を設定すると、異なる性質の値を保存していても、既存の変数が置き換えられます。
変数が数値を保存している場合、change_variableエフェクトを使用して値を加算または乗算することで変更できます。
change_variable = {
name = X
add/multiply = Y
}
変数の削除[編集 | ソースを編集]
スコープに設定されると、変数は以下のいずれかが発生するまでそこに残ります:
- スクリプトで手動で削除される
- 保存されているスコープが破棄される
- キャラクターに保存されている場合、そのキャラクターが死亡したとき
セーブゲームの肥大化を避けるため、その他の理由で、変数はremove_variableエフェクトを使用して不要になったときに削除する必要があります。
remove_variable = X
変数へのアクセス[編集 | ソースを編集]
変数は特定のスコープに設定されるため、var:<変数名>の構文を使用して、同じスコープからのみアクセスできます。
変数は設定されている場合にのみアクセスでき、これはhas_variableトリガーを使用して、変数が設定されたとされるスコープから確認できます。
イベントターゲットと同様に、変数は保存されているスコープにチェーンできます:
scope:some_scope.var:some_var
変数がスコープを保存している場合、有効なイベントターゲットをそこからチェーンできます:
# var:some_varの場合 scope:some_scope.var:some_var.father
同様に、変数がスコープを保存し、そのスコープに別の変数が設定されている場合、2番目の変数もチェーンできます:
scope:some_scope.var:some_var.var:other_var
グローバル変数[編集 | ソースを編集]
変数はスコープに設定され、そのスコープからアクセス可能ですが、グローバル変数はゲームステート自体に設定され、そのためあらゆるコンテキストからアクセス可能です。
それ以外では、グローバル変数はあらゆる点で変数と同じように機能します:
set_global_variableエフェクトを使用して設定される- 数値を持つ場合、
change_global_variableエフェクトで変更できる remove_global_variableエフェクトで削除されるglobal_var:some_global_varを使用してアクセスされる
ローカル変数[編集 | ソースを編集]
変数はスコープに設定され、そのスコープからアクセス可能ですが、ローカル変数はトップスコープに設定され、そのため同じトップスコープ内のあらゆるコンテキストからアクセス可能です。 実際には、トップスコープは本質的に一時的であるため、ローカル変数は通常の変数よりもはるかに永続性が低く、ほとんどの場合、保存されたスコープまたは保存されたスコープ値を使用する方が実用的です。
- メイン記事へ: Saved scope
それ以外では、ローカル変数はあらゆる点で変数と同じように機能します:
set_local_variableエフェクトを使用して設定される- 数値を持つ場合、
change_local_variableエフェクトで変更できる remove_local_variableエフェクトで削除されるlocal_var:some_local_varを使用してアクセスされる
参考文献[編集 | ソースを編集]
| ドキュメンテーション | スクリプト • スコープ • 効果 • トリガー • 変数 • 補正リスト |
| スクリプト | AI • ブックマーク • キャラクター • コマンド • 評議会 • 文化 • ディシジョン • 王朝 • イベント • 政府 • 歴史 • 領地 • ライフスタイル • 連隊 • 宗教 • スクリプト値 • ストーリーサイクル • 闘争 • 称号 • 特性 |
| インターフェース | インターフェース • データ型 • ローカライズ • カスタムローカライズ • フレーバー化 |
| マップ | マップ • 地形 |
| グラフィック | 3Dモデル • エクスポーター • 紋章 • グラフィックアセット • フォント • パーティクル • シェーダー • ユニットモデル |
| オーディオ | 音楽 • サウンド |
| その他 | コンソールコマンド • チェックサム • Modの構造 • Mod制作ツール • トラブルシューティング |