Jump to content


Photo

Высадка десанта.


Best Answer Fixjunior , 14 February 2021 - 14:53

В том месте, где должно произойти десантирование, ставим вэйпоинт "MOVE", в его активации прописываем:
 

_drop = [heli_1,100, units desant_1] execVM 'eject_desant_1.sqf'

В папке с миссией создаем файл eject_desant_1.sqf с таким содержанием:

/* 
	Filename: Simple ParaDrop Script v0.96 eject.sqf
	Author: Beerkan
	
	Description:
     A Simple Paradrop Script
   
	Parameter(s):
	0: VEHICLE  - vehicle that will be doing the paradrop (object)
	1: ALTITUDE - (optional) the altitude where the group will open their parachute (number)
   
   
   */  

if (!isServer) exitWith {};
private ["_paras","_vehicle","_chuteHeight","_dir"];
_vehicle = _this select 0; 
_chuteheight = if ( count _this > 1 ) then { _this select 1 } else { 100 };
_vehicle allowDamage false;
_paras = _this select 2;
_dir = direction _vehicle;    

paraLandSafe = 
{
	private ["_unit"];
	_unit = _this select 0;
	_chuteheight = _this select 1;
	(vehicle _unit) allowDamage false;
	if (isPlayer _unit) then {[_unit,_chuteheight] spawn OpenPlayerchute};
	waitUntil { isTouchingGround _unit || (position _unit select 2) < 1 };
	_unit action ["eject", vehicle _unit];
	sleep 1;
	_inv = name _unit;
	[_unit, [missionNamespace, format["%1%2", "Inventory",_inv]]] call BIS_fnc_loadInventory;// Reload Loadout.
	_unit allowdamage true;// Now you can take damage.
};

OpenPlayerChute =
{
	private ["_paraPlayer"];
	_paraPlayer = _this select 0;
	_chuteheight = _this select 1;
	waitUntil {(position _paraPlayer select 2) <= _chuteheight};
	_paraPlayer action ["openParachute", _paraPlayer];
};

{
	_inv = name _x;// Get Unique name for Unit's loadout.
	[_x, [missionNamespace, format["%1%2", "Inventory",_inv]]] call BIS_fnc_saveInventory;// Save Loadout
	removeBackpack _x;
	_x disableCollisionWith _vehicle;// Sometimes units take damage when being ejected.
	_x allowdamage false;// Trying to prevent damage.
	_x addBackPack "B_parachute";
	unassignvehicle _x;
	moveout _x;
	_x setDir (_dir + 90);// Exit the chopper at right angles.
	sleep 0.3;
} forEach _paras;

_vehicle allowDamage true;

{ 
	[_x,_chuteheight] spawn paraLandSafe; _paras allowGetIn false; _paras orderGetIn false;
} forEach _paras;

heli_1 - вертолет
desant_1 - группа парашютистов

Все оказалось куда проще. Не надо никаких скриптов, в рхс есть вейпоинт на высадку десанта, который работает идеально, так что можно считать вопрос решенным.

Go to the full post


  • Please log in to reply
6 replies to this topic

#1 OFFLINE   Fixjunior

Fixjunior

    Ефрейтор

  • Пользователи
  • 60 posts

Posted 13 February 2021 - 18:50

После того, как боты начинают выпрыгивать, вертолет (p3) зависает в воздухе, садится, взлетает и только потом продолжает следовать вейпоинту. Вейпоинт у него стоит на простое перемещение вперед. Как избежать этих затупов со стороны вертолета? Скрипт выглядит так:

 

[b1, b2, b3, b4, b5, b6] allowGetIn false;

moveOut b1;

unassignVehicle p3;
sleep 0.5;
moveOut b2;
unassignVehicle p3;
sleep 0.5;
moveOut b3;
unassignVehicle p3;
sleep 0.5;
moveOut b4;
unassignVehicle p3;
sleep 0.5;
moveOut b5;
unassignVehicle p3;
sleep 0.5;
moveOut b6;
unassignVehicle p3;

  • 0

#2 OFFLINE   Ibragim

Ibragim

    Сержант

  • Пользователи
  • 161 posts

Posted 14 February 2021 - 01:06

В При активации вэйпоинта высадки прописываем:

heli_1 land "get out";
desant_1 leaveVehicle heli_1;

heli_1 - Имя переменной вертолета
desant_1 - Имя переменной группы десанта

Вертолет садится не выключая двигатель, высаживает десант и переходит к следующему вэйпоинту.


