在Screeps中,我的代码不起作用:
var sources = creep.room.find(Game.FIND_SOURCES_ACTIVE);
它说:
Cannot read property 'find' of undefined
我一直在四处张望,找不到其他找到来源的方法。
另外我还注意到,大多数其他人的代码都无法正常运行,甚至在实际游戏中使用时,本教程的代码也不再有效。
最佳答案
我无法完全确定您的问题,因为我没有完整的代码,但一个问题可能是未定义creep
。
您需要在代码中的某处定义creep
,例如for循环,以遍历游戏或房间中的每个小兵。
var roleMiner = require('role.miner') // role.miner being the module name for miner actions
for(var name in Game.creeps) {
var creep = Game.creeps[name];
//
// do whatever you wish with the current selected creep.
//
// most of the time you will call a module similar to what the tutorials suggest and put your actions for it in there
//
if(creep.memory.role == 'miner'){
roleMiner.run(creep); // passes the current selected creep to the run function in the module
}
}
因此,在您的roleMiner模块中,您将可以定义矿工的操作。
var roleMiner = {
run: function(creep) {
// this one returns an array of the sources that are in the room with the creep
var sourcesRoom = creep.room.find(FIND_SOURCES);
// this one returns the source object which is closest to the creeps positon
var sourcesClose = creep.pos.findClosestByRange(FIND_SOURCES);
}
}
module.exports = roleMiner;
希望这可以帮助。