PescaGTP ayuda script

Sección para misiones y edición ArmA III

Moderador: C. Misiones & Noticias

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

PescaGTP ayuda script

Mensaje por <A2>Flac0 »

¿Cómo harías una scripts para forzar el traslado de jugadores al interior de un vehículo en una posición cualquiera (sin tener en cuenta el Index del vehículo) utilizando la función "MoveIn"?.

Me refiero a:

Código: Seleccionar todo

null = [] spawn
{ 
	{
	_x moveInCargo vehiculo;
	} forEach units grupo_01;
};
Deberíamos añadir una variable que compruebe cada X segundos si el jugador/grupo se encuentra dentro del vehículo y que si esta variable es false repita la función hasta que se encuentre dentro para forzarlo.
Puede que haya que añadir también como variable una función que pueda permita recolocar al jugador porque creo que la función "MoveIn" es de efecto Global pero ejecución Local y por si mete a dos jugadores en el mismo instante en el mismo Index del vehículo puede que uno de los dos se quede fuera.

Ejemplo scripts completa:

Código: Seleccionar todo

/*
    forceMoveIn.sqf
    Uso:
        [player, vehicle] execVM "forceMoveIn.sqf";
*/

params ["_unit", "_vehicle"];

if (!canMove _unit || isNull _vehicle || isNull _unit) exitWith {};

// Intentar colocarlo en cualquier puesto disponible
if (canMove _vehicle) then {
    if (_vehicle emptyPositions "driver" > 0) then {
        _unit moveInDriver _vehicle;
    } else {
        if (_vehicle emptyPositions "gunner" > 0) then {
            _unit moveInGunner _vehicle;
        } else {
            if (_vehicle emptyPositions "commander" > 0) then {
                _unit moveInCommander _vehicle;
            } else {
                if (_vehicle emptyPositions "cargo" > 0) then {
                    _unit moveInCargo _vehicle;
                } else {
                    hint format ["No hay asientos disponibles en %1", _vehicle];
                };
            };
        };
    };
};
Imagen
"Lánzame a los lobos y volveré liderando a la manada."
Imagen

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

Re: PescaGTP ayuda script

Mensaje por <A2>Pescadorr »

El comando moveincargo y demás son de argumento local, por lo que solo funcionará si se ejecuta en la misma localidad donde este la unidad. Es un comando que falla mucho. Luego te paso un script que lo tiene todo en cuenta.
PC: Caja: DEEP COOL MATREXX 70 3F CPU: Ryzen 7 5800X P. Base: Gigabyte X570 Aorus Elite RAM: Team Group T-Force Dark Z Alpha 2x16 gb ddr4 3600 Mhz CL18 Disipador cpu: Corsair H-100 Hydro series Pasta termica: Thermalright TF8 13.8 W/MK + Coollaboratory Liquid Pro + Cooler Master MasterGel Maker GPU: Asus GeForce TUF Gaming RTX 4070 Ti 12GB GDDR6X Discos: M2 samsung 970 512 mb 3.0 + M2 Samsung 980 PRO 1 Tb 4.0 + HDD Barracuda 4 Tb Vent: 4 x deep cool RGB pwm + 3 x Noctua NF-A14 iPPC-3000 PWM + 2 x Noctua nf-p12 + controladora rgb + pwm Noctua NA-FH1
disipador M2: GLOTRENDS M.2 Peines cableado: Uphere 24 pz
Perifericos: Alfombrilla: MARSGAMING MMPRGB2 XXL RGB 80x30 Auriculares: Audio-Technica M50x + Audio-Technica M50xBT2 Microfono: Boya BY-M1 + Audio-Technica 2500X Raton: Logitech G602 + Logitech G203 Teclado: Razer Huntsman Elite Switches Optomecánicos Purple + Logitech Signature K650 Joystick HOTAS: Thrusmaster Hotas Warthog SAI: APC Easy UPS BVX1200LI-GR Monitor: Philips 436M6VBPAB 43" 4K HDR1000 AmbiGlow Gsync Silla: Diablo X-Horn XL
NAS: Synology DS220+ 2BAY 2.0 GHz DC 2GB DDR4 RAM: Crucial RAM 4GB DDR4 2666 Mhz HDD: 2 x Western Digital WD Trastar DC Hc310 6Tb RAID 0
TV: Samsung S93C 65" QD-OLED


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

Re: PescaGTP ayuda script

Mensaje por <A2>Flac0 »

Falla según el tipo de vehículo, es curioso, porque en vehículo con mucho espacio en la posición "Cargo" no falla (barcos, chinooo, blackfish...) pero en vehículos, black hawks y little birds hay un 15-20% de fallo..m inexplicable
Imagen
"Lánzame a los lobos y volveré liderando a la manada."
Imagen

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

