变量(在《欧陆风云IV》中)是持久存在的数值,与特定的国家或省份相关联。
使用变量
|
|
请协助验证或更新本节内容。本节最后验证于版本 1.23。 |
变量可以在国家和省份作用域中,以及效果和触发条件环境中使用,不过两种环境下所用的命令和条件有所不同。
例如,如果我们想记录某个国家触发某事件的次数,就需要使用变量。
注意1 :变量所能容纳的数字有最大值。超过2,147,484的数值会溢出为负数。
注意2 :变量不能用作右侧参数(例如在效果部分中),宗教和文化除外(见下文事件作用域值一节)。
设置变量
要将变量与某个国家(或省份)关联,首先需要设置该变量。
set_variable = {
which = myCountingVariable
value = 0
}
通常你会希望在初始化事件中完成这件事,即仅在游戏开始时触发一次的事件。使用on_startup触发时点和一个事件即可轻松做到:该事件检查has_country_flag,并在immediate部分中设置它。
增加变量
设置好变量后,就可以使用变量运算效果了。因此,在这个假设的事件中,我们会在immediate部分加入以下内容:
immediate = {
change_variable = {
which = myCountingVariable
value = 1
}
}
这会使myCountingVariable增加1。变量是定点小数(精确到千分位),这意味着你也可以用小数来增加。
所有变量运算效果如下:
change_variable # Add subtract_variable # Subtract divide_variable # Divide multiply_variable # Multiply
检查变量
现在我们可以追踪该事件的发生次数了,接下来希望在变量达到5时触发另一个事件。为此,我们需要在事件的触发条件部分使用变量比较触发条件。
以下是检查变量值是否大于等于5的方法:
check_variable = {
which = myCountingVariable
value = 5
}
若要检查变量是否恰好为5,需要再加入一个取反的check_variable:
check_variable = {
which = myCountingVariable
value = 5
}
NOT = {
check_variable = {
which = myCountingVariable
value = 6
}
}
本地化变量
我们可以对变量进行本地化,使其显示为我们定义的字符串,而不是变量的脚本名称。
myCountingVariable: "My Counting Variable"
在另一个事件中,我们可能想在事件描述里向玩家显示该变量。为此,可以加入以下本地化命令:
event_desc: "[Root.myCountingVariable.GetName] [Root.myCountingVariable.GetValue]"
这里的Root指的是事件的ROOT作用域。此处的本地化命令使用与ROOT关联的myCountingVariable,并显示本地化字符串(通过GetName)以及ROOT的当前值(通过GetValue)。
注意:变量名不能以三个(或更多)大写字母开头,因为游戏可能会将其与国家标签混淆。这样GetName会显示国家名称,而GetValue会向error.log输出类似Unknown text property 'GetValue]'的信息。
导出变量
变量可以填入导出的内部数值。这意味着诸如monthly_income之类的游戏数值可以导出到变量中,然后以多种方式使用。此外,变量之间可以相互比较,当它们包含导出的数值时这非常有用,可以实现原本无法做到的比较。
假设我们想制作一个事件,根据国家的月收入赠送金钱,但不超过国库存量。为此,我们首先需要在事件的immediate部分导出两个变量:
export_to_variable = {
which = moneyToGive
value = monthly_income
who = ROOT
}
export_to_variable = {
which = moneyAvailable
value = treasury
who = ROOT
}
然后我们要把国家收入乘以六,得到赠送金额:
multiply_variable = {
which = moneyToGive
value = 6
}
为确保赠送金额不超过国库存量,如果赠送金额更大,就把它限制为国家当前的国库金额:
if = {
limit = {
# Is moneyToGive greater than moneyAvailable
check_variable = {
which = moneyToGive
which = moneyAvailable
}
}
# Set moneyToGive to moneyAvailable's value, as moneyToGive was greater than moneyAvailable
set_variable = {
which = moneyToGive
which = moneyAvailable
}
}
然后在事件选项中,根据moneyToGive的值加入按比例变化的add_treasury:
option = {
if = {
limit = {
NOT = { check_variable = { which = moneyToGive value = 25 } }
}
add_treasury = -10
FRA = { add_treasury = 10 }
}
if = {
limit = {
check_variable = { which = money_to_give value = 25 }
NOT = { check_variable = { which = moneyToGive value = 50 } }
}
add_treasury = -25
FRA = { add_treasury = 25 }
}
if = {
limit = {
check_variable = { which = money_to_give value = 50 }
NOT = { check_variable = { which = moneyToGive value = 100 } }
}
add_treasury = -50
FRA = { add_treasury = 50 }
}
}
效果
与变量相关的效果:
注意:语法which = <var> / <scope>并不支持所有类型的作用域。ROOT和PREV似乎可用,但标签似乎不可用。不过who = <scope>支持标签。
set_variable = {
which = <var>
value = <number>
which = <var> / <scope> # Used in place of value, sets the first <var> to the second <var>'s value / <scope>'s value of <var>
}
change_variable = {
which = <var>
value = <number>
which = <var> / <scope> # Used in place of value, adds the second <var> to the first <var> / <scope>'s value of <var> to the current scope's <var>
}
subtract_variable = {
which = <var>
value = <number>
which = <var> / <scope> # Used in place of value, subtracts the second <var> from the first <var> / <scope>'s value of <var> from the current scope's <var>
}
divide_variable = {
which = <var>
value = <number>
which = <var> / <scope> # Used in place of value, divides the first <var> by the second <var> / <scope>'s value of <var>
}
multiply_variable = {
which = <var>
value = <number>
which = <var> / <scope> # Used in place of value, multiplies the first <var> with the second <var> / <scope>'s value of <var>
}
round_variable = {
which = <name>
value = <float>
# If value < 0 round down
# If value = 0 round
# If value > 0 round up
}
sqrt_variable = {
which = <name>
}
random_variable = {
which = <var>
value = <number>
which = <var> / <scope> # Used in place of value, sets the first <var> to a random float between 0 and the second <var> / <scope>'s value of <var>
}
modulo_variable = {
which = <var>
value = <number>
which = <var> / <scope> # Used in place of value, takes the remainder of dividing the first <var> with the second <var> / <scope>'s value of <var>
}
export_to_variable = {
which = <var> # e.g., stabilityVar
variable_name = <var> # same as which, alternative declaration
value = <string> # e.g., stability
who = <scope> # Who to grab the value from
# Supports exporting trigger limit values. Works for int, float and boolean triggers
value = trigger_value:<trigger>
}
触发条件
与变量相关的触发条件:
check_variable = {
which = <var>
value = <number>
which = <var> / <scope> # Used in place of value, checks if the first <var> is equal or higher than the second <var> / <scope>'s value of <var>
}
is_variable_equal = {
which = <string1>
which = <string2>
}
变量运算触发条件
在触发条件作用域内使用,用于在触发条件中导出变量。
下面是一个常见的例子:
variable_arithmetic_trigger = {
custom_tooltip = <string>
# Exports must be done before triggers
export_to_variable = {
variable_name = <string1>
value = <var>
}
export_to_variable = {
variable_name = <string2>
value = <var>
}
# Normal triggers are valid here
<triggers>
# Var1 == Var2
is_variable_equal = {
which = <string1>
which = <string2>
}
# Var1 >= Var2
check_variable = {
which = <string1>
which = <string2>
}
}
如果你想将某些触发条件相互比较,这会很有用。例如,假设你想检查自己的统治者是否比外国继承人年长。我们有ruler_age和heir_age触发条件,但不能这样写:ruler_age > FROM = { heir_age }。
不过,变量运算触发条件可以让你做到这一点。
variable_arithmetic_trigger = {
custom_tooltip = HAS_OLDER_RULER_THAN_THEIR_HEIR
export_to_variable = {
variable_name = my_age
value = trigger_value:ruler_age
}
export_to_variable = {
variable_name = their_age
value = trigger_value:heir_age
who = FROM
}
ruler_age = 0
FROM = {
heir_age = 0
}
check_variable = {
which = my_age
which = their_age
}
}
事件作用域值
事件作用域值用于将变量的索引对应到某个文化或宗教。当你使用export_to_variable导出文化或宗教时就会出现这种情况。
虽然变量的实际值仍是一个数字,但这个数字是该文化或宗教在各自列表中位置的索引。与某些效果和触发条件配合使用时,该索引会被转换为正确的文化或宗教。
要为此导出变量,需要使用以下语法:
export_to_variable = {
variable_name = myVarName
value = <export value>
}
要在效果或触发条件中使用该变量,需要使用以下语法:
set_heir_culture = variable:myVarName
该语法支持FROM,这意味着你可以将作用域切换到某个省份,并内联使用FROM来指向导出该变量的国家。
any_owned_province = {
culture = variable:From::myVarName
}
此外,在触发条件中可以使用以下语法获取导出值以进行比较:
religion_group = new_variable:ruler_religion
这使你能够在触发条件中检查导出值(因为export_to_variable是一个效果)。
支持的效果:
change_religion change_culture change_primary_culture set_ruler_culture set_ruler_religion set_consort_culture set_consort_religion set_heir_culture set_heir_religion
支持的触发条件:
ruler_culture consort_culture heir_culture ruler_religion consort_religion heir_religion culture religion
可导出的数值
国家
| 数值 | 备注 |
|---|---|
| modifier:<country modifier> | modifier:<modifier>语法适用于任何国家修正。
|
| trigger_value:<trigger> | trigger_value:<trigger>语法适用于返回整数、小数或布尔值的触发条件。更复杂的触发条件不适用。
|
| 威望 | |
| war_exhaustion | |
| 腐败度 | |
| 稳定度 | |
| 国库 | |
| 重商主义 | |
| 通货膨胀 | |
| num_of_cities | |
| num_of_ports | |
| adm_tech | |
| dip_tech | |
| mil_tech | |
| years_of_income | |
| monthly_income | |
| trade_income_percentage | |
| states_development | |
| total_development | |
| average_autonomy | |
| average_home_autonomy | |
| 人力 | |
| manpower_percentage | |
| max_manpower | |
| land_forcelimit | |
| naval_forcelimit | |
| army_tradition | |
| navy_tradition | |
| army_size | |
| navy_size | |
| average_unrest | |
| average_autonomy_above_min | |
| average_effective_unrest | |
| num_of_rebel_armies | |
| num_of_rebel_controlled_provinces | |
| overextension_percentage | |
| ADM | 现任统治者行政能力 |
| DIP | 现任统治者外交能力 |
| MIL | 现任统治者军事能力 |
| consort_adm | |
| consort_dip | |
| consort_mil | |
| heir_adm | |
| heir_dip | |
| heir_mil | |
| monarch_age | |
| consort_age | 如果不存在配偶,则返回当前游戏年份减1。 |
| heir_age | 如果不存在继承人,则返回当前游戏年份减1。 |
| patriarch_authority | |
| 虔诚度 | |
| religious_unity | |
| tolerance_to_this | 指真正信仰的宽容度 |
| 宗教 | 返回索引值,例如1代表天主教,2代表新教,等等。与正确的效果和触发条件配合使用时,该值会被转换为相应的宗教。 |
| dominant_religion | 返回索引值,例如1代表天主教,2代表新教,等等。与正确的效果和触发条件配合使用时,该值会被转换为相应的宗教。 |
| secondary_religion | 返回索引值,例如1代表天主教,2代表新教,等等。与正确的效果和触发条件配合使用时,该值会被转换为相应的宗教。 |
| ruler_religion | 返回索引值,例如1代表天主教,2代表新教,等等。与正确的效果和触发条件配合使用时,该值会被转换为相应的宗教。 |
| heir_religion | 返回索引值,例如1代表天主教,2代表新教,等等。与正确的效果和触发条件配合使用时,该值会被转换为相应的宗教。 |
| consort_religion | 返回索引值,例如1代表天主教,2代表新教,等等。与正确的效果和触发条件配合使用时,该值会被转换为相应的宗教。 |
| adm_advisor_religion | 返回索引值,例如1代表天主教,2代表新教,等等。与正确的效果和触发条件配合使用时,该值会被转换为相应的宗教。 |
| dip_advisor_religion | 返回索引值,例如1代表天主教,2代表新教,等等。与正确的效果和触发条件配合使用时,该值会被转换为相应的宗教。 |
| mil_advisor_religion | 返回索引值,例如1代表天主教,2代表新教,等等。与正确的效果和触发条件配合使用时,该值会被转换为相应的宗教。 |
| primary_culture | 返回索引值,例如1代表英格兰,2代表法兰西,等等。与正确的效果和触发条件配合使用时,该值会被转换为相应的文化。 |
| dominant_culture | 返回索引值,例如1代表英格兰,2代表法兰西,等等。与正确的效果和触发条件配合使用时,该值会被转换为相应的文化。 |
| ruler_culture | 返回索引值,例如1代表英格兰,2代表法兰西,等等。与正确的效果和触发条件配合使用时,该值会被转换为相应的文化。 |
| heir_culture | 返回索引值,例如1代表英格兰,2代表法兰西,等等。与正确的效果和触发条件配合使用时,该值会被转换为相应的文化。 |
| consort_culture | 返回索引值,例如1代表英格兰,2代表法兰西,等等。与正确的效果和触发条件配合使用时,该值会被转换为相应的文化。 |
| adm_advisor_culture | 返回索引值,例如1代表英格兰,2代表法兰西,等等。与正确的效果和触发条件配合使用时,该值会被转换为相应的文化。 |
| dip_advisor_culture | 返回索引值,例如1代表英格兰,2代表法兰西,等等。与正确的效果和触发条件配合使用时,该值会被转换为相应的文化。 |
| mil_advisor_culture | 返回索引值,例如1代表英格兰,2代表法兰西,等等。与正确的效果和触发条件配合使用时,该值会被转换为相应的文化。 |
| border_distance | 需要在export_to_variable中使用who = <scope>才能正常工作。
|
| capital_distance | 需要在export_to_variable中使用who = <scope>才能正常工作。
|
| 关系 | 需要在export_to_variable中使用who = <scope>才能正常工作。
|
| 信任 | 需要在export_to_variable中使用who = <scope>才能正常工作。
|
| ruler_consort_marriage_length |
省份
| 数值 | 备注 |
|---|---|
| modifier:<province modifier> | modifier:<modifier>语法适用于任何省份修正。
|
| trigger_value:<trigger> | trigger_value:<trigger>语法适用于返回整数、小数或布尔值的触发条件。更复杂的触发条件不适用。
|
| base_tax | |
| base_production | |
| base_manpower | |
| 开发度 | |
| 动乱 | |
| 民族主义 | |
| local_autonomy | |
| province_trade_power | |
| tolerance_to_this | 指真正信仰的宽容度 |
| 文化 | 返回索引值,例如1代表英格兰,2代表法兰西,等等。与正确的效果和触发条件配合使用时,该值会被转换为相应的文化。 |
| 宗教 | 返回索引值,例如1代表天主教,2代表新教,等等。与正确的效果和触发条件配合使用时,该值会被转换为相应的宗教。 |
| 文档 | 效果 • 触发条件 • 修正列表 • 作用域 • 变量 • 本地化 • 可自定义本地化 • 运行文件 • 事件图片列表 |
| 脚本 | 脚本函数 • 顾问 • 时代 • 开局设定 • 建筑 • 宣战理由 • 殖民区域 • 国家创建 • 文化 • 决议 • Defines • 外交行动 • 灾难 • 中华帝国 • 阶层 • 事件 • 派系 • 政府 • 政府互动 • 伟大工程 • 历史 • 神圣罗马帝国 • 理念组 • 思潮 • 佣兵 • 任务树 • 修正 • On Actions • 议会 • 和约 • 君主性格 • 政策 • 叛军类型 • 宗教 • 附属国类型 • 科技 • 贸易公司 • 商品 • 单位 |
| 地图 | 地图 • 地图修改速查 • 随机新世界 • 贸易节点 |
| 图形 | 3D模型 • 界面 • 贴图库 • 字体 • 单位模型 |
| 音频 | 音乐 • 音效 |
| 其他 | 控制台命令 • 校验和 • 模组结构 • 故障排查 • 运行文件 |
| 工具 | 克劳塞维茨开局编辑器 • EU4模组编辑工具 • JoroDox模组制作工具 • The Validator |
| 指南 | 省份 • 地图修改速查 • 存档编辑 • 脚本教程 |