你可以这样做:
if(Number(Harvesters.name.slice(-1)) < 3)
Game.spawns.Spawn1.createCreep([Game.WORK, Game.CARRY, Game.MOVE],'Harvester'+ Harvesters.length, 'Harvester');
这里要注意的是 index 不是属性,具有欺骗性的 id 属性是唯一的,因此不是您要查找的。这段代码查看当前cree的名字并获取最后一个字符,然后将其转换为一个数字,并将其与3进行比较。
不过,您分配给内存的方式很好。如果你真的想要,你可以在那里做一个对象,但你现在如何设置它似乎没有必要。它看起来像这样:
Game.spawns.Spawn1.createCreep([Game.WORK, Game.CARRY, Game.MOVE],'Harvester'+ Harvesters.length, {role: 'Harvester'});
而且您必须确保将memory
支票更改为memory.role
.
重读,我认为我所做的并不是你所要求的。如果我理解正确,这应该会更好(虽然不漂亮)
module.exports = function() {
var totalHarv = 0;
for(var q in Game.creeps)
if (Game.creeps[q].memory == 'Harvester')
totalHarv++;
for(var i in Game.creeps) {
if(Game.creeps[i].memory == 'Harvester') {
while(totalHarv < 3) {
Game.spawns.Spawn1.createCreep([Game.WORK, Game.CARRY, Game.MOVE], 'Harvester'+ totalHarv, 'Harvester');
totalHarv++;
}
}
}
}
如果它找到一个 Harvester,它会循环遍历小兵并增加一个计数器,然后当你尝试生成和填充时,它可以检查它们是否足够,并在必要时添加更多。