Script Repostaje en Vuelo

Sección para misiones y edición ArmA III

Moderador: C. Misiones & Noticias

Responder
Avatar de Usuario
<A2>Flac0
Soldado A2
Soldado A2
Mensajes: 1026
Registrado: 22 Mar 2020, 18:07

Script Repostaje en Vuelo

Mensaje por <A2>Flac0 »

Con la ayuda del compañero AbueloCeboleta he hecho esta sencilla script para repostar en vuelo un caza.



- Coloca un marcador en el mapa con nombre de variable "marker_25" y en nombre de texto "AVIÓN REPOSTAJE" (o el nombre que tu quieras).
- En el archivo init.sqf de la misión pon:

Código: Seleccionar todo

if(isServer) then {
repostaje1=true; publicvariable "repostaje1";};
[] spawn {while{not isnull avion01} do {"Marker_25" setmarkerpos getpos avion01; sleep 5;};
avion01 flyInHeightASL [2000, 2000, 2000];
};
- Crea un archivo SQF con nombre "repostaje.sqf" que contenga esta información:

Código: Seleccionar todo

repostaje1=false; publicvariable "repostaje1";
sleep 0.5;
hint format ["HALCÓN %1!, procediendo a rearme. Mantenga formación y velocidad estable.", name player];




playsound "repostando";

sleep 5;

[
	"<t color='#228B22' size = '3.0'>REARMANDO...</t>",
	safeZoneX+0.71, safeZoneY+safeZoneH-1, 4, 4, 0, 890
] spawn bis_fnc_dynamicText;
sleep 10;

[
	"<t color='#228B22' size = '3.0'>REPOSTANDO...</t>",
	safeZoneX+0.71, safeZoneY+safeZoneH-1, 4, 4, 0, 890
] spawn bis_fnc_dynamicText;
sleep 10;

hint parseText "<t color='#FF0000' size='2' shadow='1' shadowColor='#000000' 
align='center'>DESCONECTADO</t><br/><t align='center' color='#FF00FF'>-----------------------------------------------------</t><br/><br/><t align='center' color='#FFFFFF'>Está listo HALCÓN, buena suerte ahí arriba.";

vehicle player setdammage 0;
vehicle player setfuel 1;
vehicle player setVehicleAmmo 1;


sleep 60;


