Arrays:修订间差异

本页面所适用的版本可能已经过时,最后更新于1.10
(文本替换 - 替换“[[Category:”为“[[分类:”)
 
(未显示1个用户的2个中间版本)
第4行: 第4行:
 数组在{{ruby|'''指令'''|effects}}中发挥作用,并且{{ruby|'''触发器'''|trigger}}能够从中读取数据。指令既可以使数组迭代入其他指令,也能使其数据在自身内进行迭代。
 数组在{{ruby|'''指令'''|effects}}中发挥作用,并且{{ruby|'''触发器'''|trigger}}能够从中读取数据。指令既可以使数组迭代入其他指令,也能使其数据在自身内进行迭代。


 
以下,使用<>括起的内容为'''数据类型''',等号左侧的标识符为'''参数名称'''。
== 指令(Effects)==
== 指令(Effects)==
{{SVersion|1.10}}
{{SVersion|1.10}}
第17行: 第17行:
}
}
</pre>
</pre>
  每当有 个变量出现 ,就会创 一个 对应的 数组 对其进行储存
 一 旦将元素添加到数组中 ,就会创 一个数组。


<name> 是数组的名称,也是指令和触发器调用它的依据。
array  是数组的名称,也是指令和触发器调用它的依据。


<value> 是指数组的数据内容,它既可以是数字形式的(如1 或 var:my_num),也可以是作用域形式的(如GER 或 var:my_scope)。 当然 这些都是选填内容,如果不填则会将当前作用域填入此处。
value 是指 要加入 数组的数据内容,它既可以是数字形式的(如1 或 var:my_num),也可以是作用域形式的(如GER 或 var:my_scope)。这些都是选填内容,如果不填 则会将当前作用域填入此处。


<index> 指数据内容应当被插入数组的哪个位置。{{ruby|'''缺省'''|default data}}(现普遍称'''默认''')情况下 ,数据内容 插入 数组 最后 端, 其他情况下 数据 内容 会自动 匹配到合 的位置
index 指数据内容应当被插入数组的哪个位置。{{ruby|'''缺省'''|default data}}(现普遍称'''默认''')情况下 ,value 接续在 数组最后 其他情况下 ,原有的 数据会自动 向后移位以 应插入


 这部分的简便写法是:<code>add_to_array = { <name> = <value> }</code>
 这部分的简便写法是:<code>add_to_array = { <name> = <value> }</code>
第36行: 第36行:
}
}
</pre>
</pre>
<name> 想要进行 数据 内容移除操作 的数组名称
array  将被移除 数据的数组名称


<value> 是想要移除的数据内容
value 是想要移除的数据内容


<index> 指移除操作所选择的位置
index 指移除操作所选择的'''开始''' 位置


 如果value和index 都未定义 或未分配内容 ,那 最后一个 数据内容 会被
 如果value和index都未定义,那 么array只有 最后一个 元素 会被


 这部分的简便写法是:<code>remove_from_array = { <name> = <value> }</code>
 这部分的简便写法是:<code>remove_from_array = { <name> = <value> }</code>


=== 清空数组(clear_array) ===
=== 清空数组(clear_array) ===
第52行: 第51行:
<pre>clear_array = <name></pre>
<pre>clear_array = <name></pre>


 清 指定数组 中所有数据内容
 清 指定数组


=== 重置数组规模(resize_array) ===
=== 重置数组规模(resize_array) ===
第63行: 第62行:
}
}
</pre>
</pre>
 重置特定数 组规模
 重置特定数 组array 的规模 (size)
 
如果扩大已经声明过数据内容类型 数组 规模 ,那么多出的位置将以空变量填满,如果没有声明过则缺省值为0


size属性指定了数组的新大小, 如果 缩小 数组, 则删除 元素 如果 扩大 数组,则 增加指定值 元素。
如果 扩大现有 数组 的规模 多出来的新 元素 将被置为value; 如果 缩小现有 数组 的规模 ,则 自index=size开始 的元素 将被丢弃


 这部分的简便写法是: <code>resize_array = { <name> = <size> }</code>
 这部分的简便写法是: <code>resize_array = { <name> = <size> }</code>


