命令百科

trigger · is_in_array

Definition

  • Supported scope:any
  • Supported target:none

Description

Checks if an element is in array
Example: is_in_array = {
	array = array_name
	value = 42
}
#shorter usage: is_in_array = { array_name = 42 }

实战 · 配合 · 坑

实战内容由 AI 生成,并已对照 vanilla 命令词表校验 —— 请当作起点而非权威依据。上方的定义节才是游戏自带文档原文。

实战用法

is_in_array 常见于需要追踪"已处理过的国家/州"或"已选择的选项列表"的 mod 场景,例如检查某个国家 TAG 或数值是否已被加入自定义队列数组,从而避免重复触发事件或效果。

# 检查当前国家的 TAG 变量是否已在"已访问国家"数组中
if = {
    limit = {
        is_in_array = {
            array = visited_countries_array
            value = THIS
        }
    }
    # 已在数组中,跳过处理
    custom_effect_tooltip = already_visited_tt
}

配合关系

  • [add_to_array](/wiki/effect/add_to_array) — 先将元素加入数组,再用 is_in_array 检查是否成功写入,或在后续 trigger 中防止重复添加。
  • [remove_from_array](/wiki/effect/remove_from_array) — 与 is_in_array 搭配形成"检查存在后再移除"的安全模式,避免对不存在的元素执行移除导致逻辑错误。
  • [collection_size](/wiki/trigger/collection_size) — 常在同一数组逻辑块中并用,先确认数组非空且含有目标元素,再做进一步的数量判断。
  • [check_variable](/wiki/trigger/check_variable) — 经常联合使用:check_variable 验证数值条件,is_in_array 验证成员资格,两者共同构成复合 guard 条件。

常见坑

  1. 数组名拼写与作用域不匹配:数组分为全局变量数组、国家变量数组和临时数组,若在错误 scope 下引用数组名(如在 country scope 下写了只在 global 下赋值的数组名),is_in_array 会始终返回 false 且不报错,极难排查。
  2. value 比较对象引用而非数值时类型不符:当数组存储的是 scope 引用(如 TAG)时,直接填写字符串标签名并不等同于 scope 对象本身,需确保写入数组时与检查时使用的是同一类型(变量数值 vs. scope token),否则匹配永远失败。