寻找最接近给定 creep 的 creep
Finding closest creep to a given creep
很难找到最接近 creep 的 creep,因为它必须具有一组特定的角色并且必须没有指定的合作伙伴。
这是为了设置专用矿机和专用能量载体(必须找到最近的矿机或收割机并携带它们的能量)。
我试过了(其中 creep 变量是 creep 运行 脚本):
var nearestMinerCreep = creep.pos.findNearest(Game.MY_CREEPS, {
filter: function(creep) {
return (creep.memory.role == "miner"
|| creep.memory.role == "harvester")
&& !creep.memory.partner;
}
});
但是 findNearest() 似乎被贬低了。用 findClosestByPath() 和 findClosestByRange() 的变体替换它也不起作用。我能做的最好的事情就是用这个获得 creep 的位置:
var nearestPos = (creep.pos.findfindClosestByPath(FIND_MY_CREEPS)).pos;
但由于需要传递能量,因此未经过滤且不够具体。在此先感谢您的帮助!
Game.MY_CREEPS 不是正确的常量,所以我认为这可能是问题的一部分。
如写在API pos.findClosestByPath
接受额外的参数,包括过滤功能。所以正确的代码可能是
let nMCreep = creep.pos.findClosestByPath(FIND_MY_CREEPS, {
filter: function(creep) {
return (creep.memory.role == "miner"
|| creep.memory.role == "harvester")
&& !creep.memory.partner;
}
});
很难找到最接近 creep 的 creep,因为它必须具有一组特定的角色并且必须没有指定的合作伙伴。
这是为了设置专用矿机和专用能量载体(必须找到最近的矿机或收割机并携带它们的能量)。
我试过了(其中 creep 变量是 creep 运行 脚本):
var nearestMinerCreep = creep.pos.findNearest(Game.MY_CREEPS, {
filter: function(creep) {
return (creep.memory.role == "miner"
|| creep.memory.role == "harvester")
&& !creep.memory.partner;
}
});
但是 findNearest() 似乎被贬低了。用 findClosestByPath() 和 findClosestByRange() 的变体替换它也不起作用。我能做的最好的事情就是用这个获得 creep 的位置:
var nearestPos = (creep.pos.findfindClosestByPath(FIND_MY_CREEPS)).pos;
但由于需要传递能量,因此未经过滤且不够具体。在此先感谢您的帮助!
Game.MY_CREEPS 不是正确的常量,所以我认为这可能是问题的一部分。
如写在API pos.findClosestByPath
接受额外的参数,包括过滤功能。所以正确的代码可能是
let nMCreep = creep.pos.findClosestByPath(FIND_MY_CREEPS, {
filter: function(creep) {
return (creep.memory.role == "miner"
|| creep.memory.role == "harvester")
&& !creep.memory.partner;
}
});