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 | 
 

 Duda sobre un script

Ver el tema anterior Ver el tema siguiente Ir abajo 
Ir a la página : Precedente  1, 2
AutorMensaje
Camarada
Equipo de Diseño
Equipo de Diseño
avatar

Cantidad de envíos : 298
Location : España
Reputación : 122
Fecha de inscripción : 01/05/2010

MensajeTema: Re: Duda sobre un script   Sáb Oct 27, 2012 10:43 am

Buenas a tod@s , siento responder tan tarde,... esque yo de programar .... poco.... .
Jochi , haber si te sirve este código. He puesto que cada 20 segundos cambie un barco de jugador, ponle más tiempo , pues es con lo que lo prové. Ha y lo pasa del jugador 1 al jugador 2 ...... tendrás que ajustarlo también.
Si sólo quieres que cambie un barco en toda la partida , quita el " while(1){ " y la ultima " } " , y creo que ya está.
Pon esto en secuencias: Mejor te lo mando en un MP, esque no sale el código entero y no se por que. ......
EDITO Ya está arreglado

ObjList ol;
Ship s;
int i,cantidad;

while(1){

Sleep(20000);
cantidad = 0;
ol=ClassPlayerObjs(cUnit,1).GetObjList();

for(i = 0 ;i < ol.count; i += 1){
s= ol[i].AsShip();
if (s.AsShip().IsAlive() && cantidad < 2){
//if(cantidad < 2){
s.AsShip().SetPlayer(2);
cantidad = cantidad + 1;
}else
if (cantidad == 2){
break;
}
}

}


Última edición por Camarada el Sáb Oct 27, 2012 11:45 am, editado 1 vez
Volver arriba Ir abajo
Jochi
Equipo de Scripts
Equipo de Scripts
avatar

Cantidad de envíos : 118
Edad : 22
Reputación : 20
Fecha de inscripción : 31/08/2011

MensajeTema: Re: Duda sobre un script   Sáb Oct 27, 2012 10:54 am

ok gracias por el codigo, si mejor mandamelo por un mensaje. Gracias
Volver arriba Ir abajo
Jochi
Equipo de Scripts
Equipo de Scripts
avatar

Cantidad de envíos : 118
Edad : 22
Reputación : 20
Fecha de inscripción : 31/08/2011

MensajeTema: Re: Duda sobre un script   Dom Nov 25, 2012 11:35 pm

Me ha surgido una duda, aunque no creo que se pueda

Necesitaria un codigo para que al azar salga una conversacion u otra

Uno se encuentra con otro y hablan y que depende de la partida diga o una conversacion u otra

Ojala que alguien sepa responderla

Gracias de antemano
Volver arriba Ir abajo
JnxF
Equipo Administradores
Equipo Administradores
avatar

Cantidad de envíos : 417
Reputación : 32
Fecha de inscripción : 23/08/2010

MensajeTema: Re: Duda sobre un script   Dom Nov 25, 2012 11:41 pm

Podrías usar esto:
Código:

int aleatorio;

sleep(rand(100));

/* Esto hace que lo que quieras que ocurra a continuación tarde entre 0 y 99 segundos, porque los números aleatorios se generan según el TIEMPO en el que se ejecutan, y si pones un tiempo aleatorio, te aseguras un poco más de que sea aleatorio */

aleatorio = rand(10); //Aquí pones la semilla y la comparas luego

if(aleatorio == 0)
  RunConv("Aleatoria1");
elseif(aleatorio == 1)
  RunConv("Aleatoria2");
//...
else
  RunConv("Aleatoria10");

Corrígeme si me equivoco.


Saludos Wink



PD: La función rand(n) genera un número aleatorio entre 0 y entre n - 1 (n menos uno).

_________________
JnxF. MODERADOR DEL FORO

