Jump to content
Sign in to follow this  
giallustio

=BTC= Logistic [A3] - BETA

Recommended Posts

Beta 0.7 UPDATES

Changelog:

Re-defined pickup arrays. (Again!) adding many more items. You can add or subtract your own items to these arrays to suit your preferences.

Made fixes for stupid ArmA3 bugs.

Certain cargo types will now orientate correctly when picked up.

Dropping items below 30m will NOT deploy chutes, and should also not suffer damage when landing.

Pickup Radius now chopper dependant.

Bug fixes and improvements

Beta 0.6

Added Dedicated server check.

Beta 0.5

Re-defined pickup arrays. (Again!) adding many more items. You can add or subtract your own items to these arrays to suit your preferences.

Made fixes for stupid ArmA3 bugs.

Certain cargo types will now orientate correctly when picked up.

Dropping items below 30m will NOT deploy chutes, and should also not suffer damage when landing.

Replace these scripts overwriting the originals. (Make a backup of the originals first)

Filename =BTC=_logistic_init.sqf

path =BTC=_logistic\=BTC=_logistic_init.sqf

/*
=BTC=_logistic_init.sqf
Created by =BTC= Giallustio
Version: 0.14 rc 1
Date: 20/03/2013
Visit us at: http://www.blacktemplars.altervista.org/
Additions by Beerkan 29/06/2013. Beta.0.6 including
Updated for latest Arma 3 version 1.20.124746 Vehicles and Helo's
Pops smoke on ground when cargo lands.
Deploys appropriate parachute/s if dropped above 30m.
Deploy's a small chute for Cargo and ammocrates.
Deploy's a single Large Chute for Cars and small boats Trucks etc.
Deploy's multiple chutes for heavy cargo, i.e. Tanks, Large trucks, large boats etc. // From
Does NOT deploy smoke if Vehicle Cargo is occupied so to not give away position to enemy.
Pilot needs to have a 4/kph or less speed differential to pickup cargo.

[b]Beta 0.7 UPDATES[/b]
Changelog:
Added Dedicated server check.
Re-defined pickup arrays. (Again!) adding many more items. You can add or subtract your own items to these arrays to suit your preferences. 
Made fixes for stupid ArmA3 bugs.
Certain cargo types will now orientate correctly when picked up.
Dropping items below 30m will NOT deploy chutes, and should also not suffer damage when landing.
Pickup Radius now chopper dependant.
Bug fixes and improvements
*/
//if (isDedicated) exitwith {};
if (!isServer && hasInterface ) exitWith {};
BTC_active_lift	  = 1;
BTC_active_fast_rope = 0;
BTC_active_cargo	 = 0;
//Common
BTC_dir_action = "=BTC=_logistic\=BTC=_addAction.sqf";
BTC_l_placement_area = 20;
if (BTC_active_lift == 1) then
{
//Lift
BTC_lift_pilot		= ["B_Helipilot_F","B_helicrew_F","O_helipilot_F","O_helicrew_F","I_helipilot_F","I_helicrew_F"];// set this = []; if you want any unit to use BTC_Lift
BTC_lift			= 1;
BTC_lifted			= 0;
BTC_lift_min_h		= 7;
BTC_lift_max_h		= 12;//Max height above cargo Chopper can lift
BTC_lift_radius		= 5;// max radius to find valid cargo. Increase this to make it easier to lift cargo
BTC_def_hud			= 1;
BTC_def_pip			= 1;
BTC_l_def_veh_pip	= ["B_Heli_Light_01_F","I_Heli_light_03_unarmed_F","O_Heli_Light_02_unarmed_F","B_Heli_Transport_01_F","B_Heli_Transport_01_camo_F","I_Heli_Transport_02_F","CH_147F","CH_47F"];
BTC_l_pip_cond		= false;
BTC_cargo_lifted	= objNull;
BTC_Hud_Cond		= false;
BTC_HUD_x			= (SafeZoneW+2*SafeZoneX) - 0.155;//+ 0.045;
BTC_HUD_y			= (SafeZoneH+2*SafeZoneY) + 0.045;
_paradeployed = 0;
_lift = [] execVM "=BTC=_logistic\=BTC=_lift\=BTC=_lift_init.sqf";

// Specifiy what class of Chopper can lift which type of cargo
BTC_get_liftable_array =
{
	_chopper = _this select 0;
	_array   = [];
	BTC_AmmoCrates = ["B_supplyCrate_F","Box_East_Ammo_F","Box_East_AmmoOrd_F","Box_East_AmmoVeh_F","Box_East_Grenades_F","Box_East_Support_F","Box_East_Wps_F",
	"Box_East_WpsLaunch_F","Box_East_WpsSpecial_F","Box_IND_Ammo_F","Box_IND_AmmoOrd_F","Box_IND_AmmoVeh_F","Box_IND_Grenades_F","Box_IND_Support_F","Box_IND_Wps_F",
	"Box_IND_WpsLaunch_F","Box_IND_WpsSpecial_F","Box_NATO_Ammo_F","Box_NATO_AmmoOrd_F","Box_NATO_AmmoVeh_F","Box_NATO_Grenades_F","Box_NATO_Support_F","Box_NATO_Wps_F",
	"Box_NATO_WpsLaunch_F","Box_NATO_WpsSpecial_F","C_supplyCrate_F","I_supplyCrate_F","IG_supplyCrate_F","O_supplyCrate_F"];	
	BTC_LightVehicles = ["B_Quadbike_01_F","C_Quadbike_01_F","I_Quadbike_01_F","O_Quadbike_01_F","C_Rubberboat","O_Rubberboat","B_Rubberboat","Motorcycle","C_Kart_01_Blu_F",
	"C_Kart_01_Fuel_F","C_Kart_01_F","C_Kart_01_Red_F","C_Kart_01_Vrana_F"];
	BTC_MediumVehicles = ["Car","Wheeled_APC","C_Boat_Civil_01_F","C_Boat_Civil_01_rescue_F","C_Boat_Civil_01_police_F","B_UAV_02_CAS_F","O_UAV_02_CAS_F","I_UAV_02_CAS_F",
	"B_UAV_02_F","O_UAV_02_F","I_UAV_02_F","O_UGV_01_F","O_UGV_01_rcws_F","I_UGV_01_F","B_UGV_01_F","I_UGV_01_rcws_F","B_UGV_01_rcws_F"];
	BTC_HeavyVehicles =["B_MBT_01_arty_F","B_MBT_01_cannon_F","I_MBT_01_cannon_F","B_MBT_01_mlrs_F","B_MBT_01_TUSK_F","B_APC_Tracked_01_rcws_F","B_APC_Tracked_01_CRV_F",
	"B_APC_Tracked_01_AA_F","B_APC_Wheeled_01_cannon_F","B_Truck_01_covered_F","B_Truck_01_transport_F","O_APC_Tracked_02_AA_F","O_APC_Tracked_02_cannon_F","O_APC_Wheeled_02_rcws_F",
	"O_MBT_02_arty_F","O_MBT_02_cannon_F","I_Truck_01_covered_F","I_Truck_01_transport_F","O_Truck_01_covered_F","O_Truck_01_transport_F","I_Boat_Armed_01_minigun_F",
	"B_Boat_Armed_01_minigun_F","O_Boat_Armed_01_hmg_F","B_Truck_01_transport_F","B_Truck_01_covered_F","B_Truck_01_box_F","B_Truck_01_Repair_F","B_Truck_01_ammo_F",
	"B_Truck_01_fuel_F","B_Truck_01_medical_F","B_Truck_01_mover_F","O_Truck_03_transport_F","O_Truck_03_covered_F","O_Truck_03_box_F","O_Truck_03_Repair_F","O_Truck_03_ammo_F",
	"O_Truck_03_fuel_F","O_Truck_03_medical_F","O_Truck_03_device_F","O_Truck_03_covered_F"];
	BTC_Static_Items = ["I_HMG_01_F","B_HMG_01_high_F","O_HMG_01_high_F","I_HMG_01_high_F","B_HMG_01_A_F","O_HMG_01_A_F","I_HMG_01_A_F","B_static_AA_F","O_static_AA_F","I_static_AA_F",
	"B_static_AT_F","O_static_AT_F","I_static_AT_F","B_GMG_01_F","O_GMG_01_F","I_GMG_01_F","B_GMG_01_high_F","O_GMG_01_high_F","I_GMG_01_high_F","B_GMG_01_A_F","O_GMG_01_A_F",
	"I_GMG_01_A_F","B_Mortar_01_F","O_Mortar_01_F","I_Mortar_01_F","B_G_Mortar_01_F"];
	BTC_Fortifications_Small = ["Land_HBarrier_1_F","Land_Shoot_House_Wall_F","Land_Shoot_House_Wall_Stand_F","Land_Shoot_House_Corner_Stand_F","Land_Shoot_House_Wall_Crouch_F",
	"Land_Shoot_House_Corner_Crouch_F","Land_Shoot_House_Wall_Prone_F","Land_Shoot_House_Corner_Prone_F","Land_Shoot_House_Wall_Long_F",
	"Land_Shoot_House_Wall_Long_Stand_F","Land_Shoot_House_Wall_Long_Crouch_F","Land_Shoot_House_Wall_Long_Prone_F","Land_Shoot_House_Corner_F",
	"Land_Shoot_House_Panels_F","Land_Shoot_House_Panels_Crouch_F","Land_Shoot_House_Panels_Prone_F","Land_Shoot_House_Panels_Vault_F",
	"Land_Shoot_House_Panels_Window_F","Land_Shoot_House_Panels_Windows_F","Land_Shoot_House_Tunnel_F","Land_Shoot_House_Tunnel_Stand_F",
	"Land_Shoot_House_Tunnel_Crouch_F","Land_Shoot_House_Tunnel_Prone_F","Land_CncBarrier_F","Land_CncBarrier_stripes_F"];
	BTC_Fortifications_Medium = ["Land_HBarrier_3_F","Land_ToiletBox_F","Land_FieldToilet_F","Land_CinderBlocks_F","Land_CncBarrierMedium_F","Land_CncBarrierMedium4_F",
	"Land_CncWall1_F","Land_CncWall4_F","Land_Concrete_SmallWall_4m_F","Land_Concrete_SmallWall_8m_F","Land_Mil_ConcreteWall_F","Land_Mil_WallBig_4m_F","Land_Mil_WallBig_Corner_F",
	"Land_Wall_IndCnc_2deco_F","Land_Wall_IndCnc_4_D_F"] + BTC_Fortifications_Small;
	BTC_Fortifications_Large = ["Land_HBarrier_5_F","Land_HBarrierBig_F"] + BTC_Fortifications_Medium;
	BTC_Custom_Items_Small = ["Land_PowerGenerator_F","Land_MetalBarrel_empty_F","Land_WaterBarrel_F","Land_WaterTank_F","Land_BarrelEmpty_F","Land_BarrelSand_F",
	"Land_BarrelTrash_F","Land_BarrelWater_F","Land_MetalBarrel_F","Land_WoodenBox_F"];
	BTC_Custom_Items_Medium = ["Land_Tank_rust_F","Land_CargoBox_V1_F"] + BTC_Custom_Items_Small;
	BTC_Custom_Items_Large = ["Land_Cargo20_blue_F","Land_Cargo20_brick_red_F","Land_Cargo20_cyan_F","Land_Cargo20_grey_F","Land_Cargo20_light_blue_F","Land_Cargo20_light_green_F",
	"Land_Cargo20_military_green_F","Land_Cargo20_orange_F","Land_Cargo20_red_F","Land_Cargo20_sand_F","Land_Cargo20_white_F","Land_Cargo20_yellow_F","Land_Cargo40_blue_F",
	"Land_Cargo40_brick_red_F","Land_Cargo40_cyan_F","Land_Cargo40_grey_F","Land_Cargo40_light_blue_F","Land_Cargo40_light_green_F","Land_Cargo40_military_green_F",
	"Land_Cargo40_orange_F","Land_Cargo40_red_F","Land_Cargo40_sand_F","Land_Cargo40_white_F","Land_Cargo40_yellow_F"] + BTC_Custom_Items_Medium;		

	switch (typeOf _chopper) do 
	{
	case "B_Heli_Light_01_F":			{_array = BTC_AmmoCrates + BTC_Static_Items + BTC_LightVehicles + BTC_Fortifications_Small + BTC_Custom_Items_Small;BTC_lift_min_h = 2;BTC_lift_radius = 3;};
	case "B_Heli_Light_01_armed_F":		{_array = BTC_AmmoCrates + BTC_Custom_Items_Small;BTC_lift_min_h = 2;BTC_lift_radius = 3;};		
	case "I_Heli_light_03_unarmed_F":	{_array = BTC_AmmoCrates + BTC_Static_Items + BTC_LightVehicles + BTC_Fortifications_Small + BTC_Custom_Items_Medium;BTC_lift_min_h = 2;BTC_lift_radius = 3;};
	case "O_Heli_Light_02_unarmed_F":	{_array = BTC_AmmoCrates + BTC_Static_Items + BTC_LightVehicles + BTC_MediumVehicles + BTC_Fortifications_Medium + BTC_Custom_Items_Medium;BTC_lift_min_h = 4;BTC_lift_radius = 3;};
	case "B_Heli_Transport_01_F":		{_array = BTC_AmmoCrates + BTC_Static_Items + BTC_LightVehicles + BTC_MediumVehicles + BTC_Fortifications_Large + BTC_Custom_Items_Large;BTC_lift_min_h = 4;BTC_lift_radius = 3;};
	case "B_Heli_Transport_01_camo_F":	{_array = BTC_AmmoCrates + BTC_Static_Items + BTC_LightVehicles + BTC_MediumVehicles + BTC_Fortifications_Large + BTC_Custom_Items_Large;BTC_lift_min_h = 4;};
	case "I_Heli_Transport_02_F":		{_array = BTC_AmmoCrates + BTC_Static_Items + BTC_LightVehicles + BTC_MediumVehicles + BTC_HeavyVehicles + BTC_Fortifications_Large + BTC_Custom_Items_Large;};
	case "CH_147F":						{_array = BTC_AmmoCrates + BTC_Static_Items + BTC_LightVehicles + BTC_MediumVehicles + BTC_HeavyVehicles + BTC_Fortifications_Large + BTC_Custom_Items_Large;};
	case "CH_47F":						{_array = BTC_AmmoCrates + BTC_Static_Items + BTC_LightVehicles + BTC_MediumVehicles + BTC_HeavyVehicles + BTC_Fortifications_Large + BTC_Custom_Items_Large;};
	};
	_array
};
};

