script respawn con persigue y en posiciones aleatorias

Sección para misiones y edición ArmA III

Moderador: C. Misiones & Noticias

Responder
DPD
Visitante
Mensajes: 881
Registrado: 25 Feb 2009, 16:33

script respawn con persigue y en posiciones aleatorias

Mensaje por DPD »

Queremos crear grupos de unidades enemigas poco a poco durante la partida en posiciones aleatorias de nuestro escenario , posiciones que sabemos que los jugadores no transitarán,
este script generará grupos que se respanearán en posiciones aleatorias y acosarán a una patrulla de jugadores elegida de forma aleatoria.

Efecto de estos scripts: Acoso constante a lo jugadores, se meterán en los edificios, los buscarán donde sea, se aproximarán todo lo posible, los perseguirán, sensación de acoso. Hace difícil la misión.

Ventaja fundamental: Las IAs son obligadas a combatir con los jugadores, se van creando poco a poco y por tanto tenemos fps altos.
Se puede combinar algunos grupos con este tipo de respawn y con ias en mapa o otro tipo de respaneo.




Para ello necesitamos nombrar los grupos de los jugadores y definir las posiciones aleatorias donde queremos que se respaneen los grupos de enemigos perseguidores.



1. necesario tener una activador bando enemigo que cubra toda la zona del conflicto llamado/triggerEnemigos

2. todas las patrullas de los jugadores ponerlas un nombre y meter cada nombre en la instruccion del script _bestShooter =[GRPALPHA,GRPBRAVO,GRPCHARLIE,GRPDELTA,GRPFOXTROT,GRPECHO,GRPMANDO1,GRPMANDO2,GRPfrancos,grpmedicos] call BIS_fnc_selectRandom;

3. en la instruccion _bestplace = [respawnenemigosIsla4,respawnenemigosIsla3,respawnenemigosIsla2,respawnenemigosIsla1] call BIS_fnc_selectRandom; introducir nombres de las lógicas donde quieran que se respaneen los grupos. se elegira uno aleatorio

se necesitan dos scripts además

respaneocontinuoPersigue.sqf


Código: Seleccionar todo


// necesario tener una activador bando enemigo que cubra toda la zona del conflicto llamado //triggerEnemigos
// todas las patrullas de los jugadores ponerlas un nombre y meter cada nombre en la //instruccion del script _bestShooter =[GRPALPHA,GRPBRAVO,GRPCHARLIE,GRPDELTA,GRPFOXTROT,GRPECHO,GRPMANDO1,GRPMANDO2,GRPfrancos,grpm//edicos] call BIS_fnc_selectRandom;
// en la instruccion _bestplace = [respawnenemigosIsla4,respawnenemigosIsla3,respawnenemigosIsla2,respawnenemigosIsla1] call //BIS_fnc_selectRandom;  introducir nombres de las logicas donde quieran que se respaneen los //grupos. se elegira uno aleatorio
//

private["_numEnemigos","_text ","_i","_bestShooter","_paramEnemigos","_paramNumPatrullas","_tiempoEntrePatrulla"];

_paramEnemigos=130;// el activador triggerEnemigos leera el numero de IAS enemigas y sera una condicion para que se sigan creando o no.
_paramNumPatrullas=6;// numero de patrullas maximo que se crearan poco a poco
_tiempoEntrePatrulla=300; // cada 5 minutos

_numEnemigos= count list triggerenemigos;

_i=0;