Estudiante de Informática por la UPC.
Léete las [Tienes que estar registrado y conectado para ver este vínculo] antes de postear.
No dudes en mandarme un MP si tienes cualquier duda personal.
Volver arriba Ir abajo
Jochi
Equipo de Scripts
Equipo de Scripts
avatar

Cantidad de envíos : 118
Edad : 22
Reputación : 20
Fecha de inscripción : 31/08/2011

MensajeTema: Re: Duda sobre un script   Lun Nov 26, 2012 3:53 pm

He puesto el codigo como tu has dicho y tengo algunos problemas


-No entiendo lo de las semillas
-Si cuando igualo a aleatorio pongo 10 no me sale, si pongo menos de 5 me sale una y si pongo 5 o 6 me sale otra

He puesto esto, a ver si me he confundido en algo

int aleatorio;
Sleep(rand(100));
aleatorio = rand(10);

if(aleatorio == 0){
RunConv("Aleatoria1");}

else

if(aleatorio == 1){
RunConv("Aleatoria2");}
Volver arriba Ir abajo
Jochi
Equipo de Scripts
Equipo de Scripts
avatar

Cantidad de envíos : 118
Edad : 22
Reputación : 20
Fecha de inscripción : 31/08/2011

MensajeTema: Re: Duda sobre un script   Lun Nov 26, 2012 4:40 pm

Ya me sale, le he puesto un while para ver si iba o no sin tener que quitar y meter la partida. Gracias
Volver arriba Ir abajo
JnxF
Equipo Administradores
Equipo Administradores
avatar

Cantidad de envíos : 417
Reputación : 32
Fecha de inscripción : 23/08/2010

MensajeTema: Re: Duda sobre un script   Lun Nov 26, 2012 8:31 pm

Jochi escribió:
He puesto el codigo como tu has dicho y tengo algunos problemas


-No entiendo lo de las semillas
-Si cuando igualo a aleatorio pongo 10 no me sale, si pongo menos de 5 me sale una y si pongo 5 o 6 me sale otra

He puesto esto, a ver si me he confundido en algo

int aleatorio;
Sleep(rand(100));
aleatorio = rand(10);

if(aleatorio == 0){
RunConv("Aleatoria1");}

else

if(aleatorio == 1){
RunConv("Aleatoria2");}

Te explico un poco, no sé cuántas matemáticas o programación sabes, pero intentare explicarlo de la manera que creo que resulta lo más facil posible:

La función rand(n) funciona en la mayoría de lenguajes de programación de la misma manera:
Devuelve un número comprendido entre 0 y n - 1 (o matemáticamente [0, n) ).

Así, por ejemplo, podemos generar cualquier aleatoriedad que queramos. Empezaremos por las más sencillas:

  • Número aleatorio entre 0 y 6 -> rand(6) [Del 0 al 5] -> rand(7) [Del 0 al 6].
  • Otro del mismo estilo: entre 0 y 10 -> rand(10) [Del 0 al 9] -> rand(11) [Del 0 al 6].


Como puedes observar, rand(n) devuelve de 0 a n - 1, pero si queremos de 0 a n, podemos usar rand(n + 1).

Luego, te puede surgir la duda de... ¿y si quiero que el límite inferior no sea 0? Pues creo que con estos ejemplos queda más claro (más que explicarlo todo con letra):

  • Número del 2 al 10: rand(11) [Del 0 al 10] -> incremento en 2 el resultado total rand(11) + 2 [Del 2 al 12] -> bajo el nivel del rand para ajustarlo: rand(9) + 2 [Del 2 al 10].
  • Del 500 al 800: rand(800) [Del 0 al 10] -> incremento en 500 el resultado total rand(800) + 500 [Del 500 al 1300] -> disminuyo el rand para ajustarlo (le resto 300 que es 800 - 500) -> rand(300) + 50 [Del 500 al 800].