if (BTC_active_fast_rope == 1) then
{
//Fast roping
BTC_fast_rope_h = 35;
BTC_fast_rope_h_min = 5;
BTC_roping_chopper = ["B_Heli_Light_01_F","I_Heli_light_03_unarmed_F","O_Heli_Light_02_unarmed_F","B_Heli_Transport_01_F","B_Heli_Transport_01_camo_F","I_Heli_Transport_02_F","CH_147F","CH_147F"];
_rope = [] execVM "=BTC=_logistic\=BTC=_fast_roping\=BTC=_fast_roping_init.sqf";
};

if (BTC_active_cargo == 1) then
{
//Cargo System
_cargo = [] execVM "=BTC=_logistic\=BTC=_cargo_system\=BTC=_cargo_system_init.sqf";
BTC_def_vehicles	 = ["LandVehicle","Helicopter","Ship"];
BTC_def_cargo		= ["Motorcycle","ReammoBox","ReammoBox_F","Strategic"];
BTC_def_drag		 = ["ReammoBox","ReammoBox_F","Strategic"];
BTC_def_placement	= ["ReammoBox","ReammoBox_F","Strategic"];
BTC_cargo_selected   = objNull;
BTC_def_cc =
[
	"C_Rubberboat",2,
	"O_Rubberboat",2,
	"B_Rubberboat",2,
	"B_Quadbike_01_F",2,
	"C_Quadbike_01_F",2,
	"I_Quadbike_01_F",2,
	"O_Quadbike_01_F",2,
	"Car",4,
	"Tank",6,
	"Wheeled_APC",6,
	"Tracked_APC",6,		
	 "B_Truck_01_transport_F",10,
	"B_Truck_01_covered_F",10,
	"I_Truck_02_covered_F",10,
	"O_Truck_02_covered_F",10,
	"I_Truck_02_transport_F",10,
	"O_Truck_02_transport_F",10,
	"O_Truck_03_transport_F",14,
	"O_Truck_03_covered_F",12,
	"O_Truck_03_box_F",12
];
BTC_def_rc =
[
	"Land_BagBunker_Small_F",4
];
};