Edited by Ibragim, 14 February 2021 - 01:41.

  • 0

#3 OFFLINE   Fixjunior

Fixjunior

    Ефрейтор

  • Пользователи
  • 60 posts

Posted 14 February 2021 - 12:50

В При активации вэйпоинта высадки прописываем:

heli_1 land "get out";
desant_1 leaveVehicle heli_1;

heli_1 - Имя переменной вертолета
desant_1 - Имя переменной группы десанта

Вертолет садится не выключая двигатель, высаживает десант и переходит к следующему вэйпоинту.

У вертолета нет вейпоинта на высадку десанта. У него стоит один вейпоинт - перемещение. Задумка была такая, чтобы он просто летел вперед, десант выпрыгивал (в воздухе), а вертолет продолжал следовать маршруту.


  • 0

#4 OFFLINE   Ibragim

Ibragim

    Сержант

  • Пользователи
  • 161 posts

Posted 14 February 2021 - 13:24

В том месте, где должно произойти десантирование, ставим вэйпоинт "MOVE", в его активации прописываем:
 

_drop = [heli_1,100, units desant_1] execVM 'eject_desant_1.sqf'

В папке с миссией создаем файл eject_desant_1.sqf с таким содержанием:

/* 
	Filename: Simple ParaDrop Script v0.96 eject.sqf
	Author: Beerkan
	
	Description:
     A Simple Paradrop Script
   
	Parameter(s):
	0: VEHICLE  - vehicle that will be doing the paradrop (object)
	1: ALTITUDE - (optional) the altitude where the group will open their parachute (number)
   
   
   */  

if (!isServer) exitWith {};
private ["_paras","_vehicle","_chuteHeight","_dir"];
_vehicle = _this select 0; 
_chuteheight = if ( count _this > 1 ) then { _this select 1 } else { 100 };
_vehicle allowDamage false;
_paras = _this select 2;
_dir = direction _vehicle;    

paraLandSafe = 
{
	private ["_unit"];
	_unit = _this select 0;
	_chuteheight = _this select 1;
	(vehicle _unit) allowDamage false;
	if (isPlayer _unit) then {[_unit,_chuteheight] spawn OpenPlayerchute};
	waitUntil { isTouchingGround _unit || (position _unit select 2) < 1 };
	_unit action ["eject", vehicle _unit];
	sleep 1;
	_inv = name _unit;
	[_unit, [missionNamespace, format["%1%2", "Inventory",_inv]]] call BIS_fnc_loadInventory;// Reload Loadout.
	_unit allowdamage true;// Now you can take damage.
};

OpenPlayerChute =
{
	private ["_paraPlayer"];
	_paraPlayer = _this select 0;
	_chuteheight = _this select 1;
	waitUntil {(position _paraPlayer select 2) <= _chuteheight};
	_paraPlayer action ["openParachute", _paraPlayer];
};

{
	_inv = name _x;// Get Unique name for Unit's loadout.
	[_x, [missionNamespace, format["%1%2", "Inventory",_inv]]] call BIS_fnc_saveInventory;// Save Loadout
	removeBackpack _x;
	_x disableCollisionWith _vehicle;// Sometimes units take damage when being ejected.
	_x allowdamage false;// Trying to prevent damage.
	_x addBackPack "B_parachute";
	unassignvehicle _x;
	moveout _x;
	_x setDir (_dir + 90);// Exit the chopper at right angles.
	sleep 0.3;
} forEach _paras;

_vehicle allowDamage true;

{ 
	[_x,_chuteheight] spawn paraLandSafe; _paras allowGetIn false; _paras orderGetIn false;
} forEach _paras;

heli_1 - вертолет
desant_1 - группа парашютистов


  • 0

#5 OFFLINE   Fixjunior

Fixjunior

    Ефрейтор

  • Пользователи
  • 60 posts

Posted 14 February 2021 - 14:42

В том месте, где должно произойти десантирование, ставим вэйпоинт "MOVE", в его активации прописываем:
 

_drop = [heli_1,100, units desant_1] execVM 'eject_desant_1.sqf'

В папке с миссией создаем файл eject_desant_1.sqf с таким содержанием:

/* 
	Filename: Simple ParaDrop Script v0.96 eject.sqf
	Author: Beerkan
	
	Description:
     A Simple Paradrop Script
   
	Parameter(s):
	0: VEHICLE  - vehicle that will be doing the paradrop (object)
	1: ALTITUDE - (optional) the altitude where the group will open their parachute (number)
   
   
   */  

