以下は私のビルダークリープのためのスクリプトです。クリープはうまく構築することができますが、私のスクリプトは私が書いた修復セクションにエラーを投げます。建物全体のスクリプトを以下に貼り付けられます:道路を修復するための私のscreepsコードで構文エラーを見つけるのに苦労します(予期しないトークンelse)
var roleBuilder = {
/** @param {Creep} creep **/
run: function(creep) {
if(creep.memory.building && creep.carry.energy == 0) {
creep.memory.building = false;
creep.say(' harvest');
}
if(!creep.memory.building && creep.carry.energy == creep.carryCapacity) {
creep.memory.building = true;
creep.say(' build');
}
if(creep.memory.building) {
var targets = creep.room.find(FIND_CONSTRUCTION_SITES);
if(targets.length) {
if(creep.build(targets[0]) == ERR_NOT_IN_RANGE) {
creep.moveTo(targets[0], {visualizePathStyle: {stroke: '#ffffff'}});
}
}
else {
targets = creep.room.find(FIND_STRUCTURES, {
filter: (structure) => {
return (structure.structureType == STRUCTURE_ROAD && structure.hits < (structure.hitsMax * 0.25));
if(targets.length) {
if(creep.build(targets[0]) == ERR_NOT_IN_RANGE) {
creep.moveTo(targets[0], {visualizePathStyle: {stroke: '#ffffff'}});
}
}
}
});
else {
var sources = creep.room.find(FIND_SOURCES);
if(creep.harvest(sources[0]) == ERR_NOT_IN_RANGE) {
creep.moveTo(sources[0], {visualizePathStyle: {stroke: '#ffaa00'}});
}
}
}
};
}
}
module.exports = roleBuilder;
私は構文エラーを解決しようとするなどJSLintなどのオンラインツールを試してみましたが、これは失敗しました。私はほぼ間違いがこのセクションでは、ビルドコードを削除すると、エラーを修正していると確信しています。
スロー誤差は以下である:
にSyntaxError:予期しないトークン他 Object.hで:5:31901 主に:3:19 評価時:5:Object.hで4 :71: 31901 at Object.c.runCode:6:16531
私は比較的新しいJavascriptなので、何かお手伝いできたら幸いです。
EDIT:問題は解決されました。これは重宝し誰のために、ここに私の固定のコードは次のとおりです。
var roleBuilder = {
/** @param {Creep} creep **/
run: function(creep) {
if(creep.memory.building && creep.carry.energy == 0) {
creep.memory.building = false;
creep.say(' harvest');
}
if(!creep.memory.building && creep.carry.energy == creep.carryCapacity) {
creep.memory.building = true;
creep.say(' build');
}
if(creep.memory.building) {
var targets = creep.room.find(FIND_CONSTRUCTION_SITES);
if(targets.length) {
if(creep.build(targets[0]) == ERR_NOT_IN_RANGE) {
creep.moveTo(targets[0], {visualizePathStyle: {stroke: '#ffffff'}});
}
}
else {
targets = creep.room.find(FIND_STRUCTURES, {
filter: (structure) => {
return (structure.structureType == STRUCTURE_ROAD && structure.hits < (structure.hitsMax * 0.25));
if(targets.length) {
if(creep.build(targets[0]) == ERR_NOT_IN_RANGE) {
creep.moveTo(targets[0], {visualizePathStyle: {stroke: '#ffffff'}});
}
}
}
});
}
}
else {
var sources = creep.room.find(FIND_SOURCES);
if(creep.harvest(sources[0]) == ERR_NOT_IN_RANGE) {
creep.moveTo(sources[0], {visualizePathStyle: {stroke: '#ffaa00'}});
}
};
}
}
module.exports = roleBuilder;
あなたの前にifがないターゲットの後にelseがあります。 – juvian
最後の 'else'には' if'がありません。 – dhilt
変数ターゲットは数回使用されますが、コード内の正確な意味は?私は周りのelseステートメントをシフトしようとしましたが、どこに行くべきかを見つけることができません。意図する動作は、クリープメモリが構築されている場合、ビルダークリープは建設サイトを検索する必要があるということです。何も見つからない場合、クリープは、最大の25%未満のヒットで道路を修復しようとします。最後に、道路や建設現場がひどく損なわれていない場合、建築業者は収穫に戻るべきです。これが参考になることを願っています。 – universal123