//Functions

BTC_No_chute =
{	private ["_payload","_smoke"];
BTC_lifted = 0;
0 = [_this] spawn {
_payload = _this select 0;
_height = (getPos _payload) select 2;
_fall   = 0.09;
// Deploy smoke but only if there is no one (alive) inside.
if ({alive _x} count crew BTC_cargo_lifted == 0)
	then {
	_smoke = "SmokeShellGreen" createVehicle position _payload;
	_smoke setPos (getPos _payload);
	_smoke attachTo [_payload,[0,0,0]];
		};	
while {((getPos _payload) select 2) > 0.1} do 
		{
	_fall = (_fall * 1.05);// Visually closer to real gravity decent.
	_payload setPos [getPos _payload select 0, getPos _payload select 1, _height];
	_height = _height - _fall;
	sleep 0.01;
		};
	BTC_cargo_lifted = ObjNull;
};
};

BTC_Fnc_NonSteerPara = {
	private ["_para","_paras","_payload","_smoke","_paradeployed"];
	_paradeployed = 1;
	_height = (getPos BTC_cargo_lifted) select 2;
	_fall   = 0.09;
	BTC_cargo_lifted setvariable ["BTC_cannot_lift",1,false];
	// Force item to fall. Some small items & classes don't have physx or understand gravity. (GAME BUG!!) Wait until it's 20m away then deploy chute.
	while {BTC_cargo_lifted distance _chopper < 20} do 
		{
	_fall = (_fall * 1.1);
	BTC_cargo_lifted setPos [getPos BTC_cargo_lifted select 0, getPos BTC_cargo_lifted select 1, _height];
	_height = _height - _fall;
	sleep 0.01;
		};		
	BTC_cargo_lifted setvariable ["BTC_cannot_lift",0,false];
	BTC_lifted = 0;
	_para = createVehicle ["NonSteerable_Parachute_F", [0,0,0], [], 0, "FLY"];
	_para disableCollisionWith _chopper; 
	_para setDir getDir _this;
	_para setPos getPos _this;
	_paras =  [_para];
	_this attachTo [_para, [0,0,0]];
	0 = [_this, _paras] spawn {
		_payload = _this select 0;
		// Wait until near ground then deploy smoke but only if there is no one (alive) inside.
		waitUntil {(getPos _payload select 2) < 25};
		if ({alive _x} count crew _payload == 0)
		then {
		_smoke = "SmokeShellGreen" createVehicle position _payload;
		_smoke setPos (getPos _payload);
		_smoke attachTo [_payload,[0,0,0]];
		};
		BTC_cargo_lifted = ObjNull;			
		waitUntil {getPos _payload select 2 < 1};
		detach _payload;
		_payload setPosASL getPosASL _payload;
		//_payload setVectorUp surfaceNormal position _payload;			
	};
};

BTC_Fnc_SinglePara = {
	private ["_para","_paras","_payload","_smoke","_paradeployed"];
	_paradeployed = 1;
	BTC_lifted = 0;
	BTC_cargo_lifted setvariable ["BTC_cannot_lift",1,false];
	waitUntil {BTC_cargo_lifted distance _chopper > 30};
	BTC_cargo_lifted setvariable ["BTC_cannot_lift",0,false];			
	_para = createVehicle ["B_Parachute_02_F", [0,0,0], [], 0, "FLY"];
	_para setDir getDir _this;
	_para setPos getPos _this;
	_paras =  [_para];
	_this attachTo [_para, [0,0,0]];
	0 = [_this, _paras] spawn {
		_payload = _this select 0;
		// Wait until near ground then deploy smoke but only if there is no one (alive) inside.
		waitUntil {(getPos _payload select 2) < 25};
		if ({alive _x} count crew _payload == 0)
		then {
		_smoke = "SmokeShellGreen" createVehicle position _payload;
		_smoke setPos (getPos _payload);
		_smoke attachTo [_payload,[0,0,0]];
		};
		BTC_cargo_lifted = ObjNull;			
		waitUntil {getPos _payload select 2 < 2};
		detach _payload;
		_payload setPosASL getPosASL _payload;
		//_payload setVectorUp surfaceNormal position _payload;
	};
};
//Adapted from Killzone Kid's 'Epic Armour Drop' Script
BTC_Fnc_MultiPara = {
	private ["_para","_paras","_p","_payload","_time","_smoke","_paradeployed"];
	_paradeployed = 1;
	BTC_lifted = 0;
	BTC_cargo_lifted setvariable ["BTC_cannot_lift",1,false];
	waitUntil {BTC_cargo_lifted distance _chopper > 30};
	BTC_cargo_lifted setvariable ["BTC_cannot_lift",0,false];
	BTC_cargo_lifted setvectorup [0,0,1];
	_para = createVehicle ["B_Parachute_02_F", [0,0,0], [], 0, "FLY"];
	_para setDir getDir _this;
	_para setPos getPos _this;
	_paras =  [_para];
	_this attachTo [_para, [0,2,0]];
	{
		_p = createVehicle ["B_Parachute_02_F", [0,0,0], [], 0, "FLY"];
		_p disableCollisionWith _chopper;
		_paras set [count _paras, _p];
		_p attachTo [_para, [0,0,0]];
		_p setVectorUp _x;
	} count [
		[0.5,0.4,0.6],[-0.5,0.4,0.6],[0.5,-0.4,0.6],[-0.5,-0.4,0.6]
	];
	0 = [_this, _paras] spawn {
		_payload = _this select 0;
		// Wait until near ground then deploy smoke but only if there is no one (alive) inside.
		waitUntil {(getPos _payload select 2) < 25};
		if ({alive _x} count crew _payload == 0)
		then {
		_smoke = "SmokeShellGreen" createVehicle position _payload;
		_smoke setPos (getPos _payload);
		_smoke attachTo [_payload,[0,0,0]];
		};
		BTC_cargo_lifted = ObjNull;			
		waitUntil {getPos _payload select 2 < 2};
		detach _payload;
		_payload setVectorUp surfaceNormal position _payload;
		_payload setvelocity [0,0,0];
		{
			detach _x;
			_x disableCollisionWith _payload;
		} count (_this select 1);
		_time = time + 5;
		waitUntil {time > _time};
		{
			if (!isNull _x) then {deleteVehicle _x};
		} count (_this select 1);
	};
};

Filename =BTC=_lift_init.sqf

path =BTC=_logistic\=BTC=_lift\=BTC=_lift_init.sqf

/*
=BTC=_lift_init.sqf
Created by =BTC= Giallustio
Version: 0.14 rc 1
Date: 20/03/2013
Visit us at: http://www.blacktemplars.altervista.org/
Additions by Beerkan 29/06/2013. Beta.0.6 including
Updated for latest Arma 3 version 1.20.124746 Vehicles and Helo's
Pops smoke on ground when cargo lands.
Deploys appropriate parachute/s if dropped above 30m.
Deploy's a small chute for Cargo and ammocrates.
Deploy's a single Large Chute for Cars and small boats Trucks etc.
Deploy's multiple chutes for heavy cargo, i.e. Tanks, Large trucks, large boats etc. // From
Does NOT deploy smoke if Vehicle Cargo is occupied so to not give away position to enemy.
Pilot needs to have a 4/kph or less speed differential to pickup cargo.

[b]Beta 0.7 UPDATES[/b]
By Beerkan.
Changelog:
Added Dedicated server check.
Re-defined pickup arrays. (Again!) adding many more items. You can add or subtract your own items to these arrays to suit your preferences. 
Made fixes for stupid ArmA3 bugs.
Certain cargo types will now orientate correctly when picked up.
Dropping items below 30m will NOT deploy chutes, and should also not suffer damage when landing.
Pickup Radius now chopper dependant.
Bug fixes and improvements
*/
//if (isDedicated) exitwith {};
if (!isServer && hasInterface ) exitWith {};
waitUntil {!isNull player};
waitUntil {player == player};

