Registrarse

[RPG - Scripting] Añadir gráfico a la tarjeta de entrenador

Estado
Cerrado para nuevas respuestas.

Morel X

Pues bueno aquí estamosxD
Buenas, pues quería añadir un pequeño gráfico a la tarjeta de entrenador en un determinado punto de la historia, como si ganaras una medalla normal, solo que otra posición, por ejemplo debajo del sprite del entrenador.

Quiero añadirle el gráfico con un evento y poder cambiar ese gráfico más adelante por otro varias veces.

Si es posible me gustaría que fuera en un script aparte que se pueda poner encima del main para evitar errores, gracias!
 

Jessie

What goes around, comes around
Si aún no has modificado el script que te trae essentials, puedes simplemente buscar la función pbDrawTrainerCardFront y ahí encontrarás donde se generan las imágenes de las medallas, utilizando el mismo método, puedes agregar más imágenes bajo las condiciones que desees.

Código:
imagePositions = []
    for i in 0...8
      if $Trainer.badges[i+region*8]
        imagePositions.push(["Graphics/Pictures/Trainer Card/icon_badges",x,310,i*32,region*32,32,32])
      end
      x += 48
    end
    pbDrawImagePositions(overlay,imagePositions)
Como verás la variable imagePositions guardará los datos de todas las imágenes que se generarán cada vez que abres la tarjeta, ahí mismo puedes guardar los datos de la nueva imagen que deseas agregar.

Y para agregar los datos de esa nueva imagen solo tienes que hacerlo de esta manera
Código:
imagePositions.push(["Dirección",X,Y,OX,OY,TAMX,TAMY])
al colocar .push, le decimos al script que queremos agregar otro dato a la lista de la variable imagePositions lo cual se le conoce como array.

-Donde dice "Dirección" es la ruta donde se encuentra la imagen a cargar, el cual debe estar entre comillas " ".
-X es la posición x de la imagen.
-Y es la posición y de la imagen.
-OX y OY son las posiciones en donde comienza a ser leida la imagen, esto funciona si quieres que esa imagen cambie constantemente, por ejemplo la imagen de la lista de medallas, es una imagen con todos las medallas, el OX y OY son la posiciones de inicio de cada medalla.
-TAMX y TAMY son el tamaño de la imagen, en caso de que la imagen sea más grande que estas cantidades, esta saldrá cortada, esto se usa para saber el tamaño de la imagen a cargar lo cual es usado igualmente en el ejemplo de las medallas.

Ahora podemos hacer algo así :

Código:
imagePositions = []
    for i in 0...8
      if $Trainer.badges[i+region*8]
        imagePositions.push(["Graphics/Pictures/Trainer Card/icon_badges",x,310,i*32,region*32,32,32])
      end
      x += 48
    end

#Aquí puedes agregar tu imagen.
# como ejemplo usaré una imagen llamada "imgs" de 64x64

if $game_variables[666]>0
 imagePositions.push(["Graphics/Pictures/TrainerCard/imgs",50,200,0,0,64,64])
end
#
 pbDrawImagePositions(overlay,imagePositions)
En el ejemplo he usado $game_variables[666], esto quiere decir que la imagen aparecerá si la variable global número 666 tiene un valor mayor a cero, por supuesto puedes usar la variable que quieras o combinarlo con otros condicionales para que tu imagen pueda ir cambiando según necesites

Por ejemplo :

Código:
if $game_variables[666]>0
 imagePositions.push(["Graphics/Pictures/TrainerCard/imgs_#{$game_variables[666]}",50,200,0,0,64,64])
end
En este ejemplo la imagen se llamará según el valor de la variable, si la variable es igual a 1 entones la imagen deberá llamarse imgs_1 y así sucesivamente la imagen cambiará según el valor de la variable.


Otra manera es usando el ejemplo de las medallas :

Código:
if $game_variables[666]>0
  ox=$game_variables[666]-1
 imagePositions.push(["Graphics/Pictures/TrainerCard/imgs",50,200,ox*64,0,64,64])
end
Aquí manejamos una sola imagen que contenga todas las diferentes imágenes que usarás, como en el caso de las medallas que están todas en una sola imagen, ya que la imagen será 64x64, hemos puesto que el origen de cada imagen sera igual a 64(tamañox) por el valor de la variable-1 ya que la variable debe ser mayor a cero para la imagen aparezca y la primera imagen que se va a cargar estará en la posición 0x0 le tenemos que restar ese 1, para que al multiplicar ox*64 nos de 0*64=0 lo cual es la posición, para la siguiente imagen será ox*64 que nos dará 1*64=64 lo cual es la posición de la siguiente imagen.

Así sería la imagen :

Debido a que están en linea recta las 3 imágenes el oy siempre será cero.

Y de ultimo la función pbDrawImagePositions es la que se encarga de convertir esos datos de imágenes dentro del array en imágenes que se verán en la pantalla.

Todo depende de como quieras hacerlo y los condicionales que quieras agregarle, espero que te haya servido.

Saludos.
 

Morel X

Pues bueno aquí estamosxD
Si aún no has modificado el script que te trae essentials, puedes simplemente buscar la función pbDrawTrainerCardFront y ahí encontrarás donde se generan las imágenes de las medallas, utilizando el mismo método, puedes agregar más imágenes bajo las condiciones que desees.

Código:
imagePositions = []
    for i in 0...8
      if $Trainer.badges[i+region*8]
        imagePositions.push(["Graphics/Pictures/Trainer Card/icon_badges",x,310,i*32,region*32,32,32])
      end
      x += 48
    end
    pbDrawImagePositions(overlay,imagePositions)
