1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
|
Private["_count","_currentPosition","_direction","_object","_obstacles","_placed","_position","_radius","_vehicles"];
scopeName "PlaceSafe";
_object = _this select 0;
_position = _this select 1;
_radius = if (count _this > 2) then {_this select 2} else {35};
_currentPosition = _position;
_placed = false;
_direction = 0;
for [{_count = 0},{_count < 30 && !_placed},{_count = _count + 1}] do {
_obstacles = nearestObjects [_currentPosition, ["Building"], 15];
_vehicles = _currentPosition nearEntities [["Building","Car","Tank","Air"], 7];
if (count _obstacles > 0 || count _vehicles > 0 || surfaceIsWater _currentPosition) then {
_currentPosition = [(_position select 0)+((sin _direction)*_radius),(_position select 1)+((cos _direction)*_radius),0];
_direction = _direction + 36;
if (_count > 15) then {_radius = _radius + 25};
} else {
_object setPos _currentPosition;
_object setVelocity [0,0,-0.5];
_placed = true;
breakTo "PlaceSafe";
};
};
if (!_placed) then {_object setPos _position;_object setVelocity [0,0,-0.5]};
|