También tiene automatizado la apertura automática que puedes poner a la que quieras y así sino abren a tiempo, no se mata nadie. En el init.sqf declara una variable llamada distancia con el valor de 250 m, cámbiala a la distancia que quieras.
También tiene un pequeño spawn que puedes desactivar si quieres para ponerle un strobo en el casco a los lideres para ello pon en el init la variable nocturna= true si es de noche, o false si es diurna.
Y lo mejor es que tiene audio de aire al caer, al abrir el paracaídas y para cerrarlo.
Este script lo use en clear eagle y fue de lujo. Déjalo ejecutado desde inicio.sqf
Código: Seleccionar todo
distancia = 250; //distancia minima de apertura
nocturna = true; // si la mision es nocturna añade strobos a los cascos, si es diurna ponlo en false
null= [] execVM "halo.sqf";
Código: Seleccionar todo
// ***Script By PESCADORR ***
null=[]spawn
{
{
if (local _x) then //filtramos por localidades
{
[_x] spawn // creamos ejecuciones paralelas, una por cada unidad jugable
{
_unit = _this select 0;
if (!isNull (unitBackpack _unit)) then // comprobamos que tiene mochila
{
private ["_helmet","_Vclass","_Varray","_Barray","_Bclass","_mochila"];
_helmet = headgear _unit;
_Vclass = vest _unit;
_Varray = vestItems _unit;
_Barray = backpackItems _unit;
_Bclass = backpack _unit;
sleep 0.1;
_mochila = createVehicle ["groundWeaponHolder", [0,0,0], [], 0, "can_collide"]; // creamos la mochila
_mochila addBackpackCargoGlobal [_Bclass, 1];
_unit addVest "V_RebreatherB"; //añadimos atuendo y paracaidas
_unit addBackpack "B_Parachute";
_unit addHeadgear "H_PilotHelmetFighter_B";
_unit addGoggles "G_Combat";
waitUntil {animationState _unit == "HaloFreeFall_non"}; //espera hasta que empiece en caida libre
_mochila attachTo [_unit,[-0.5,0.1,-1.1],"RightFoot"];
_mochila setVectorDirAndUp [[0,-1,-0.05],[0,0,-1]];
waituntil
{
if ((animationState _unit == "HaloFreeFall_non") && ((getPos _unit select 2) < distancia)) then //sino esta abierto el paracaidas y esta por debajo de 250
{
_unit action ["OpenParachute", _unit];
};
animationState _unit == "para_pilot"
}; //espera a que el paraidas ya este abierto
_mochila attachTo [vehicle _unit,[-0.1,0.45,-0.75],"RightFoot"];
_mochila setVectorDirAndUp [[0,-0.2,-1],[0,1,0]];
waitUntil {isTouchingGround _unit || (getPos _unit select 2) < 1}; //espera a tocar el suelo
detach _mochila;
deleteVehicle _mochila;
sleep 0.1;
_unit addvest _Vclass; //devolvemos equipacion
sleep 0.1;
{ _unit addItemToVest _x } foreach _Varray;
sleep 0.1;
_unit addBackpack _Bclass;
sleep 0.1;
{ _unit addItemToBackpack _x } foreach _Barray;
sleep 0.1;
_unit addHeadgear _helmet;
} else //sino tiene mochila
{
private ["_helmet","_Vclass","_Varray"];
_helmet = headgear _unit;
_Vclass = vest _unit;
_Varray = vestItems _unit;
_unit addVest "V_RebreatherB"; //añadimos atuendo y paracaidas
_unit addBackpack "B_Parachute";
_unit addHeadgear "H_PilotHelmetFighter_B";
_unit addGoggles "G_Combat";
waitUntil {animationState _unit == "HaloFreeFall_non"}; //espera hasta que empiece en caida libre
waituntil
{
if ((animationState _unit == "HaloFreeFall_non") && ((getPos _unit select 2) < distancia)) then //sino esta abierto el paracaidas y esta por debajo de 250
{
_unit action ["OpenParachute", _unit];
};
animationState _unit == "para_pilot"
}; //espera a que el paraidas ya este abierto
waitUntil {isTouchingGround _unit || (getPos _unit select 2) < 1}; //espera a tocar el suelo
_unit addvest _Vclass; //devolvemos equipacion
sleep 0.1;
{ _unit addItemToVest _x } foreach _Varray;
sleep 0.1;
_unit addHeadgear _helmet;
sleep 0.1;
};
};
[_x] spawn // spawn strobos solo humanos y lideres llevan strobo
{
if (!nocturna) exitwith {};
_unit2 = _this select 0;
if ((isplayer _unit2) && ((leader _unit2) == _unit2)) then
{
private ["_obj1", "_light1"]; //_Nombreplayer = [name _unit2] call BIS_fnc_filterString;
_light1 = 'B_IRStrobe' createVehicle [0,0,0];
_light1 attachTo [_unit2,[0,0,0.20],'head'];
sleep 1;
_obj1 = nearestObjects [_light1, ["all"], 2];
sleep 1;
waituntil { animationState _unit2 == "para_pilot" };
_light1 attachTo [vehicle _unit2,[0,0,0.84],'head'];
waitUntil { isTouchingGround _unit2 || (getPos _unit2 select 2) < 1};
{
if (typeOf _x == 'NVG_TargetC') then
{
deletevehicle _x;
};
} foreach _obj1;
};
};
};
} foreach playableunits; //poner playableunits para misiones en general o grupos definidos
};
if (isserver) exitwith{}; //filtramos solo player (poner como comentario para ver en el editor)
[] spawn // spawn audio
{
waitUntil {animationState player == "HaloFreeFall_non"};
waituntil
{
playSound "flapping";
sleep 4.2;
animationState player == "para_pilot" && alive player
};
playSound "open_chute";
sleep 3;
waituntil
{
playSound "para_pilot";
sleep 4.2;
(getpos player select 2) < 2 && alive player
};
sleep 1;
playSound "close_chute";
};
waitUntil {sleep 0.5;animationState player == "para_pilot"};
setAperture 0.05;
setAperture -1;
"DynamicBlur" ppEffectEnable true;
"DynamicBlur" ppEffectAdjust [8.0];
"DynamicBlur" ppEffectCommit 0.01;
sleep 1;
"DynamicBlur" ppEffectAdjust [0.0];
"DynamicBlur" ppEffectCommit 3;
sleep 3;
"DynamicBlur" ppEffectEnable false;
"RadialBlur" ppEffectAdjust [0.0, 0.0, 0.0, 0.0];
"RadialBlur" ppEffectCommit 1.0;
"RadialBlur" ppEffectEnable false;
waitUntil {isTouchingGround player || (getPos player select 2) < 1};
cutText ["", "BLACK FADED", 999];
sleep 5;
cutText ["", "BLACK IN", 2];
Código: Seleccionar todo
class CfgSounds
{
sounds[] = {};
class flapping
{
sound[] = {"sounds\flapping.ogg", 10, 1};
titles[] = {};
};
class open_chute
{
sound[] = {"sounds\open_chute.ogg", 10, 1};
titles[] = {};
};
class para_pilot
{
sound[] = {"sounds\para_pilot.ogg", 10, 1};
titles[] = {};
};
class close_chute
{
sound[] = {"sounds\close_chute.ogg", 10, 1};
titles[] = {};
};
};
Os dejo un archivo rar con todo lo necesario.
Probadlo y me contáis si va bien o necesita algún cambio.
PD: la misión solo va a funcionar en MP, en el editor o singleplayer, el comando playableunits es 0 y el script no funcionaria.
PD: he resubido el archivo con script modificado y ya lo he testeado.