2017-05-24 10 views
1

頭が上がったように、これは「このコードに何か問題があるかどうかを教えてください」というポストがあります。謝罪します。私はScreepsコロニーをより効率的にするために取り組んできました。これは、より高品質のユニットの必要性をもたらし、拡張の必要性をもたらします。私はエネルギーを収穫し、それを持ち出してエクステンションに移すというスクリプトを書いたが、うまくいかないようだ。それは私に間違いを与えません、そして、私はそれが単に私の主なスクリプトの問題であるかもしれないと思うようになり始めています、そして、私は忍び寄った人に役割の機能を移すプロセスなので、私のコードとそれに問題がある場合は、それは非常に感謝される私に教えてください。ここに私のコードは、(私が役割「フィラー」と呼ぶ)である:しようとするScreeps Extension 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 

答えて

2

まず最初:役割はあなたのために実行されていることを確認するために、関数の最初の行としてconsole.log("Ping!");またはそのような何かを追加しますクリープ。

run: function(creep) { 
    console.log("Ping!"); 
    //all of the other stuff 
} 

追加の事は注意する:targets配列が空である

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[0]にアクセスしようとしています。ターゲットがない場合、転送するものはありません。ブロックelse全体が削除されるはずです。

まだ助けが必要な場合は、「動作していないようです」という意味で拡張してみてください。収穫部分は機能しますが、充填部分は機能しませんか?