From dee52083d359434fc3ac51a871c1b836d092d2ac Mon Sep 17 00:00:00 2001 From: hybrid Date: Thu, 11 Jun 2026 19:55:41 +0300 Subject: init --- Server/Support/Support_ParaVehicles.sqf | 89 +++++++++++++++++++++++++++++++++ 1 file changed, 89 insertions(+) create mode 100644 Server/Support/Support_ParaVehicles.sqf (limited to 'Server/Support/Support_ParaVehicles.sqf') diff --git a/Server/Support/Support_ParaVehicles.sqf b/Server/Support/Support_ParaVehicles.sqf new file mode 100644 index 0000000..837d97e --- /dev/null +++ b/Server/Support/Support_ParaVehicles.sqf @@ -0,0 +1,89 @@ +Private['_args','_bd','_cargo','_cargoVehicle','_grp','_pilot','_playerTeam','_positionCoord','_ran','_ranDir','_ranPos','_side','_timeStart','_vehicle','_vehicleCoord']; + +_args = _this; +_side = _args select 1; + +_playerTeam = (_args select 3); +diag_log Format["[WFBE (INFORMATION)][frameno:%4 | ticktime:%5] Server_HandleSpecial: The %1 %2 Team (Leader: %3) has called a Vehicle Paradroping",str _side,_playerTeam,name (leader _playerTeam),diag_frameno,diag_tickTime]; +_ranPos = []; +_ranDir = []; + +_bd = 'WFBE_BOUNDARIESXY' Call GetNamespace; +if !(isNil '_bd') then { + _ranPos = [ + [0+random(200),0+random(200),400+random(200)], + [0+random(200),_bd-random(200),400+random(200)], + [_bd-random(200),_bd-random(200),400+random(200)], + [_bd-random(200),0+random(200),400+random(200)] + ]; + _ranDir = [45,145,225,315]; +} else { + _ranPos = [[0+random(200),0+random(200),400+random(200)],[15000+random(200),0+random(200),400+random(200)]]; + _ranDir = [45,315]; +}; + +_timeStart = time; +_ran = round(random((count _ranPos)-1)); +_grp = createGroup _side; +_vehicle = createVehicle [Format ["WFBE_%1PARAVEHI",str _side] Call GetNamespace,(_ranPos select _ran), [], (_ranDir select _ran), "FLY"]; +[str _side,'VehiclesCreated',1] Call UpdateStatistics; +[str _side,'UnitsCreated',1] Call UpdateStatistics; +_pilot = [Format ["WFBE_%1PILOT",str _side] Call GetNamespace,_grp,[100,12000,0],_side] Call CreateMan; +_pilot moveInDriver _vehicle; +_pilot doMove (_args select 2); +_grp setBehaviour 'CARELESS'; +_grp setCombatMode 'STEALTH'; +_pilot disableAI 'AUTOTARGET'; +_pilot disableAI 'TARGET'; +[_grp,(_args select 2),"MOVE",10] Call AIMoveTo; +Call Compile Format ["_vehicle addEventHandler ['Killed',{[_this select 0,_this select 1,%1] Spawn UnitKilled}]",_side]; +_vehicle setVehicleInit Format["[this,%1] ExecVM 'Common\Common_InitUnit.sqf';",_side]; +processInitCommands; +_vehicle flyInHeight (300 + random(75)); +_cargo = (crew _vehicle) - [driver _vehicle, gunner _vehicle, commander _vehicle]; +_cargoVehicle = [Format ["WFBE_%1PARAVEHICARGO",str _side] Call GetNamespace,[0,0,50],_side,false] Call CreateVehi; +_cargoVehicle attachTo [_vehicle,[0,0,-3]]; + +emptyQueu = emptyQueu + [_cargoVehicle]; +_cargoVehicle Spawn HandleEmptyVehicle; + +while {true} do { + sleep 1; + if (!alive _pilot || !alive _vehicle || isNull _vehicle || isNull _pilot || !alive _cargoVehicle) exitWith {}; + if (!(isPlayer (leader _playerTeam)) || time - _timeStart > 500) exitWith {{_x setDammage 1} forEach (_cargo+[_pilot,_vehicle,_cargoVehicle]);deleteGroup _grp}; + _vehicleCoord = [getPos _pilot select 0,getpos _pilot select 1]; + _positionCoord = [(_args select 2) select 0,(_args select 2) select 1]; + if (_vehicleCoord distance _positionCoord < 100) exitWith {}; +}; + +detach _cargoVehicle; + +[_cargoVehicle,_side] Spawn { + Private ['_chute','_side','_vehicle']; + _vehicle = _this select 0; + _side = _this select 1; + sleep 2; + if (!alive _vehicle) exitWith {}; + _chute = (Format['WFBE_%1PARACHUTE',str _side] Call GetNamespace) createVehicle [0,0,20]; + _chute setPos [getPos _vehicle select 0, getPos _vehicle select 1, (getPos _vehicle select 2) - 11]; + _chute setDir (getDir _vehicle); + _vehicle attachTo [_chute,[0,0,0]]; + waitUntil {getPos _vehicle select 2 < 10 || !alive _vehicle}; + detach _vehicle; + sleep 10; + deleteVehicle _chute; +}; + +[_grp,(_ranPos select _ran),"MOVE",10] Call AIMoveTo; + +while {true} do { + sleep 1; + if (!alive _pilot || !alive _vehicle || isNull _vehicle || isNull _pilot) exitWith {}; + _vehicleCoord = [getPos _pilot select 0,getpos _pilot select 1]; + _positionCoord = [(_ranPos select _ran) select 0,(_ranPos select _ran) select 1]; + if (_vehicleCoord distance _positionCoord < 200) exitWith {}; +}; + +deleteVehicle _pilot; +deleteVehicle _vehicle; +deleteGroup _grp; \ No newline at end of file -- cgit v1.3.1