screeps: conditions won't work - clueless

半腔热情 提交于 2019-12-25 03:36:07

问题


So i have been trying this to automatically spawn Creeps in percentage to total living creeps. however when i run this, it just keeps on spawning harvesters, completely ignoring the conditions even though console.log returns the expected results .

and now i'm clueless about what is going wrong

//creepManager.creations() == counts total creeps and spawns creeps in function of total
    var spawnCreep = require('spawnCreep');
    var counter = require('counter');
    exports.creations=function(){

    if(  counter.guardCount()/counter.totalCount()<0.5 && counter.harvesterCount()>1){

        spawnCreep.guard();

    } else if (counter.harvesterCount()/counter.totalCount()<0.3){

        spawnCreep.harvester();

    } else if(counter.builderCount()/counter.totalCount()<0.2){

        spawnCreep.builder();
    } else {
        spawnCreep.guard(); //default
    }
};  // 5guards, 3harvesters, 2 builder per 10CREEPS`

(spawnCreep is another module which keeps track of how the creepers are build)


回答1:


I was doing something similar in my old code:

function allocateResources() {
    var counts = {guard : 0, healer : 0}
    for (var name in Game.creeps) { 
        if (name.indexOf("guard") > -1) {
            counts["guard"]++;
        } else if (name.indexOf("builder") > -1) {
            counts["builder"]++;
        }
        // ...
        counts["total"]++;
    }

    if (counts["guard"] / (counts["total"] + 1) < 0.51) {
       spawnCreep("guard"); 
    } else if (counts["builder"] / (counts["total"] + 1) < 0.34) {
       spawnCreep("builder");
    } 
    // ...
}

You should make sure that you avoid division by zero, perhaps that's the bug for you.



来源:https://stackoverflow.com/questions/27137728/screeps-conditions-wont-work-clueless

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!