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 | 
 

 Decimales y contador [consulta]

Ver el tema anterior Ver el tema siguiente Ir abajo 
AutorMensaje
Uijiamusu
Legionario
Legionario
avatar

Cantidad de envíos : 13
Edad : 17
Location : Algún lugar de tu mente...
Reputación : 0
Fecha de inscripción : 06/07/2015

MensajeTema: Decimales y contador [consulta]   Sáb Ago 01, 2015 2:42 am

Buen día, tardes o noches tengan todos, esta ocación regreso por que estoy intentando modificar y crear objetos para irme familiarizando con el scripting y pues... primero, intento añadir decimales en funciones "selu.AddBonus(0.25,0,0,0.50,0)" y así, y pues, tal y como lo escribo, no funciona, intente "selu.AddBonus(1/4,0,0,1/2,0,0)" y si bien ahora si lo reconoce, al parecer no ejecuta la orden (cosa que si sucede cuando en las mismas circunstancias, establesco un entero), y en relacion con el mismo objeto, tambien intento hacer un contador de muertes, que cada x asesinatos por parte del portador, ocurra algo pero, esto no lo consigo, el codigo de mi objeto hasta ahora es simplemente
Código:
//void, Obj owner, Obj victim

if (owner.AsUnit()){
 selu.AddBonus(1/4,0,0,1/2,0);
}
(El selu es por que el heroe se supone no se puede deseleccionar, esto es parte de un mapa que estoy haciendo para probar, ya luego lo cambiare por otra cosa)
Bueno, eso ha sido todo por ahora... agradeceria que me ayudaran. 7 _7
Volver arriba Ir abajo
Camarada
Equipo de Diseño
Equipo de Diseño
avatar

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

MensajeTema: Re: Decimales y contador [consulta]   Sáb Ago 01, 2015 12:00 pm

Hola a tod@s , Uijiamusu , selu. ... se usa durante una partida , es un truco , si durante la partida haces click en ENTER y escribes  selu.AsUnit.AddBonus(4,0,0,200,0);   sumarás a la unidad seleccionada 4 puntos de ataque y 200 de vida y energía.

También has de saber que no se admiten números decimales , y en el caso de una división cullo resultado sea en decimal , el juego sólo cogerá los dígitos al lado derecho de la coma y nunca cogerá los decimales ; eso quiere decir que si el resultado es de 1.3 sólo cogerá el 1.

Para que a una unidad no la puedas seleccionar usa este script;
   unidad.AsUnit().SetNoselectFlag(true);


Para lo del item prueva con ésto .Este objeto sumará por cada cinco muertes causadas por el portador un punto en ataque y en vida. Ponlo en el apartado de "Al derrotar a una unidad" y ponle un uso al item :


int cadena_muertes = 0;

cadena_muertes = GetUseCount();
cadena_muertes += 1;

ItemUsed(GetUseCount() - cadena_muertes );

if(cadena_muertes == 6){
   owner.AsUnit.AddBonus(1,0,0,1,0);

   owner.AsUnit().RemoveBonus(0,0,0,0,1);  //este script restaura la energía en 10

   cadena_muertes = 1;
   ItemUsed(GetUseCount() - cadena_muertes );
}


No se si se podrá hacer de otra forma que no sea usar un contador (ItemUsed) por que de otra forma los valores siempre vuelven a sus puntuaciones iniciales.

Ya dirás si se sirve,...
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: Decimales y contador [consulta]   Sáb Ago 01, 2015 1:23 pm

Lo de los decimales y tal yo lo aproveché en mi mapa. Por ejemplo el anillo que coge 2 cargas por muerte y que cura 1% de la vida perdida cada 10 cargas por segundo durante 3 segundos con máximo de 50 cargas empieza a cero, Al derrotar a un enemigo hay:

int i, cura, porcen; //el objeto ompieza a 0 cargas


if (owner.IsValid()){
 if(GetUseCount()<50)
  ItemUsed(-2); //aquí añado 2 cargas por cada muerte
 if(GetUseCount()>=10){ //aquí no hace falta que entre con menos de 10 cargas
  porcen=GetUseCount()/10; //esta división, dado que se guarda en un int y no admite decimales el número se trunca, es decir pierde los                                               decimales, por ello la curación solo crece cada 10 cargas
  cura=(owner.maxhealth-owner.health)/(100/porcen);
  for (i=0; i<3; i+=1){
   if (owner.health < owner.maxhealth) {
    owner.Heal(cura);
    CreateFeedback("Heal", owner.AsUnit);
   }
   Sleep(1000);
  }
 }
}

Si quieres ganar un 0.25 de daño, no vas a poder, lo mejor es que hagas como dice camarada, uses los Usos del objeto como contador y cuando llegue al número que quieras, (en este caso 4) te de el bonus (1 de daño). Aunque también puedes hacerlo por porcentajes. Haces un rand(5) y si es ==1 entonces le das el bonus. Sería más aleatorio, pero eso a gustos ^^.
Volver arriba Ir abajo
Uijiamusu
Legionario
Legionario
avatar

Cantidad de envíos : 13
Edad : 17
Location : Algún lugar de tu mente...
Reputación : 0
Fecha de inscripción : 06/07/2015

