Advertisement
Guest User

Untitled

a guest
Mar 25th, 2017
115
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
SQF 5.35 KB | None | 0 0
  1. /*
  2. Author:
  3.  
  4.     stanhope, AW-community members
  5.     bassed off of existing AW created side missions
  6.  
  7. Last modified:
  8.  
  9.     22/03/2017
  10.    
  11. Modified:
  12.    
  13.    
  14.  
  15. Description:
  16.  
  17.     Mission in which players have to find and heal a crashed helipilot before he dies. Bleedouttimer starts running when player get's within 3.5km of the obj.
  18.  
  19. */
  20.  
  21. private ["_flatPos","_playerClose","_accepted","_position","_objPos","_randomDir","_fuzzyPos","_i","_enemiesArray",
  22. "_randomPos","_bleedouttimer","_x","_triggerrange","_proximityTimeout"];
  23.  
  24. _bleedouttimer = 450; //time before the pilot dies
  25. _triggerrange = 3500; //if players get within this radius the bleedouttimer starts running
  26. _proximityTimeout = 1800; //timeout that fails the mission if nobody gets near it.
  27.  
  28. //-------------------- FIND SAFE POSITION FOR heliwreck
  29.  
  30.     _flatPos = [0,0,0];
  31.     _accepted = false;
  32.     while {!_accepted} do {
  33.         _position = [] call BIS_fnc_randomPos;
  34.         _flatPos = _position isFlatEmpty [5,0,0.2,sizeOf "Land_Wreck_Heli_Attack_01_F",0,false];
  35.  
  36.         while {(count _flatPos) < 2} do {
  37.             _position = [] call BIS_fnc_randomPos;
  38.             _flatPos = _position isFlatEmpty [5,0,0.2,sizeOf "Land_Wreck_Heli_Attack_01_F",0,false];
  39.         };
  40.  
  41.         if ((_flatPos distance (getMarkerPos "respawn_west")) > 1000 && (_flatPos distance (getMarkerPos currentAO)) > 500) then
  42.         {
  43.             _accepted = true;
  44.         };
  45.     };
  46.  
  47.     _objPos = [_flatPos, 25, 35, 10, 0, 0.5, 0] call BIS_fnc_findSafePos;
  48.  
  49.  
  50. // Heli-wreck Creation -----------------------
  51.  
  52.  
  53.     sideObj = "Land_Wreck_Heli_Attack_01_F" createVehicle _flatPos;
  54.     waitUntil {alive sideObj};
  55.     sideObj setDir 0;
  56.     sideObj setPos [(getPos sideObj select 0), (getPos sideObj select 1), ((getPos sideObj select 2))];
  57.     sideObj setVectorUp surfaceNormal position sideObj;
  58.    
  59.    
  60. //Pilot Creation -----------------------
  61.  
  62. pilot = "C_man_pilot_F" createVehicle _flatPos;
  63. pilot setPos [(getPos sideObj select 0)+4, (getPos sideObj select 1)-4, ((getPos sideObj select 2))];
  64. pilot setVectorUp surfaceNormal position pilot;
  65. removeuniform pilot;
  66. removevest pilot;
  67. pilot adduniform "U_B_HeliPilotCoveralls";
  68. pilot addvest "V_TacVest_blk";
  69. pilot addheadgear "H_PilotHelmetHeli_B";
  70.  
  71. pilot switchMove "HubWoundedProne_idle1";
  72.  
  73.  
  74.  
  75. // Spawn enemy forces--------------------------------------
  76.    
  77.     _enemiesArray = [sideObj] call AW_fnc_SMenemyEASTrescuepilot;
  78.    
  79. // Briefing ------------------------------------------------
  80.  
  81. _fuzzyPos = [((_flatPos select 0) - 300) + (random 600),((_flatPos select 1) - 300) + (random 600),0];
  82. { _x setMarkerPos _fuzzyPos; } forEach ["sideMarker", "sideCircle"];
  83. sideMarkerText = "search and rescue";
  84. "sideMarker" setMarkerText "Side Mission: search and rescue";
  85. [west,["rescueTask"],/*briefing needs rewriting*/
  86. ["We received a distress call from a friendly heli. We believe the enemy has shot it down, your job is to find and rescue the pilot who is believed to have survived the crash. Be careful when approaching the searcharea we expect heavy AA."
  87. ,"Side Mission: search and rescues","sideCircle"],
  88. (getMarkerPos "sideCircle"),0,0,true,"heal",true] call BIS_fnc_taskCreate;
  89.  
  90. //mission core
  91.  
  92. sideMissionUp = true;
  93. SM_SUCCESS = false;
  94. SM_FAILED = false;
  95. NearTrgFired = false;
  96.  
  97.  
  98. pilot addAction ["<t color='#ff1111'>Rescue pilot</t>",
  99. "missions\side\actions\rescue.sqf",
  100. [],21,true,true,"",'((vehicle player) == player) && ((player distance _target) < 5)'];
  101.  
  102. _BlueforNotNearTrg = createTrigger ["EmptyDetector", _fuzzyPos, true];
  103. _BlueforNotNearTrg setTriggerActivation ["WEST", "NOT PRESENT", true];
  104. _BlueforNotNearTrg setTriggerArea [_triggerrange, _triggerrange, 0, false, 1800];
  105. _BlueforNotNearTrg setTriggerStatements ["this","",
  106.         "if (sideMissionUp) then
  107.         {
  108.             if (_proximityTimeout < 1) exitWith
  109.                 {
  110.                 sideMissionUp = false;
  111.                 SM_FAILED = true;
  112.                 };
  113.        };"];
  114.    
  115. _BlueforNearTrg = createTrigger ["span class='re5'> EmptyDetector", _fuzzyPos, true];
  116. _BlueforNearTrg setTriggerActivation ["WEST", "span class='re5'> PRESENT", true];
  117. _BlueforNearTrg setTriggerArea [_triggerrange, _triggerrange, 0, false, 1800];
  118. _BlueforNearTrg setTriggerStatements ["this",
  119.     "NearTrgFired = true;
  120.     if (sideMissionUp) then
  121.     {
  122.        if (_bleedouttimer == 0) exitWith
  123.             {
  124.             deleteVehicle pilot;
  125.             sideMissionUp = false;
  126.             SM_FAILED = true;
  127.             };
  128.    
  129.         if (SM_SUCCESS) exitWith
  130.             {
  131.             pilot switchMove 'AinjPpneMstpSnonWrflDnon_rolltofront';
  132.             sleep 3;
  133.             sideMissionUp = false;
  134.             };
  135.    };",""];
  136.    
  137. while {sideMissionUp} do
  138. {
  139.     if (!NearTrgFired) then
  140.         {
  141.         _proximityTimeout =_proximityTimeout -5;
  142.         sleep 4;
  143.         };
  144.     if (NearTrgFired) then
  145.         {
  146.         _bleedouttimer = _bleedouttimer -1;
  147.         };
  148.     sleep 1;
  149.     if (SM_FAILED || SM_SUCCESS) exitWith {};
  150. };
  151.    
  152. if (SM_SUCCESS) then
  153.     {
  154.     deleteVehicle pilot;
  155.     [] call AW_fnc_SMhintSUCCESS;
  156.     ["rescueTask", "SUCCEEDED",true] call BIS_fnc_taskSetState;
  157.     }; 
  158.    
  159. if (SM_FAILED) then
  160.     {
  161.     deleteVehicle pilot;
  162.     ["rescueTask", "Failed",true] call BIS_fnc_taskSetState;
  163.     };
  164.  
  165. if (SM_FAILED || SM_SUCCESS) then
  166. {
  167.     deleteVehicle _BlueforNearTrg;
  168.     deleteVehicle _BlueforNotNearTrg;
  169.     sleep 5;
  170.     ["rescueTask",west] call bis_fnc_deleteTask;
  171.     { _x setMarkerPos [-10000,-10000,-10000]; } forEach ["sideMarker", "sideCircle"];
  172.  
  173.     //-------------------- DELETE
  174.    
  175.     sleep 120;
  176.     deleteVehicle nearestObject [getPos sideObj,"Land_Wreck_Heli_Attack_01_F"];
  177.     { [_x] spawn AW_fnc_SMdelete } forEach [_enemiesArray];
  178. };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement