可以't在源中生成变量
can't make variable in source
我是Screeps的新手(喜欢它),我很难为房间里的所有源创建一个变量。我正在努力确保只有3个爬行器在同一个源上工作,所以我有下面的代码片段用于我的采集器和我的主模块
主
var sources = Game.spawns.Spawn1.room.find(FIND_SOURCES);
for (var a in sources) {
var source = (sources[a]);
source.memory.numPeopleAt = 0;
}
module.exports.loop = function () {
...
}
收割机
var sources = creep.room.find(FIND_SOURCES);
for (var s in sources) {
if (creep.harvest(sources[s]) == ERR_NOT_IN_RANGE && sources[s].memory.numPeopleAt < 3) {
creep.moveTo(sources[s]);
sources[s].memory.numPeopleAt++;
break;
}
}
我知道我仍然需要制作一个函数来执行sources[s].memory.numPeopleAtt--
提前感谢
Jari Van Melckebeke
Source不像Creep那样具有内存属性。但是,您可以向主内存对象添加一些内容。
var sources = Game.spawns.Spawn1.room.find(FIND_SOURCES);
if (!Memory.sources) {
Memory.sources = {};
}
_.each(sources, function(source) {
if (!Memory.sources[source.id]) {
Memory.sources[source.id] = { numPeopleAt: 0 };
}
});
需要注意的一点是,你的代码会在每个游戏周期运行,所以你只需要在还没有初始化的情况下初始化一些东西(这就是if检查的目的)。
这将把源设置为最近的源,而附近没有其他采集器
var source = creep.pos.findClosestByPath(FIND_SOURCES, {filter: (s) => s.pos.findInRange(FIND_MY_CREEPS, 1, {filter: (c) => c.memory.role == 'harvester' && c.name != creep.name})[0] == undefined});
编辑它以满足您的需求
相关文章:
- 我可以在Javascript/jQuery中使用一个变量作为键吗
- 在窗口上触发不同的变量可以调整javascript/jquery的大小
- 为什么匿名函数中的私有变量可以从 javascript 中的函数外部访问
- JavaScript:一个变量可以有多个值吗
- 变量可以像对待对象一样对待吗
- 假定变量可以安全使用
- 会话不能延续,但是变量可以
- 使jquery函数中的变量可以从其他函数中访问
- 一个变量可以被使用两次吗?
- 为什么字符串变量可以通过JS中的调用使用forEach方法
- 使Node模块中的变量可以被jQuery、Ember等使用
- 你能缩短'if'一个变量可以是多个变量的表述
- “test”和“test”有什么区别?Javascript变量和"#test"变量可以将var ja
- 一个变量可以在Node.js中被设置为只读吗?
- javascript中的变量可以切换用例
- 在javascript中,变量可以作为元素id传递吗?
- 变量可以同时是对象和未定义吗?
- 绑定范围外的变量可以加快代码的速度吗
- 可变变量可以从jQuery中的闭包访问
- javascript“可变变量”可以从闭包中访问.在循环