while {_numEnemigos<_paramEnemigos && _i< _paramNumPatrullas } do




 {


_i=_i+1;
_text = formatText ["grpmalo12%1",_i];

_bestplace = [respawnenemigosIsla4,respawnenemigosIsla3,respawnenemigosIsla2,respawnenemigosIsla1] call BIS_fnc_selectRandom;

_text= [position _bestplace, EAST, unidadesE1] call BIS_fnc_spawnGroup ; 

{ 
 
 
 
 
 
_x setskill 1; 
_x setskill ["general",1]; 
  
_x setskill ["Endurance",1]; 
_x setskill ["aimingAccuracy",0.30]; 

 _x setskill ["aimingShake",1]; 
_x setskill ["aimingSpeed",1]; 
 _x setskill ["endurance",1]; 
 _x setskill ["spotDistance",1]; 

  _x setskill ["spotTime",1]; 
 _x setskill ["courage",1]; 
 _x setskill ["reloadSpeed",1]; 
_x setskill ["commanding",1];
 
_x addmagazine "HandGrenade";
 
_x addmagazine "HandGrenade"; 
_x setSpeedMode "full"; 
_x addmagazine "SmokeShell"; 
_x addmagazine "SmokeShell"; 

 
 












	










 
} foreach units _text; 
  
  

sleep 20;

_text setCombatMode "RED";
_text setSpeedMode "FULL";



_bestShooter = [GRPALPHA] call BIS_fnc_selectRandom;


nullvar=[_text,_bestShooter,1,60] execvm "persigue.sqf";
sleep _tiempoEntrePatrulla;




};

persigue.sqf

Código: Seleccionar todo




/*
	persigue.sqf v1.2 2010/9/30 - 	Boreas
	Sencillo script que sirve para que una unidad persiga a otra. Para usarlo invocar la siguiente instruccion:
	
	nullvar=[unidadPerseguidora,unidadPerseguida] execVm "persigue.sqf";
	
	Se le pueden pasar mas parametros para acotar mas el modo de persecución:
	
	nullvar=[unidadPerseguidora,unidadPerseguida,radio,tiempo] execVm "persigue.sqf";
	
	Los parametros signigican lo siguiente:
		-unidadPerseguidora: La IA que  persigue
		-unidadPerseguida: La IA o el player que va aser perseguido
		-radio: radio alrededor de la unidad perseguida en el que la IA persegidora intetnara moverse buscando.(25m por defecto)
		-timpo: tiempo en segundos en que la IA perseguidora actualiza su movimiento para dirigirse a la nueva aera de busqueda(60s por defecto)
		
	Ejemplo1:
		nullvar=[cazador,presa] execvm "persigue.sqf";
	Ejemplo2:
		nullvar=[cazador,presa,40,30] execvm "persigue.sqf";
		//40 son los metros de radio alrededor de la presa donde el cazador se movera
		//30 es el intervalo de tiempo que el cazador utiliza para dirigirse a la nueva zona de busqueda de la presa
*/

private ["_radio","_timeout","_grpPersigue","_grpPerseguido","_seguir","_ldrpersigue","_ldrperseguido","_offx","_offy","_time2","_persigue","_perseguido","_diametro"];
_persigue = _this select 0;
_perseguido = _this select 1;
_radio= _this select 3;
_timeout= _this select 4;

if (count (_this) >=3 ) then {
	_radio = _this select 2;
	};
if (count (_this) >=4 ) then {	
	_timeout=_this select 3;
	};

	
_diametro = _radio + _radio; //necesitamos el diametro=radio x 2
_seguir=true;



_grpPersigue="a";
_grpPerseguido="a";
if((typeName _persigue)=="GROUP")then{
	_grpPersigue = _persigue;		
} else {	
	_grpPersigue = group _persigue;			
};
//player sidechat "(typeName _perseguido) "+str((typeName _perseguido));
if((typeName _perseguido)=="GROUP")then{
	_grpPerseguido =  _perseguido;	
	//player sidechat "R0";
} else {	
	//player sidechat "R1";
	_grpPerseguido = group _perseguido;
	//player sidechat "R2";
};