===while循环指令(while_loop_effect)===
===while循环指令(while_loop_effect)===
第83行: 第79行:
}
}
</pre>
</pre>
 进行循环操作 要{ <triggers> } 为真 ,就执行指令
  对指定数组 进行 有条件的 循环操作 要limit 为真,就 重复 执行指令 组(用花括号括起的指令集合)。


break 后应填入 一个 能够打破循环、结束迭代的非零量,这个量将被声明为{{ruby|'''临时变量''''|temp variable}},缺省 为 <code>break</code>。
break 接受 一个{{ruby|'''临时变量'''|temp variable}}, 当传递给break的变量取值为'''非0'''时,迭代将结束。 缺省 情况下,break接受的变量名 为 <code>break</code> 。break无法在本指令之外被访问


  在此循环中可 写入 令执 某些 操作 ,所用的数据信息应均在array内
  本指令接受指令组作为其参数, 以指 定对数组元素进 操作。


该指令会隐性地将当前数组array作为参数。


===for each循环指令(for_each_loop)===
===for each循环指令(for_each_loop)===
第103行: 第100行:
}
}
</pre>
</pre>
 对 数组中的 变量进行循环操作
 对 定数组中的 每个元素调用指令组


value 后应分配 一个临时变量, 用以存储打破循环时 数据内容 ,缺省值为<code>v</code>。
value 指定了 一个临时变量, 指向迭代过程中 当前元素 ,缺省值为<code>v</code>。


index 后应分配 一个临时变量, 用以存储打破循环时 的位置,缺省值为<code>i</code>。
index 指定了 一个临时变量, 指向迭代过程中 当前 位置,缺省值为<code>i</code>。


break后应分配一个非零临时变量 打破循环, 结束迭代,缺省值为<code>break</code>
break后应分配一个''' 非零''' 临时变量以结束迭代,缺省值为<code>break</code>。
 
在此循环中可以写入指令执行某些操作,所用的数据信息应均在array内


在此循环中可以写入指令执行某些操作,并隐性地以当前数组为参数


===for each作用域循环指令(for_each_scope_loop)===
===for each作用域循环指令(for_each_scope_loop)===
第125行: 第121行:
}
}
</pre>
</pre>
 对 数组中的 变量进行循环操作 ,并在每次 迭代 时将 变量改为 当前作用域。
 对 定数组中的 每个元素调用指令组 ,并 在每次 调用 时将当前作用域 更改为当前元素


break后应分配一个非零临时变量 打破循环, 结束迭代,缺省值为<code>break</code>
break后应分配一个''' 非零''' 临时变量以结束迭代,缺省值为<code>break</code>。
 
在此循环中可以写入指令执行某些操作,所用的数据信息应均在array内


在此循环中可以写入指令执行某些操作,并隐性地以当前数组为参数


===随机作用域指令(random_scope_in_array) ===
===随机作用域指令(random_scope_in_array) ===
第144行: 第139行:
}
}
</pre>
</pre>
 对特定的数组中的变量进行循环操作,并在每次迭代时将 变量 改为 同数组内所列的非当前 作用域( 意即应在array 选择 一个 当前作用域 不同 的变量 写入 )。
 对特定的数组中的 每一 变量进行循环操作,并在每次迭代时将 当前作用域 改为 随机 作用域( 当前数组 一个 随机的、不同于 当前作用域的变量)。


break后应分配一个非零临时变量 打破循环, 结束迭代,缺省值为<code>break</code>。
break后应分配一个''' 非零''' 临时变量以结束迭代,缺省值为<code>break</code>。


 在此循环中可以写入指令执行某些操作,所用的数据内容应均在array内。
 在此循环中可以写入指令执行某些操作,所用的数据内容应均在array内。
第169行: 第164行:


 与<code>resize_array</code> 代码相同,但存储对象为临时数组,此数组在脚本结束后就会消失。
 与<code>resize_array</code> 代码相同,但存储对象为临时数组,此数组在脚本结束后就会消失。


==触发器(Triggers)==
==触发器(Triggers)==
{{SVersion|1.10}}
{{SVersion|1.10}}


