2016-07-28 59 views
2

我是Screeps的新手(喜歡它),我很難爲房間中的所有源創建變量。 我想,以確保只有3個小兵相同的源上工作,所以我下面的代碼片段爲我的收穫,我的主模塊screeps - 無法在源代碼中創建變量

主要

var sources = Game.spawns.Spawn1.room.find(FIND_SOURCES); 
for (var a in sources) { 
    var source = (sources[a]); 
    source.memory.numPeopleAt = 0; 
} 
module.exports.loop = function() { 
... 
} 

收割機

var sources = creep.room.find(FIND_SOURCES); 
for (var s in sources) { 
    if (creep.harvest(sources[s]) == ERR_NOT_IN_RANGE && sources[s].memory.numPeopleAt < 3) { 
     creep.moveTo(sources[s]); 
     sources[s].memory.numPeopleAt++; 
     break; 
    } 
} 

我知道我還是要做一個功能sources[s].memory.numPeopleAtt--

在此先感謝,

傑瑞凡Melckebeke

回答

1

源沒有記憶特性,像爬行一樣。但是,您可以將某些內容添加到主內存對象中。

var sources = Game.spawns.Spawn1.room.find(FIND_SOURCES); 
if (!Memory.sources) { 
    Memory.sources = {}; 
} 
_.each(sources, function(source) { 
    if (!Memory.sources[source.id]) { 
     Memory.sources[source.id] = { numPeopleAt: 0 }; 
    } 
}); 

有一點要注意的是,你的代碼將運行每一場比賽剔,所以你只需要如果它尚未初始化,初始化的東西(這是什麼如果,檢查是)。

0

這將設置源到最近的來源,而不在它附近

var source = creep.pos.findClosestByPath(FIND_SOURCES, {filter: (s) => s.pos.findInRange(FIND_MY_CREEPS, 1, {filter: (c) => c.memory.role == 'harvester' && c.name != creep.name})[0] == undefined}); 

編輯另一個收穫它來滿足您的需求

相關問題