ERR_NOT_IN_RANGE
动作目标存在,但当前对象没有满足这次调用的距离规则。先确认真实返回值,再决定是否移动。
下一步检查什么?
- 确认目标变量真实存在,而且目标类型适用于当前方法。
- 保存动作返回值;只有实际得到 -9 时才进入距离分支。
- 如果是 Creep 动作,检查当前位置与目标距离,再决定是否调用 moveTo()。
- 在下一 tick 重新执行原动作,并核对位置、Store 或目标状态是否变化。
ERROR CODES
Screeps 的多数动作不会抛出异常,而是返回一个数字。先保存返回值,再根据错误码进入对应诊断路径,继续检查 API、对象状态、距离、资源、工具与后续 tick。
DIAGNOSTIC NETWORK
从返回码出发,继续进入它已经关联的 API、对象 Hub、专题教程、工具与已接受 Runtime Verification,而不是停留在错误码释义。
ERR_NOT_IN_RANGE动作目标存在,但当前对象没有满足这次调用的距离规则。先确认真实返回值,再决定是否移动。
ERR_NO_PATH移动或寻路系统没有找到当前约束下可用的路径。不要只继续重复 moveTo(),先判断是哪一层路径约束失败。
ERR_NOT_ENOUGH_RESOURCES当前方法需要的资源不足。-6 不等于永远缺 Energy,必须回到具体 API 判断缺的是哪一种库存、Credits 或成本。
ERR_BUSY对象正处于与当前请求冲突的忙碌状态。对 Spawn 来说,先判断占用状态,再决定排队、等待还是切换 Spawn。
ERR_INVALID_TARGET目标对象存在,但它不符合当前方法的目标契约。先判断目标类型和状态,再检查距离或资源。
ERR_FULL目标没有足够剩余容量。检查目标的真实 free capacity,并考虑同一 tick 其他动作已经预占或改变容量。
ERR_TIRED当前对象暂时不能再次行动:Creep 可能有 fatigue,Structure 可能还在 cooldown。先读状态,不要无条件重复调用。
ERR_INVALID_ARGS参数没有满足方法契约。把每个参数的真实值打印出来,逐项核对类型、顺序、范围和选项对象。
ERR_NAME_EXISTS准备创建的 Creep 名称仍被占用。名称生成属于 Spawn 生命周期的一部分,应在入队或生成前保证唯一。
ERR_RCL_NOT_ENOUGH当前房间 Controller 等级或结构激活状态不允许这次操作。先确认 RCL、结构数量和 isActive(),再改任务计划。
找到 16 个返回值
调用成功。
目标不属于你,或当前对象不能由你控制。
没有找到可到达目标的路径。
准备创建的名称已经存在。
const name = `Harvester${Game.time}`;
Game.spawns.Spawn1.spawnCreep([WORK, CARRY, MOVE], name);对象当前正忙,无法接受新的操作。
没有找到要求的对象或目标。
执行动作所需的资源不足。
transfer()build()repair()processPower()Game.cpu.generatePixel()旧代码中常见的 Energy 不足名称,与 -6 返回值有关。
目标不适用于当前动作。
目标已经装满,或没有剩余容量。
目标距离当前对象太远,这一次动作没有被安排。
harvest()transfer()upgradeController()build()repair()recycleCreep()transferEnergy()launchNuke()// 只调用动作,没有处理距离不足
const result = creep.harvest(source);
console.log(result); // 可能得到 -9const result = creep.harvest(source);
if (result === ERR_NOT_IN_RANGE) {
const moveResult = creep.moveTo(source);
if (moveResult !== OK) {
console.log(creep.name + ' 移动失败:' + moveResult);
}
}传入参数的类型、数量或内容不正确。
对象仍在冷却或 Creep 当前疲劳。
Creep 缺少执行动作所需的有效身体部件。
当前房间控制等级不足,或结构在当前 RCL 不可用。
全局控制等级不足。