实战用法
find_highest_in_array 常用于需要从一组动态数值中找出最大值的场景,例如比较多个国家的某项资源量、从一批临时计算结果中取最高分、或在自定义科技/事件系统中找出得分最高的候选项。以下示例演示在一组存储了各省份抵抗值的数组中找出最高值并记录其下标:
find_highest_in_array = {
array = province_resistance_values
value = highest_resistance # 最高值存入 highest_resistance
index = highest_index # 对应下标存入 highest_index
}
check_variable = {
var = highest_resistance
value = 50
compare = greater_than
}
配合关系
[add_to_array](/wiki/effect/add_to_array) / [add_to_temp_array](/wiki/effect/add_to_temp_array):在执行 find_highest_in_array 前,需要先用这两个命令向数组填充数值,没有数据数组查找毫无意义。
[check_variable](/wiki/trigger/check_variable):找到最高值后,通常立即用 check_variable 对存储结果的临时变量进行阈值判断,是最常见的后续条件检验手段。
[is_in_array](/wiki/trigger/is_in_array):在确认最高值对应的下标或元素后,可配合 is_in_array 验证该元素是否属于某个特定集合,实现更精细的筛选逻辑。
[find_lowest_in_array](/wiki/effect/find_lowest_in_array):常与 find_highest_in_array 配对使用,同时获取最大值与最小值,用于计算极差或做双端比较。
常见坑
- 忽略默认变量名冲突:
value 和 index 字段若不显式指定,默认分别写入临时变量 v 和 i。这两个名称极为通用,如果外层循环(如 for_each_loop)已经在使用 v/i,调用后会静默覆盖原有值,导致外层循环逻辑错乱,务必手动指定唯一的变量名。
- 对空数组调用行为未定义:如果目标数组在调用时尚未赋值或长度为零,
find_highest_in_array 不会报错,但结果变量的值是不可预期的(可能保留上次赋值或为零),直接对其做 check_variable 判断会产生错误逻辑,应在调用前用 [collection_size](/wiki/trigger/collection_size) 确认数组非空。