while {_seguir} do{

_ldrpersigue = leader _grpPersigue;
_enemigosoldier = _ldrpersigue findNearestEnemy (position _ldrpersigue); 

_dist=_enemigosoldier distance _ldrpersigue;

if (_dist<200) then { _ldrpersigue setBehaviour "COMBAT";  } else
 { _ldrpersigue setBehaviour "AWARE";  };
      
       _ldrpersigue setCombatMode "RED";
	_ldrperseguido = leader _grpPerseguido;	
	//player sidechat "count units _grpPersigue" +str(count units _grpPersigue);
	//player sidechat "count units _grpPerseguido" +str(count units _grpPerseguido);
	if((count units _grpPersigue)==0)then{
		_seguir=false;
	};
	if ((count units _grpPerseguido)==0)  then {
		_grpPerseguido = [GRPALPHA,GRPBRAVO,GRPCHARLIE,GRPECHO,GRPMANDO1,GRPfrancos,grpmedicos] call BIS_fnc_selectRandom;



	};
	_offx = (_radio) - random _diametro;
	_offy = (_radio) - random _diametro;	 
	
	_ldrpersigue move (_ldrperseguido modelToWorld [_offx,_offy,0]);
	_ldrpersigue setSpeedMode "FULL";
        _ldrpersigue setBehaviour "RED";
	sleep 1;
	_time2 = time + _timeout;
	waitUntil {sleep 0.5;moveToCompleted _ldrpersigue or moveToFailed _ldrpersigue or !alive _ldrpersigue or _time2 < time};
};

	
MI SUPER PC:
Procesador: INTEL CORE I7 5820K (12 NÚCLEOS 4.2 GHZ O.C)
GRÁFICA :MSI GTX 980 4GB
RAM: 32GB DDR4 3200 MHZ
DISCO DURO SSD SAMSUNG 950 PRO 256 GB
DISCO DURO SATA 3 2 TB

Avatar de Usuario
RODAS43
Visitante
Mensajes: 70
Registrado: 28 Dic 2014, 18:18

Re: script respawn con persigue y en posiciones aleatorias

Mensaje por RODAS43 »

Hola no tienes ninguna misión ejemplo para descargar o video para entender lo que explicas en los 2 scritp? Seria de gran ayuda.
Intel (R) core (TM) i7- 3770k 3.5 Ghz / ASUS GFORCE GTX 760

DPD
Visitante
Mensajes: 881
Registrado: 25 Feb 2009, 16:33

Re: script respawn con persigue y en posiciones aleatorias

Mensaje por DPD »

RODAS43 escribió:Hola no tienes ninguna misión ejemplo para descargar o video para entender lo que explicas en los 2 scritp? Seria de gran ayuda.
HOLA , aquí tienes un ejemplo, necesitas la isla de pr afghan village para ver la misión. quizás también el cba y taskforce

https://www.dropbox.com/s/pzb4gd4u8y68y ... v.rar?dl=0
MI SUPER PC:
Procesador: INTEL CORE I7 5820K (12 NÚCLEOS 4.2 GHZ O.C)
GRÁFICA :MSI GTX 980 4GB
RAM: 32GB DDR4 3200 MHZ
DISCO DURO SSD SAMSUNG 950 PRO 256 GB
DISCO DURO SATA 3 2 TB

Avatar de Usuario
RODAS43
Visitante
Mensajes: 70
Registrado: 28 Dic 2014, 18:18

Re: script respawn con persigue y en posiciones aleatorias

Mensaje por RODAS43 »

Gracias es de gran ayuda.
Intel (R) core (TM) i7- 3770k 3.5 Ghz / ASUS GFORCE GTX 760

Avatar de Usuario
RODAS43
Visitante
Mensajes: 70
Registrado: 28 Dic 2014, 18:18

Re: script respawn con persigue y en posiciones aleatorias

Mensaje por RODAS43 »