Como verás la variable imagePositions guardará los datos de todas las imágenes que se generarán cada vez que abres la tarjeta, ahí mismo puedes guardar los datos de la nueva imagen que deseas agregar.

Y para agregar los datos de esa nueva imagen solo tienes que hacerlo de esta manera
Código:
imagePositions.push(["Dirección",X,Y,OX,OY,TAMX,TAMY])
al colocar .push, le decimos al script que queremos agregar otro dato a la lista de la variable imagePositions lo cual se le conoce como array.

-Donde dice "Dirección" es la ruta donde se encuentra la imagen a cargar, el cual debe estar entre comillas " ".
-X es la posición x de la imagen.
-Y es la posición y de la imagen.
-OX y OY son las posiciones en donde comienza a ser leida la imagen, esto funciona si quieres que esa imagen cambie constantemente, por ejemplo la imagen de la lista de medallas, es una imagen con todos las medallas, el OX y OY son la posiciones de inicio de cada medalla.
-TAMX y TAMY son el tamaño de la imagen, en caso de que la imagen sea más grande que estas cantidades, esta saldrá cortada, esto se usa para saber el tamaño de la imagen a cargar lo cual es usado igualmente en el ejemplo de las medallas.

Ahora podemos hacer algo así :

Código:
imagePositions = []
    for i in 0...8
      if $Trainer.badges[i+region*8]
        imagePositions.push(["Graphics/Pictures/Trainer Card/icon_badges",x,310,i*32,region*32,32,32])
      end
      x += 48
    end

#Aquí puedes agregar tu imagen.
# como ejemplo usaré una imagen llamada "imgs" de 64x64

if $game_variables[666]>0
 imagePositions.push(["Graphics/Pictures/TrainerCard/imgs",50,200,0,0,64,64])
end
#
 pbDrawImagePositions(overlay,imagePositions)
En el ejemplo he usado $game_variables[666], esto quiere decir que la imagen aparecerá si la variable global número 666 tiene un valor mayor a cero, por supuesto puedes usar la variable que quieras o combinarlo con otros condicionales para que tu imagen pueda ir cambiando según necesites

Por ejemplo :

Código:
if $game_variables[666]>0
 imagePositions.push(["Graphics/Pictures/TrainerCard/imgs_#{$game_variables[666]}",50,200,0,0,64,64])
end
En este ejemplo la imagen se llamará según el valor de la variable, si la variable es igual a 1 entones la imagen deberá llamarse imgs_1 y así sucesivamente la imagen cambiará según el valor de la variable.


Otra manera es usando el ejemplo de las medallas :

Código:
if $game_variables[666]>0
  ox=$game_variables[666]-1
 imagePositions.push(["Graphics/Pictures/TrainerCard/imgs",50,200,ox*64,0,64,64])
end
Aquí manejamos una sola imagen que contenga todas las diferentes imágenes que usarás, como en el caso de las medallas que están todas en una sola imagen, ya que la imagen será 64x64, hemos puesto que el origen de cada imagen sera igual a 64(tamañox) por el valor de la variable-1 ya que la variable debe ser mayor a cero para la imagen aparezca y la primera imagen que se va a cargar estará en la posición 0x0 le tenemos que restar ese 1, para que al multiplicar ox*64 nos de 0*64=0 lo cual es la posición, para la siguiente imagen será ox*64 que nos dará 1*64=64 lo cual es la posición de la siguiente imagen.

Así sería la imagen :

Debido a que están en linea recta las 3 imágenes el oy siempre será cero.

Y de ultimo la función pbDrawImagePositions es la que se encarga de convertir esos datos de imágenes dentro del array en imágenes que se verán en la pantalla.

Todo depende de como quieras hacerlo y los condicionales que quieras agregarle, espero que te haya servido.

Saludos.
He decidido hacerlo como las medallas, estoy siguiendo este ejemplo que me has dado:

Código:
if $game_variables[666]>0
  ox=$game_variables[666]-1
 imagePositions.push(["Graphics/Pictures/TrainerCard/imgs",50,200,ox*64,0,64,64])
end
Pero estoy algo perdido para activar esto en el juego, que tendría que poner el evento para darme por ejemplo la primera imagen que hay dentro de la imagen que tiene todas las que se usaran a lo largo del juego?

Tengo que llamar un script como con las medallas?
 

Jessie

What goes around, comes around
He decidido hacerlo como las medallas, estoy siguiendo este ejemplo que me has dado:

Código:
if $game_variables[666]>0
  ox=$game_variables[666]-1
 imagePositions.push(["Graphics/Pictures/TrainerCard/imgs",50,200,ox*64,0,64,64])
end
Pero estoy algo perdido para activar esto en el juego, que tendría que poner el evento para darme por ejemplo la primera imagen que hay dentro de la imagen que tiene todas las que se usaran a lo largo del juego?

Tengo que llamar un script como con las medallas?
En el ejemplo te coloque la variable global 666, para que la imagen aparezca por primera vez necesitas hacer que la variable sea igual a 1, y cada vez que la imagen cambie solo le agregas a esa variable un +1 para que lea el ox siguiente.

ox=$game_variables[666]-1
ox*64

Así que si la variable tiene el valor 1 la posición sería

ox=1-1=0
ox*64=0*64=0
Osea el ox cero es la primera imagen

Y para cuando la variable tenga el valor 2 la posición sería

ox=2-1=1
ox*64=1*64=64
Osea el ox 64 es la segunda imagen

Y así consecutivamente.

Así que para activarla solo tiene que colocar el valor de la variable que elegiste con el valor que necesitas, 1=imagen1, 2=imagen2, etc,etc.
 
Estado
Cerrado para nuevas respuestas.
Arriba