找到 16 个返回值

返回值 0

OK

调用成功。

常见原因
动作已经被接受。
处理方法
不需要修复,但仍应在后续 tick 核对状态是否按预期变化。
返回值 -1

ERR_NOT_OWNER

目标不属于你,或当前对象不能由你控制。

常见原因
对其他玩家的 Creep、Spawn 或建筑执行受所有权限制的操作。
处理方法
确认目标属于自己,并检查房间控制权。
返回值 -2

ERR_NO_PATH

没有找到可到达目标的路径。

常见原因
目标被墙、建筑或不可通行地形隔开,或 PathFinder 回调拒绝了房间。
处理方法
检查目标位置、有效 range、房间出口、障碍物和 roomCallback。
返回值 -3

ERR_NAME_EXISTS

准备创建的名称已经存在。

常见原因
spawnCreep() 使用了一个仍被占用的 Creep 名称。
处理方法
生成唯一名称,或在创建前检查 Game.creeps[name]。

推荐处理方式

const name = `Harvester${Game.time}`;
Game.spawns.Spawn1.spawnCreep([WORK, CARRY, MOVE], name);
返回值 -4

ERR_BUSY

对象当前正忙,无法接受新的操作。

常见原因
例如 Spawn 正在创建另一个 Creep,或对象处于当前方法规定的忙碌状态。
处理方法
只在对应 API 文档列出 ERR_BUSY 时检查其忙碌属性,不要把一个方法的限制机械套到另一个方法。
返回值 -5

ERR_NOT_FOUND

没有找到要求的对象或目标。

常见原因
名称、ID、资源类型或查找条件不正确。
处理方法
打印变量并检查查找结果是否为 undefined、null 或空数组。
返回值 -6

ERR_NOT_ENOUGH_RESOURCES

执行动作所需的资源不足。

常见原因
Creep、建筑、账号资源或 CPU bucket 没有达到当前方法要求。
处理方法
按当前 API 检查具体资源,不要只假设缺少 Energy。

常见返回场景

transfer()build()repair()processPower()Game.cpu.generatePixel()
返回值 -6

ERR_NOT_ENOUGH_ENERGY

旧代码中常见的 Energy 不足名称,与 -6 返回值有关。

常见原因
创建身体成本超过房间当前 Energy,或动作对象没有足够 Energy。
处理方法
新文章优先按具体 API 使用 ERR_NOT_ENOUGH_RESOURCES,并同时检查 room.energyAvailable、Store 和任务计划量。
返回值 -7

ERR_INVALID_TARGET

目标不适用于当前动作。

常见原因
把 Source 传给 transfer(),把完整建筑当作 Construction Site,或使用了失效对象。
处理方法
确认方法需要的目标类型,并在调用前检查对象类型、所有权和当前状态。
返回值 -8

ERR_FULL

目标已经装满,或没有剩余容量。

常见原因
向已满的 Spawn、Extension、Creep、Lab、Link 或 Terminal 继续传输或生产。
处理方法
使用 store.getFreeCapacity(resourceType) 检查目标资源的剩余容量,并考虑同 tick 的并发动作。
返回值 -9

ERR_NOT_IN_RANGE

目标距离当前对象太远,这一次动作没有被安排。

常见原因
调用 harvest()、transfer()、upgradeController()、build()、repair()、recycleCreep()、transferEnergy() 或 launchNuke() 时不满足该 API 的范围规则。
处理方法
先保存动作返回值。Creep 动作只有返回 ERR_NOT_IN_RANGE 时才调用 moveTo();建筑 API 则检查其同房间或最大范围规则。

常见返回场景

harvest()transfer()upgradeController()build()repair()recycleCreep()transferEnergy()launchNuke()

建议排查顺序

  1. 确认目标变量真实存在,不是 undefined、null 或空数组中的缺失项。
  2. 确认目标类型适用于当前方法。
  3. 把动作返回值保存并输出,确认实际得到的确实是 ERR_NOT_IN_RANGE(-9)。
  4. Creep 动作收到 -9 后调用 moveTo(target),并在下一个 tick 重新执行原动作。
  5. Link 和 Nuker 等建筑方法不依赖 moveTo(),应检查同房间、目标房间或官方范围常量。

未处理返回值

// 只调用动作,没有处理距离不足
const result = creep.harvest(source);
console.log(result); // 可能得到 -9

推荐处理方式

const result = creep.harvest(source);

if (result === ERR_NOT_IN_RANGE) {
  const moveResult = creep.moveTo(source);

  if (moveResult !== OK) {
    console.log(creep.name + ' 移动失败:' + moveResult);
  }
}
返回值 -10

ERR_INVALID_ARGS

传入参数的类型、数量或内容不正确。

常见原因
身体数组、名称、方向、资源类型、房间名、数量或选项对象写错。
处理方法
对照当前 API 参数顺序,打印每个参数的真实值,并检查数值范围。
返回值 -11

ERR_TIRED

对象仍在冷却或 Creep 当前疲劳。

常见原因
Creep fatigue 尚未恢复,或 Link 等结构的 cooldown 大于 0。
处理方法
读取对应对象的 fatigue 或 cooldown,等待后在下一 tick 重新判断。
返回值 -12

ERR_NO_BODYPART

Creep 缺少执行动作所需的有效身体部件。

常见原因
没有 WORK 却采集,缺少 CLAIM,或相关身体部件已经被摧毁。
处理方法
检查 creep.getActiveBodyparts(),并在创建时加入需要的部件。
返回值 -14

ERR_RCL_NOT_ENOUGH

当前房间控制等级不足,或结构在当前 RCL 不可用。

常见原因
尝试建造尚未解锁的建筑、数量超过上限,或调用未激活结构。
处理方法
检查 Controller 等级、CONTROLLER_STRUCTURES、结构数量和 structure.isActive()。
返回值 -15

ERR_GCL_NOT_ENOUGH

全局控制等级不足。

常见原因
尝试 claim 超过 GCL 允许数量的房间。
处理方法
提升 GCL、放弃一个已有房间,或将当前任务改为 reserve。