repostaje1=true; publicvariable "repostaje1";
- Coloca un avión C130 con nombre de variable "avion01".
En el init del piloto pon (para que el piloto :

Código: Seleccionar todo

this allowFleeing 0;
- Crea un recorrido cíclico en el mapa, mejor si es por encima del agua, así no tiene en cuenta la topografía a la hora de pilotar.
- Configura la velocidad del avión en "Lenta".

En el init de uno de los Waypoint pon (para que el avión de repostaje no se quede sin gasolina):

Código: Seleccionar todo

avion01 setFuel 1;
- Coloca un conjunto de mangueras que salgan del culo del avión. El último trozo de manguera ponle nombre de manguera "manguera1".
En el init de cada manguera pon esta información:

Código: Seleccionar todo

[this, avion01] call Bis_fnc_attachToRelative;
- Coloca un activador en el mapa.
Condición:

Código: Seleccionar todo

vehicle player distance manguera1 < 10
Activación:

Código: Seleccionar todo

if(repostaje1) then {[player] execvm "repostaje.sqf";};
- En el archivo description.ext pon esta línea:

Código: Seleccionar todo

class CfgSounds
{

		class repostando
	{
		name="repostando";
		sound[] = {"media\repostando.ogg", 20, 1, 300};
		titles[] = {};
	};
- Bájate el archivo en formato .OGG (Está en el CANAL RINCÓN DEL EDITOR del TS) y creas una carpeta que se llame "media" y el archivo de audio dentro de la carpeta.
...y sobre todo si bebes no conduzcas.
"Sin miedo a la bala ni tampoco al que la dispara, sigo en la lucha, sigo en la guerra armada, sigo con capucha al pie de la barricada."

Avatar de Usuario
<A2>Ian
Soldado A2
Soldado A2
Mensajes: 1807
Registrado: 13 Abr 2011, 11:23

Re: Script Repostaje en Vuelo

Mensaje por <A2>Ian »

El ACE en ARMAII lo tenía (repostaje en vuelo).
"Despláceme yo a temperatura anormalmente elevada y demuestre el vulgo su regocijo".

Imagen

Imagen
Imagen Imagen

Avatar de Usuario
<A2>Pescadorr
Soldado A2
Soldado A2
Mensajes: 5437
Registrado: 09 Sep 2011, 03:28

Re: Script Repostaje en Vuelo

Mensaje por <A2>Pescadorr »

Esta bien, yo le pondria una condicion de que se mantuviera a esa distancia para repostarlo poco a poco, con pasar cerca e irte te reposta e remuniciona entero y eso no tiene merito. Yo lo plantearia desde esa condicion.
“Lo único que necesita el mal para triunfar es que los hombres buenos no hagan nada”
― Edmund Burke

Avatar de Usuario
<A2>Flac0
Soldado A2
Soldado A2
Mensajes: 1026
Registrado: 22 Mar 2020, 18:07

Re: Script Repostaje en Vuelo

Mensaje por <A2>Flac0 »

<A2>Pescadorr escribió: 06 Ene 2022, 22:19 Esta bien, yo le pondria una condicion de que se mantuviera a esa distancia para repostarlo poco a poco, con pasar cerca e irte te reposta e remuniciona entero y eso no tiene merito. Yo lo plantearia desde esa condicion.
Venga Dr.Fisherman ¿cómo hago esa magia oscura?. ¿Cuál es la receta secreta?
"Sin miedo a la bala ni tampoco al que la dispara, sigo en la lucha, sigo en la guerra armada, sigo con capucha al pie de la barricada."

Avatar de Usuario
<A2>Pescadorr
Soldado A2
Soldado A2
Mensajes: 5437
Registrado: 09 Sep 2011, 03:28

Re: Script Repostaje en Vuelo

Mensaje por <A2>Pescadorr »

<A2>Flac0 escribió: 06 Ene 2022, 22:24
<A2>Pescadorr escribió: 06 Ene 2022, 22:19 Esta bien, yo le pondria una condicion de que se mantuviera a esa distancia para repostarlo poco a poco, con pasar cerca e irte te reposta e remuniciona entero y eso no tiene merito. Yo lo plantearia desde esa condicion.
Venga Dr.Fisherman ¿cómo hago esa magia oscura?. ¿Cuál es la receta secreta?
recojo el guante...
“Lo único que necesita el mal para triunfar es que los hombres buenos no hagan nada”
― Edmund Burke

Avatar de Usuario
<A2>Pescadorr
Soldado A2
Soldado A2
Mensajes: 5437
Registrado: 09 Sep 2011, 03:28

Re: Script Repostaje en Vuelo

Mensaje por <A2>Pescadorr »

Aqui os paso el que he hecho basandome en lo que teniais.

Es un script serverside que solo ejecuta el servidor.

Para ejecutar este script es simple:
  • coloca un avion C-130 o un VX BLACKFISH en el aire y ponle una ruta ciclica en el mar.
  • en el init del avion pon esto:

    Código: Seleccionar todo

    null = [this, true] execVM "repostar.sqf";
  • declara el audio de flaco EN EL DESCRIPTION.EXT:

    Código: Seleccionar todo

    class CfgSounds
    {
    	sounds[] = {};
    	class repostando
    	{
    		name="repostando";
    		sound[] = {"repostando.ogg", 20, 1, 300};
    		titles[] = {};
    	};
    };

parametros de la ejecucion:
objeto --> avion que ejecuta el script
bool --> true o false, si deseas que el avion se enganche automaticamente y reposte cuando te aproximes. En false tendras que mantenerte detras hasta ternimar el repostaje.

Y este es el script:

Código: Seleccionar todo

/* Script by <A2>Pescadorr para GRUPO ARMADOS. 

Es un script server side que solo  ejecuta el servidor.
Para ejecutar este script coloca un avion C-130 o un VX BLACKFISH en el aire y ponle una ruta en el mar.
en el init del avion pon esto:
null = [this, true] execVM "repostar.sqf";
parametros:
	objeto --> avion que ejecuta el script
	bool --> true o false, si deseas que el avion se enganche automaticamente y reposte cuando te aproximes. En false tendras que mantenerte detras hasta ternimar el repostaje.
EN EL DESCRIPTION PON ESTO:

class CfgSounds
{
	sounds[] = {};
	class repostando
	{
		name="repostando";
		sound[] = {"repostando.ogg", 20, 1, 300};
		titles[] = {};
	};
};


colocas el audio en la carpeta de la mision y listo, eso es todo.

*/
params ["_avion", "_autorepostaje"];

if !(isserver) exitwith {};
null = [_avion] spawn 
{
	params ["_avion"];
	_marcador = createMarker ["gasolinera", getpos _avion,0,player];
	_marcador setMarkerType "b_air"; 
	_marcador setMarkerText "AVION REPOSTAJE";
	_marcador setMarkerAlpha 1;
	waitUntil
	{
		_marcador setmarkerpos getpos _avion;
		_avion setfuel 1;
		sleep 5;
		!alive _avion
	};
};
_avion flyInHeightASL [2000, 2000, 2000];
_avion forceSpeed 500; //no funciona con los wp

_manguera = "Land_Rope_F" createvehicle [0,0,0];
_manguera setpos getpos _avion;
_manguera setVectorDirAndUp [[(vectordir _avion select 0),0, -0.43], [0,1,1]];
_manguera attachTo [_avion, [0, -18, -4]];
_manguera setVectorDirAndUp [[0,0,-0.5], [0,1,1]];

// _manguera = ropeCreate [_avion, [0,-15,-4], objNull, [0,0,0], 30];
if (_autorepostaje) then 
{
	waituntil 
	{
		{
			_relativespeed = abs(speed vehicle _x) - (speed _avion);
			if (isplayer _x && vehicle _x  iskindof "air" && vehicle _x distance _avion < 45 && _relativespeed < 10 && fuel vehicle _x < 0.96) then
			{
				_texto = format ["HALCÓN %1!, procediendo a repostado. Mantenga formación y velocidad estable.", name _x];
				[_texto] remoteexec ["hint", _x];
				(vehicle _x) attachTo [_avion, [0, -45, -3]];
				["repostando"] remoteexec ["playsound",_x];
				sleep 5;				
				[
					"<t color='#228B22' size = '1.0'>REPOSTANDO...</t>",
					safeZoneX+0.71, safeZoneY+safeZoneH-1, 4, 4, 0, 890
				]  remoteexec ["bis_fnc_dynamicText", _x];
				null = [_x] spawn 
				{ 
					params ["_cliente"];
					waituntil 
					{
						_gasoil = ((round (100 * fuel vehicle _cliente)) + 3) /100;
						[vehicle _cliente, _gasoil] remoteexec ["setfuel", _cliente];
						sleep 1;
						fuel vehicle _cliente >= 0.96
					};
					_texto = parseText "<t color='#FF0000' size='2' shadow='1' shadowColor='#000000' align='center'>DESCONECTADO</t><br/><t align='center' color='#FF00FF'>-----------------------------------------------------</t><br/><br/><t align='center' color='#FFFFFF'>Está listo HALCÓN, buena suerte ahí arriba.";
					[_texto] remoteexec ["hint", _cliente];
					detach (vehicle _cliente);
				};
			};
		} foreach playableUnits; //en el editor poner allunits
		sleep 2;
		!alive _avion;
	};
} else 
{
	waituntil 
	{
		{
			_relativespeed = abs(speed vehicle _x) - (speed _avion);
			if (isplayer _x && vehicle _x  iskindof "air" && vehicle _x distance _avion < 55 && _relativespeed < 15 && fuel vehicle _x < 0.96) then
			{
				[""] remoteexec ["hint", _x];
				//_manguera = ropeCreate [_avion, [0,-15,-4], vehicle _x, [0,0,0], 50];
				//[vehicle _x, [0,0,0], [0,0,-1]] ropeAttachTo _manguera;
				sleep 5;				
				_texto = parseText "<t color='#FF0000' size='2' shadow='1' shadowColor='#000000' align='center'>CONECTADO</t><br/><t align='center' color='#FF00FF'>-----------------------------------------------------</t><br/><t color='#00FF0' size='2' shadow='1' shadowColor='#000000' align='center'>REPOSTANDO</t>";
				[_texto] remoteexec ["hint", _x];
				null = [_x, _avion] spawn 
				{ 
					params ["_cliente", "_avion"];
					_relativespeed = abs(speed vehicle _cliente) - (speed _avion);
					while {(vehicle _cliente distance _avion < 55 && _relativespeed < 10 )|| fuel vehicle _cliente >= 0.96} do 
					{
						_relativespeed = abs(speed vehicle _cliente) - (speed _avion);
						_gasoil = ((round (100 * fuel vehicle _cliente)) + 3) /100;
						[vehicle _cliente, _gasoil] remoteexec ["setfuel", _cliente];
						sleep 1;
					};
					waituntil {sleep 10;(vehicle _cliente distance _avion > 55 || _relativespeed > 10 )|| fuel vehicle _cliente >= 0.96};
					_texto = parseText "<t color='#FF0000' size='2' shadow='1' shadowColor='#000000' align='center'>DESCONECTADO</t><br/><t align='center' color='#FF00FF'>-----------------------------------------------------</t>";
					[_texto] remoteexec ["hint", _cliente];
					//(vehicle _x) ropeDetach _manguera;
					//ropeDestroy _manguera;
				};
			};
		} foreach playableUnits; //en el editor poner allunits
		sleep 2;
		!alive _avion;
	};
};
Os dejo una mision de prueba con el audio y todo.
https://drive.google.com/file/d/1LrvGYU ... sp=sharing
“Lo único que necesita el mal para triunfar es que los hombres buenos no hagan nada”
― Edmund Burke

Avatar de Usuario
<A2>AbueloCeboleta
Soldado A2
Soldado A2
Mensajes: 592
Registrado: 03 Sep 2018, 23:24

Re: Script Repostaje en Vuelo

Mensaje por <A2>AbueloCeboleta »

<A2>Pescadorr escribió: 08 Ene 2022, 18:42 Aqui os paso el que he hecho basandome en lo que teniais.

Es un script serverside que solo ejecuta el servidor.

Para ejecutar este script es simple:

(...)
El maestro Doctor Fisherman.

Imagen
« HACIA EL ENEMIGO » - Inscripción de la mina M18 Claymore.

Avatar de Usuario
<A2>Flac0
Soldado A2
Soldado A2
Mensajes: 1026
Registrado: 22 Mar 2020, 18:07

Re: Script Repostaje en Vuelo

Mensaje por <A2>Flac0 »

Maravilloso Dr. Fisherman. Funciona de 10
"Sin miedo a la bala ni tampoco al que la dispara, sigo en la lucha, sigo en la guerra armada, sigo con capucha al pie de la barricada."

Responder