User Tools

Site Tools


4rpl:commands:getunitsinrange

This is an old revision of the document!


Index

GetUnitsInRange

GetUnitsInRange(<-startPos <-range <-isSquare <-is3D <-requireLOS <-enemyState <-builtState <-imperviousState) ->units

Description

Returns list of units in range of a given position. The returned list is sorted so that the first item in the list is the closest.

startPos:
a V3 (vector3) indicating the point to search outwards from.
range:
a floating point number that is the maximum distance from startPos.
isSquare:
a boolean. It means to check in a square rather than a circle around startPos. For 3D checks, the vertical displacement is also checked (so the range is effectivly a cube rather than a sphere). 1)
is3D:
a boolean. It determines if a true 3d distance is used for range, or if only the X and Z components (2D) distance calculation is used.
requireLOS:
a boolean indicating if terrain line of sight is required.
enemyState:
an int (either 0,1,2).
0 =
ignore enemy status.
1 =
Only find units that are enemies.
2 =
Only find units that are not enemies.
builtState:
an int (either 0,1,2).
0 =
ignore built state.
1 =
Only find units that are built.
2 =
Only find units that are not built.
imperviousState:
an int (either 0,1,2).
0 =
ignore impervious state.
1 =
Only find units that are not impervious.
2 =
Only find units that are impervious. Things like ore deposits are impervious.

:!: Note: Due to some technicalities units which do not occupy any space will never be detected by this command. Whether a custom unit occupies space can be controlled through the CMOD Settings: Settings > Basic > “occupies land”

Examples

10 ->cellX
15 ->cellZ
20 ->range
false ->isSquare
true ->is3D
true ->requireLOS
2 ->enemyState
1 ->builtState
1 ->imperviousState
GetTerrain(<-cellX <-cellZ) 1 + ->terrain
 
GetUnitsInRange( V3(<-cellX <-terrain <-cellZ) <-range <-isSquare <-is3D <-requireLOS <-enemyState <-builtState <-imperviousState) ->units

See Also

1)
Note: When isSquare is true, the search will also not use the unit's exact position to see if they are in range, but rather their hitbox (footprint & height). If any part of the hitbox crosses into the square, it will be selected.
4rpl/commands/getunitsinrange.1631553081.txt.gz · Last modified: 2021/09/13 13:11 by karsten75