countDroid()

(info) 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?

  • DROID_ANY– all droids

  • DROID_COMMAND – commander droids

  • DROID_CONSTRUCT – construction droids

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...)

 

Comments