Untitled
unknown
plain_text
a month ago
3.1 kB
3
Indexable
params ["_units", "_numberOfSteps", "_lineSpread"]; fn_pointAtAzimuthAndDistance = { params [ "_startPos", "_distance", "_azimuth" ]; if(_azimuth > 360) then { _azimuth = _azimuth - 360; }; // Convert azimuth to radians _xPos = _startPos select 0; _yPos = _startPos select 1; _zPos = _startPos select 2; _sinAzimuth = sin _azimuth; _cosAzimuth = cos _azimuth; // Calculate the new position _newPos = [ _xPos + (_sinAzimuth * _distance), _ypos + (_cosAzimuth * _distance), _zPos ]; _newPos; }; if(count _units == 0) exitWith{systemChat "No Units Selected"}; _createMarkerTest = { params ["_markerPos"]; systemChat format["_markerPos: %1", _markerPos]; }; _point1 = TL_artyPoint1; _point2 = TL_artyPoint2; systemChat format["units: %1, _numberOfSteps: %2, _lineSpread: %3", _units, _numberOfSteps, _lineSpread]; systemChat format["point1: %1, point2: %2", _point1, _point2]; _numberOfUnits = count _units; _distanceBetweenPoints = _point1 distance _point2; _azimuthBetweenTwoPoints = _point1 getDir _point2; _stepDistance = _distanceBetweenPoints / parseNumber (_numberOfSteps); _lineSpreadDistance = parseNumber (_lineSpread) / _numberOfUnits; systemChat format["_distanceBetweenPoints: %1, _azimuthBetweenTwoPoints:%2", _distanceBetweenPoints, _azimuthBetweenTwoPoints]; // systemChat format["linearDistance: %1, _numberOfSteps: %2, _azimuth: %3", _distanceBetweenPoints, _numberOfSteps, _azimuthBetweenTwoPoints]; _firePlan = []; for "_i" from 0 to ((parseNumber (_numberOfSteps)) - 1) do { _lineBasePoint = [_point1, (_stepDistance * _i), _azimuthBetweenTwoPoints] call fn_pointAtAzimuthAndDistance; _leftPoint = [_lineBasePoint, (parseNumber(_lineSpread) / 2), (_azimuthBetweenTwoPoints - 90)] call fn_pointAtAzimuthAndDistance; _orthogonalPoints = []; for "_j" from 0 to (_numberOfUnits - 1) do { _offset = (_j * _lineSpreadDistance); _rightAzimuth = (_azimuthBetweenTwoPoints + 90); _newPoint = [_leftPoint, _offset, _rightAzimuth] call fn_pointAtAzimuthAndDistance; systemChat format["_thisPoint: %1", _newPoint]; _orthogonalPoints set [_j, _newPoint]; _firePlan set [_i, _orthogonalPoints]; }; }; systemChat format ["_firePlan: %1", _firePlan]; for "_wave" from 0 to ((count _firePlan) - 1) do { _rowPoints = _firePlan select _wave; for "_unitIndex" from 0 to ((count _units) - 1) do { _impactPoint = _rowPoints select _unitIndex; _actualUnit = _units select _unitIndex; _actualUnit setVehicleAmmo 1; _ammo = getArtilleryAmmo [_actualUnit]; _firstMagazine = _ammo select 0; if (_impactPoint inRangeOfArtillery [[_actualUnit], _firstMagazine]) then { _actualUnit commandArtilleryFire [_impactPoint, _firstMagazine, 1]; }; }; sleep 3; }
Editor is loading...
Leave a Comment