命令百科

trigger · add_to_temp_array

Definition

  • Supported scope:any
  • Supported target:none

Description

Adds an element to a temporary array
Example: add_to_temp_array = {
	array = array_name
	value = 42 #optional, if not defined adds scope
	index = 3 #optional, default is end. otherwise elements are shifted
}
#shorter usage: add_to_temp_array = { array_name = 42 }

实战 · 配合 · 坑

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

实战用法

add_to_temp_array 在 trigger 块中最常见的场景是配合 collection_sizeis_in_array 进行条件判断前的临时数据收集,例如在 if 条件块内先将满足某条件的国家或数值暂存到临时数组,再在后续 trigger 中统计或查询该数组。由于临时数组仅存活于当前 effect/trigger 执行周期,非常适合做一次性的中间结果暂存。

# 示例:在 trigger 中将当前变量值添加到临时数组,再判断数组是否包含目标值
if = {
    limit = {
        add_to_temp_array = { array = my_temp result = 1 }
        is_in_array = { array = my_temp value = 1 }
    }
    # 满足条件后的逻辑
}

配合关系

  • [is_in_array](/wiki/trigger/is_in_array):向临时数组添加元素后,立即用 is_in_array 检查某值是否存在于其中,是最典型的"写后即查"模式。
  • [collection_size](/wiki/trigger/collection_size):将多个值逐步压入临时数组后,用 collection_size 统计数量来做阈值判断,常用于"满足条件的项目数量达到 N 个"的逻辑。
  • [clear_temp_array](/wiki/trigger/clear_temp_array):在同一 trigger 块内重复使用同名临时数组时,需先清空再写入,防止上一次残留数据干扰判断结果。
  • [find_highest_in_array](/wiki/trigger/find_highest_in_array):填充完临时数组后,用 find_highest_in_array 取出最大值赋给临时变量,再做数值比较,适合排序筛选场景。

常见坑

  1. 误把临时数组当持久存储add_to_temp_array 写入的数组在当前脚本执行结束后即消失,不能跨 event option、不能跨 on_action 持久保存。需要跨帧或跨事件保留的数据必须改用 add_to_array(effect 侧)配合普通变量。
  2. 在纯 trigger 上下文中混淆 effect 写法add_to_temp_array 虽然出现在 trigger 白名单中,但其行为本质上是"写操作",在只读的 limit 块内滥用可能导致预期外的副作用或脚本报错;应明确区分它被允许出现的上下文,避免与同名 effect 版本混淆使用。