Screeps 扩展填充器
Screeps Extension Filler
请注意,这更像是 "tell me if there is something wrong with this code" post。我道歉。我一直致力于让我的 Screeps 殖民地更有效率,这带来了对更高质量单位的需求,这带来了扩展的需求。我为一个单元编写了一个脚本来收集能量并将其 it/transfer 带到扩展中,但是它似乎不起作用。它没有给我任何错误,我开始认为这可能只是我的主脚本的问题,以及我将角色功能转移到小兵的过程,所以如果有人愿意简单地看一下我的代码并告诉我它是否有问题,我们将不胜感激。这是我的代码(我称角色为 "Filler"):
var roleFiller = {
run: function(creep) {
if (creep.carry.energy < creep.carryCapacity) {
var sources = creep.room.find(FIND_SOURCES);
if (creep.harvest(sources[1]) == ERR_NOT_IN_RANGE) {
creep.moveTo(sources[1], {
visualizePathStyle: {
stroke: '#ffaa00'
}
});
} else {
creep.harvest(sources[1]);
}
} else {
var targets = creep.room.find(FIND_STRUCTURES, {
filter: (structure) => {
return (structure.structureType == STRUCTURE_EXTENSION ||
structure.structureType == STRUCTURE_TOWER) &&
structure.energy < structure.energyCapacity;
}
});
if (targets.length > 0) {
if (creep.transfer(targets[0], RESOURCE_ENERGY) == ERR_NOT_IN_RANGE) {
creep.moveTo(targets[0], {
visualizePathStyle: {
stroke: '#ffffff'
}
});
}
} else {
creep.transfer(targets[0], RESOURCE_ENERGY);
}
}
}
};
module.exports = roleFiller
首先要尝试:添加 console.log("Ping!");
或类似的内容作为函数的第一行,以确保该角色正在为您的 creep 执行。
run: function(creep) {
console.log("Ping!");
//all of the other stuff
}
其他注意事项:
if (targets.length > 0) {
//...Some stuff
if (creep.transfer(targets[0], RESOURCE_ENERGY) == ERR_NOT_IN_RANGE) {
} else {
creep.transfer(targets[0], RESOURCE_ENERGY); //HERE!!!!
}
如果 targets
数组为空,则尝试访问 targets[0]
将导致错误。如果没有目标,则没有任何东西可以转移到。可能应该删除整个 else
块。
如果您仍然需要帮助,请尝试扩展您的意思 "it does not seem to be working." 收获部分有效,但填充部分无效吗?
请注意,这更像是 "tell me if there is something wrong with this code" post。我道歉。我一直致力于让我的 Screeps 殖民地更有效率,这带来了对更高质量单位的需求,这带来了扩展的需求。我为一个单元编写了一个脚本来收集能量并将其 it/transfer 带到扩展中,但是它似乎不起作用。它没有给我任何错误,我开始认为这可能只是我的主脚本的问题,以及我将角色功能转移到小兵的过程,所以如果有人愿意简单地看一下我的代码并告诉我它是否有问题,我们将不胜感激。这是我的代码(我称角色为 "Filler"):
var roleFiller = {
run: function(creep) {
if (creep.carry.energy < creep.carryCapacity) {
var sources = creep.room.find(FIND_SOURCES);
if (creep.harvest(sources[1]) == ERR_NOT_IN_RANGE) {
creep.moveTo(sources[1], {
visualizePathStyle: {
stroke: '#ffaa00'
}
});
} else {
creep.harvest(sources[1]);
}
} else {
var targets = creep.room.find(FIND_STRUCTURES, {
filter: (structure) => {
return (structure.structureType == STRUCTURE_EXTENSION ||
structure.structureType == STRUCTURE_TOWER) &&
structure.energy < structure.energyCapacity;
}
});
if (targets.length > 0) {
if (creep.transfer(targets[0], RESOURCE_ENERGY) == ERR_NOT_IN_RANGE) {
creep.moveTo(targets[0], {
visualizePathStyle: {
stroke: '#ffffff'
}
});
}
} else {
creep.transfer(targets[0], RESOURCE_ENERGY);
}
}
}
};
module.exports = roleFiller
首先要尝试:添加 console.log("Ping!");
或类似的内容作为函数的第一行,以确保该角色正在为您的 creep 执行。
run: function(creep) {
console.log("Ping!");
//all of the other stuff
}
其他注意事项:
if (targets.length > 0) {
//...Some stuff
if (creep.transfer(targets[0], RESOURCE_ENERGY) == ERR_NOT_IN_RANGE) {
} else {
creep.transfer(targets[0], RESOURCE_ENERGY); //HERE!!!!
}
如果 targets
数组为空,则尝试访问 targets[0]
将导致错误。如果没有目标,则没有任何东西可以转移到。可能应该删除整个 else
块。
如果您仍然需要帮助,请尝试扩展您的意思 "it does not seem to be working." 收获部分有效,但填充部分无效吗?