Lo de las semillas es muy sencillo: aunque pueda parecer que el resultado de los números es "aleatorio", realmente no es aleatorio, solo los humanos tenemos esta capacidad.
Un ordenador utiliza valores continuamente variables para generar números que "parecen" aleatorios, pero dada la rapidez con la que cambian las variables (generalmente suele ser la hora exacta de tu ordenador), parece que son números aleatorios.
A estos números se les conoce como pseudoaleatorios ([Tienes que estar registrado y conectado para ver este vínculo]).

Imperivm, como cualquier otro programa en un ordenador, utiliza estos números. Por ello, utilizando un Sleep(rand(...)); consigues que la ejecución se retrase un poco de tiempo aleatorio, así obligando a generar luego valores aleatorios (aunque esto no es siempre seguro).


Por lo que respecta a tu código, tienes que almacenar primeramente la variable aleatoria y luego comparar los distintos valores.

Código:

int variable;
Sleep(rand(/* lo que tú quieras, yo sugiero 500 o 300 o algo por el estilo */));

variable = /* Aquí pones lo que te he explicado antes, adaptándolo al par de valores que quieras. */;

if(variable == 0)
  //Primer caso de aleatoriedad
else if (variable == 1)
  // Segundo caso aleatorio
else if (variable == 2)
  // Tercer caso
else if (...)
  // ...

//Para el último caso, utiliza else, o else if si quieres también


// ...
else
  //Último caso aleatorio

Espero habértelo aclarado un poco, es un poco complicado de explicar :/


Saludos Wink

_________________
JnxF. MODERADOR DEL FORO

Estudiante de Informática por la UPC.
Léete las [Tienes que estar registrado y conectado para ver este vínculo] antes de postear.
No dudes en mandarme un MP si tienes cualquier duda personal.
Volver arriba Ir abajo
Jochi
Equipo de Scripts
Equipo de Scripts
avatar

Cantidad de envíos : 118
Edad : 22
Reputación : 20
Fecha de inscripción : 31/08/2011

MensajeTema: Re: Duda sobre un script   Lun Nov 26, 2012 8:40 pm

Esta muy bien explicado, mas o menos me he enterado bien. Has hecho una explicacion muy clara y ordenada, y muy entendible. Muchas gracias

Me gustaria pasarte los mapas en los que he estado participando, tanto yo poner scripts como historias mias, ya que necesito a gente que pruebe mas o menos los mapas y detecte los fallos, me diga mejoras y esas cosas. Pero no se forma de pasartelos, si quieres que te lo pase dime tu msn o lo que se para poder hacerlo

Un saludo y gracias de nuevo
Volver arriba Ir abajo
Jochi
Equipo de Scripts
Equipo de Scripts
avatar

Cantidad de envíos : 118
Edad : 22
Reputación : 20
Fecha de inscripción : 31/08/2011

MensajeTema: Re: Duda sobre un script   Dom Abr 14, 2013 12:35 am

Bueno, tengo no una duda sino una necesidad de un codigo a ver si vosotros lo sabeis. Quiero el codigo de que un grupo de soldados empiezen a entrenar, y el codigo de que dejen de entrenar. Lo he buscado en varios sitios y nada

Gracias, y espero vuestra respuesta
Volver arriba Ir abajo
Jochi
Equipo de Scripts
Equipo de Scripts
avatar

Cantidad de envíos : 118
Edad : 22
Reputación : 20
Fecha de inscripción : 31/08/2011

MensajeTema: Re: Duda sobre un script   Dom Mayo 26, 2013 11:26 am

Nadie sabe la respuesta ?
Volver arriba Ir abajo
Camarada
Equipo de Diseño
Equipo de Diseño
avatar

Cantidad de envíos : 298
Location : España
Reputación : 122
Fecha de inscripción : 01/05/2010

MensajeTema: Re: Duda sobre un script   Lun Mayo 27, 2013 10:59 am

prueva con :

Primero necesitas la tecnología, si la tienen que sacar forzosamente , haz lo siguiente .
No se como se hace para un jugador sin ciudad, ... para los que tengan ciudad pon ...

