From a3a91d4f45b22fd487ecbc954ad979be5d03efdd Mon Sep 17 00:00:00 2001 From: hybrid Date: Thu, 11 Jun 2026 19:38:09 +0300 Subject: init --- Common/Functions/Common_PlaceSafe.sqf | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 Common/Functions/Common_PlaceSafe.sqf (limited to 'Common/Functions/Common_PlaceSafe.sqf') diff --git a/Common/Functions/Common_PlaceSafe.sqf b/Common/Functions/Common_PlaceSafe.sqf new file mode 100644 index 0000000..45176c2 --- /dev/null +++ b/Common/Functions/Common_PlaceSafe.sqf @@ -0,0 +1,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]}; -- cgit v1.3.1