JVLIVS CAESAR MODS FORUM
Estimado usuario invitado: Si se registra/conecta podrá tener la mejor ventaja, postear en el foro, ya que los invitados solo pueden leer.

JVLIVS CAESAR MODS FORUM

Imperium III Mods Forvm. Último Mod - MCI 9.0!
 
ÍndiceÍndice  FAQFAQ  BuscarBuscar  RegistrarseRegistrarse  ConectarseConectarse  

Comparte | 
 

 Ataques repetitivos

Ver el tema anterior Ver el tema siguiente Ir abajo 
AutorMensaje
molerotoni
General
General
avatar

Cantidad de envíos : 94
Edad : 22
Location : Valencia, España
Reputación : 25
Fecha de inscripción : 03/07/2015

MensajeTema: Ataques repetitivos   Mar Jul 14, 2015 10:39 pm

Hola de nuevo, me ha surgido otro contratiempo. Estoy intentando que se realicen periódicamente ataques a una fortaleza. En un principio intenté que hicieran catapultas pero no lo hacían. Luego hice un grupo con los arqueros que aparecían con cada ataque y les di la orden de atacar la puerta y solo lo hacía 1 arquero.
Esto ha sido lo último que he intentado y sigue disparrando solo un arqero.:
ObjList ol;
int i;

while(Puesto_Galo.obj.player != 1);
{
Sleep(60000);

for(i=0;i<3;i+=1){
SpawnGroup("Ref_gl_01_gp").AddToGroup("Ataq_gl_01_gp");
Ataq_gl_01_gp.SetCommand("move",AreaCenter("Camp_gl_01"));
                Sleep(1000); //el ataque va en 3 tandas
}
Ataq_gl_01_gp.SetCommand("move",AreaCenter("Ataq_gl_1"));
Sleep(1000); 
Ataq_gl_01_gp.AddCommand(false, "move",AreaCenter("Ataq_gl_2"));
Sleep(1000); //El doble movimiento es puramente estético, para que sigan el camino
RunAIHelper("GuardCentralArea", "guard area", "Ataq_gl_01_gp", "Ataq_gl_2");
ol=Arq_gl_gp.GetObjList();
for(i=0;i<Arq_gl_gp.count;i+=1){
ol[i].SetCommand("attack",Puert_gl.obj);
}//con esto debería de dar la orden  individualmente a todos los arqueros
WaitHealthBetween(Puert_gl,0,999,-1); // hasta aquí nunca han llegado, no le bajan la vida a la puerta
Ataq_gl_01_gp.SetCommand("move", Puert_gl.obj.pos + Point(100, 100));
Ataq_gl_01_gp.AddCommand(false,"patrol",AreaCenter("Murkrov_00"));

Sleep(240000);
}

Gracias por vuestra atención.
Volver arriba Ir abajo
Gigoras
Veterano
Veterano
avatar

Cantidad de envíos : 348
Edad : 47
Location : Salmantica.
Reputación : 125
Fecha de inscripción : 28/11/2010

MensajeTema: Re: Ataques repetitivos   Miér Jul 15, 2015 4:21 pm

Hola molerotoni , he hecho una secuencia sencilla para solucionar el problema :
Sleep(1000);
SpawnGroup("GAtaque1");
Sleep(500);
RunAIHelper("nombre1","siege","GAtaque1","Asenforteleza1");
Sleep(500);
WaitEmptyQuery(GAtaque1 , -1);
Sleep(1000);
SpawnGroup("GAtaque2");
Sleep(500);
RunAIHelper("nombre2","siege","GAtaque2","Asenforteleza1");
Sleep(500);
WaitEmptyQuery(GAtaque2, -1);
Sleep(1000);
SpawnGroup("GAtaque3");
Sleep(500);
RunAIHelper("nombre3","siege","GAtaque3","Asenforteleza1");
Te explico , pones un grupo en plantilla de unidad y sin control IA  y le pones 3 nombres de GRUPO (GAtaque1,2y3) .
Le pones un nombre de ASENTAMIENTO a la fortaleza atacada (yo me atacaba a mi mismo) DIFERENTE del nombre de script de la fortaleza (usa el nombre de asentamiento en el RunAIHelper).
Por último sustituyes los Sleep(1000); por el tiempo que quieras y si quieres que el grupo que esta atacando no este muerto para que se produzca la siguiente oleada(y puedan coincidir varias!),pues le quitas el WaitEmptyQuery(X);
Estoy preparando otra mucho mas larga ,por si no te funciona el RunAIHelper , con dos areas (delante puerta y alrededor foro)y con arqueros y guerreros para tres oleadas ... ¡¡¡pero hace mucho calor!!! para esta noche te la pongo.
Very Happy Suerte y hasta otra!  Very Happy
PD:NO es buena idea poner unidades especiales(Liberatis,Guerrilleros...) a capturar con los RunAIHelper , dan muchos problemas.
Volver arriba Ir abajo
Gigoras
Veterano
Veterano
avatar

