【发布时间】:2018-06-24 09:21:51
【问题描述】:
首先,我对这个游戏完全陌生,但我从以前就知道 js。我遇到的问题是我在模拟器中玩耍的结果。
我正在尝试生成cree,我首先修改了example in the tutorial:
Game.spawns['HQ'].spawnCreep(
[WORK,CARRY,MOVE],
name,
{memory: {role: r}});
但这只会产生一个内存为undefined的蠕变。
我也试过在调用spawnCreep后设置内存:
Game.creeps[name].memory = {
role: r
};
但它会导致相同的“错误”。
我错过了什么?
更新1:
情况变得更糟...我决定放弃我的整个代码库,并用教程中的确切代码替换它。而且内存还是undefined...
var roleHarvester = require('role.harvester');
var roleUpgrader = require('role.upgrader');
module.exports.loop = function () {
for(var name in Memory.creeps) {
if(!Game.creeps[name]) {
delete Memory.creeps[name];
console.log('Clearing non-existing creep memory:', name);
}
}
var harvesters = _.filter(Game.creeps, (creep) => creep.memory.role == 'harvester');
console.log('Harvesters: ' + harvesters.length);
if(harvesters.length < 2) {
var newName = 'Harvester' + Game.time;
if(Game.spawns['HQ'].spawnCreep([WORK,CARRY,MOVE], newName,
{memory: {role: 'harvester'}}) === OK) {
console.log('Spawning new harvester: ' + newName);
};
}
if(Game.spawns['HQ'].spawning) {
var spawningCreep = Game.creeps[Game.spawns['HQ'].spawning.name];
Game.spawns['HQ'].room.visual.text(
'????️' + spawningCreep.memory.role,
Game.spawns['HQ'].pos.x + 1,
Game.spawns['HQ'].pos.y,
{align: 'left', opacity: 0.8});
}
for(var name in Game.creeps) {
var creep = Game.creeps[name];
if(creep.memory.role == 'harvester') {
roleHarvester.run(creep);
}
if(creep.memory.role == 'upgrader') {
roleUpgrader.run(creep);
}
}
}
更新2:
我决定在私人服务器上尝试相同的代码(也就是不像我以前那样在模拟中),现在代码可以正常工作了。这只留下一个结论,模拟有问题。
【问题讨论】:
-
我在 sim 中运行了您的代码,输入了
name和r的值,但无法重现问题。内存设置正确。 -
很想知道你是怎么过的。我有同样的问题,在朋友的私人服务器上工作,现在不是;在我自己的本地主机服务器上工作得很好,相同的代码......
-
@Aaron 从来没有像我想要的那样工作,所以几年前我就停止玩这个游戏了。
-
@Olian04 谢谢。我找到了原因并提供了完整的答案,以防它帮助其他人。
标签: screeps