summaryrefslogtreecommitdiffstats
path: root/Client/Module/ZetaCargo/Zeta_Hook.sqf
diff options
context:
space:
mode:
authorhybrid <hybrid@hybridlabs.pro>2026-06-11 19:38:09 +0300
committerhybrid <hybrid@hybridlabs.pro>2026-06-11 19:38:09 +0300
commita3a91d4f45b22fd487ecbc954ad979be5d03efdd (patch)
treea554ab159a347dcd6c00ca1c7c26c1ec3ac0a6bd /Client/Module/ZetaCargo/Zeta_Hook.sqf
downloada2wf_chernarus-a3a91d4f45b22fd487ecbc954ad979be5d03efdd.tar.gz
a2wf_chernarus-a3a91d4f45b22fd487ecbc954ad979be5d03efdd.tar.bz2
a2wf_chernarus-a3a91d4f45b22fd487ecbc954ad979be5d03efdd.zip
Diffstat (limited to '')
-rw-r--r--Client/Module/ZetaCargo/Zeta_Hook.sqf40
1 files changed, 40 insertions, 0 deletions
diff --git a/Client/Module/ZetaCargo/Zeta_Hook.sqf b/Client/Module/ZetaCargo/Zeta_Hook.sqf
new file mode 100644
index 0000000..653ecaa
--- /dev/null
+++ b/Client/Module/ZetaCargo/Zeta_Hook.sqf
@@ -0,0 +1,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"]};
+ };
+}; \ No newline at end of file