Cantidad de envíos : 348
Edad : 47
Location : Salmantica.
Reputación : 125
Fecha de inscripción : 28/11/2010

MensajeTema: Re: Ataques repetitivos   Miér Jul 15, 2015 9:11 pm

Y esto también lo he probado ;
Sleep(1000);
SpawnGroup("GAtaque1");
Sleep(500);
GAtaque1.SetCommand("move",AreaCenter("Areapuerta"));
Sleep(100);
WaitIdle(guerreros, -1);
Sleep(100);
arqueros.SetCommand("attack",puerta);
Sleep(100);
WaitHealthBetween(puerta,0,0,-1);
Sleep(500);
GAtaque1.SetCommand("attack",AreaCenter("Areafortaleza1"));
Sleep(6000);
while(ClassPlayerAreaObjs("Military" , 1 , "Areafortaleza1").count>3);
Sleep(100);
GAtaque1.SetCommand("capture",fortaleza1.obj);
WaitEmptyQuery(GAtaque1 , -1);
//Repetir las veces que quieras.
La salud de la puerta déjala o,o porque si no falla!
Haces un área delante de la puerta y otra al rededor del foro , cuando haya menos de tres jugadores del nº1 , se ponen a capturar...
En el grupo  GAtaque1 haces dos grupos con guerreros y los arqueros .
Ya me contaras ... como ves muy simple , sin for ni while(){ 
Dos secuencias completamente lineales que no te comprometen para cambios de mapa ni te repiten ciclos ...sleeps ,  Waits  y listo!
bounce Ya me cotarás! hasta otra! bounce
Volver arriba Ir abajo
molerotoni
General
General
avatar

Cantidad de envíos : 94
Edad : 22
Location : Valencia, España
Reputación : 25
Fecha de inscripción : 03/07/2015

MensajeTema: Re: Ataques repetitivos   Miér Jul 15, 2015 11:03 pm

Muchas gracias por la ayuda, mañana lo probaré. Lo de las 3 oleadas quiere decir que haparec en en 3 oleadas, se juntan las 3 en un punto y luego atacan, y al pasar x tiempo otra vez. Básicamente es que es un campamento con 3-4 tiendas y aparecen 5 de cada una y la idea es que hagan spawn 20-20-20 y juntos vayan a atacar, por eso el for. Creo que esto no lo había explicado antes XD.


Última edición por molerotoni el Jue Jul 16, 2015 5:27 pm, editado 1 vez
Volver arriba Ir abajo
molerotoni
General
General
avatar

Cantidad de envíos : 94
Edad : 22
Location : Valencia, España
Reputación : 25
Fecha de inscripción : 03/07/2015

MensajeTema: Re: Ataques repetitivos   Jue Jul 16, 2015 5:26 pm

Vale, ahora atacan la puerta, la rompen y luego val al foro y lo capturan. Pero si los matas no hacen nada más. Así es como tengo el código:

int i;

while(Puesto_Galo.obj.player != 1 || Gerebim.obj.AsUnit.IsDead());
{
Sleep(60000);
for(i=0;i<3;i+=1){
SpawnGroup("Ref_gl_01_gp").AddToGroup("Ataq_gl_01_gp");
Ataq_gl_01_gp.SetCommand("move",AreaCenter("Camp_gl_01"));
Sleep(1500);
}
Sleep(1000);
Ataq_gl_01_gp.SetCommand("move",AreaCenter("Ataq_gl_2"));
Sleep(500);
WaitIdle(Ataq_gl_01_gp, -1);
Sleep(500);
Arq_gl_gp.SetCommand("attack",Puert_gl);
Sleep(100);
WaitHealthBetween(Puert_gl,0,0,-1);
Sleep(500);
Ataq_gl_01_gp.SetCommand("attack",AreaCenter("Puesto_gl_area"));
Sleep(6000);
while(ClassPlayerAreaObjs("Military" , 1 , "Puesto_gl_area").count>3);
Sleep(100);
Ataq_gl_01_gp.SetCommand("capture",Puesto_Galo.obj);
WaitQueryCountBetween(Ataq_gl_01_gp, 0, 5, -1);
        //Con WaitEmptyQuery no iba así que probé con esto
Sleep(60000);
}
Volver arriba Ir abajo
Gigoras
Veterano
Veterano
avatar

Cantidad de envíos : 348
Edad : 47
Location : Salmantica.
Reputación : 125
Fecha de inscripción : 28/11/2010

MensajeTema: Re: Ataques repetitivos   Jue Jul 16, 2015 7:17 pm

Bueno para algo sirvió , al menos para cuando solo haya tres del jugador nº1.
pero veo que pones secuencias complicadillas ... haber si la terminas , nos la pones y la disfrutamos todos ... espero con impaciencia bounce  la cosa promete .... bounce
!seguimos en contacto !
Volver arriba Ir abajo
molerotoni
General
General
avatar

Cantidad de envíos : 94
Edad : 22
Location : Valencia, España
Reputación : 25
Fecha de inscripción : 03/07/2015

MensajeTema: Re: Ataques repetitivos   Jue Jul 16, 2015 8:00 pm

Creo que me he vuelto a explicar mal. Con "no hacen nada más" me refiero a que no aparecen nuevas oleadas. Y no entiendo el porqué.
Volver arriba Ir abajo
molerotoni
General
General
avatar

Cantidad de envíos : 94
Edad : 22
Location : Valencia, España
Reputación : 25
Fecha de inscripción : 03/07/2015

MensajeTema: Re: Ataques repetitivos   Dom Jul 19, 2015 1:51 pm

Ya está arreglado, Gracias a Gigoras. Este es el resultado final:
int i;

while(1)
{
if(Puesto_Galo.obj.player == 1 && !Gerebim.obj.AsUnit.IsDead()){
Sleep(60000);
for(i=0;i<3;i+=1){
SpawnGroup("Ref_gl_01_gp").AddToGroup("Ataq_gl_01_gp");
Ataq_gl_01_gp.SetCommand("move",AreaCenter("Camp_gl_01"));
Sleep(1500);
}
Sleep(1000);
Ataq_gl_01_gp.SetCommand("move",AreaCenter("Ataq_gl_2"));
Sleep(500);
WaitIdle(Ataq_gl_01_gp, -1);
Sleep(500);
Arq_gl_gp.SetCommand("attack",Puert_gl);
Sleep(100);
WaitHealthBetween(Puert_gl,0,0,-1);
Sleep(500);
Ataq_gl_01_gp.SetCommand("attack",AreaCenter("Puesto_gl_area"));
Sleep(6000);
while(ClassPlayerAreaObjs("Military" , 1 , "Puesto_gl_area").count<3)
Sleep(100);
Ataq_gl_01_gp.SetCommand("capture",Puesto_Galo.obj);
WaitQueryCountBetween(Ataq_gl_01_gp, 0, 5, -1);
Sleep(60000);
}
}
Volver arriba Ir abajo
Contenido patrocinado




MensajeTema: Re: Ataques repetitivos   

Volver arriba Ir abajo
 
Ataques repetitivos
Ver el tema anterior Ver el tema siguiente Volver arriba 
Página 1 de 1.
 Temas similares
-
» Sobre los ataques inmediatos
» Dudas sobre ataques físicos
» Practica de Ataques-Gif
» Ataques Kamikazes
» Se Curan Los Ataques De Panico?

Permisos de este foro:No puedes responder a temas en este foro.
JVLIVS CAESAR MODS FORUM :: Modding en General :: Modding en General :: Edición de Scripts-
Cambiar a: