目前有没有办法在游戏中自动构建?如果没有办法,我们是否允许在多人版本中使用外部脚本为我们执行此操作?
问问题
939 次
1 回答
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
}
}
}
};
希望这可以帮助
于 2014-11-23T11:46:59.100 回答