MensajeTema: Re: Decimales y contador [consulta]   Sáb Ago 01, 2015 3:31 pm

Gracias, he usado los dos codigos y ambos funcionan de maravilla. xD
Camarada, lo de el AddBonus lo he usado por que era lo unico que tenia a mano, no sabía que se podia usar el owner.AsUnit.AddBonus, yo intente usando owner.AddBonus y no sirvio, ahora ya no le podre añadir puntos de ataque a los enemigos (si pasaba, mi heroe mataba y si seleccionaba a los enemigos les curaba y hacia mas fuertes) :36:
Molerotoni, gracias, no sabía lo de los porcentajes y el rand me viene muy bien para una idea que se me ha ocurrido, y pues eso...
¡Muchisimas gracias! ^^
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: Decimales y contador [consulta]   Sáb Ago 01, 2015 6:00 pm

Creo que hay una cosa más en la que te puedo ayudar. 
owner.AsUnit.AddBonus=
owner: Objeto de nombre "owner" que es el que porta el ítem
.AsUnit: "Convierte" un objeto en unidad, si el objeto ya era unidad. (no funciona en un lugar de objetos mágicos por ejemplo)
.AddBonus: Añade bonus a una unidad.
owner.AddBonus no funciona por que owner es un objeto y .AddBonus solo funciona con unidades
P.D.: Objeto es un tipo básico. Pueden ser edificios, unidades, animales, elementos del terreno (algunos los que están en el apartado de estructuras), lugares con objetos mágicos, etc...
Volver arriba Ir abajo
Uijiamusu
Legionario
Legionario
avatar

Cantidad de envíos : 13
Edad : 17
Location : Algún lugar de tu mente...
Reputación : 0
Fecha de inscripción : 06/07/2015

MensajeTema: Re: Decimales y contador [consulta]   Sáb Ago 01, 2015 6:22 pm

¿Entonces por eso no servía? tengo que establecer que el objeto es una unidad y... la acción, pero, si establesco que el lugar con objeto magico que lo posee se convierte en una unidad y aplico un efecto de area, ¿el efecto funcionara? (no se, se me ha ocurrido que por ejemplo, un poso cause daño en vez de curar)


Última edición por Uijiamusu el Sáb Ago 01, 2015 6:27 pm, editado 1 vez (Razón : Mala ortografía.)
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: Decimales y contador [consulta]   Sáb Ago 01, 2015 6:40 pm

Que yo sepa no debería funcionar, dado que el pozo no es una unidad, pero podrías hacerlo igualmente de esta forma:
ObjsInCircle(pozo.pos,150,cUnit).GetObjList();
Y así cogerías una lista todas las unidades a 150 unidades de la posición del pozo.
Ten en cuenta que deberías de guarda la lista. Por ejemplo:

ObjList ol;
Unit u;
int i; //primero inicializas las variables, sino no las puedes usar

while(1){
 ol=ObjsInCircle(pozo.pos,150,cUnit).GetObjList(); //guardas en ol todas las unidades a 150                                                                                    unidades de la posición del pozo
 for(i=0;i<ol.count;i+=1){//para recorrer la lista
  u=ol[i].AsUnit;//para acceder a una posición de la lista has de poner "nombre"["posicion"], en este caso, ol[i] dado que i empezará e 0 y acabará en la última posición de la lista.
  if(u.IsValid()) //vuelves a comprobar que sea una unidad
   u.Damage(25); //Le aplicas daño, en este caso 25
 }
 Sleep(500); //esperas 500 milisegundos (0,5 segundos) para volver a empezar.
}


Esto haría lo que dices, aunque no lo he probado, igual tiene algún error. Luego cuando me ponga lo pruebo si me acuerdo.
Volver arriba Ir abajo
Uijiamusu
Legionario
Legionario
avatar

Cantidad de envíos : 13
Edad : 17
Location : Algún lugar de tu mente...
Reputación : 0
Fecha de inscripción : 06/07/2015

MensajeTema: Re: Decimales y contador [consulta]   Sáb Ago 01, 2015 6:54 pm

Gracias, la probare a ver que tal, espero que funque. xD
Volver arriba Ir abajo
Ferónidas
Pretoriano
Pretoriano
avatar

Cantidad de envíos : 55
Reputación : 3
Fecha de inscripción : 02/01/2011

MensajeTema: Re: Decimales y contador [consulta]   Sáb Ago 01, 2015 10:35 pm

No sabía de la existencia del RemoveBonus. En mi mapa, cuando quería cambiar la energía de las unidades tuve que usar el AddBonus y luego quitarles vida equipandoles un objeto jeje. Muchas gracias! Ahora será un poco mas fácil.
Volver arriba Ir abajo
Contenido patrocinado




MensajeTema: Re: Decimales y contador [consulta]   

Volver arriba Ir abajo
 
Decimales y contador [consulta]
Ver el tema anterior Ver el tema siguiente Volver arriba 
Página 1 de 1.
 Temas similares
-
» Una consulta
» 4º turno y deja a menos infinito el contador
» Consulta sobre bujias
» Consulta. Altos cargos del foro vacantes.
» consulta sobre la velocidad

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: