mirror of
https://github.com/Fallingsheep1985/Arma3Epoch.git
synced 2024-08-30 16:42:12 +00:00
lift script
This commit is contained in:
parent
ce91a20c9f
commit
ac22c9708a
@ -0,0 +1,4 @@
|
|||||||
|
_array = _this select 3;
|
||||||
|
_param = _array select 0;
|
||||||
|
_code = _array select 1;
|
||||||
|
_spawn = _param spawn _code;
|
@ -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 [("<t color=""#00FF00"">") + ("Check Vehicle") + "</t>",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 [("<t color=""#00FF00"">") + ("Select") + "</t>",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 [("<t color=""#00FF00"">") + ("Load") + "</t>",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 [("<t color=""#00FF00"">") + ("Drag") + "</t>",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 [("<t color=""#00FF00"">") + ("Place") + "</t>",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 [("<t color=""#00FF00"">") + ("Check Vehicle") + "</t>",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 [("<t color=""#00FF00"">") + ("Select") + "</t>",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 [("<t color=""#00FF00"">") + ("Load") + "</t>",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 [("<t color=""#00FF00"">") + ("Drag") + "</t>",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 [("<t color=""#00FF00"">") + ("Place") + "</t>",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"
|
||||||
|
]
|
||||||
|
,
|
||||||
|
[
|
||||||
|
|
||||||
|
]
|
||||||
|
];
|
||||||
|
*/
|
@ -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 ["<br/>CC: %1/%2",[_veh] call BTC_check_cc,[_veh] call BTC_get_cc] + "<br/>Cargo:<br/>";
|
||||||
|
if (count _cargo > 0) then
|
||||||
|
{
|
||||||
|
{
|
||||||
|
_text = _text + getText (configFile >> "cfgVehicles" >> typeof _x >> "displayName") + format [" [%1]",[_x] call BTC_get_rc] + "<br/>";
|
||||||
|
[_x,_veh] spawn
|
||||||
|
{
|
||||||
|
_obj = _this select 0;
|
||||||
|
_veh = _this select 1;
|
||||||
|
private ["_sleep"];
|
||||||
|
//player sideChat format ["%1",_obj];
|
||||||
|
_unload = _veh addaction [("<t color=""#ffcc00"">") + (format ["UnLoad %1",getText (configFile >> "cfgVehicles" >> typeof _obj >> "displayName")]) + "</t>",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<br/>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 [("<t color=""#00FF00"">") + ("Release") + "</t>",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 = ("<t color=""#ED2744"">" + "Load in " + (_name_veh) + "</t>");
|
||||||
|
_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:<br/>W to move the object towards Nord<br/>A to move the object towards West<br/>S to move the object towards South<br/>D to move the object towards East<br/>Q and Z to modify the elevation<br/>ALT + A/D to modify the direction<br/>C to open/close the camera<br/>CTRL + WASDQZ to move the camera<br/>N to use the nightvision<br/>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];};};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
@ -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 [("<t color=""#ED2744"">") + ("Deploy rope") + "</t>",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 [("<t color=""#ED2744"">") + ("Cut rope") + "</t>",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 [("<t color=""#ED2744"">") + ("Fast rope") + "</t>",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 [("<t color=""#ED2744"">") + ("Deploy rope") + "</t>",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 [("<t color=""#ED2744"">") + ("Cut rope") + "</t>",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 [("<t color=""#ED2744"">") + ("Fast rope") + "</t>",BTC_dir_action,[[player],BTC_fast_rope],-10,true,false,"","player in (assignedCargo (vehicle player)) && format [""%1"",(vehicle player) getVariable ""BTC_rope""] == ""1"""];
|
||||||
|
};
|
||||||
|
}];
|
@ -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";};
|
||||||
|
};
|
94
MPMissions/epoch.Altis/=BTC=_logistic/=BTC=_lift/=BTC=_Hud.h
Normal file
94
MPMissions/epoch.Altis/=BTC=_logistic/=BTC=_lift/=BTC=_Hud.h
Normal file
@ -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 = "";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
@ -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 [("<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=""#ED2744"">" + ("Lift") + "</t>"),BTC_dir_action, [[],BTC_attach_cargo], 9, true, false, "", "[] call BTC_lift_check"];
|
||||||
|
player addAction [("<t color=""#ED2744"">" + ("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=""#ED2744"">" + ("Lift") + "</t>"),BTC_dir_action, [[],BTC_attach_cargo], 9, true, false, "", "[] call BTC_lift_check"];
|
||||||
|
player addAction [("<t color=""#ED2744"">" + ("Release") + "</t>"),BTC_dir_action, [[],BTC_detach_cargo], -9, true, false, "", "BTC_lifted == 1"];
|
||||||
|
};
|
||||||
|
}];
|
||||||
|
};
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
130
MPMissions/epoch.Altis/=BTC=_logistic/=BTC=_logistic_init.sqf
Normal file
130
MPMissions/epoch.Altis/=BTC=_logistic/=BTC=_logistic_init.sqf
Normal file
@ -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];};
|
||||||
|
};
|
27
MPMissions/epoch.Altis/=BTC=_logistic/Hint&Tips.sqf
Normal file
27
MPMissions/epoch.Altis/=BTC=_logistic/Hint&Tips.sqf
Normal file
@ -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
|
||||||
|
};
|
||||||
|
*/
|
BIN
MPMissions/epoch.Altis/=BTC=_logo.paa
Normal file
BIN
MPMissions/epoch.Altis/=BTC=_logo.paa
Normal file
Binary file not shown.
Loading…
Reference in New Issue
Block a user