Javascript 有没有办法实现施工自动化?

Javascript 有没有办法实现施工自动化?,javascript,screeps,Javascript,Screeps,目前是否有一种在游戏中自动构建的方法?如果没有办法,我们是否可以在多人游戏版本中使用外部脚本来完成这项工作?尽管在这个问题上有负面标记,但我决定分享我的解决方案 我定义的模块包含: -我想为每个繁殖点存在的爬行动物列表(名称和身体), -脚本,用于按给定顺序创建它们,并重新创建被摧毁的爬行动物 我是这样使用它的: var spawn = require('spawn_main'); spawn(); spawn_main的代码(代码注释中的解释): 希望这有帮助有关更多信息,请参见此处。[[1

目前是否有一种在游戏中自动构建的方法?如果没有办法,我们是否可以在多人游戏版本中使用外部脚本来完成这项工作?

尽管在这个问题上有负面标记,但我决定分享我的解决方案

我定义的模块包含: -我想为每个繁殖点存在的爬行动物列表(名称和身体), -脚本,用于按给定顺序创建它们,并重新创建被摧毁的爬行动物

我是这样使用它的:

var spawn = require('spawn_main');
spawn();
spawn_main的代码(代码注释中的解释):


希望这有帮助

有关更多信息,请参见此处。[[1]:请检查您可能想要的“继续”在产卵条件下的for..in spawns循环中,而不是break——否则,如果第一个产卵器工作,您将永远不会评估其余的产卵器。我很肯定我想进行“break;”。“break”只影响爬行循环。产卵循环将不受影响。测试代码:var a=[0,1,2,3];for(a中的var I){for(var j in a){break;}console.log(i);}“if(null!==spawn.spawing)break;//spawn point can't busy”如何仅影响爬行循环?它甚至不在该循环中。哦,你是说这个中断;我没有注意到它(我说的是休息;在蠕动循环内。是的,最肯定的是,我想在那里做‘继续’。谢谢。
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
            }
        }
    }
};