Advertisement
Guest User

Tennessee Timmy's Ride on back script v1

a guest
Apr 23rd, 2018
290
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
SQF 4.78 KB | None | 0 0
  1. // loop function to keep player who is mounted unarmed
  2. ten_fnc_unarmed_loop = {
  3.     params ['_target','_enable'];
  4.     if !(_enable) exitWith {
  5.         if (!isNil 'ten_unarmedLoop') then {
  6.             terminate ten_unarmedLoop;
  7.             ten_unarmedLoop = nil;
  8.         };
  9.     };
  10.  
  11.     // create the loop and save script handler
  12.     ten_unarmedLoop = _target spawn {
  13.         params ['_target'];
  14.         waitUntil {
  15.             if (
  16.                     (isNil '_target' || {isNull _target || {!alive _target || !([_target] call ace_common_fnc_isAwake)}}) ||
  17.                     (!alive player || !([player] call ace_common_fnc_isAwake))
  18.                 ) exitWith {
  19.                 ten_unarmedLoop = nil;
  20.                 true
  21.             };
  22.             _target action ['SwitchWeapon', _target, _target, 100];
  23.             (false)
  24.         };
  25.     };
  26. };
  27.  
  28. // loop function for the unit that mounted a unit
  29. ten_fnc_mounted_loop = {
  30.     params ['_target','_enable'];
  31.     if !(_enable) exitWith {
  32.         if (!isNil 'ten_mounted_loop') then {
  33.             terminate ten_mounted_loop;
  34.             ten_mounted_loop = nil;
  35.         };
  36.     };
  37.  
  38.     // create the loop and save script handler
  39.     ten_mounted_loop = [_target] spawn {
  40.         params ['_target'];
  41.         waitUntil {
  42.             if (
  43.                     (isNil '_target' || {isNull _target || {!alive _target || !([_target] call ace_common_fnc_isAwake) || !((vehicle _target) isEqualTo _target)}}) ||
  44.                     (!alive player || !([player] call ace_common_fnc_isAwake) || !((vehicle _target) isEqualTo _target))
  45.                 ) exitWith {
  46.                 _target call ten_fnc_disMount;
  47.                 ten_mounted_loop = nil;
  48.                 true
  49.             };
  50.             (false)
  51.         };
  52.     };
  53. };
  54.  
  55. // disable collision function
  56. ten_fnc_col = {
  57.     params ['_target'];
  58.     private _nil = {
  59.         _x disableCollisionWith _target;
  60.         _target disableCollisionWith _x;
  61.         false
  62.     } count (allUnits + vehicles);
  63. };
  64.  
  65.  
  66. // mounting function
  67. ten_fnc_mount = {
  68.     params ['_target'];
  69.  
  70.     if !(_target inArea [player,5,5,0,false]) exitWith {hint 'failed, too far to mount!';};
  71.  
  72.     if (!isNil 'ten_ride_car' && {!isNull ten_ride_car}) then {
  73.         deleteVehicle ten_ride_car;
  74.     };
  75.  
  76.     ten_ride_car = 'O_LSV_02_unarmed_F' createVehicle [0,0,0];
  77.     player moveInTurret [ten_ride_car,[5]];
  78.     ten_ride_car allowDamage false;
  79.     ten_ride_car setMass 0;
  80.     [ten_ride_car,true] remoteExec ['lock'];
  81.     ten_ride_car lockCargo true;
  82.  
  83.     clearItemCargoGlobal ten_ride_car;
  84.     clearWeaponCargoGlobal ten_ride_car;
  85.     clearBackpackCargoGlobal ten_ride_car;
  86.     clearMagazineCargoGlobal ten_ride_car;
  87.  
  88.     player disableCollisionWith _target;
  89.     {ten_ride_car disableCollisionWith _x;false}count (allUnits + vehicles);
  90.     [ten_ride_car] remoteExec ['ten_fnc_col'];
  91.     ten_ride_car attachTo [_target,[0.17,0.25,1.35]];
  92.     ten_ride_car setObjectTextureGlobal [0,''];
  93.     ten_ride_car setObjectTextureGlobal [1,''];
  94.     ten_ride_car setObjectTextureGlobal [2,''];
  95.     {ten_ride_car hideSelection [_x,true];false}count (selectionNames ten_ride_car);
  96.     player setVariable ['ten_ride_mounting',true];
  97.     player setVariable ['ten_ride_mountedOn',_target];
  98.     _target setVariable ['ten_ride_mounted',true,true];
  99.     [_target,true] remoteExec ['ten_fnc_unarmed_loop',_target];
  100.     [_target,true] call ten_fnc_mounted_loop;
  101. };
  102.  
  103. // Dismounting function
  104. ten_fnc_disMount = {
  105.     params ['_target'];
  106.     player setpos (ten_ride_car getpos [1,180]);
  107.     deleteVehicle ten_ride_car;
  108.     player setVariable ['ten_ride_mounting',false];
  109.     _target = player getVariable ['ten_ride_mountedOn',objNull];
  110.     player setVariable ['ten_ride_mounting',false];
  111.     if (isNil '_target' || {isNull _target})  exitWith {};
  112.     _target setVariable ['ten_ride_mounted',false,true];
  113.     [_target,false] remoteExec ['ten_fnc_unarmed_loop',_target];
  114.     [_target,false] call ten_fnc_mounted_loop;
  115. };
  116.  
  117. // add ace interaction to players
  118. if (hasInterface) then {
  119.  
  120.     // create action for riding on back
  121.     _ride = [
  122.         "ride_on_back",
  123.         "Ride On Back?",
  124.         "",
  125.         {
  126.  
  127.             // ace progressbar for getting on
  128.             [
  129.                 3,
  130.                 [_target],
  131.                 {
  132.                     _target = ((_this param [0]) param [0,objNull]);
  133.                     player playAction "medicStop";
  134.                     _target call ten_fnc_mount;
  135.                 },
  136.                 {player playAction "medicStop";},
  137.                 "Mounting"
  138.             ] call ace_common_fnc_progressBar;
  139.             player playAction "medicStart";
  140.         },
  141.         {!(player getVariable ['ten_ride_mounting',false]) && !(_target getVariable ['ten_ride_mounted',false]) && ((side _target) isEqualTo (side player)) && ((vehicle player) isEqualTo player) && ((vehicle _target) isEqualTo _target)}
  142.     ] call ace_interact_menu_fnc_createAction;
  143.  
  144.     // add action to all units
  145.     ["CAManBase", 0, ["ACE_MainActions"], _ride, true] call ace_interact_menu_fnc_addActionToClass;
  146.  
  147.     // get off action for interaction
  148.     _off = [
  149.         "ride_on_off",
  150.         "Get Off",
  151.         "",
  152.         {
  153.             _target call ten_fnc_disMount;
  154.         },
  155.         {(player getVariable ['ten_ride_mounting',false])}
  156.     ] call ace_interact_menu_fnc_createAction;
  157.  
  158.     // add action to player self interaction for getting off
  159.     ["CAManBase", 1, ["ACE_SelfActions"], _off, true] call ace_interact_menu_fnc_addActionToClass;
  160. };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement