你如何用 transferEnergy(creep) 定位房间控制器
How do you target the room controller with transferEnergy(creep)
正如标题所言。
我尝试了很多不同的方法,但 "creep.transferEnergy(Game.controller);" 是唯一没有 return 错误的方法。
我很确定 transferEnergy() 不适用于控制器,这是我发现的用于升级过程简单自动化的代码。
if(creep.carry.energy < creep.carryCapacity) {
var sources = creep.room.find(FIND_SOURCES);
creep.moveTo(sources[0]);
creep.harvest(sources[0]);
}
else {
creep.moveTo(creep.room.controller);
creep.upgradeController(creep.room.controller)
}
我真的遇到了麻烦。提供的答案确实符合您的要求,但是......每个游戏滴答检查 creep 携带的当前能量水平是否低于 creep 可以容纳的当前容量。
所以,升级一次后,第一次检查,让小兵寻找能量。您的消息来源可能距离很远。我们要做的是把当前储存的能量耗尽,空了再找能量。
if(creep.memory.upgrader && creep.carry.energy == 0) {
creep.memory.upgrader = false;
}
if(!creep.memory.upgrader && creep.carry.energy == creep.carryCapacity) {
creep.memory.upgrader = true;
}
if(creep.memory.upgrader) {
if(creep.upgradeController(creep.room.controller) == ERR_NOT_IN_RANGE) {
creep.moveTo(creep.room.controller);
}
} else {
var source = creep.pos.findClosestByRange(FIND_SOURCES);
if(creep.harvest(source) == ERR_NOT_IN_RANGE) {
creep.moveTo(source);
}
}
}
};
还添加了按范围检查最近的来源。这将是 return 距离 creep 当前位置最近的来源。
正如标题所言。 我尝试了很多不同的方法,但 "creep.transferEnergy(Game.controller);" 是唯一没有 return 错误的方法。
我很确定 transferEnergy() 不适用于控制器,这是我发现的用于升级过程简单自动化的代码。
if(creep.carry.energy < creep.carryCapacity) {
var sources = creep.room.find(FIND_SOURCES);
creep.moveTo(sources[0]);
creep.harvest(sources[0]);
}
else {
creep.moveTo(creep.room.controller);
creep.upgradeController(creep.room.controller)
}
我真的遇到了麻烦。提供的答案确实符合您的要求,但是......每个游戏滴答检查 creep 携带的当前能量水平是否低于 creep 可以容纳的当前容量。
所以,升级一次后,第一次检查,让小兵寻找能量。您的消息来源可能距离很远。我们要做的是把当前储存的能量耗尽,空了再找能量。
if(creep.memory.upgrader && creep.carry.energy == 0) {
creep.memory.upgrader = false;
}
if(!creep.memory.upgrader && creep.carry.energy == creep.carryCapacity) {
creep.memory.upgrader = true;
}
if(creep.memory.upgrader) {
if(creep.upgradeController(creep.room.controller) == ERR_NOT_IN_RANGE) {
creep.moveTo(creep.room.controller);
}
} else {
var source = creep.pos.findClosestByRange(FIND_SOURCES);
if(creep.harvest(source) == ERR_NOT_IN_RANGE) {
creep.moveTo(source);
}
}
}
};
还添加了按范围检查最近的来源。这将是 return 距离 creep 当前位置最近的来源。