- [[crpl:crplreference| CRPL reference]] <- [[crpl:crplreference#unit_commands|Unit Commands]]
===== GetAllUnitsInRange =====
(or GAUIR)
^Arguments^Result^Notation^
|Coordinates, range, square?|Number of units in range |''x1 y1 f1 b1 -- u1 u2... un n ''|
=== Description ===
Returns the unit UID's of all units (including player/enemy and flying/landed) that are within range. The function pushes the n UID's onto the stack followed by the integer n, where n is the number of units.
If "square?" is set to TRUE, the command uses a square range instead of the usual circular one.
=== Examples ===
Find all CRPL cores on the map
#Standard Notation
once
0 0 9999 TRUE GetAllUnitsInRange 0 do
->unit
<-unit GetUnitType "CRPLCORE" eq if
"Found a CRPL core: " <-unit Trace2
endif
loop
endonce
#Warp Notation
once
GetAllUnitsInRange(0 0 9999 TRUE) 0 do
->unit
if(GetUnitType(<-unit) "CRPLCORE" eq)
Trace2("Found a CRPL core: " <-unit)
endif
loop
endonce
----
Destroy every unit in range of the core this script is attached to
#Standard Notation
CurrentCoords 10 FALSE GetAllUnitsInRange 0 do
->unit
<-unit CONST_DESTROYMODE GetUnitAttribute ->destroyMode
<-unit <-destroyMode Destroy
loop
----
After 10 seconds, on coordinates (50, 50), if there is an Emitter there, destroy it, even if there are multiple units occupying that cell.
once
300 SetTimer0
endonce
GetTimer0 eq0 if
once
50 50 0 TRUE GetAllUnitsInRange 0 do
->unit
<-unit GetUnitType "EMITTER" eq if
<-unit CONST_DESTROYMODE GetUnitAttribute ->destroyMode
<-unit <-destroyMode Destroy
endif
loop
endonce
endif