命令百科

effect · remove_from_array

Definition

  • Supported scope:any
  • Supported target:none

Description

Removes an element from an array using value or index
Example: remove_from_array = {
	array = array_name
	value = 42 #optional, use index or this. if neither it removes last element
	index = 3 #optional, use value or this. if neither it removes last element
}
#shorter usage: remove_from_array = { array_name = 42 }

实战 · 配合 · 坑

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

实战用法

remove_from_array 常用于动态管理自定义数组数据的 mod 场景,例如追踪"已完成任务 ID 列表"、"已解锁科技池"或"排队等待处理的国家/州省集合"。当某个条件触发后,需要将已处理完的元素从数组中剔除,避免重复执行逻辑时尤为必要。

# 从"待处理任务队列"中移除已完成的任务值
effect = {
    remove_from_array = {
        array = pending_missions
        value = 5   # 移除值为 5 的任务条目
    }
}

# 简写形式:移除 active_targets 数组中值为当前 scope 的元素
remove_from_array = { active_targets = THIS }

配合关系

  • [add_to_array](/wiki/effect/add_to_array):与 remove_from_array 互为逆操作,通常先用 add_to_array 向数组注册数据,再在条件满足后用本命令清除对应条目。
  • [is_in_array](/wiki/trigger/is_in_array):在执行移除前先用此触发器确认目标元素确实存在于数组中,避免对空数组或不含该值的数组做无效操作。
  • [for_each_scope_loop](/wiki/effect/for_each_scope_loop):遍历数组内容进行批量判断后,配合 remove_from_array 在循环内有条件地逐一删除满足条件的元素。
  • [clear_array](/wiki/effect/clear_array):当需要一次性清空整个数组而非逐条移除时作为替代方案,两者根据使用场景灵活选择。

常见坑

  1. 同时使用 valueindex 会产生歧义:两个参数只应选其一,若同时填写,脚本行为可能不符合预期;而两者都不填时,游戏会默认移除数组的最后一个元素,这一隐式行为经常被新手忽视,导致误删数据。
  2. 对 temp array 用错命令:临时数组(temp_array)必须使用 [remove_from_temp_array](/wiki/effect/remove_from_temp_array) 而非本命令,混用会导致脚本报错或静默失败,两套数组命令体系严格分离,不可互换。