:-? Con que sutileza y sencillez has elaborado un autentico scritp capaz de tener a un pelotón en continua tensión. No he podido completar una idea definitiva solo general, ya que he tenido poco tiempo desde ayer para sacarle el máximo provecho.Lo poco que he podido ver es un autentico script de cazador.Esta tarde me pondré manos a la obra y podré ver más detalle, aunque la sencillez es lo que me gusta de este scritp. Viendo la misión he visto el activador que cubre toda la zona donde los grupos van a spawnear, importantisimo asignar nombre grupo IA jugable. Lo que no me ha quedado claro si yo quiero utilizar una facción diferente donde pego los classmen? y tengo otra duda que es la siguiente , ¿si en un momento dado yo quisiera que un vehículo light como una Pikat armada que en una de las lógicas apareciera y hostigara a los jugadores? ¿ Podría valer este scritp?.Quiero ver en detalle rendimiento Fps , si es capaz de spawnear unidades en el agua y como lo hace, así como spawnear unidades de infantería sobre zonas de mapa pantanosas tipo selva Vietnan etc.Me gustaría saber si los 20 segundos que le has asignado en el activador ¿Es lo que va a tardar en spanear los grupos? Si yo quiera hacer una misión de defensa, ejemplo: atacamos un pueblo lo conquistamos y al cabo de 15 minutos se activa el script ¿Como se haría? Un activador con tiempo que a su vez activa el activador del script? ¿Como lo podría hacer?
Por otra parte DPD gracias por compartir tus conocimientos, conforme vallan saliendo dudas que son muchas te preguntarse, hoy pasaré por el Ts3, pero ya te digo fabuloso, simple y practico.
Intel (R) core (TM) i7- 3770k 3.5 Ghz / ASUS GFORCE GTX 760

DPD
Visitante
Mensajes: 881
Registrado: 25 Feb 2009, 16:33

Re: script respawn con persigue y en posiciones aleatorias

Mensaje por DPD »

RODAS43 escribió::-? Con que sutileza y sencillez has elaborado un autentico scritp capaz de tener a un pelotón en continua tensión. No he podido completar una idea definitiva solo general, ya que he tenido poco tiempo desde ayer para sacarle el máximo provecho.Lo poco que he podido ver es un autentico script de cazador.Esta tarde me pondré manos a la obra y podré ver más detalle, aunque la sencillez es lo que me gusta de este scritp. Viendo la misión he visto el activador que cubre toda la zona donde los grupos van a spawnear, importantisimo asignar nombre grupo IA jugable. Lo que no me ha quedado claro si yo quiero utilizar una facción diferente donde pego los classmen? y tengo otra duda que es la siguiente , ¿si en un momento dado yo quisiera que un vehículo light como una Pikat armada que en una de las lógicas apareciera y hostigara a los jugadores? ¿ Podría valer este scritp?.Quiero ver en detalle rendimiento Fps , si es capaz de spawnear unidades en el agua y como lo hace, así como spawnear unidades de infantería sobre zonas de mapa pantanosas tipo selva Vietnan etc.Me gustaría saber si los 20 segundos que le has asignado en el activador ¿Es lo que va a tardar en spanear los grupos? Si yo quiera hacer una misión de defensa, ejemplo: atacamos un pueblo lo conquistamos y al cabo de 15 minutos se activa el script ¿Como se haría? Un activador con tiempo que a su vez activa el activador del script? ¿Como lo podría hacer?
Por otra parte DPD gracias por compartir tus conocimientos, conforme vallan saliendo dudas que son muchas te preguntarse, hoy pasaré por el Ts3, pero ya te digo fabuloso, simple y practico.


Hola Rodas;

Comentarte tus dudas.

1. Los classemen Los nombres de las clases los puedes cambiar o en el script respawncontinuopersigue.sqf, siempre que veas la instrucción de bohemia interactive fn_spawngroup hay un array llamado unidadesE o unidadesW, ese vector inicialmente en el script puedes definirlo o puedes hacerlo como yo,
yo lo hago desde el init.sqf, si te fijas en el lado del servidor, uso tres arrays, unidadesE, unidadesW , unidadesind, que los defino usando tres grupos de IAS ya puestos en el escenario y llamados como grupomalo, grupomalo1, grupobueno, grupobuenoind ,grupos que luego se borrarán al empezar la misión y definirse esos classmen. SIRVE PARA TODOS LOS ADDONS.. Para poder definir esos arrays con esos grupos de uniades ya puestos en el escenario y poder borrarlos se necesita primero unos segundos . Por eso pongo el activador que ejecuta el script respawncontinuopersigue que se inicie más tarde, pueden ser 20 segundos, pueden ser sólo 5 segundos, pero algo de tiempo necesita, no se puede ejectuar inmediatamente porque h ay que darle tiempo a que se definan los arrays de classmen.