_cond = true;
if ((count BTC_lift_pilot) > 0) then
{
   if ((BTC_lift_pilot find (typeof player)) == - 1) exitWith {hint "No lift";_cond = false;};
};
if !(_cond) exitWith {hint "No lift";};
if (BTC_def_hud == 1) then
{
   disableSerialization;
   cutRsc ["BTC_Hud","PLAIN"];
   _ui = uiNamespace getVariable "HUD";
   _radar = _ui displayCtrl 1001;
   _obj_img = _ui displayCtrl 1002;
   _obj_pic = _ui displayCtrl 1003;
   _arrow = _ui displayCtrl 1004;
   _obj_name = _ui displayCtrl 1005;
   _array_hud = [_radar,_obj_img,_obj_pic,_arrow,_obj_name];
   {_x ctrlShow false;} foreach _array_hud;
   BTC_arrow_up   = "=BTC=_Logistic\=BTC=_Lift\img\arrow_up_ca.paa";
   BTC_arrow_down = "=BTC=_Logistic\=BTC=_Lift\img\arrow_down_ca.paa";
   BTC_complete   = "=BTC=_Logistic\=BTC=_Lift\img\objective_complete_ca.paa";
   BTC_incomplete = "=BTC=_Logistic\=BTC=_Lift\img\objective_incomplete_ca.paa";
};
BTC_cargo = ObjNull;
//Functions 
BTC_lift_check =
{
   private ["_rel_pos","_chopper"];
   if (!(vehicle player isKindOf "Helicopter") || BTC_lifted == 1) exitWith {false};
   _array = [vehicle player] call BTC_get_liftable_array;
   _chopper  = vehicle player;
   if (player == driver _chopper) then {
   _can_lift = false;
   _cargo_array = nearestObjects [_chopper, _array, 50];
   if (count _cargo_array > 0) then {if (driver (_cargo_array select 0) == player) then {_cargo_array set [0,0];_cargo_array = _cargo_array - [0];};};
   if (count _cargo_array > 0) then {BTC_cargo = _cargo_array select 0;} else {BTC_cargo = objNull;_can_lift = false;};
   if (({BTC_cargo isKindOf _x} count _array) > 0 && speed BTC_cargo < 5) then {_can_lift = true;} else {_can_lift = false;};
   if (_can_lift && ((BTC_cargo isKindOf "Air" && getdammage BTC_cargo != 1) || (format ["%1", BTC_cargo getVariable "BTC_cannot_lift"] == "1"))) then {_can_lift = false;};
   if (!isNull BTC_cargo && _can_lift) then 
   {
       _cargo_pos = getPosATL BTC_cargo;
       _rel_pos = _chopper worldToModel _cargo_pos;
       BTC_cargo_x = _rel_pos select 0;
       BTC_cargo_y = _rel_pos select 1;
       BTC_cargo_z = _rel_pos select 2;//hintSilent format ["%1 - %2 - %3",BTC_cargo_x,BTC_cargo_y,BTC_cargo_z];
   };
   if (((abs BTC_cargo_z) < BTC_lift_max_h) && (abs(speed BTC_cargo - speed _chopper ) <= 4) && ((abs BTC_cargo_z) > BTC_lift_min_h) && ((abs BTC_cargo_x) < BTC_lift_radius) && ((abs BTC_cargo_y) < BTC_lift_radius)) then 
   {_can_lift = true;} else {_can_lift = false;};
   //hintSilent format ["%1 - %2", BTC_cargo,_cargo_array];
   _can_lift 
   };
};

