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