Re: PescaGTP ayuda script

Mensaje por <A2>Pescadorr »

Aqui te dejo el script que movía a las unidades a los helis en susurros en tanoa, he llorado al volver a ver esta misión, en fin:

es un scripts ejecutado en todos los clientes en donde ya tengo calculado el espacio en los helicópteros y el tamaño de los grupos a mover. te omito scripts y comandos que solo eran necesarios para la misión:

Código: Seleccionar todo

null = [] spawn
{
	{	
		if (local _x) then    //al ejecutarlo en todas las maquinas hay que filtrar para que solo se ejecute donde la maquina sea local y asi evitamos redundancia y errores y ganamos rendimiento 
		{
			waitUntil
			{
				if (vehicle _x != heli_rescate_1) then
				{
					_x assignAsCargo heli_rescate_1;
					_x moveInCargo heli_rescate_1;
				};
				sleep 1;
				vehicle _x == heli_rescate_1
			};
		};
	} foreach (units alpha + units bravo + units charlie + [playero] + [playero2]);
};
donde:
heli_rescate_1 es el nombre del heli
alpha bravo y charlie son grupos
playero y playero2 son unidades

Hay un comando nuevo que debería de funcionar que te permitiría hacerlo desde el servidor sin tener que usar un remoteexec:
https://community.bistudio.com/wiki/moveInAny

Código: Seleccionar todo

if (isserver) then
{
	null = [] spawn
	{
		{ 
			waituntil 
			{ 
				_x moveInAny heli_1;
			}; 
		} foreach grupo; 
	};
};


grupo seria el grupo de jugadores a mover
heli_1 el nombre del vehiculo

si moveinany no va y necesitas ejecutarlo desde el servidor:

Código: Seleccionar todo

Pes_fnc_mueveencarga = 
{
	_unidad = _this select 0;
	_vehiculo = _this select 1;

	if (!alive _unidad) exitwith {};
	_unidad assignAsCargo _vehiculo;
	_unidad moveincargo _vehiculo;
};
publicVariable "Pes_fnc_mueveencarga";


if (isserver) then
{
	null = [] spawn
	{
		{ 
			waituntil 
			{ 
				[_x, heli_1] remoteexec ["PES_fnc_mueveencarga", _x];
			}; 
			sleep 0.1;  //dale un  respiro al servidor y que no lance todos los remoteexec del tiron
		} foreach grupo; 
	};
};
grupo seria el grupo de jugadores a mover
heli_1 el nombre del vehiculo

No me he complicado nunca de usar el index, osea el numero de asiento de cada vehiculo porque no lo crei necesario nunca, recuerda que si haces un moveincargo hay que usar un assingascargo antes, y si lo ejecutas en todos los clientes filtrar por la localidad.
PC: Caja: DEEP COOL MATREXX 70 3F CPU: Ryzen 7 5800X P. Base: Gigabyte X570 Aorus Elite RAM: Team Group T-Force Dark Z Alpha 2x16 gb ddr4 3600 Mhz CL18 Disipador cpu: Corsair H-100 Hydro series Pasta termica: Thermalright TF8 13.8 W/MK + Coollaboratory Liquid Pro + Cooler Master MasterGel Maker GPU: Asus GeForce TUF Gaming RTX 4070 Ti 12GB GDDR6X Discos: M2 samsung 970 512 mb 3.0 + M2 Samsung 980 PRO 1 Tb 4.0 + HDD Barracuda 4 Tb Vent: 4 x deep cool RGB pwm + 3 x Noctua NF-A14 iPPC-3000 PWM + 2 x Noctua nf-p12 + controladora rgb + pwm Noctua NA-FH1
disipador M2: GLOTRENDS M.2 Peines cableado: Uphere 24 pz
Perifericos: Alfombrilla: MARSGAMING MMPRGB2 XXL RGB 80x30 Auriculares: Audio-Technica M50x + Audio-Technica M50xBT2 Microfono: Boya BY-M1 + Audio-Technica 2500X Raton: Logitech G602 + Logitech G203 Teclado: Razer Huntsman Elite Switches Optomecánicos Purple + Logitech Signature K650 Joystick HOTAS: Thrusmaster Hotas Warthog SAI: APC Easy UPS BVX1200LI-GR Monitor: Philips 436M6VBPAB 43" 4K HDR1000 AmbiGlow Gsync Silla: Diablo X-Horn XL
NAS: Synology DS220+ 2BAY 2.0 GHz DC 2GB DDR4 RAM: Crucial RAM 4GB DDR4 2666 Mhz HDD: 2 x Western Digital WD Trastar DC Hc310 6Tb RAID 0
TV: Samsung S93C 65" QD-OLED


Responder