BTC_attach_cargo = 
{
   private ["_cargo","_chopper"];
   _chopper = vehicle player;
       if (player == driver _chopper) then {
       _offset = [0,1,-4.5];//Offset for Unknown Class Heli 
       if (_chopper iskindof "B_Heli_Light_01_F") then {_offset = [0,1,-3.0];};// offset for the attachment point on the MH9
       if (_chopper iskindof "I_Heli_Light_03_unarmed_F") then {_offset = [0,3,-3.5];};// offset for the attachment point on the WY55
       if (_chopper iskindof "O_Heli_Light_02_unarmed_F") then {_offset = [0,2,-5.0];};// offset for the attachment point on the PO-30
       if (_chopper iskindof "B_Heli_Transport_01_F") then {_offset = [0,1,-4.25];};// offset for the attachment point on the UH-80
       if (_chopper iskindof "B_Heli_Transport_01_camo_F") then {_offset = [0,1,-4.25];};// offset for the attachment point on the UH-80 CAMO
       if (_chopper iskindof "I_Heli_Transport_02_F") then {_offset = [0,3,-6.0];};// offset for the attachment point on the CH-49
       if (_chopper iskindof "CH_147F") then {_offset = [0,2,-7.0];};// offset for the attachment point on the CH_147F
       if (_chopper iskindof "CH_47F") then {_offset = [0,2,-7.0];};// offset for the attachment point on the CH_47F
   _array = [vehicle player] call BTC_get_liftable_array;
   _cargo_array = nearestObjects [_chopper, _array, 50];
   if (count _cargo_array > 0 && driver (_cargo_array select 0) == player) then {_cargo_array set [0,0];_cargo_array = _cargo_array - [0];};
   if (count _cargo_array > 0) then {_cargo = _cargo_array select 0;} else {_cargo = objNull;};
   if (isNull _cargo) exitWith {};
   BTC_lifted = 1;
   _cargo engineOn false;
   _cargoPos = getPos _cargo;
   _cargo setPos [_cargoPos select 0, _cargoPos select 1, 1];
   _cargo_type = (typeOf _cargo);
   if ((_cargo_type in BTC_AmmoCrates) ||
       (_cargo_type in BTC_Static_Items) ||
       (_cargo_type in BTC_Fortifications_Large) ||
       (_cargo_type in BTC_Custom_Items_Large))
   then {_cargo attachTo [_chopper, _offset];_cargo setVectorDirAndUp [[1,0,0],[0,0,1]];}
   else {_cargo attachTo [_chopper, _offset];};
   _name_cargo  = getText (configFile >> "cfgVehicles" >> typeof _cargo >> "displayName");
   _chopper vehicleChat format ["%1 lifted", _name_cargo];
   BTC_cargo_lifted = _cargo;
   };
};
BTC_detach_cargo = 
{
   _chopper = vehicle player;
   if (player == driver _chopper) then {
   _velocity = velocity _chopper;
   detach BTC_cargo_lifted;
       if (local _chopper) then
       {
       BTC_cargo_lifted setVelocity velocity vehicle player;
       }
   else
       {
       _velocity = velocity _chopper;
       BTC_cargo_lifted setVelocity _chopper;
       };    
   _name_cargo  = getText (configFile >> "cfgVehicles" >> typeof BTC_cargo_lifted >> "displayName");
   vehicle player vehicleChat format ["%1 dropped", _name_cargo];
   BTC_cargo_type = (typeOf BTC_cargo_lifted);
   if ((getPos BTC_cargo_lifted select 2) <30) exitwith {BTC_cargo_lifted call BTC_No_chute};

   if (BTC_cargo_type in BTC_HeavyVehicles) exitwith {BTC_cargo_lifted call BTC_Fnc_MultiPara};

   if ((BTC_cargo_type in BTC_AmmoCrates) ||
       (BTC_cargo_type in BTC_LightVehicles) ||
       (BTC_cargo_type in BTC_Static_Items) ||
       (BTC_cargo_type in BTC_Fortifications_Small) ||
       (BTC_cargo_type in BTC_Custom_Items_Small))
   exitwith {BTC_cargo_lifted call BTC_Fnc_NonSteerPara};

// Use this for all other cargo classes including where BTC_cargo_lifted is not a recognised class;
   BTC_cargo_lifted call BTC_Fnc_SinglePara;
   };
};
BTC_fnc_hud = 
{
   private ["_can_lift"];
   disableSerialization;
   _ui        = uiNamespace getVariable "HUD";
   _radar     = _ui displayCtrl 1001;
   _obj_img   = _ui displayCtrl 1002;
   _obj_pic   = _ui displayCtrl 1003;
   _arrow     = _ui displayCtrl 1004;
   _obj_name  = _ui displayCtrl 1005;
   _array_hud = [_radar,_obj_img,_obj_pic,_arrow,_obj_name];
   {_x ctrlShow true;} foreach _array_hud;_obj_img ctrlShow false;
   _can_lift = false;
   while {(Alive player && vehicle player != player) && BTC_Hud_Cond} do 
   {
       private ["_cargo"];
       _array = [vehicle player] call BTC_get_liftable_array;
       _cargo_array = nearestObjects [vehicle player, _array, 50];
       if (count _cargo_array > 0 && driver (_cargo_array select 0) == player) then {_cargo_array set [0,0];_cargo_array = _cargo_array - [0];};
       if (count _cargo_array > 0) then {_cargo = _cargo_array select 0;} else {_cargo = objNull;};
       if (({_cargo isKindOf _x} count _array) > 0) then {_can_lift = true;} else {_can_lift = false;};
       if (_can_lift && ((_cargo isKindOf "Air" && getdammage _cargo != 1) || !(isNil {_cargo getVariable "BTC_cannot_lift"}))) then {_can_lift = false;};
       if (!isNull _cargo) then
       {
           _cargo_pos = getPosATL _cargo;
           _rel_pos   = (vehicle player) worldToModel _cargo_pos;
           _cargo_x   = _rel_pos select 0;
           _cargo_y   = _rel_pos select 1;
           _cargo_z   = _rel_pos select 2;
           _obj_img ctrlShow true;
           _hud_x   = _cargo_x / 100;
           _hud_y   = 0;
           switch (true) do
           {
               case (_cargo_y < 0): {_hud_y = (abs _cargo_y) / 100};
               case (_cargo_y > 0): {_hud_y = (0 - _cargo_y) / 100};
           };
           _hud_x_1 = BTC_HUD_x + _hud_x;
           _hud_y_1 = BTC_HUD_y + _hud_y;
           _obj_img ctrlsetposition [_hud_x_1, _hud_y_1];
           _obj_img ctrlCommit 0;
           _pic_cargo = "";
           if (_cargo isKindOf "LandVehicle") then {_pic_cargo = getText (configFile >> "cfgVehicles" >> typeof _cargo >> "picture");} else {_pic_cargo = "";};
           _name_cargo = getText (configFile >> "cfgVehicles" >> typeof _cargo >> "displayName");
           _obj_pic ctrlSetText _pic_cargo;
           if (BTC_lifted == 1) then {_obj_name ctrlSetText (format ["[%1 m] ",(round((getpos _cargo select 2) * 10))/10] + _name_cargo);} else {_obj_name ctrlSetText _name_cargo;};
           if ((abs _cargo_z) > BTC_lift_max_h) then {_arrow ctrlSetText BTC_arrow_down;};
           if ((abs _cargo_z) < BTC_lift_min_h) then {_arrow ctrlSetText BTC_arrow_up;};
           if ((abs _cargo_z) > BTC_lift_min_h && (abs _cargo_z) < BTC_lift_max_h) then {_arrow ctrlSetText BTC_complete;};
           if !(_can_lift) then {_arrow ctrlSetText BTC_incomplete;};
       } else {_obj_img ctrlShow false;_obj_pic ctrlSetText "";_obj_name ctrlSetText "";_arrow ctrlSetText "";};
       sleep 0.1;
   };
   {_x ctrlShow false;} foreach _array_hud;
};
BTC_l_camera =
{
   if (BTC_l_pip_cond) then
   {
       BTC_l_pip_cond = false;
       [] call BIS_fnc_liveFeedTerminate;
   }
   else
   {
       hint "Activating camera...";
       BTC_l_pip_cond = true;
       BTC_l_feed_target = "Land_HelipadEmpty_F" createVehicle (position player);
       [] spawn {while {BTC_l_pip_cond} do {BTC_l_feed_target setpos [getPos (vehicle player) select 0,(getPos (vehicle player) select 1) + 1,0];sleep 0.1;};deleteVehicle BTC_l_feed_target;};
       [player, player, player] call BIS_fnc_liveFeed;
       waitUntil {!(isNil "BIS_liveFeed")};
       hintSilent "";
       BIS_liveFeed attachTo [vehicle player,[0, - 1, -3]];
       BTC_l_feed_target call BIS_fnc_liveFeedSetTarget;
       WaitUntil {sleep 1; (!(vehicle player isKindOf "Helicopter") || !Alive player)};
       if (BTC_l_pip_cond) then {BTC_l_pip_cond = false;[] call BIS_fnc_liveFeedTerminate;};
   };
};
[] spawn
{

   if (BTC_def_hud == 1) then {player addAction [("<t color=""#ED2744"">" + ("Hud On\Off") + "</t>"),BTC_dir_action, [[],{if (BTC_Hud_Cond) then {BTC_Hud_Cond = false;} else {BTC_Hud_Cond = true;_hud = [] spawn BTC_fnc_hud;};}], -8, false, false, "", "(vehicle player) isKindOf ""Helicopter"" && driver (vehicle player) == player"];};
   if (BTC_def_pip == 1) then {player addAction [("<t color=""#ED2744"">" + ("Camera On\Off") + "</t>"),BTC_dir_action, [[],BTC_l_camera], -9, false, false, "", "typeOf (vehicle player) in BTC_l_def_veh_pip"];};
   player addAction [("<t color=""#00ff00"">" + ("Lift") + "</t>"),BTC_dir_action, [[],BTC_attach_cargo], 9, true, false, "", "[] call BTC_lift_check"];
   player addAction [("<t color=""#FF8C00"">" + ("Release") + "</t>"),BTC_dir_action, [[],BTC_detach_cargo], -9, true, false, "", "BTC_lifted == 1"];
   player addEventHandler ["Respawn",
   {
       [] spawn
       {
           WaitUntil {sleep 1; Alive player};
           BTC_l_pip_cond = false;
           BTC_cargo    = ObjNull;
           BTC_Hud_Cond = false;
           BTC_lifted   = 0;
           if (BTC_def_hud == 1) then {player addAction [("<t color=""#ED2744"">" + ("Hud On\Off") + "</t>"),BTC_dir_action, [[],{if (BTC_Hud_Cond) then {BTC_Hud_Cond = false;} else {BTC_Hud_Cond = true;_hud = [] spawn BTC_fnc_hud;};}], -8, false, false, "", "(vehicle player) isKindOf ""Helicopter"" && driver (vehicle player) == player"];};
           if (BTC_def_pip == 1) then {player addAction [("<t color=""#ED2744"">" + ("Camera On\Off") + "</t>"),BTC_dir_action, [[],BTC_l_camera], -9, false, false, "", "typeOf (vehicle player) in BTC_l_def_veh_pip"];};
           player addAction [("<t color=""#00ff00"">" + ("Lift") + "</t>"),BTC_dir_action, [[],BTC_attach_cargo], 9, true, false, "", "[] call BTC_lift_check"];
           player addAction [("<t color=""#FF8C00"">" + ("Release") + "</t>"),BTC_dir_action, [[],BTC_detach_cargo], -9, true, false, "", "BTC_lifted == 1"];
       };
   }];
};