Building b;

Sleep(500);
b = ClassPlayerObjs(cBaseTownhall,1).GetObjList()[0].AsBuilding();
b.Research("Gaul Training 1");

El .... ,1 es el jugador , cambialó por el que corresponda.
..."Gaul Training 1" es el adiestramiento de nivel 1 de los galos, el nivel 2 y 3 son "Gaul Training 2" y "Gaul Training 3" .Las de las otras civis no me las se, pero con estas valen.

Y ahora para que un grupo entrene.....

Sleep(1000);
Group("Nombre de grupo").SetCommand("train");

y para que paren de entrenar antes de acabar prueva con esta orden ....

Group("Nombre de grupo").SetCommand("idle");

espero que te valga , suerte.
Volver arriba Ir abajo
Jochi
Equipo de Scripts
Equipo de Scripts
avatar

Cantidad de envíos : 118
Edad : 22
Reputación : 20
Fecha de inscripción : 31/08/2011

MensajeTema: Re: Duda sobre un script   Lun Mayo 27, 2013 10:10 pm

Si camarada, me ha servido muchas gracias. Tu tienes algun lugar donde estan estos scripts, o como si los "inventaras" tu que los haces con lo que sabes. Si es asi me gustaria aprender,para aunque ya nadie pregunte, una pena la verdad. Por que si nos hubieramos juntados unos cuantos, hubieramos hecho una campaña estilo 1 increible. Yo siempre estoy buscando a gente para que me ayude a hacer mis mapas, yo les ayudo a ellos. Pero al final siempre tienen que hacer otras cosas, es lo logico. De verdad, veo que hay muchisima gente registrada en este foro, si teneis algo de tiempo y os gusta, hagamos un trabajo juntos

Mi hotmail para pasar los mapas

[Tienes que estar registrado y conectado para ver este vínculo]

Si no se puede poner lo siento, lo intente poner en mi perfil y no salia

Un saludo
Volver arriba Ir abajo
Camarada
Equipo de Diseño
Equipo de Diseño
avatar

Cantidad de envíos : 298
Location : España
Reputación : 122
Fecha de inscripción : 01/05/2010

MensajeTema: Re: Duda sobre un script   Lun Mayo 27, 2013 11:02 pm

no, Jochi, Yo lo que tengo son un puñado de códigos y ordenes hechos. Todo ello lo he ido copiando de códigos que otros han usado, .. jeje yo no se programar .Si te interesa tener todos los códigos introduce esto en el imperium ..., con el imperium ejecutado ,( en el mismo editor te vale) , pulsa Enter e introduce esta palabra DumpFuncToXML() , y pulsa enter otra vez . Crearás un archivo llamado "dump_try.xml" en el interior de la carpeta del imperium. Abreló con el blok de notas del windows.
Ahí tendrás todos los códigos , pero los tendrás que interpretar.
Volver arriba Ir abajo
Jochi
Equipo de Scripts
Equipo de Scripts
avatar

Cantidad de envíos : 118
Edad : 22
Reputación : 20
Fecha de inscripción : 31/08/2011

MensajeTema: Re: Duda sobre un script   Lun Mayo 27, 2013 11:14 pm

ok gracias camarada, bueno para el resto si leeis lo que digo estare encantado de hacer cosas con vosotros

Un saludo
Volver arriba Ir abajo
Contenido patrocinado




MensajeTema: Re: Duda sobre un script   

Volver arriba Ir abajo
 
Duda sobre un script
Ver el tema anterior Ver el tema siguiente Volver arriba 
Página 2 de 2.Ir a la página : Precedente  1, 2
 Temas similares
-
» Duda sobre el Renombre
» duda sobre armaduras
» Duda sobre 1302 1200 Mexicano Aleman
» Duda sobre commander
» Duda sobre coaccion

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: