diff --git a/MPMissions/epoch.Altis/=BTC=_logistic/=BTC=_addAction.sqf b/MPMissions/epoch.Altis/=BTC=_logistic/=BTC=_addAction.sqf new file mode 100644 index 0000000..75085a6 --- /dev/null +++ b/MPMissions/epoch.Altis/=BTC=_logistic/=BTC=_addAction.sqf @@ -0,0 +1,4 @@ +_array = _this select 3; +_param = _array select 0; +_code = _array select 1; +_spawn = _param spawn _code; \ No newline at end of file diff --git a/MPMissions/epoch.Altis/=BTC=_logistic/=BTC=_cargo_system/=BTC=_cargo_system_init.sqf b/MPMissions/epoch.Altis/=BTC=_logistic/=BTC=_cargo_system/=BTC=_cargo_system_init.sqf new file mode 100644 index 0000000..168d4ee --- /dev/null +++ b/MPMissions/epoch.Altis/=BTC=_logistic/=BTC=_cargo_system/=BTC=_cargo_system_init.sqf @@ -0,0 +1,83 @@ +waitUntil {!isNull player}; +waitUntil {player == player}; +#include "=BTC=_functions.sqf" +BTC_action_cargo = false; +BTC_l_dragging = false; +BTC_l_actions_cond = true; + + +_dlg = player addaction [("") + ("Check Vehicle") + "",BTC_dir_action,[[],BTC_l_check_vehicle],-7,false,false,"","BTC_l_actions_cond && count (nearestObjects [player, BTC_def_vehicles, 5]) > 0 || {vehicle player isKindOf _x} count BTC_def_vehicles > 0"]; +_sel = player addaction [("") + ("Select") + "",BTC_dir_action,[[],BTC_l_select],-7,false,false,"","BTC_l_actions_cond && vehicle player == player && count (nearestObjects [player, BTC_def_cargo, 5]) > 0"]; +_load = player addaction [("") + ("Load") + "",BTC_dir_action,[[],BTC_l_load],-7,false,false,"","BTC_l_actions_cond && vehicle player == player && !isNull BTC_cargo_selected && count (nearestObjects [player, BTC_def_vehicles, 5]) > 0"]; +_drag = player addaction [("") + ("Drag") + "",BTC_dir_action,[[],BTC_l_drag],-7,false,false,"","BTC_l_actions_cond && vehicle player == player && count (nearestObjects [player, BTC_def_drag, 5]) > 0"]; +_plac = player addaction [("") + ("Place") + "",BTC_dir_action,[[],BTC_l_placement],-7,false,false,"","BTC_l_actions_cond && vehicle player == player && count (nearestObjects [player, BTC_def_placement, 5]) > 0"]; +_eh = player addEventHandler ["respawn", +{ + _actions = [] spawn + { + waitUntil {Alive player}; + BTC_action_cargo = false; + BTC_l_dragging = false; + BTC_l_actions_cond = true; + _dlg = player addaction [("") + ("Check Vehicle") + "",BTC_dir_action,[[],BTC_l_check_vehicle],-7,false,false,"","BTC_l_actions_cond && count (nearestObjects [player, BTC_def_vehicles, 5]) > 0 || {vehicle player isKindOf _x} count BTC_def_vehicles > 0"]; + _sel = player addaction [("") + ("Select") + "",BTC_dir_action,[[],BTC_l_select],-7,false,false,"","BTC_l_actions_cond && vehicle player == player && count (nearestObjects [player, BTC_def_cargo, 5]) > 0"]; + _load = player addaction [("") + ("Load") + "",BTC_dir_action,[[],BTC_l_load],-7,false,false,"","BTC_l_actions_cond && vehicle player == player && !isNull BTC_cargo_selected && count (nearestObjects [player, BTC_def_vehicles, 5]) > 0"]; + _drag = player addaction [("") + ("Drag") + "",BTC_dir_action,[[],BTC_l_drag],-7,false,false,"","BTC_l_actions_cond && vehicle player == player && count (nearestObjects [player, BTC_def_drag, 5]) > 0"]; + _plac = player addaction [("") + ("Place") + "",BTC_dir_action,[[],BTC_l_placement],-7,false,false,"","BTC_l_actions_cond && vehicle player == player && count (nearestObjects [player, BTC_def_placement, 5]) > 0"]; + }; +}]; +BTC_main_cc = +[ + "Motorcycle",1, + "Car",3, + "Truck",10, + "Wheeled_APC",5, + "Tank",5, + "Ship",3, + "Helicopter",6 +]; +BTC_main_rc = +[ + "ReammoBox_F",2, + "Strategic",2, + "Motorcycle",3, + "Car",11, + "Truck",15, + "Wheeled_APC",20, + "Tank",25, + "Ship",15, + "Helicopter",9999 +]; +/* +BTC_main_c_c = +[ + [ + //Cars + "B_MRAP_01_F", + "B_MRAP_01_gmg_F", + "B_MRAP_01_hmg_F", + "O_MRAP_02_F", + "O_MRAP_02_gmg_F", + "O_MRAP_02_hmg_F", + "B_Quadbike_01_F", + "C_Offroad_01_F", + "O_Quadbike_01_F", + "I_Quadbike_01_F", + "I_MRAP_03_F", + "I_MRAP_03_gmg_F", + "I_MRAP_03_hmg_F", + //Trucks + "B_Truck_01_transport_F", + "B_Truck_01_covered_F", + "I_Truck_02_covered_F", + "O_Truck_02_covered_F", + "I_Truck_02_transport_F", + "O_Truck_02_transport_F", + "O_Truck_02_transport_F" + ] + , + [ + + ] +]; +*/ \ No newline at end of file diff --git a/MPMissions/epoch.Altis/=BTC=_logistic/=BTC=_cargo_system/=BTC=_functions.sqf b/MPMissions/epoch.Altis/=BTC=_logistic/=BTC=_cargo_system/=BTC=_functions.sqf new file mode 100644 index 0000000..b5fcbbf --- /dev/null +++ b/MPMissions/epoch.Altis/=BTC=_logistic/=BTC=_cargo_system/=BTC=_functions.sqf @@ -0,0 +1,321 @@ +/* +Created by =BTC= Giallustio + +Date: 20/03/2013 +Visit us at: http://www.blacktemplars.altervista.org/ +*/ +//Cargo system +BTC_l_check_vehicle = +{ + //Open dlg + _veh = objNull;_array = []; + if (vehicle player == player) then {_array = nearestObjects [player, BTC_def_vehicles, 5];} else {_array = [vehicle player];}; + if (count _array > 0) then {_veh = _array select 0;}; + if (!isNull _veh) then + { + //if (!isNil {_veh getVariable "BTC_cargo_cont"}) then + if (isNil {_veh getVariable "BTC_cargo_cont"}) then {_veh setVariable ["BTC_cargo_cont",[],false];}; + private ["_cargo"]; + _text = ""; + _cargo = _veh getVariable "BTC_cargo_cont"; + _text = _text + "Vehicle: " + getText (configFile >> "cfgVehicles" >> typeof _veh >> "displayName") + format ["
CC: %1/%2",[_veh] call BTC_check_cc,[_veh] call BTC_get_cc] + "
Cargo:
"; + if (count _cargo > 0) then + { + { + _text = _text + getText (configFile >> "cfgVehicles" >> typeof _x >> "displayName") + format [" [%1]",[_x] call BTC_get_rc] + "
"; + [_x,_veh] spawn + { + _obj = _this select 0; + _veh = _this select 1; + private ["_sleep"]; + //player sideChat format ["%1",_obj]; + _unload = _veh addaction [("") + (format ["UnLoad %1",getText (configFile >> "cfgVehicles" >> typeof _obj >> "displayName")]) + "",BTC_dir_action,[[_veh,_obj],BTC_l_unload],7,true,false,"","true"]; + _sleep = time + 15; + waitUntil {BTC_action_cargo || (time > _sleep)}; + _veh removeAction _unload; + }; + } foreach _cargo; + hint parseText _text; + } else {_text = _text + "Empty";hint parseText _text;}; + }; +}; +BTC_l_select = +{ + _array = nearestObjects [player, BTC_def_cargo, 5]; + if (count _array > 0) then + { + BTC_cargo_selected = _array select 0; + if (format ["%1", BTC_cargo_selected getVariable "BTC_cannot_load"] == "1") then + {hint "You can not load this object";BTC_cargo_selected = objNull;} else {hint parseText format ["%1 selected
CR: %2",getText (configFile >> "cfgVehicles" >> typeof BTC_cargo_selected >> "displayName"),[BTC_cargo_selected] call BTC_get_rc];}; + }; +}; +BTC_l_load = +{ + private ["_array","_veh_name","_obj_name"]; + _veh = objNull;_cargo_cont = [];_cond = true; + if (count _this == 0) then {_array = nearestObjects [player, BTC_def_vehicles, 5];} else {_array = _this;}; + if (count _array > 0) then {_veh = _array select 0;} else {hint "Get closer";}; + if (!isNull _veh) then + { + _veh_name = getText (configFile >> "cfgVehicles" >> typeof _veh >> "displayName"); + _obj_name = getText (configFile >> "cfgVehicles" >> typeof BTC_cargo_selected >> "displayName"); + if (([_veh] call BTC_check_cc) + ([BTC_cargo_selected] call BTC_get_rc) > ([_veh] call BTC_get_cc)) then {_cond = false;}; + if (BTC_cargo_selected distance _veh < 15 && speed _veh < 2 && _cond) then + { + hint format ["Loading %1 in %2",_obj_name,_veh_name];BTC_l_dragging = false; + sleep 3; + if (Alive BTC_cargo_selected && Alive _veh && BTC_cargo_selected distance _veh < 15 && speed _veh <= 2 && speed _veh >= -2) then + { + if (isNil {_veh getVariable "BTC_cargo_cont"}) then {_veh setVariable ["BTC_cargo_cont",[],false];}; + _cargo_cont = _veh getVariable "BTC_cargo_cont"; + _cargo_cont = _cargo_cont + [BTC_cargo_selected]; + _veh setVariable ["BTC_cargo_cont",_cargo_cont,true]; + BTC_cargo_selected attachTo [BTC_cargo_repo,[0,0,BTC_id_repo]]; + BTC_id_repo = BTC_id_repo + 15;publicVariable "BTC_id_repo"; + BTC_cargo_selected = objNull; + hint format ["%1 has been loaded in %2",_obj_name,_veh_name]; + } else {hint format ["%1 has not been loaded",_obj_name];}; + } else {if (!_cond) then {hint "There is no enough space in the cargo!";} else {hint "The object is too far from the vehicle or the vehicle is moving!";};}; + }; +}; +BTC_l_unload = +{ + _veh = _this select 0; + _obj = _this select 1; + BTC_action_cargo = true; + _cargo_cont = _veh getVariable "BTC_cargo_cont"; + _id = _cargo_cont find _obj; + if (_id != -1) then + { + _veh_name = getText (configFile >> "cfgVehicles" >> typeof _veh >> "displayName"); + _obj_name = getText (configFile >> "cfgVehicles" >> typeof _obj >> "displayName"); + hint format ["Unloading %1 from %2",_obj_name,_veh_name]; + sleep 3; + hint format ["%1 has been unloaded",_obj_name,_veh_name]; + _cargo_cont set [_id,0]; + _cargo_cont = _cargo_cont - [0]; + _veh setVariable ["BTC_cargo_cont",_cargo_cont,true]; + _height = getPos (vehicle player) select 2; + deTach _obj; + _obj setVelocity [0,0,0]; + _obj setpos (_veh modelToWorld [-3,0,0]); + switch (true) do + { + case (_height >= 20): + { + _obj_para = [_veh,_obj,"B_Parachute_02_F"] spawn BTC_l_paradrop; + }; + case ((_height < 20) && (_height >= 2)): + { + _obj setPos [getpos _veh select 0,getpos _veh select 1,(getpos _veh select 2) -1]; + sleep 0.1; + if (_obj isKindOf "Strategic") then {_obj_fall = [_obj] spawn BTC_l_obj_fall;}; + }; + case (_height < 2): + { + _obj setpos (_veh modelToWorld [-3,0,0]); + }; + }; + }; + sleep 1; + BTC_action_cargo = false; +}; +BTC_l_release = +{ + BTC_l_dragging = false; +}; +BTC_l_drag = +{ + private ["_drag","_veh"]; + _array = nearestObjects [player, BTC_def_drag, 5]; + if (count _array > 0) then {_drag = _array select 0;}; + if (isNull _drag) exitWith {}; + if (format ["%1", _drag getVariable "BTC_cannot_drag"] == "1") exitWith {hint "You can't drag this object!";}; + if (_drag distance player > 4) exitWith {hint "Too distance from the object!";}; + if (BTC_l_dragging) exitWith {hint "You can't drag more than one object!";}; + if (format ["%1", _drag getVariable "BTC_being_drag"] == "1") exitWith {hint "You can't drag this object! it's being dragged!";}; + BTC_l_dragging = true; + _drag setvariable ["BTC_Being_Drag",1,true]; + BTC_display_EH_l = (findDisplay 46) displayAddEventHandler ["KeyDown", "if (_this select 1 == 45) then {_anim = [] spawn {sleep 0.01;player switchMove ""acinpknlmstpsraswrfldnon"";};};"]; + player playMove "acinpknlmstpsraswrfldnon"; + _drag attachto [player,[0,2,0.2]]; + sleep 0.1; + if ((position _drag select 2) < - 0.5) then {_drag attachto [player,[0,1,1.2]];}; + _release = player addaction [("") + ("Release") + "",BTC_dir_action,[[],BTC_l_release],7,true,false,"","true"]; + WaitUntil {!Alive player || ((animationstate player == "acinpknlmstpsraswrfldnon") || (animationstate player == "acinpknlmwlksraswrfldb"))}; + _act = 0; + While {BTC_l_dragging && vehicle player == player && Alive player && ((animationstate player == "acinpknlmstpsraswrfldnon") || (animationstate player == "acinpknlmwlksraswrfldb"))} do + { + /*_array = nearestObjects [player, BTC_def_vehicles, 5]; + if (count _array == 0) then {_veh = objNull;}; + if (count _array > 0 && _veh != _array select 0) then + { + _veh = _array select 0; + _name_veh = getText (configFile >> "cfgVehicles" >> typeof _veh >> "displayName"); + _text_action = ("" + "Load in " + (_name_veh) + ""); + _load = player addAction [_text_action,BTC_dir_action, [[_veh],BTC_l_load], 7, true, true]; + _act = 1; + }; + if (count _array == 0 && _act == 1) then {player removeAction _load;_act = 0;};*/ + sleep 0.1; + }; + player playMoveNow "AmovPknlMstpSrasWrflDnon";BTC_l_dragging = false; + player removeAction _release;//player removeAction _load; + (findDisplay 46) displayRemoveEventHandler ["KeyDown",BTC_display_EH_l]; + if !(isNull _drag) then + { + detach _drag; + //_rel_pos = player modelToWorld [0,1,0]; + //BTC_cargo_selected setpos _rel_pos; + _drag setvariable ["BTC_Being_Drag",0,true]; + }; +}; +BTC_get_cc = +{ + private ["_n","_array_class"]; + _obj = _this select 0; + _type = typeOf _obj; + _cc = 0;_cond = false; + for "_i" from 0 to (count BTC_def_cc - 1) do + { + if (typeName (BTC_def_cc select _i) == "STRING" && !_cond) then + { + if (!_cond && _type == (BTC_def_cc select _i)) then {_cc = (BTC_def_cc select (_i + 1));_cond = true;}; + }; + }; + if (!_cond) then + { + for "_i" from 0 to (count BTC_main_cc - 1) do + { + if (typeName (BTC_main_cc select _i) == "STRING") then + { + if (!_cond && _type isKindOf (BTC_main_cc select _i)) then {_cc = (BTC_main_cc select (_i + 1));_cond = true;}; + }; + }; + }; + _cc +}; +BTC_get_rc = +{ + private ["_n","_array_class"]; + _obj = _this select 0; + _type = typeOf _obj; + _rc = 0;_cond = false; + for "_i" from 0 to (count BTC_def_rc - 1) do + { + if (typeName (BTC_def_rc select _i) == "STRING" && !_cond) then + { + if (!_cond && _type == (BTC_def_rc select _i)) then {_rc = (BTC_def_rc select (_i + 1));_cond = true;}; + }; + }; + if (!_cond) then + { + for "_i" from 0 to (count BTC_main_rc - 1) do + { + if (typeName (BTC_main_rc select _i) == "STRING" && !_cond) then + { + if (!_cond && _type isKindOf (BTC_main_rc select _i)) then {_rc = (BTC_main_rc select (_i + 1));_cond = true;}; + }; + }; + }; + _rc +}; +BTC_check_cc = +{ + private ["_n","_array_class","_cargo"]; + _veh = _this select 0; + if (isNil {_veh getVariable "BTC_cargo_cont"}) then {_veh setVariable ["BTC_cargo_cont",[],false];}; + _cargo = _veh getVariable "BTC_cargo_cont"; + _tot_rc = 0; + {_tot_rc = _tot_rc + ([_x] call BTC_get_rc);} foreach _cargo; + _tot_rc +}; +//Placement +BTC_l_placement = +{ + private ["_plac","_veh","_array"]; + _array = nearestObjects [player, BTC_def_placement, 5]; + if (count _array > 0) then {_plac = _array select 0;}; + if (isNull _plac) exitWith {}; + if (format ["%1", _plac getVariable "BTC_cannot_place"] == "1") exitWith {hint "You can't place this object!";}; + BTC_l_plac_obj = _plac; + BTC_l_camera = objNull; + BTC_l_end = false; + BTC_l_camera_placement = false; + BTC_l_camera_created = false; + BTC_l_camera_nvg = false; + BTC_l_camera_EH_keydown = (findDisplay 46) displayAddEventHandler ["KeyDown", "_keydown = _this spawn BTC_l_keydown"]; + BTC_l_central_pos = getposATL BTC_l_plac_obj; + BTC_cam_rel_pos = [0,-6,15]; + BTC_l_plac_obj enableSimulation false; + BTC_l_actions_cond = false; + while {!BTC_l_end && Alive player} do + { + if (!BTC_l_camera_placement) then {player playMoveNow "amovpercmstpsraswrfldnon";}; + if (BTC_l_camera_placement && !BTC_l_camera_created) then {_cam = [BTC_l_plac_obj] spawn BTC_l_create_camera;}; + if (!BTC_l_camera_placement && BTC_l_camera_created) then {_cam = [BTC_l_plac_obj] spawn BTC_l_destroy_camera;}; + if (BTC_l_camera_nvg) then {camusenvg true;} else {camusenvg false;}; + BTC_l_camera camSetPos (BTC_l_plac_obj modelToWorld BTC_cam_rel_pos); + BTC_l_camera camCommit 0; + hintSilent parseText "Keys:
W to move the object towards Nord
A to move the object towards West
S to move the object towards South
D to move the object towards East
Q and Z to modify the elevation
ALT + A/D to modify the direction
C to open/close the camera
CTRL + WASDQZ to move the camera
N to use the nightvision
Back to get back to the game"; + sleep 0.01; + }; + BTC_l_actions_cond = true; + BTC_l_plac_obj enableSimulation true; + BTC_l_plac_obj = objNull; + hintSilent "";titleText ["", "PLAIN"]; + if (BTC_l_camera_placement) then {_cam = [BTC_l_plac_obj] spawn BTC_l_destroy_camera;}; + (findDisplay 46) displayRemoveEventHandler ["KeyDown",BTC_l_camera_EH_keydown]; +}; +BTC_l_create_camera = +{ + _obj = _this select 0; + BTC_l_camera = "camera" camCreate (position _obj); + BTC_l_camera camSetTarget _obj; + BTC_l_camera cameraEffect ["internal", "BACK"]; + BTC_l_camera camSetPos (_obj modelToWorld [0,-6,15]); + BTC_l_camera camCommit 0; + showCinemaBorder false; + BTC_l_camera_created = true; +}; +BTC_l_destroy_camera = +{ + player cameraEffect ["TERMINATE", "BACK"]; + camDestroy BTC_l_camera; + BTC_l_camera = objNull; + BTC_l_camera_placement = false; + BTC_l_camera_created = false; + BTC_l_camera_nvg = false; +}; +BTC_l_keydown = +{ + private ["_key","_dir"]; + if (count _this > 1) then + { + _key = _this select 1; + _ctrl = _this select 3; + _alt = _this select 4; + //player globalchat format ["%1 - %2",_key,_this]; + switch (true) do + { + case (_key == 14) : {BTC_l_end = true;}; + case (_key == 30 && !_alt && !_ctrl) : {BTC_l_plac_obj setpos [(getpos BTC_l_plac_obj select 0) - 0.1,(getpos BTC_l_plac_obj select 1),(getposATL BTC_l_plac_obj select 2)];if ([BTC_l_central_pos,BTC_l_plac_obj] call BIS_fnc_distance2D > BTC_l_placement_area) then {player sideChat "Out of the placement zone!";BTC_l_plac_obj setpos [(getpos BTC_l_plac_obj select 0) + 0.1,(getpos BTC_l_plac_obj select 1),(getposATL BTC_l_plac_obj select 2)];};}; + case (_key == 32 && !_alt && !_ctrl) : {BTC_l_plac_obj setpos [(getpos BTC_l_plac_obj select 0) + 0.1,(getpos BTC_l_plac_obj select 1),(getposATL BTC_l_plac_obj select 2)];if ([BTC_l_central_pos,BTC_l_plac_obj] call BIS_fnc_distance2D > BTC_l_placement_area) then {player sideChat "Out of the placement zone!";BTC_l_plac_obj setpos [(getpos BTC_l_plac_obj select 0) - 0.1,(getpos BTC_l_plac_obj select 1),(getposATL BTC_l_plac_obj select 2)];};}; + case (_key == 31 && !_ctrl) : {BTC_l_plac_obj setpos [(getpos BTC_l_plac_obj select 0),(getpos BTC_l_plac_obj select 1) - 0.1,(getposATL BTC_l_plac_obj select 2)];if ([BTC_l_central_pos,BTC_l_plac_obj] call BIS_fnc_distance2D > BTC_l_placement_area) then {player sideChat "Out of the placement zone!";BTC_l_plac_obj setpos [(getpos BTC_l_plac_obj select 0),(getpos BTC_l_plac_obj select 1) + 0.1,(getposATL BTC_l_plac_obj select 2)];};}; + case (_key == 17 && !_ctrl) : {BTC_l_plac_obj setpos [(getpos BTC_l_plac_obj select 0),(getpos BTC_l_plac_obj select 1) + 0.1,(getposATL BTC_l_plac_obj select 2)];if ([BTC_l_central_pos,BTC_l_plac_obj] call BIS_fnc_distance2D > BTC_l_placement_area) then {player sideChat "Out of the placement zone!";BTC_l_plac_obj setpos [(getpos BTC_l_plac_obj select 0),(getpos BTC_l_plac_obj select 1) - 0.1,(getposATL BTC_l_plac_obj select 2)];};}; + case (_key == 44 && !_ctrl) : {BTC_l_plac_obj setpos [(getpos BTC_l_plac_obj select 0),(getpos BTC_l_plac_obj select 1),(getposATL BTC_l_plac_obj select 2) - 0.1];if (abs (((BTC_l_central_pos) select 2) - ((getposATL BTC_l_plac_obj) select 2)) > BTC_l_placement_area) then {BTC_l_plac_obj setpos [(getpos BTC_l_plac_obj select 0),(getpos BTC_l_plac_obj select 1),(getposATL BTC_l_plac_obj select 2) + 0.1];};}; + case (_key == 16 && !_ctrl) : {BTC_l_plac_obj setpos [(getpos BTC_l_plac_obj select 0),(getpos BTC_l_plac_obj select 1),(getposATL BTC_l_plac_obj select 2) + 0.1];if (abs (((BTC_l_central_pos) select 2) - ((getposATL BTC_l_plac_obj) select 2)) > BTC_l_placement_area) then {BTC_l_plac_obj setpos [(getpos BTC_l_plac_obj select 0),(getpos BTC_l_plac_obj select 1),(getposATL BTC_l_plac_obj select 2) - 0.1];};}; + case (_key == 30 && _alt && !_ctrl) : {_dir = getdir BTC_l_plac_obj;BTC_l_plac_obj setDir (_dir - 1);}; + case (_key == 32 && _alt && !_ctrl) : {_dir = getdir BTC_l_plac_obj;BTC_l_plac_obj setDir (_dir + 1);}; + case (_key == 46) : {if (BTC_l_camera_placement) then {BTC_l_camera_placement = false;} else {BTC_l_camera_placement = true;};}; + case (_key == 49) : {if (BTC_l_camera_nvg) then {BTC_l_camera_nvg = false;} else {BTC_l_camera_nvg = true;};}; + + case (BTC_l_camera_placement && _key == 30 && _ctrl) : {private ["_n"];_n = (BTC_cam_rel_pos select 0) - 0.5;if !((abs _n) > BTC_l_placement_area) then {BTC_cam_rel_pos = [_n,BTC_cam_rel_pos select 1,BTC_cam_rel_pos select 2];};}; + case (BTC_l_camera_placement && _key == 32 && _ctrl) : {private ["_n"];_n = (BTC_cam_rel_pos select 0) + 0.5;if !((abs _n) > BTC_l_placement_area) then {BTC_cam_rel_pos = [_n,BTC_cam_rel_pos select 1,BTC_cam_rel_pos select 2];};}; + case (BTC_l_camera_placement && _key == 31 && _ctrl) : {private ["_n"];_n = (BTC_cam_rel_pos select 1) - 0.5;if !((abs _n) > BTC_l_placement_area) then {BTC_cam_rel_pos = [BTC_cam_rel_pos select 0,_n,BTC_cam_rel_pos select 2];};}; + case (BTC_l_camera_placement && _key == 17 && _ctrl) : {private ["_n"];_n = (BTC_cam_rel_pos select 1) + 0.5;if !((abs _n) > BTC_l_placement_area) then {BTC_cam_rel_pos = [BTC_cam_rel_pos select 0,_n,BTC_cam_rel_pos select 2];};}; + case (BTC_l_camera_placement && _key == 44 && _ctrl) : {private ["_n"];_n = (BTC_cam_rel_pos select 2) - 0.5;if !((abs _n) > BTC_l_placement_area) then {BTC_cam_rel_pos = [BTC_cam_rel_pos select 0,BTC_cam_rel_pos select 1,_n];};}; + case (BTC_l_camera_placement && _key == 16 && _ctrl) : {private ["_n"];_n = (BTC_cam_rel_pos select 2) + 0.5;if !((abs _n) > BTC_l_placement_area) then {BTC_cam_rel_pos = [BTC_cam_rel_pos select 0,BTC_cam_rel_pos select 1,_n];};}; + }; + }; +}; \ No newline at end of file diff --git a/MPMissions/epoch.Altis/=BTC=_logistic/=BTC=_fast_roping/=BTC=_fast_roping_init.sqf b/MPMissions/epoch.Altis/=BTC=_logistic/=BTC=_fast_roping/=BTC=_fast_roping_init.sqf new file mode 100644 index 0000000..865c68b --- /dev/null +++ b/MPMissions/epoch.Altis/=BTC=_logistic/=BTC=_fast_roping/=BTC=_fast_roping_init.sqf @@ -0,0 +1,22 @@ +/* +Created by =BTC= Giallustio + +Date: 20/03/2013 +Visit us at: http://www.blacktemplars.altervista.org/ +*/ +waitUntil {!isNull player}; +waitUntil {player == player}; +#include "=BTC=_functions.sqf" +_rope = player addaction [("") + ("Deploy rope") + "",BTC_dir_action,[[],BTC_deploy_rope],-10,true,false,"","typeOf (vehicle player) in BTC_roping_chopper && player == driver vehicle player && format [""%1"",(vehicle player) getVariable ""BTC_rope""] != ""1"" && ((getPos (vehicle player)) select 2) < BTC_fast_rope_h && ((getPos (vehicle player)) select 2) > BTC_fast_rope_h_min && speed (vehicle player) < 2"]; +_rope = player addaction [("") + ("Cut rope") + "",BTC_dir_action,[[],BTC_cut_rope],-10,true,false,"","typeOf (vehicle player) in BTC_roping_chopper && player == driver (vehicle player) && format [""%1"",(vehicle player) getVariable ""BTC_rope""] == ""1"""]; +_out = player addaction [("") + ("Fast rope") + "",BTC_dir_action,[[player],BTC_fast_rope],-10,true,false,"","player in (assignedCargo (vehicle player)) && format [""%1"",(vehicle player) getVariable ""BTC_rope""] == ""1"""]; +_eh = player addEventHandler ["respawn", +{ + _actions = [] spawn + { + waitUntil {Alive player}; + _rope = player addaction [("") + ("Deploy rope") + "",BTC_dir_action,[[],BTC_deploy_rope],-10,true,false,"","typeOf (vehicle player) in BTC_roping_chopper && player == driver vehicle player && format [""%1"",(vehicle player) getVariable ""BTC_rope""] != ""1"" && ((getPos (vehicle player)) select 2) < BTC_fast_rope_h && ((getPos (vehicle player)) select 2) > BTC_fast_rope_h_min && speed (vehicle player) < 2"]; + _rope = player addaction [("") + ("Cut rope") + "",BTC_dir_action,[[],BTC_cut_rope],-10,true,false,"","typeOf (vehicle player) in BTC_roping_chopper && player == driver (vehicle player) && format [""%1"",(vehicle player) getVariable ""BTC_rope""] == ""1"""]; + _out = player addaction [("") + ("Fast rope") + "",BTC_dir_action,[[player],BTC_fast_rope],-10,true,false,"","player in (assignedCargo (vehicle player)) && format [""%1"",(vehicle player) getVariable ""BTC_rope""] == ""1"""]; + }; +}]; \ No newline at end of file diff --git a/MPMissions/epoch.Altis/=BTC=_logistic/=BTC=_fast_roping/=BTC=_functions.sqf b/MPMissions/epoch.Altis/=BTC=_logistic/=BTC=_fast_roping/=BTC=_functions.sqf new file mode 100644 index 0000000..0570753 --- /dev/null +++ b/MPMissions/epoch.Altis/=BTC=_logistic/=BTC=_fast_roping/=BTC=_functions.sqf @@ -0,0 +1,32 @@ +BTC_deploy_rope = +{ + hint "Rope deployed"; + _veh = vehicle player; + _veh setVariable ["BTC_rope",1,true]; + WaitUntil {!Alive _veh || !Alive player || (((getPos player) select 2) > BTC_fast_rope_h) || format ["%1",_veh getVariable "BTC_rope"] != "1"}; + _veh setVariable ["BTC_rope",0,true]; +}; +BTC_cut_rope = +{ + hint "Rope cut"; + _veh = vehicle player; + _veh setVariable ["BTC_rope",0,true]; +}; +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";}; +}; \ No newline at end of file diff --git a/MPMissions/epoch.Altis/=BTC=_logistic/=BTC=_lift/=BTC=_Hud.h b/MPMissions/epoch.Altis/=BTC=_logistic/=BTC=_lift/=BTC=_Hud.h new file mode 100644 index 0000000..bd33524 --- /dev/null +++ b/MPMissions/epoch.Altis/=BTC=_logistic/=BTC=_lift/=BTC=_Hud.h @@ -0,0 +1,94 @@ +/* +x = (_xPos/100) * safezoneW + safezoneX; +y = (_yPos/100) * safezoneH + safezoneY; +w = (_width/100) * safezoneW; +h = (_height/100) * safezoneH; +*/ +class BTC_Hud +{ + idd = 1000; + movingEnable=0; + duration=1e+011; + name = "BTC_Hud_Name"; + onLoad = "uiNamespace setVariable [""HUD"", _this select 0];"; + controlsBackground[] = {}; + objects[] = {}; + class controls + { + class Radar + { + type = 0; + idc = 1001; + style = 48; + x = (SafeZoneW+2*SafeZoneX) - 0.3;//safezonex + 0.1;//0.9//- 0.1 + y = (SafeZoneH+2*SafeZoneY) - 0.15;//safezoney + 0.1;//0.85 + w = 0.3; + h = 0.4; + font = "PuristaMedium"; + sizeEx = 0.03; + colorBackground[] = {0, 0, 0, 0}; + colorText[] = {1, 1, 1, 1}; + text = "=BTC=_Logistic\=BTC=_Lift\img\igui_radar_air_ca.paa"; + }; + class Img_Obj + { + type = 0; + idc = 1002; + style = 48; + x = (SafeZoneW+2*SafeZoneX) - 0.155; + y = (SafeZoneH+2*SafeZoneY) + 0.045; + w = 0.01; + h = 0.01; + font = "PuristaMedium"; + sizeEx = 0.04; + colorBackground[] = {0, 0, 0, 0}; + colorText[] = {1, 1, 1, 1}; + text = "=BTC=_Logistic\=BTC=_Lift\img\=BTC=_Obj.paa"; + }; + class Pic_Obj + { + type = 0; + idc = 1003; + style = 48; + x = (SafeZoneW+2*SafeZoneX) - 0.325; + y = (SafeZoneH+2*SafeZoneY) - 0.23; + w = 0.1; + h = 0.1; + font = "PuristaMedium"; + sizeEx = 0.03; + colorBackground[] = {0, 0, 0, 0}; + colorText[] = {1, 1, 1, 1}; + text = ""; + }; + class Arrow + { + type = 0; + idc = 1004; + style = 48; + x = (SafeZoneW+2*SafeZoneX) - 0.05; + y = (SafeZoneH+2*SafeZoneY) - 0.15; + w = 0.05; + h = 0.05; + font = "PuristaMedium"; + sizeEx = 0.03; + colorBackground[] = {0, 0, 0, 0}; + colorText[] = {1, 1, 1, 1}; + text = ""; + }; + class Type_Obj + { + type = 0; + idc = 1005; + style = 0x00; + x = (SafeZoneW+2*SafeZoneX) - 0.23; + y = (SafeZoneH+2*SafeZoneY) - 0.335; + w = 0.3; + h = 0.3; + font = "PuristaMedium"; + sizeEx = 0.03; + colorBackground[] = {0, 0, 0, 0}; + colorText[] = {1, 1, 1, 1}; + text = ""; + }; + }; + }; \ No newline at end of file diff --git a/MPMissions/epoch.Altis/=BTC=_logistic/=BTC=_lift/=BTC=_lift_init.sqf b/MPMissions/epoch.Altis/=BTC=_logistic/=BTC=_lift/=BTC=_lift_init.sqf new file mode 100644 index 0000000..3d157e5 --- /dev/null +++ b/MPMissions/epoch.Altis/=BTC=_logistic/=BTC=_lift/=BTC=_lift_init.sqf @@ -0,0 +1,190 @@ +/* +Created by =BTC= Giallustio + +Date: 20/03/2013 +Visit us at: http://www.blacktemplars.altervista.org/ +*/ +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"]; + if (!(vehicle player isKindOf "Helicopter") || BTC_lifted == 1) exitWith {false}; + _array = [vehicle player] call BTC_get_liftable_array; + _chopper = vehicle player; + _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 < 2) 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 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 = vehicle player; + _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_pos = getPosATL _cargo; + _rel_pos = _chopper worldToModel _cargo_pos; + _height = (_rel_pos select 2) + 2.5; + _cargo attachTo [_chopper, [0,0,_height]]; + _name_cargo = getText (configFile >> "cfgVehicles" >> typeof _cargo >> "displayName"); + _chopper vehicleChat format ["%1 lifted", _name_cargo]; + BTC_cargo_lifted = _cargo; +}; +BTC_detach_cargo = +{ + detach BTC_cargo_lifted; + _name_cargo = getText (configFile >> "cfgVehicles" >> typeof BTC_cargo_lifted >> "displayName"); + vehicle player vehicleChat format ["%1 dropped", _name_cargo]; + if (BTC_cargo_lifted isKindOf "Strategic") then {_obj_fall = [BTC_cargo_lifted] spawn BTC_l_Obj_Fall;} else + { + _vel = velocity (vehicle player); + BTC_cargo_lifted setVelocity _vel; + }; + BTC_cargo_lifted = ObjNull; + BTC_lifted = 0; +}; +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 [("" + ("Hud On\Off") + ""),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 [("" + ("Camera On\Off") + ""),BTC_dir_action, [[],BTC_l_camera], -9, false, false, "", "typeOf (vehicle player) in BTC_l_def_veh_pip"];}; + player addAction [("" + ("Lift") + ""),BTC_dir_action, [[],BTC_attach_cargo], 9, true, false, "", "[] call BTC_lift_check"]; + player addAction [("" + ("Release") + ""),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 [("" + ("Hud On\Off") + ""),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 [("" + ("Camera On\Off") + ""),BTC_dir_action, [[],BTC_l_camera], -9, false, false, "", "typeOf (vehicle player) in BTC_l_def_veh_pip"];}; + player addAction [("" + ("Lift") + ""),BTC_dir_action, [[],BTC_attach_cargo], 9, true, false, "", "[] call BTC_lift_check"]; + player addAction [("" + ("Release") + ""),BTC_dir_action, [[],BTC_detach_cargo], -9, true, false, "", "BTC_lifted == 1"]; + }; + }]; +}; \ No newline at end of file diff --git a/MPMissions/epoch.Altis/=BTC=_logistic/=BTC=_lift/img/=BTC=_Obj.paa b/MPMissions/epoch.Altis/=BTC=_logistic/=BTC=_lift/img/=BTC=_Obj.paa new file mode 100644 index 0000000..bebf73a Binary files /dev/null and b/MPMissions/epoch.Altis/=BTC=_logistic/=BTC=_lift/img/=BTC=_Obj.paa differ diff --git a/MPMissions/epoch.Altis/=BTC=_logistic/=BTC=_lift/img/arrow_down_ca.paa b/MPMissions/epoch.Altis/=BTC=_logistic/=BTC=_lift/img/arrow_down_ca.paa new file mode 100644 index 0000000..8bfac0b Binary files /dev/null and b/MPMissions/epoch.Altis/=BTC=_logistic/=BTC=_lift/img/arrow_down_ca.paa differ diff --git a/MPMissions/epoch.Altis/=BTC=_logistic/=BTC=_lift/img/arrow_up_ca.paa b/MPMissions/epoch.Altis/=BTC=_logistic/=BTC=_lift/img/arrow_up_ca.paa new file mode 100644 index 0000000..3034f05 Binary files /dev/null and b/MPMissions/epoch.Altis/=BTC=_logistic/=BTC=_lift/img/arrow_up_ca.paa differ diff --git a/MPMissions/epoch.Altis/=BTC=_logistic/=BTC=_lift/img/igui_radar_air_ca.paa b/MPMissions/epoch.Altis/=BTC=_logistic/=BTC=_lift/img/igui_radar_air_ca.paa new file mode 100644 index 0000000..36e6013 Binary files /dev/null and b/MPMissions/epoch.Altis/=BTC=_logistic/=BTC=_lift/img/igui_radar_air_ca.paa differ diff --git a/MPMissions/epoch.Altis/=BTC=_logistic/=BTC=_lift/img/objective_complete_ca.paa b/MPMissions/epoch.Altis/=BTC=_logistic/=BTC=_lift/img/objective_complete_ca.paa new file mode 100644 index 0000000..8727813 Binary files /dev/null and b/MPMissions/epoch.Altis/=BTC=_logistic/=BTC=_lift/img/objective_complete_ca.paa differ diff --git a/MPMissions/epoch.Altis/=BTC=_logistic/=BTC=_lift/img/objective_incomplete_ca.paa b/MPMissions/epoch.Altis/=BTC=_logistic/=BTC=_lift/img/objective_incomplete_ca.paa new file mode 100644 index 0000000..7f20fbc Binary files /dev/null and b/MPMissions/epoch.Altis/=BTC=_logistic/=BTC=_lift/img/objective_incomplete_ca.paa differ diff --git a/MPMissions/epoch.Altis/=BTC=_logistic/=BTC=_logistic_init.sqf b/MPMissions/epoch.Altis/=BTC=_logistic/=BTC=_logistic_init.sqf new file mode 100644 index 0000000..0b15af0 --- /dev/null +++ b/MPMissions/epoch.Altis/=BTC=_logistic/=BTC=_logistic_init.sqf @@ -0,0 +1,130 @@ +/* +Created by =BTC= Giallustio +Version: 0.14 rc 1 +Date: 20/03/2013 +Visit us at: http://www.blacktemplars.altervista.org/ +*/ +if (isServer) then +{ + BTC_id_repo = 10;publicVariable "BTC_id_repo"; + BTC_cargo_repo = "Land_HBarrierBig_F" createVehicle [- 5000,- 5000,0];publicVariable "BTC_cargo_repo"; +}; +if (isDedicated) exitwith {}; +BTC_active_lift = 1; +BTC_active_fast_rope = 1; +BTC_active_cargo = 1; +//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"]; + BTC_lift = 1; + BTC_lifted = 0; + BTC_lift_min_h = 7; + BTC_lift_max_h = 12; + BTC_lift_radius = 3; + BTC_def_hud = 1; + BTC_def_pip = 1; + BTC_l_def_veh_pip = ["B_Heli_Light_01_F","O_Heli_Light_02_F","B_Heli_Transport_01_F","I_Heli_Transport_02_F"]; + 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; + _lift = [] execVM "=BTC=_logistic\=BTC=_lift\=BTC=_lift_init.sqf"; + BTC_get_liftable_array = + { + _chopper = _this select 0; + _array = []; + switch (typeOf _chopper) do + { + //MH9 + case "B_Heli_Light_01_F" : {_array = ["Motorcycle","ReammoBox","ReammoBox_F","Quadbike_01_base_F","Strategic"];}; + //PO-30 + case "O_Heli_Light_02_F" : {_array = ["Motorcycle","ReammoBox","ReammoBox_F","Strategic","StaticWeapon","Car"];}; + //UH80 + case "B_Heli_Transport_01_F" : {_array = ["Motorcycle","ReammoBox","ReammoBox_F","Strategic","StaticWeapon","Car","Truck","Wheeled_APC","Air","Ship"];}; + //CH49 + case "I_Heli_Transport_02_F" : {_array = ["Motorcycle","ReammoBox","ReammoBox_F","Strategic","StaticWeapon","Car","Truck","Wheeled_APC","Tracked_APC","APC_Tracked_01_base_F","APC_Tracked_02_base_F","Air","Ship"];}; + + }; + _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","O_Heli_Light_02_F","B_Heli_Transport_01_F","I_Heli_Transport_02_F"]; + _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 = ["Tank","Wheeled_APC","Truck","Car","Helicopter"]; + 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 = + [ + "B_Quadbike_01_F",2, + //Trucks + "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_02_transport_F",10 + ]; + BTC_def_rc = + [ + "Land_BagBunker_Small_F",4 + ]; +}; +//Functions +BTC_l_paradrop = +{ + _veh = _this select 0; + _dropped = _this select 1; + _chute_type = _this select 2; + private ["_chute"]; + _dropped_type = typeOf _dropped; + _dropped attachTo [_veh,[0,2,-5]]; + sleep 0.1; + detach _dropped; + _dropped setvariable ["BTC_cannot_lift",1,false]; + waitUntil {_dropped distance _veh > 50}; + _dropped setvariable ["BTC_cannot_lift",0,false]; + _chute = createVehicle [_chute_type, getposatl _dropped, [], 0, "FLY"]; + _smoke = "SmokeshellGreen" createVehicle position _dropped; + _chem = "Chemlight_green" createVehicle position _dropped; + _smoke attachto [_dropped,[0,0,0]]; + _chem attachto [_dropped,[0,0,0]]; + _dropped attachTo [_chute,[0,0,0]]; + _heigh = 0; + while {((getPos _chute) select 2) > 0.3} do {sleep 1;_heigh = (getPos _chute) select 2;}; + detach _dropped; + +}; +BTC_l_obj_fall = +{ + _obj = _this select 0; + _height = (getPos _obj) select 2; + _fall = 0.09; + while {((getPos _obj) select 2) > 0.1} do + { + + _fall = (_fall * 1.1); + _obj setPos [getPos _obj select 0, getPos _obj select 1, _height]; + _height = _height - _fall; + //hint format ["%1 - %2", (getPos _obj) select 2,_height]; + sleep 0.01; + }; + //if (((getPos _obj) select 2) < 0.3) then {_obj setPos [getPos _obj select 0, getPos _obj select 1, 0.2];}; +}; \ No newline at end of file diff --git a/MPMissions/epoch.Altis/=BTC=_logistic/Hint&Tips.sqf b/MPMissions/epoch.Altis/=BTC=_logistic/Hint&Tips.sqf new file mode 100644 index 0000000..1b3429d --- /dev/null +++ b/MPMissions/epoch.Altis/=BTC=_logistic/Hint&Tips.sqf @@ -0,0 +1,27 @@ +/* +Hint & Tips + +obj setvariable ["BTC_cannot_lift",1,true]; // Make an object not liftable +obj setVariable ["BTC_cannot_drag",1,true]; // Make an object not draggable +obj setVariable ["BTC_cannot_load",1,true]; // Make an object not loadable +BTC_lift_min_h = 7; // Min height required to lift an object +BTC_lift_max_h = 12; // Max height required to lift an object +BTC_lift_radius = 2; // You have to stay in this radius to lift an object +BTC_lift_pilot = []; // Leave empty if all soldiers can use choppers to lift. If only pilot can -> BTC_lift_pilot = ["US_Soldier_Pilot_EP1","USMC_Soldier_Pilot", ...etc etc]; + +BTC_Get_liftable_array = +{ + _chopper = _this select 0; + _array = []; + switch (typeOf _chopper) do + { + case "MH6J_EP1" : {_array = ["Motorcycle","ReammoBox"];}; // Modify the array to change liftable objects by the chopper ex -> _array = ["Motorcycle","ReammoBox","Wheeled_APC", ... etc etc]; + // To add a new chopper class: copy the previous line: + // case "MH6J_EP1" : {_array = ["Motorcycle","ReammoBox"];}; + // modify the class in the "" -> "Mi17_Ins" + // case "Mi17_Ins" : {_array = ["Motorcycle","ReammoBox"];}; + // modify the _array as u want like above + }; + _array +}; +*/ \ No newline at end of file diff --git a/MPMissions/epoch.Altis/=BTC=_logo.paa b/MPMissions/epoch.Altis/=BTC=_logo.paa new file mode 100644 index 0000000..9edd612 Binary files /dev/null and b/MPMissions/epoch.Altis/=BTC=_logo.paa differ