=== 数组内匹配 (is_in_array)===
=== 包含关系 (is_in_array)===
{{SVersion|1.10}}
{{SVersion|1.10}}


第184行: 第178行:
</pre>
</pre>


 检测指定数 据内容 是否 指定 数组内
 检测指定数 组array 是否 含有 指定 元素value。


=== 或逻辑触发 (any_of)===
=== 存在量词 (any_of)===
{{SVersion|1.10}}
{{SVersion|1.10}}


第198行: 第192行:
}
}
</pre>
</pre>
 对指定数组 进行循环操作,将<triggers> 与当前变量进行 比较 如果任一 返回 值为真则触发器输出为真,否则为假。
 对指定数组 内的每一元素调用<triggers> 比较 触发器输出和元素值。 如果任一 比较结果 值为真则触发器输出为真,否则为假。


=== 与逻辑触发 (all_of) ===
=== 全称量词 (all_of) ===
{{SVersion|1.10}}
{{SVersion|1.10}}


第212行: 第206行:
}
}
</pre>
</pre>
 对指定数组 进行循环操作,将<triggers> 与当前变量进行 比较 如果任一 返回 值为假则触发器输出为假,否则为真。
 对指定数组 内的每一元素调用<triggers> 比较 触发器输出和元素值。 如果任一 比较结果 值为假则触发器输出为假,否则为真。


===作用域 或逻辑触发 (any_of_scopes)===
===作用域 存在量词 (any_of_scopes)===
{{SVersion|1.10}}
{{SVersion|1.10}}


第226行: 第220行:
 对指定数组进行循环操作,将<triggers>与当前作用域进行比较,如果任一返回值为真则触发器输出为真,否则为假。
 对指定数组进行循环操作,将<triggers>与当前作用域进行比较,如果任一返回值为真则触发器输出为真,否则为假。


===作用域 与逻辑触发 (all_of_scopes)===
===作用域 全称量词 (all_of_scopes)===
{{SVersion|1.10}}
{{SVersion|1.10}}


第243行: 第237行:
 你可以将某数组内变量的数目输出出来,只需要这么写:<code>set_variable = { var_name = array_name^num }</code> 。
 你可以将某数组内变量的数目输出出来,只需要这么写:<code>set_variable = { var_name = array_name^num }</code> 。


== Examples ==
== 例子 ==
{{SVersion|1.10}}
{{SVersion|1.10}}


{{Modding navbox}}
{{Modding navbox}}
[[Category:Modding]]
[[ 分类:Modding]]

2022年12月5日 (一) 15:33的最新版本

数组是《钢铁雄心IV》中用以存储变量的方式,变量既可以是数字形式numerical data的,也可以是作用域scope data形式的。

数组在指令effects中发挥作用,并且触发器trigger能够从中读取数据。指令既可以使数组迭代入其他指令,也能使其数据在自身内进行迭代。

以下,使用<>括起的内容为数据类型,等号左侧的标识符为参数名称

指令(Effects)

添加到数组(add_to_array)

add_to_array = {
    array = <name>
    value = <value>
    index = <index>
}

一旦将元素添加到数组中,就会创建一个数组。

array 是数组的名称,也是指令和触发器调用它的依据。

value 是指要加入数组的数据内容,它既可以是数字形式的(如1 或 var:my_num),也可以是作用域形式的(如GER 或 var:my_scope)。这些都是选填内容,如果不填,则会将当前作用域填入此处。

index 指数据内容应当被插入数组的哪个位置。缺省default data(现普遍称默认)情况下,value会接续在数组最后。其他情况下,原有的数据会自动向后移位以适应插入。

这部分的简便写法是:add_to_array = { <name> = <value> }

从数组中移除(remove_from_array)

remove_from_array = {
	array = <name>
	value = <value>
	index = <index>
}

array 是将被移除数据的数组名称。

value 是想要移除的数据内容。

index 指移除操作所选择的开始位置。

如果value和index都未定义,那么array只有最后一个元素会被移除。

这部分的简便写法是:remove_from_array = { <name> = <value> }

清空数组(clear_array)

clear_array = <name>

清空指定数组。

重置数组规模(resize_array)

resize_array = {
	array = <name>
	value = <value>
	size = <int>
}

重置特定数组array的规模(size)。

如果扩大现有数组的规模,多出来的新元素将被置为value;如果缩小现有数组的规模,则自index=size开始的元素将被丢弃。

这部分的简便写法是: resize_array = { <name> = <size> }

while循环指令(while_loop_effect)

while_loop_effect = {
	break = <string>
	limit = { <triggers> }
	
	<effects>
}

对指定数组进行有条件的循环操作。只要limit为真,就重复执行指令组(用花括号括起的指令集合)。

break接受一个临时变量temp variable,当传递给break的变量取值为非0时,迭代将结束。缺省情况下,break接受的变量名为 break。break无法在本指令之外被访问。

本指令接受指令组作为其参数,以指定对数组元素进行的操作。

该指令会隐性地将当前数组array作为参数。

for each循环指令(for_each_loop)

for_each_loop = {
	array = <name>
	value = <string>
	index = <string>
	break = <string>
	
	<effects>
}

对指定数组中的每个元素调用指令组。

value指定了一个临时变量,指向迭代过程中的当前元素,缺省值为v

index指定了一个临时变量,指向迭代过程中的当前位置,缺省值为i

break后应分配一个非零临时变量以结束迭代,缺省值为break

在此循环中可以写入指令执行某些操作,并隐性地以当前数组为参数

for each作用域循环指令(for_each_scope_loop)

for_each_scope_loop = {
	array = <name>
	break = <string>
	
	<effects>
}

对指定数组中的每个元素调用指令组,并且在每次调用时将当前作用域更改为当前元素。

break后应分配一个非零临时变量以结束迭代,缺省值为break

在此循环中可以写入指令执行某些操作,并隐性地以当前数组为参数

随机作用域指令(random_scope_in_array)

random_scope_in_array = {
	array = <name>
	break = <string>
	limit = { <triggers> }
	
	<effects>
}

对特定的数组中的每一变量进行循环操作,并在每次迭代时将当前作用域改为随机作用域(当前数组内的一个随机的、不同于当前作用域的变量)。

break后应分配一个非零临时变量以结束迭代,缺省值为break

在此循环中可以写入指令执行某些操作,所用的数据内容应均在array内。

添加到临时数组(add_to_temp_array)

add_to_array代码相同,但存储对象为临时数组,此数组在脚本结束后就会消失。

从临时数组中移除(remove_from_temp_array)

remove_from_array 代码相同,但存储对象为临时数组,此数组在脚本结束后就会消失。

清空临时数组(clear_temp_array)

clear_array 代码相同,但存储对象为临时数组,此数组在脚本结束后就会消失。

重置临时数组规模(resize_temp_array)

resize_array 代码相同,但存储对象为临时数组,此数组在脚本结束后就会消失。

触发器(Triggers)

包含关系(is_in_array)

is_in_array = {
	array = <name>
	value = <value>
}

检测指定数组array是否含有指定元素value。

存在量词(any_of)

any_of = {
	array = <name>
	value = <string>
	index = <string>
	
	<triggers>
}

对指定数组内的每一元素调用<triggers>并比较触发器输出和元素值。如果任一比较结果值为真则触发器输出为真,否则为假。

全称量词(all_of)

all_of = {
	array = <name>
	value = <string>
	index = <string>
	
	<triggers>
}

对指定数组内的每一元素调用<triggers>并比较触发器输出和元素值。如果任一比较结果值为假则触发器输出为假,否则为真。

作用域存在量词(any_of_scopes)

any_of_scopes = {
	array = <name>
	
	<triggers>
}

对指定数组进行循环操作,将<triggers>与当前作用域进行比较,如果任一返回值为真则触发器输出为真,否则为假。

作用域全称量词(all_of_scopes)

all_of_scopes = {
	array = <name>
	
	<triggers>
}

对指定数组进行循环操作,将<triggers>与当前作用域进行比较,如果任一返回值为假则触发器输出为假,否则为真。

附加信息

你可以将某数组内变量的数目输出出来,只需要这么写:set_variable = { var_name = array_name^num }

例子