实战用法
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):当需要一次性清空整个数组而非逐条移除时作为替代方案,两者根据使用场景灵活选择。
常见坑
- 同时使用
value 和 index 会产生歧义:两个参数只应选其一,若同时填写,脚本行为可能不符合预期;而两者都不填时,游戏会默认移除数组的最后一个元素,这一隐式行为经常被新手忽视,导致误删数据。
- 对 temp array 用错命令:临时数组(
temp_array)必须使用 [remove_from_temp_array](/wiki/effect/remove_from_temp_array) 而非本命令,混用会导致脚本报错或静默失败,两套数组命令体系严格分离,不可互换。