if (!isServer) exitWith {};
private ["_paras","_vehicle","_chuteHeight","_dir"];
_vehicle = _this select 0; 
_chuteheight = if ( count _this > 1 ) then { _this select 1 } else { 100 };
_vehicle allowDamage false;
_paras = _this select 2;
_dir = direction _vehicle;    

paraLandSafe = 
{
	private ["_unit"];
	_unit = _this select 0;
	_chuteheight = _this select 1;
	(vehicle _unit) allowDamage false;
	if (isPlayer _unit) then {[_unit,_chuteheight] spawn OpenPlayerchute};
	waitUntil { isTouchingGround _unit || (position _unit select 2) < 1 };
	_unit action ["eject", vehicle _unit];
	sleep 1;
	_inv = name _unit;
	[_unit, [missionNamespace, format["%1%2", "Inventory",_inv]]] call BIS_fnc_loadInventory;// Reload Loadout.
	_unit allowdamage true;// Now you can take damage.
};

OpenPlayerChute =
{
	private ["_paraPlayer"];
	_paraPlayer = _this select 0;
	_chuteheight = _this select 1;
	waitUntil {(position _paraPlayer select 2) <= _chuteheight};
	_paraPlayer action ["openParachute", _paraPlayer];
};

{
	_inv = name _x;// Get Unique name for Unit's loadout.
	[_x, [missionNamespace, format["%1%2", "Inventory",_inv]]] call BIS_fnc_saveInventory;// Save Loadout
	removeBackpack _x;
	_x disableCollisionWith _vehicle;// Sometimes units take damage when being ejected.
	_x allowdamage false;// Trying to prevent damage.
	_x addBackPack "B_parachute";
	unassignvehicle _x;
	moveout _x;
	_x setDir (_dir + 90);// Exit the chopper at right angles.
	sleep 0.3;
} forEach _paras;

_vehicle allowDamage true;

{ 
	[_x,_chuteheight] spawn paraLandSafe; _paras allowGetIn false; _paras orderGetIn false;
} forEach _paras;

heli_1 - вертолет
desant_1 - группа парашютистов

Ошибок в скрипте нет, все работает, но происходит ровно то же самое, что и в том скрипте, который я скинул. Вертолет скидывает юнитов, зависает в воздухе, садится на землю, взлетает и летит дальше. Стоит вейпоинт, где должна быть и высадка и вейпоинт на следующую точку. Тип обоих вейпоинтов "перемещение".


  • 0

#6 OFFLINE   Fixjunior

Fixjunior

    Ефрейтор

  • Пользователи
  • 60 posts

Posted 14 February 2021 - 14:53   Best Answer

В том месте, где должно произойти десантирование, ставим вэйпоинт "MOVE", в его активации прописываем:
 

_drop = [heli_1,100, units desant_1] execVM 'eject_desant_1.sqf'

В папке с миссией создаем файл eject_desant_1.sqf с таким содержанием:

/* 
	Filename: Simple ParaDrop Script v0.96 eject.sqf
	Author: Beerkan
	
	Description:
     A Simple Paradrop Script
   
	Parameter(s):
	0: VEHICLE  - vehicle that will be doing the paradrop (object)
	1: ALTITUDE - (optional) the altitude where the group will open their parachute (number)
   
   
   */  

if (!isServer) exitWith {};
private ["_paras","_vehicle","_chuteHeight","_dir"];
_vehicle = _this select 0; 
_chuteheight = if ( count _this > 1 ) then { _this select 1 } else { 100 };
_vehicle allowDamage false;
_paras = _this select 2;
_dir = direction _vehicle;    

paraLandSafe = 
{
	private ["_unit"];
	_unit = _this select 0;
	_chuteheight = _this select 1;
	(vehicle _unit) allowDamage false;
	if (isPlayer _unit) then {[_unit,_chuteheight] spawn OpenPlayerchute};
	waitUntil { isTouchingGround _unit || (position _unit select 2) < 1 };
	_unit action ["eject", vehicle _unit];
	sleep 1;
	_inv = name _unit;
	[_unit, [missionNamespace, format["%1%2", "Inventory",_inv]]] call BIS_fnc_loadInventory;// Reload Loadout.
	_unit allowdamage true;// Now you can take damage.
};