2. El script se puede utilizar en cualquier zona para ello pones las lógicas donde se respanean donde interesa, es decir si quieres buzos, como alguna vez he creado , pon las lógicas debajo del agua y usa las clases de los buzos.

3. El script lo tengo sólo adptado para infantería pero se puede añadir también unas líneas para que se puedan respanear vehículos también.

4. hay un parámetro en respawncontinuopersigue.sqf , una variable que define el tiempo de respaneo entre dos patrullas ,cuanto más tiempo pongas , más rendimiento tendrás evidentemente.

5. lo genial es combinar algunas unidades respawneadas en edificios o patrullando vigilantes en objetivos , unas pocas solas y luego cuando entre el combate o se alerten generas grupos de IAS que empiezan a acosar a los grupos de jugadores, así no sólo crearás mucha tensión de combate sino que ganaras muchos fps porque haces que gran parte de las IAS vayan poco a poco buscando a los jugadores y no las tienes desperdigadas sin hacer nada.


6. en la duda de tu misión pones ese activador llamando a respawncontinuopersigue.sqf haces que se ejecute al cabo de 15 * 60 segundos en vez de tenerlo a 20 segundos. yo lo tengo así para que de tiempo de definir los arrays y que enseguida se creen las ias enemigas. TEngo misiones en las que me interesa que se creen perseguidores sólo cuando el enemigo se alerte .


un saludo rodas

pd. el script fundamental persigue.sqf no es mío , es de BOREAS, un exarmados que conocí pero lo he adaptado para darle aleatoriedad y usarlo cuando yo quiera, aleatoriedad en posiciones que yo quiero y aleatoriedad para perseguir a un grupo determinado. No sólo logras un acoso y continuo combate, como puedes ver en la misión de AREA 51 , vídeo de japo32 o jefe, es que nunca sabes por donde te van a salir, cómo te van a flanquear o si te atacarán en la retaguardia.
Esto hace que una misión de forma muy sencilla como dices tú, tenga una dificultad muy grande.
MI SUPER PC:
Procesador: INTEL CORE I7 5820K (12 NÚCLEOS 4.2 GHZ O.C)
GRÁFICA :MSI GTX 980 4GB
RAM: 32GB DDR4 3200 MHZ
DISCO DURO SSD SAMSUNG 950 PRO 256 GB
DISCO DURO SATA 3 2 TB

Avatar de Usuario
RODAS43
Visitante
Mensajes: 70
Registrado: 28 Dic 2014, 18:18

Re: script respawn con persigue y en posiciones aleatorias

Mensaje por RODAS43 »

Bien, y gracias por responder tan rápido. Al principio me hice un lío al ver la plantilla de la misión que había varios scritp, como persigue.sqf, respawneocontinuo.sqf, respawncontinuopersigue.sqf y las llamadas en el init.sqf lo estoy probando por separado, al principio me costo trabajo entenderlo por el tema de las diferentes llamadas asi en lo general.En la misión vi como después del gran activador otro activador más pequeño en la cual haces la llamada al scritp persigue pero no defines en la formula el parametro de quien es el grupo cazador y cual es el perseguido, tengo algunas dudas ¿ para hostigar varios grupos como se haría? ¿Varios activadores o con uno sobra?. Parametro como la distancia en metros en la cual está el cazador y el cazado , hay tengo mis comeduras de coco.

Pd: Haber si nos viéramos en el Ts3 , me es más fácil plantearte mis dudas que por aquí por escrito.
De todos modos gracias por la explicación.
Intel (R) core (TM) i7- 3770k 3.5 Ghz / ASUS GFORCE GTX 760

Responder