在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;

希望这可以帮助。

10-08 15:36