Edited by Beerkan

Share this post


Link to post
Share on other sites

Scripts just been updated again. Probably my last update for a while unless anybody reports anything major.

Share this post


Link to post
Share on other sites
Scripts just been updated again. Probably my last update for a while unless anybody reports anything major.

Lifting stopped working on a dedicated server :S

Doesn`t add the actions to toggle the HUD.

EDIT:

Changed condition checking in =BTC=_logistic_init.sqf & =BTC=_lift_init.sqf to make sure it works:

if !(isDedicated) then {

all the code;

};

You`re welcome =)

Edited by eRazeri
Fix for the issue.

Share this post


Link to post
Share on other sites

Has something changed since the update....cannot drag or load anything now, hmmm

Correction I can drag ammo boxes but not this one - B_supplyCrate_F

Also - now when I select and load an ammo box it remains at its original location until I unload it and then it disappears and gets placed in its new location (correct location).

Edited by REAPER LOK

Share this post


Link to post
Share on other sites

Beta 0.6 Update.

Added Dedicated server check. (Needs tested as I don't have access to a dedicated server.)

@ REAPER LOK: I haven't touched the drag scripts. I just updated the lifting.

Share this post


Link to post
Share on other sites
Beta 0.6 Update.

Added Dedicated server check. (Needs tested as I don't have access to a dedicated server.)

@ REAPER LOK: I haven't touched the drag scripts. I just updated the lifting.

Thanx for the quick reply - I have all the drag options working now with the one exception of the supply box as I mentioned above. Not sure if a classname change from BIS has effected things? Maybe I am missing something else....that is very possible, lol

Share this post


Link to post
Share on other sites

Same here. I can report no lift hud, though not getting any script errors. Not yet tested on dedi because it's not working on hosted server. I've reverted to an older working version for now. I hope you get it worked out. Thanks for keeping this going Beerkan.

Share this post


Link to post
Share on other sites
Same here. I can report no lift hud, though not getting any script errors....
Jigsor, can you confirm you are using the above Beta 0.6 UPDATE? Please copy and re-paste and report back, thanks.

---------- Post added at 09:30 PM ---------- Previous post was at 09:22 PM ----------

Just re-tested Beta 0.6. Here's a screenshot of the camera and the HUD

2014_06_30_00001.jpg

And here's the lift option showing the icon of the T100 I'm trying to lift, as well as the lift option.

2014_06_30_00002.jpg

Share this post


Link to post
Share on other sites

I've downloaded version 0.13 and pasted in your Beta 0.6 amendments. Is that what I should have done?

Share this post


Link to post
Share on other sites
I've downloaded version 0.13 and pasted in your Beta 0.6 amendments. Is that what I should have done?
Sorry, I should have been more clear. My script ammendments are updates to 0.14 rc 1.

I'll package 0.14 rc1 with my changes into a single downloadable to make it easier.

---------- Post added at 12:33 AM ---------- Previous post was at 12:24 AM ----------

In the meantime here is a link to =BTC= Logistic [bETA] 0.14 rc1

THIS DOES NOT INCLUDE MY UPDATES

Share this post


Link to post
Share on other sites

Hello,

Thank you for your awesome scripts! But what do I do to only Mohawk load trucks?

Edit: Lift isn't working! :(

Thanks!

Edited by CapBlackShot

Share this post


Link to post
Share on other sites
Hello,

Thank you for your awesome scripts! But what do I do to only Mohawk load trucks?

Edit: Lift isn't working! :(

Thanks!

If you are using Giallustio's 0.14 rc 1 version, then you need only replace my 2 script updates. However I'll package my script updates into Giallustio's 0.14 rc 1 version and post a link later today.

You need to edit this lift array to set which vehicle's only the Mowhak can lift. However with my script updates, it is already set to allow only heavy vehicles.

Filename =BTC=_logistic_init.sqf

path =BTC=_logistic\=BTC=_logistic_init.sqf

BTC_HeavyVehicles =["B_MBT_01_arty_F","B_MBT_01_cannon_F","I_MBT_01_cannon_F","B_MBT_01_mlrs_F","B_MBT_01_TUSK_F","B_APC_Tracked_01_rcws_F","B_APC_Tracked_01_CRV_F",
"B_APC_Tracked_01_AA_F","B_APC_Wheeled_01_cannon_F","B_Truck_01_covered_F","B_Truck_01_transport_F","O_APC_Tracked_02_AA_F","O_APC_Tracked_02_cannon_F","O_APC_Wheeled_02_rcws_F",
"O_MBT_02_arty_F","O_MBT_02_cannon_F","I_Truck_01_covered_F","I_Truck_01_transport_F","O_Truck_01_covered_F","O_Truck_01_transport_F","I_Boat_Armed_01_minigun_F",
"B_Boat_Armed_01_minigun_F","O_Boat_Armed_01_hmg_F","B_Truck_01_transport_F","B_Truck_01_covered_F","B_Truck_01_box_F","B_Truck_01_Repair_F","B_Truck_01_ammo_F",
"B_Truck_01_fuel_F","B_Truck_01_medical_F","B_Truck_01_mover_F","O_Truck_03_transport_F","O_Truck_03_covered_F","O_Truck_03_box_F","O_Truck_03_Repair_F","O_Truck_03_ammo_F",
"O_Truck_03_fuel_F","O_Truck_03_medical_F","O_Truck_03_device_F","O_Truck_03_covered_F"];

Share this post


Link to post
Share on other sites
If you are using Giallustio's 0.14 rc 1 version, then you need only replace my 2 script updates. However I'll package my script updates into Giallustio's 0.14 rc 1 version and post a link later today.

You need to edit this lift array to set which vehicle's only the Mowhak can lift. However with my script updates, it is already set to allow only heavy vehicles.

Filename =BTC=_logistic_init.sqf

path =BTC=_logistic\=BTC=_logistic_init.sqf

BTC_HeavyVehicles =["B_MBT_01_arty_F","B_MBT_01_cannon_F","I_MBT_01_cannon_F","B_MBT_01_mlrs_F","B_MBT_01_TUSK_F","B_APC_Tracked_01_rcws_F","B_APC_Tracked_01_CRV_F",
"B_APC_Tracked_01_AA_F","B_APC_Wheeled_01_cannon_F","B_Truck_01_covered_F","B_Truck_01_transport_F","O_APC_Tracked_02_AA_F","O_APC_Tracked_02_cannon_F","O_APC_Wheeled_02_rcws_F",
"O_MBT_02_arty_F","O_MBT_02_cannon_F","I_Truck_01_covered_F","I_Truck_01_transport_F","O_Truck_01_covered_F","O_Truck_01_transport_F","I_Boat_Armed_01_minigun_F",
"B_Boat_Armed_01_minigun_F","O_Boat_Armed_01_hmg_F","B_Truck_01_transport_F","B_Truck_01_covered_F","B_Truck_01_box_F","B_Truck_01_Repair_F","B_Truck_01_ammo_F",
"B_Truck_01_fuel_F","B_Truck_01_medical_F","B_Truck_01_mover_F","O_Truck_03_transport_F","O_Truck_03_covered_F","O_Truck_03_box_F","O_Truck_03_Repair_F","O_Truck_03_ammo_F",
"O_Truck_03_fuel_F","O_Truck_03_medical_F","O_Truck_03_device_F","O_Truck_03_covered_F"];

Thank you, I'll try it! I just got Giallustio's files and replaced with your codes manually. But I think I was using the 0.3 version. Where can I find the 0.14 RC 1 version?

:)

Share this post


Link to post
Share on other sites
..Where can I find the 0.14 RC 1 version?:)
Damit. Now if only there was a link.. somewhere.

