Other great resources: Official JS API docs, Scripting Forum
countDroid()
Count the number of droids of a given type for a specific player.
Syntax
var numDroids = countDroid([droidType[, player]]);Parameters
Parameter | Type | Mandatory | Notes | Warzone Version |
|---|---|---|---|---|
droidType | Constant | What sort of droid should be counted?
Note that other .droidType constants cannot currently be used and will throw an error if you try to use them. Default: DROID_ANY | 3.1.0 | |
player | Number Constant | Which player(s) should the droids be counted for? You can specify a specific player ID, or one of the following constants: Default: me | 3.1.0 |
Return value
Value | Type | Notes | Warzone Version |
|---|---|---|---|
<number> | Number | The number of droids of the specified type for the specified player(s). | 3.1.0 |
<error> | Error | An error occurred, most likely you used an unsupported droidType or the specified player does not exist. | 3.1.0 |
Example
How many trucks do I have?
myTruckCount = countDroid(DROID_CONSTRUCT);
// much faster than:
mySlowTruckCount = enumDroid(me, DROID_CONSTRUCT).length;Roughly how many enemy weapon droids are there?
// we can't count DROID_WEAPON so have to approximate...
// start by getting count of all enemy droids
var totalEnemies = countDroid(DROID_ANY, ENEMIES);
// now remove trucks and commanders
var approxWeapons = totalEnemies
- countDroid(DROID_COMMAND, ENEMIES)
- countDroid(DROID_CONSTRUCT, ENEMIES);
// there may be some sensors/ECMs, transports and repair droids in there,
// but not that many so the figure will be pretty accurate
// if you need to make it more accurate...
var actualWeapons = approxWeapons;
// count weapons for each enemy
playerData.forEach(function(player, id) {
if (!allianceExistsBetween(me, id)) { // enemy
actualWeapons -= enumDroid(id, DROID_ECM).length;
actualWeapons -= enumDroid(id, DROID_REPAIR).length;
actualWeapons -= enumDroid(id, DROID_SENSOR).length;
actualWeapons -= enumDroid(id, DROID_SUPERTRANSPORTER).length;
actualWeapons -= enumDroid(id, DROID_TRANSPORTER).length;
}
});
// ...but is the extra accuracy worth it?
// alternatively, you could do this...
var actualWeapons = 0;
playerData.forEach(function(player, id) {
if (!allianceExistsBetween(me, id)) { // enemy
actualWeapons += enumDroid(id, DROID_WEAPON).length;
actualWeapons += enumDroid(id, DROID_CYBORG).length;
}
});
// ...but in late game there will be so many weapon droids that doing it
// this way will actually be slower than the more bloaty approach shown
// earlier (there will be very few ecm/repair/sensor/transport droids...)