2014-11-22 88 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

相关问题