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