zSkullfox icon

Arma 3 Flyby

zSkullfox | PRO | 11/26/18 04:05:22 AM UTC | 0 ⭐ | 403 👁️ | Never ⏰ | []
C# |

3.2 KB

|

None

|

0 👍

/

0 👎

/*
    Author: Phil
  Steam: https://steamcommunity.com/id/xshiragamix/
 
    Description:
    Random flyby
 
  Note:
  If you using custom code, you need to delete the crew and vehicle by yourself !
 
    Parameter(s):
        0 Optional: Classname of the vehicle or Array of Classnems, crew will be created automaticly
      Recommend to only use planes or helis
 
    1 Optional: Custom center, Type object
 
    3 Custom code passed as array [{1},{2}]
      1) Code on start waypoint
        Access the vehicle with _vehicle = param[0];
      2) Code on end waypoint
        Access the vehicle with _vehicle = param[0];
 
        To only use waypoint end code use [{},{code}]
 
----------------------------------->
 
    Examples:
 
    o) Basic
 
      []execVM "fox_ambientFlyby.sqf";
 
    o) Advanced
 
      [
        ["C_Heli_Light_01_civil_F","B_Plane_CAS_01_F","O_T_VTOL_02_infantry_F"],
        false,
        [
        {
          _smoke = "SmokeShellGreen" createVehicle [0,0,0];
          _smoke attachTo[_this select 0,[0,0,0]];
        },
        {
          {deleteVehicle _x;} forEach crew (_this select 0);deleteVehicle (_this select 0);
        }
        ]
      ]execVM "fox_ambientFlyby.sqf";
 
----------------------------------->
 
    You can copy pasta the code below directly in the 3den debug window to test it.
 
*/
 
_vehicleClass = param[0,["C_Plane_Civil_01_F","C_Heli_Light_01_civil_F"]];
_objectCenter = param[1,false];
_customCode = param[2,[{},{}]];
 
//if Array is passed select a random one
if(( typeName _vehicleClass ) isEqualTo "ARRAY") then{
  _vehicleClass = _vehicleClass call BIS_fnc_selectRandom;
};
 
_center = getArray(configfile >> "CfgWorlds" >> worldname >> "centerPosition");
 
_mBottomLeft = [0 - 1000,0 - 1000,0];
_mTopLeft = [0 - 1000,( (_center select 0) * 2) - 1000,0];
_mTopRight = [ ( (_center select 0) * 2 ) + 1000,( (_center select 1) * 2 ) + 1000,0];
_mBottomRight = [( (_center select 0) * 2 ) + 1000,0 - 1000,0];
 
_pos1 = [_mBottomLeft,_mTopLeft] call BIS_fnc_selectRandom;
_pos2 = [_center] call BIS_fnc_selectRandom;
_pos3 = [_mTopRight,_mBottomRight] call BIS_fnc_selectRandom;
 
_startPos = [_pos1,_pos3] call BIS_fnc_selectRandom;
_endPos = [_pos1,_pos3] - [_startPos];
 
_veh = createVehicle [_vehicleClass,_startPos, [], 0, "FLY"];
createVehicleCrew _veh;
 
_centerRandom = _center getPos [((_center select 0) / 2) * sqrt random 1, random 360];
_wp1 = (group _veh) addWaypoint [_startPos, 0];
 
if(( typeName _objectCenter ) isEqualTo "OBJECT")then{
  _wp2 = (group _veh) addWaypoint [getPos _objectCenter, 0];
}else{
  _wp2 = (group _veh) addWaypoint [_centerRandom, 0];
};
 
_wp3 = (group _veh) addWaypoint [_endPos select 0, 0];
 
//Default code for waypoints
_waypointStartCode = _customCode param[0,{}];
_waypointEndCode = _customCode param[1,{{deleteVehicle _x;} forEach crew (_this select 0);deleteVehicle (_this select 0);}];
 
if( ( typeName _waypointStartCode ) isEqualTo "CODE")then{
  _wp1 setWaypointStatements ["true",  format["[vehicle this] call %1",_waypointStartCode]];
};
if( ( typeName _waypointEndCode ) isEqualTo "CODE")then{
  _wp3 setWaypointStatements ["true",  format["[vehicle this] call %1",_waypointEndCode]];
};

Comments