Other great resources: Official JS API docs, Scripting Forum
orderDroidBuild()
- Aubergine
This article is in need of technical review – specifically it seems that in Warzone 3.1.x the function is not returning true
when the order is successful.
Please see comments at bottom of page for more info, and please add a comment about what it's actually returning.
Syntax
orderDroidBuild(droid, order, structureID, x, y[, direction])
Parameters
Parameter | Type | Mandatory | Notes | Game Version |
---|---|---|---|---|
droid | Droid object | The droid that will build the structure(s). | 3.1 Beta 1 | |
order | Constant | Indicate the construction mode:
Note: Once construction has started, other droids can help with the building process by issuing DORDER_HELPBUILD via the orderDroidObj() function. | 3.1 Beta 1 | |
structureID | String | The ID of the structure you want built. You can find a list of structure ID's in structures.txt or structures.ini (depending on game version). Note: You cannot use structure type constants, you have to specify the specific structure id. | 3.1 Beta 1 | |
x | Number | The x co-ordinate of the top-left corner of the construction site. Note: Always find suitable co-ordinates by using pickStructLocation() first. | 3.1 Beta 1 | |
y | Number | The y co-ordinate of the top-left corner of the construction site. Note: Always find suitable co-ordinates by using pickStructLocation() first. | 3.1 Beta 1 | |
direction | Number | The direction, in degrees from North, in which the front of the building faces when built. Default: 0 (North-facing) It's recommended to use multiples of 90º for the direction, otherwise the structure could adversely affect pathfinding:
| 3.1.0 |
Return values
Value | Type | Notes | Game Version |
---|---|---|---|
true | Boolean | The order was successful and the droid will build the structure. | 3.1 Beta 1 |
false | Boolean | There was a problem and the structure will not be built. | 3.1 Beta 1 |
<error> | Error | An error occurred, for example invalid parameters. | 3.1 Beta 1 |
Notes
This function replaces the deprecated orderDroidStatsLoc() function.
A typical sequence for building a new structure is:
- Check if the structure can be built (eg. has it been researched, have structure limits been reached, etc?)
- Find a free construction droid to do the construction (use enumDroid() to get a list of available droids)
- Find a suitable location for the structure (use pickStructLocation() – RTFM for important notes on how the function works)
- Order an idle construction droid (truck or engineer) to start the construction at the selected location
Only construction droids (trucks and field engineers) of type DROID_CONSTRUCT can build structures.
Example
// define some constants if missing if (typeof NORTH == "undefined") { const NORTH = 0; const EAST = 90; const SOUTH = 180; const WEST = 270; } function isIdle(droid) { var notIdle = [ DORDER_BIULD, DORDER_HELPBUILD, DORDER_LINEBUILD, DORDER_DEMOLISH ]; return (notIdle.indexOf(droid.order) == -1); } function buildA(structure, near) { // can we build the structure? if (!isStructureAvailable(structure)) return false; // get list of construction droids var constructors = enumDroid(me, DROID_CONSTRUCT); // find free droid var freeDroid; constructors.some(function isFree(droid) { if (isIdle(droid)) { freeDroid = droid; return true; } }); // if no free droids abort if (!freeDroid) return false; // find suitable location to build var pos = pickStructLocation(freeDroid, structure, near.x, near.y); // abort if no location found if (!pos) return false; // let's build! return orderDroidBuild( freeDroid, DORDER_BUILD, structure, pos.x, pos.y, NORTH ); } // find where our HQ is var nearMyHQ = enumStuct(me, HQ)[0]; // assuming we already have one buildA("A0LightFactory", nearMyHQ); // build a factory near my HQ
Availability 3.1 B1+
Requires:
- Warzone 3.1 Beta 1 or above
- The 'direction' parameter was added in Warzone 3.1.0
Contents
Jump to:
See also
Related articles:
- orderDroidObj() – use if you want additional droids to help with construction
- orderDroid() – give a droid a basic order
- orderDroidBuild() – replacement for orderDroidStatsLoc()
- orderDroidLoc() – tell a droid to do something at a specific map location
- eventDroidIdle() – triggered when a droid becomes idle
- eventStructureBuilt() – triggered when a structure is built
- DROID_CONSTRUCT – the type of droid that can build structures
- Structures – quick reference to structure-related API features
- Droids – quick reference to droid-related API features
Interesting game mods to be aware of:
- Structures by Design – allows structures to be designed in a similar way to droids, which obviously has implications for orderDroidBuild()
- Contingency Mod – adds a huge number of new structures to Warzone, which your script will need to be aware of if it's to build them.