2014-11-22 37 views
-5

目前有一種方法可以在遊戲中自動化施工嗎?如果沒有辦法,我們是否允許在多人版本中使用外部腳本爲我們做這些事情?有什麼辦法可以自動化施工嗎?

+0

在這裏看到更多的信息。 [https://stackoverflow.com/questions/27051872/how-do-i-create-a-new-structure-in-screeps/27054679#27054679][1] [1 ]:https://stackoverflow.com/questions/27051872/how-do-i-create-a-new-structure-in-screeps/27054679#27054679 – Malleus 2014-11-22 06:26:48

+0

請通過[問] – 2014-11-22 06:42:04

回答

0

儘管我已經決定爲此分享我的解決方案,但問題仍然存在負面影響。

我定義模塊包含: - 腳本在給定的順序創建它們並重新創建摧毀毛骨悚然 - 我想每一個重生點存在(姓名和體), 毛骨悚然的名單。

我用這樣的:

var spawn = require('spawn_main'); 
spawn(); 

spawn_main的代碼(在代碼中的註釋說明):

module.exports = function() { 
    var preDef = { //predefined creep classes (body and memory) 
     harvester:{body: [Game.WORK, Game.CARRY, Game.MOVE], memory: {role: 'harvester'}}, 
     collector:{body: [Game.WORK, Game.CARRY, Game.MOVE, Game.MOVE], memory: {role: 'collector'}}, 
     guard:{body: [Game.TOUGH, Game.ATTACK, Game.MOVE, Game.MOVE], memory:{role: 'guard'}}, 
     healer:{body: [Game.HEAL, Game.HEAL, Game.MOVE, Game.MOVE], memory:{role: 'healer'}}, 
     tower:{body: [Game.RANGED_ATTACK, Game.RANGED_ATTACK, Game.MOVE], memory:{role: 'tower'}}, 
     builder:{body: [Game.WORK, Game.WORK, Game.WORK, Game.CARRY, Game.MOVE], memory:{role: 'builder'}}, 
     hunter: {body: [Game.MOVE, Game.RANGED_ATTACK, Game.MOVE, Game.ATTACK], memory:{role: 'hunter'}} 
    }; 
    var creeps = { //list of creeps I want to exist 
     Harvester1: preDef.collector, 
     Harvester2: preDef.harvester, 
     Tower1: preDef.tower, 
     Healer1: {body: [Game.HEAL, Game.HEAL, Game.MOVE, Game.MOVE], memory:{follow_role: 'tower',role: 'healer'}}, 
     Hunter1: preDef.hunter, 
     Harvester3: preDef.harvester, 
     Tower2: preDef.tower, 
     Hunter2: preDef.hunter, 
     Hunter3: preDef.hunter, 
     Hunter4: preDef.hunter, 
     Hunter5: preDef.hunter 
    }; 

    for (var i in Game.spawns){ //for each spawn point 
     var spawn = Game.spawns[i]; 
     // crowder pointed out bug in "if (null !== spawn.spawning) continue;" 
     // changed from 'break;' to 'continue;' 
     if (null !== spawn.spawning) continue; //spawn point can't be busy 
     for (var name in creeps){ //for each 'to-be-created' creep 
      // final name of the creep is [spawn_name]+[to_be_created_creep_name] 
      if (undefined === Game.creeps[i+name]){ //if creep does not exist 
       var mem = {}; 
       for (var attr in creeps[name].memory) {mem[attr] = creeps[name].memory[attr]; } //copy memory field 
       mem.home_name = i; // assign name of spawn point to which creep will be returning 
       spawn.createCreep(creeps[name].body, i+name, mem); //create new creep with defined body, name and memory 
       break; //ignore rest of 'to-be-created' creeps (spawn point should be busy). This also prevents creating creeps out of order 
      } 
     } 
    } 
}; 

希望這有助於

+0

你可能想要「繼續;」在你的for ..中,在產卵條件下產卵循環,而不是休息 - 否則,如果你的第一個產卵器正在工作,你將永遠不會評估其他產卵者。 – crowder 2015-08-07 18:48:59

+0

我很積極,我想讓'休息'。 「休息」隻影響蠕變循環。孵化循環將不受影響。 測試代碼: var a = [0,1,2,3]; (var i中的{var i中的{ { } – mish 2015-08-09 18:19:19

+0

「if(null!== spawn.spawning)break; //生成點不能繁忙」如何影響蠕變循環?它甚至不在這個循環中。 – crowder 2015-08-10 02:07:34

相關問題