OpenPlayerChute =
{
	private ["_paraPlayer"];
	_paraPlayer = _this select 0;
	_chuteheight = _this select 1;
	waitUntil {(position _paraPlayer select 2) <= _chuteheight};
	_paraPlayer action ["openParachute", _paraPlayer];
};

{
	_inv = name _x;// Get Unique name for Unit's loadout.
	[_x, [missionNamespace, format["%1%2", "Inventory",_inv]]] call BIS_fnc_saveInventory;// Save Loadout
	removeBackpack _x;
	_x disableCollisionWith _vehicle;// Sometimes units take damage when being ejected.
	_x allowdamage false;// Trying to prevent damage.
	_x addBackPack "B_parachute";
	unassignvehicle _x;
	moveout _x;
	_x setDir (_dir + 90);// Exit the chopper at right angles.
	sleep 0.3;
} forEach _paras;

_vehicle allowDamage true;

{ 
	[_x,_chuteheight] spawn paraLandSafe; _paras allowGetIn false; _paras orderGetIn false;
} forEach _paras;

heli_1 - вертолет
desant_1 - группа парашютистов

Все оказалось куда проще. Не надо никаких скриптов, в рхс есть вейпоинт на высадку десанта, который работает идеально, так что можно считать вопрос решенным.


  • 0

#7 OFFLINE   YourCheg

YourCheg

    Рядовой

  • Пользователи
  • 2 posts
  • Откуда:Moscow

Posted 17 May 2022 - 18:12

 

В том месте, где должно произойти десантирование, ставим вэйпоинт "MOVE", в его активации прописываем:
 

_drop = [heli_1,100, units desant_1] execVM 'eject_desant_1.sqf'

В папке с миссией создаем файл eject_desant_1.sqf с таким содержанием:

/* 
	Filename: Simple ParaDrop Script v0.96 eject.sqf
	Author: Beerkan
	
	Description:
     A Simple Paradrop Script
   
	Parameter(s):
	0: VEHICLE  - vehicle that will be doing the paradrop (object)
	1: ALTITUDE - (optional) the altitude where the group will open their parachute (number)
   
   
   */  

if (!isServer) exitWith {};
private ["_paras","_vehicle","_chuteHeight","_dir"];
_vehicle = _this select 0; 
_chuteheight = if ( count _this > 1 ) then { _this select 1 } else { 100 };
_vehicle allowDamage false;
_paras = _this select 2;
_dir = direction _vehicle;    

paraLandSafe = 
{
	private ["_unit"];
	_unit = _this select 0;
	_chuteheight = _this select 1;
	(vehicle _unit) allowDamage false;
	if (isPlayer _unit) then {[_unit,_chuteheight] spawn OpenPlayerchute};
	waitUntil { isTouchingGround _unit || (position _unit select 2) < 1 };
	_unit action ["eject", vehicle _unit];
	sleep 1;
	_inv = name _unit;
	[_unit, [missionNamespace, format["%1%2", "Inventory",_inv]]] call BIS_fnc_loadInventory;// Reload Loadout.
	_unit allowdamage true;// Now you can take damage.
};

OpenPlayerChute =
{
	private ["_paraPlayer"];
	_paraPlayer = _this select 0;
	_chuteheight = _this select 1;
	waitUntil {(position _paraPlayer select 2) <= _chuteheight};
	_paraPlayer action ["openParachute", _paraPlayer];
};

{
	_inv = name _x;// Get Unique name for Unit's loadout.
	[_x, [missionNamespace, format["%1%2", "Inventory",_inv]]] call BIS_fnc_saveInventory;// Save Loadout
	removeBackpack _x;
	_x disableCollisionWith _vehicle;// Sometimes units take damage when being ejected.
	_x allowdamage false;// Trying to prevent damage.
	_x addBackPack "B_parachute";
	unassignvehicle _x;
	moveout _x;
	_x setDir (_dir + 90);// Exit the chopper at right angles.
	sleep 0.3;
} forEach _paras;

_vehicle allowDamage true;

{ 
	[_x,_chuteheight] spawn paraLandSafe; _paras allowGetIn false; _paras orderGetIn false;
} forEach _paras;

heli_1 - вертолет
desant_1 - группа парашютистов

Все оказалось куда проще. Не надо никаких скриптов, в рхс есть вейпоинт на высадку десанта, который работает идеально, так что можно считать вопрос решенным.

Что значит pxc?

Можно подробней?

А то я тоже ищу скрипт десантирование 


  • 0




Яндекс.Метрика