Share this post


Link to post
Share on other sites

Sry if repeat question. But I am using most recent version, only using lifter, when game starts, your have "release" option turned on at startup. We just need to close it, but wasn't sure if a bug or related lifter, also lifter "lift" option does not turn on until "release" option is closed. then "lift" option is turned on when over vehicle. Not sure if this is related to Alive.

Share this post


Link to post
Share on other sites

OK still in testing. Recent ArmA3 updates seems to have broken some of the scripts functionality, which I'm now working on.

If you want to download Giallustio's =BTC= Logistic [bETA] 0.14 rc1 from 2013-08-20 see my link at the top of this page.

No problem! I'll wait for your pack! ;)

(It was always there CapBlackshot. You just missed it! I was just joshing with you).

Anyway, see also my latest script updates a few pages back. Here

Merge these with the =BTC= Logistic [bETA] 0.14 rc1 to see where I'm at.

I'll release an update over the weekend when I've thoroughly tested it.

Edited by Beerkan
Added links

Share this post


Link to post
Share on other sites
OK still in testing. Recent ArmA3 updates seems to have broken some of the scripts functionality, which I'm now working on.

If you want to download Giallustio's =BTC= Logistic [bETA] 0.14 rc1 from 2013-08-20 see my link at the top of this page.

(It was always there CapBlackshot. You just missed it! I was just joshing with you).

Anyway, see also my latest script updates a few pages back. Here

Merge these with the =BTC= Logistic [bETA] 0.14 rc1 to see where I'm at.

I'll release an update over the weekend when I've thoroughly tested it.

Now I've read it on a different way! lol! Sorry for that... as English is not my native language I can't get those jokes so easily, hehe!

Share this post


Link to post
Share on other sites

apologies for the necro... but this script was working for fast rope up until recently, and that is all i used it for.  It's the only one that I know of that worked with Bad Benson's Enhanced movement mod.  Now, something is broken.  The issue seems simple enough.  A player uses fastrope, hits the ground, moves away and they are then snapped right back up into the helo.

 

The first order of business would be... anyone know of a fast rope script (or mod) that DOES work with BB's Enhanced movement?

 

If not... anybody have the motivation to help solve the issue? Assistance is appreciated.  I cant find anything that would cause this...

 

 

init of the script...

if (BTC_active_fast_rope == 1) then
{
	//Fast roping
	BTC_fast_rope_h = 35;
	BTC_fast_rope_h_min = 5;
BTC_roping_chopper = ["B_Heli_Transport_03_F","B_Heli_Transport_03_unarmed_F","B_Heli_Transport_03_black_F","B_Heli_Transport_03_unarmed_green_F","B_Heli_Transport_01_F","B_Heli_Transport_01_camo_F","B_Heli_Light_01_F","B_Heli_Light_01_stripped_F"];
	_rope = [] execVM "=BTC=_logistic\=BTC=_fast_roping\=BTC=_fast_roping_init.sqf";
};

and the nuts and bolts portion of the fastrope...

BTC_fast_rope =
{
	hint "Fast roping";
	_unit = _this select 0;
	_veh = vehicle _unit;
	_unit action ["EJECT",_veh];
        unassignVehicle _unit;
	_unit setPos (_veh modelToWorld [2,1,-2]);
	_unit switchMove "LadderRifleStatic";
	_unit setDir (getDir _veh - 90);
	While {Alive _unit && (((getPos _unit) select 2) > 1.5)} do {_unit switchMove "LadderRifleStatic";};
	if (Alive _unit && format ["%1",_veh getVariable "BTC_rope"] == "1") then
	{
		_unit setVelocity [0,0,0];
		_unit playMove "LadderRifleDownOff";
		if !(isPlayer _unit) then {_unit move [((getPos _unit) select 0) + 3,((getPos _unit) select 1) + 3,0];};
	};
	if (format ["%1",_veh getVariable "BTC_rope"] != "1") then {hint "The chopper flew away! The rope has been cut!";_unit playMove "LadderRifleDownOff";};
};

.... I can't see anything obvious.

Share this post


Link to post
Share on other sites

Please sign in to comment

You will be able to leave a comment after signing in



Sign In Now
Sign in to follow this  

×