2017-02-07 5 views
0

Es ist schwierig, den nächsten Creep zu einem Creep zu finden, da dieser eine bestimmte Rolle haben muss und nicht bereits einen designierten Partner haben muss.Suche nach dem nächstgelegenen Creep

Dies ist für den Zweck der Einrichtung dedizierte Bergleute und dedizierte Energieträger (die die nächste Miner oder Harvester finden müssen und ihre Energie tragen).

Ich habe versucht, (wo Kriechen Variable ist das Kriechen das Skript ausgeführt wird):

var nearestMinerCreep = creep.pos.findNearest(Game.MY_CREEPS, { 
       filter: function(creep) { 
        return (creep.memory.role == "miner" 
        || creep.memory.role == "harvester") 
        && !creep.memory.partner; 
       } 
      }); 

Aber FindNearest() scheint depricated wurden. Das Ersetzen durch Varianten von findClosetByPath() und findClosetestByRange() funktioniert auch nicht. Das Beste, was ich habe in der Lage zu tun ist, eine Position des Kriechen erhält mit diesem:

var nearestPos = (creep.pos.findfindClosestByPath(FIND_MY_CREEPS)).pos; 

Aber das ist ungefiltert und nicht spezifisch genug, um aufgrund der Notwendigkeit, Energie zu übertragen. Vielen Dank im Voraus für jede Hilfe!

Antwort

1

Game.MY_CREEPS ist keine korrekte Konstante, also denke ich, dass das Teil der Probleme gewesen sein könnte.

Wie in der APIpos.findClosestByPath geschrieben, akzeptiert zusätzliche Parameter, einschließlich einer Filterfunktion. Also wäre der richtige Code wahrscheinlich

let nMCreep = creep.pos.findClosestByPath(FIND_MY_CREEPS, { 
    filter: function(creep) { 
    return (creep.memory.role == "miner" 
     || creep.memory.role == "harvester") 
    && !creep.memory.partner; 
    } 
}); 
+0

Ja, das war das ganze Problem, danke – Mir