Untitled
unknown
plain_text
9 months ago
3.1 kB
6
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