selectBestPlaces
From Bohemia Interactive Community
Click on the images for descriptions
Introduced in
 Game:
 Arma 2
 Version:
 1.00
Description
 Description:
 Find the places with the maximum value of expression in the given area. Places can be on water. Results are sorted by value. Search pattern is randomised every command execution.
Syntax
 Syntax:
 selectBestPlaces [position, radius, expression, precision, sourcesCount]
 Parameters:
 [position, radius, expression, precision, sourcesCount]: Array 
 position: Object, Position3D or Position2D
 radius: Number
 expression: String  Arithmetic expression. Simple expression var names containing values from 0 to 1 depending on location (see also Ambient Parameters):
 forest
 trees
 meadow
 hills
 houses
 sea
 night
 rain
 windy
 deadBody
 waterDepth
 camDepth
 precision: Number
 sourcesCount: Number  max results to return
 Return Value:
 Array  in Format [[position: Position2D, expressionResult: Number], ...]
Examples
 Example 1:
myPlaces = selectBestPlaces [position player, 50, "meadow + 2*hills", 1, 5];
Additional Information
 Multiplayer:
 
 See also:
 getEnvSoundControllergetAllEnvSoundControllersfindEmptyPositionisFlatEmptyAmbient Parameters
Notes
Only post proven facts here. Report bugs on the feedback tracker. Use the talk page or the forums for discussions.
Add New Note  How To
Add New Note  How To
Notes
 Posted on Jul 17, 2010  18:39
 Rübe
 see http://forums.bistudio.com/showthread.php?t=93897 for some more information (though neither official, nor complete). The most important information is the list of useable keywords for the expression which is: forest, trees, meadow, hills, houses, sea, night, rain, windy and deadBody. The keyword will be replaced by the actual value at the given sample position and thus the expression gets evaluated. For example the following expression (which returns high values in forest) "forest + trees  meadow  houses  (10 * sea)" might be transformed to 0 + 0.1  0.7  0  (10 * 0) which is  with it's result of 0.6  not in the forest, though there are some tree(s) around. You get the idea.
Also note that you may aswell check such an expression value at a single position by passing a low radius and a sourceCount of 1, which is often just as useful as retrieving multiple (and already sorted) positions.
Also do not underestimate the keywords night, rain or windy, for if you couple them with the other keywords, you can easily get a highly dynamic system at a very low cost. (this, btw., is how animals "choose" where and when to spawn)  Posted on Apr 3, 2014  16:10
 ffur2007slx2_5

In ArmA3 ver 1.14 Two new expressions are available: waterDepth(01) and camDepth(01), along with three simple operators: interpolate, randomGen and factor that can be used together with expressions. E.g.
p = selectBestPlaces [ position player, 500, "(2 * (waterDepth interpolate [1,16,0,1]) * ((0.1+houses factor [0.1,0.8]) * (randomGen 1 + houses)))", 1, 1];
Algorithm randomGen:randomGen A(number): randomly generate a float number from 0  A
Algorithm factor:A(number) factor [p,q] = p< A <q: [(A p)/(qp)]
Algorithm interpolate:A(number) interpolate [p,q,r,s] = A <=p:r A >=q:s p< A <q: [(A p)/(qp)]*(sr) +r
Bottom Section
 Posted on June 15, 2015  13:27 (UTC)
 Killzone Kid

precision seems to have range 0  100. At very low values the command is extremely slow. 100 makes it quite fast. It looks like precision is some kind of grid search size. Large chunks make the search faster but less accurate.
Resulting array is [] if sourcesCount is 0 or expression is "". In all other cases it seems that result is array of arrays of the set max count. The sole indication of successful search is expressionResult value when it is > 0.
 Posted on June 4, 2017  20:51 (UTC)
 Tankbuster
 Results are sorted by value, that is, the result of the expression. They are sorted in descending order, so in the case of waterdepth, the deepest water will be found at the locations at the start of the returned array and the shallowest water will be found at the locations at the end.
 Posted on September 22, 2017  18:39 (UTC)
 Tankbuster
 The sourcesCount parameter is capped to 50. Asking for any more is capped to 50.