2017-10-17 11 views
-1

以下は私のビルダークリープのためのスクリプトです。クリープはうまく構築することができますが、私のスクリプトは私が書いた修復セクションにエラーを投げます。建物全体のスクリプトを以下に貼り付けられます:道路を修復するための私の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; 
+0

あなたの前にifがないターゲットの後にelseがあります。 – juvian

+0

最後の 'else'には' if'がありません。 – dhilt

+0

変数ターゲットは数回使用されますが、コード内の正確な意味は?私は周りのelseステートメントをシフトしようとしましたが、どこに行くべきかを見つけることができません。意図する動作は、クリープメモリが構築されている場合、ビルダークリープは建設サイトを検索する必要があるということです。何も見つからない場合、クリープは、最大の25%未満のヒットで道路を修復しようとします。最後に、道路や建設現場がひどく損なわれていない場合、建築業者は収穫に戻るべきです。これが参考になることを願っています。 – universal123

答えて

-1

私はこの問題を解決するために管理している、と固定コードは、私のオリジナルのポストにコピーされています。

+1

これは、スタックエクスチェンジの仕組みではありません。これは答えです - あなたの答えをここに入れ、あなたの質問から除外してください。答えを入れるために質問を編集しないでください。 –

+1

ようこそ!コミュニティーが礼儀正しい人であるという事実をあなたに伝えさせないでください。質問からソリューションを削除し、この回答に置き換えてください。 (コードサンプル、正確なエラーメッセージ、多くの新しいユーザーよりも優れています。 –

関連する問題