1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
|
Private ["_action","_actionID","_caller","_index","_isAttached","_lifter","_position","_sorted","_type","_vehicle","_vehicles"];
_lifter = _this select 0;
_caller = _this select 1;
_actionID = _this select 2;
if (_caller != driver _lifter) exitWith {};
if ((typeOf _lifter) in Zeta_Special) then {
if (speed _lifter > 20) exitWith {};
} else {
if ((speed _lifter > 20)||((getpos _lifter select 2)<2)) exitWith {};
};
//--- nearEntities handle living units.
_vehicles = _lifter nearEntities [Zeta_Types, 10];
if (count _vehicles < 1) exitWith {};
_sorted = [_lifter,_vehicles] Call SortByDistance;
_vehicle = _sorted select 0;
_type = typeOf _lifter;
_position = Zeta_DefaultPos;
_index = Zeta_Special find _type;
if (_index != -1) then {_position = Zeta_SpecialPosition select _index};
if (count crew(_vehicle) > 0) exitWith {hint (localize 'STR_WF_INFO_Hook_Manned')};
_vehicle attachTo [_lifter,_position];
_lifter setVariable ["Attached",true,false];
_lifter removeAction _actionID;
_action = _lifter addAction [localize "STR_WF_Lift_Detach","Client\Module\ZetaCargo\Zeta_Unhook.sqf"];
while {!gameOver} do {
sleep 2;
_isAttached = _lifter getVariable "Attached";
if ((getDammage _lifter > 0.3)||!_isAttached||isNull (driver _lifter)) exitWith {
detach _vehicle;
_lifter removeAction _action;
if (alive _lifter) then {_lifter addAction [localize "STR_WF_Lift","Client\Module\ZetaCargo\Zeta_Hook.sqf"]};
};
};
|