Mundo Maker
¡Bienvenid@ a Mundo Maker!

¿Quieres aprender todo sobre el RPG Maker?



Regístrate y forma parte de Mundo Maker.

[XP] Sprite_Picture Shortcut

Ver el tema anterior Ver el tema siguiente Ir abajo

RPG Maker XP [XP] Sprite_Picture Shortcut

Mensaje por Wecoc el 2017-12-18, 00:06

Este pequeño script permite acceder al sprite de las Pictures desde un llamar script, para hacerle los cambios que sean necesarios. Además permite definirle un gráfico a la picture que no sea de la carpeta Pictures.

Código:
#==============================================================================
# ** [XP] Sprite_Picture Shortcut
#------------------------------------------------------------------------------
# Autor: Wecoc (no requiere créditos)
#------------------------------------------------------------------------------
# Este pequeño script permite acceder al sprite de las Pictures desde un llamar
# script, para hacerle los cambios que sean necesarios. Además permite
# definirle un gráfico a la picture que no sea de la carpeta Pictures
#==============================================================================

class Interpreter
  #--------------------------------------------------------------------------
  # * Obtener sprite de una picture
  #--------------------------------------------------------------------------
  def get_picture_sprite(picture_id)
    spriteset = $scene.instance_eval("@spriteset")
    pictures = spriteset.instance_eval("@picture_sprites")
    return pictures[picture_id - 1]
  end
  #--------------------------------------------------------------------------
  # * Definir gráfico de la picture
  #--------------------------------------------------------------------------
  def set_picture_graphic(picture_id, folder, name)
    sprite = get_picture_sprite(picture_id)
    sprite.folder = folder
    $game_screen.pictures_folder[picture_id] = folder
    $game_screen.pictures[picture_id].instance_eval("@name = \"#{name}\"")
    return true
  end
end

#==============================================================================
# * Game_Screen
#==============================================================================

class Game_Screen
  attr_reader :pictures_folder
  alias pic_folder_ini initialize unless $@
  def initialize
    pic_folder_ini
    @pictures_folder = [nil]
    for i in 1..100
      @pictures_folder.push("Pictures")
    end
  end
end

#==============================================================================
# * Sprite_Picture
#==============================================================================

class Sprite_Picture < Sprite
  #--------------------------------------------------------------------------
  attr_accessor :folder
  #--------------------------------------------------------------------------
  # * Initialize
  #--------------------------------------------------------------------------
  def initialize(viewport, picture)
    super(viewport)
    @picture = picture
    @folder = "Pictures"
    @folder_clone = @folder.clone
    update
  end
  #--------------------------------------------------------------------------
  # * Frame Update
  #--------------------------------------------------------------------------
  def update
    super
    folder = $game_screen.pictures_folder[@picture.number]
    if @picture_name != @picture.name or @folder != folder
      @folder = folder
      @picture_name = @picture.name
      if @picture_name != ""
        name = @picture_name
        self.bitmap = RPG::Cache.load_bitmap("Graphics/#{@folder}/", name)
      end
    end
    if @picture_name == ""
      self.visible = false
      return
    end
    self.visible = true
    if @picture.origin == 0
      self.ox = 0
      self.oy = 0
    else
      self.ox = self.bitmap.width / 2
      self.oy = self.bitmap.height / 2
    end
    self.x = @picture.x
    self.y = @picture.y
    self.z = @picture.number
    self.zoom_x = @picture.zoom_x / 100.0
    self.zoom_y = @picture.zoom_y / 100.0
    self.opacity = @picture.opacity
    self.blend_type = @picture.blend_type
    self.angle = @picture.angle
    self.tone = @picture.tone
  end
end

Cómo crear una picture con un gráfico de otra carpeta

Primero creáis la picture como siempre pero sin gráfico.
Luego en un llamar script ponéis algo como esto:

Código:
name = "001-Fighter01"
set_picture_graphic(1, "Battlers", name)

El formato es set_picture_graphic(Número de picture, Carpeta, Nombre)

Cómo aplicarle cambios al sprite directamente

Esto es algo especial porque esos cambios no se guardan al ir a menú y volver al mapa, por ejemplo, a no ser que les crees bien el atajo desde Game_Picture (así que en este caso es solo para casos concretos en los que el efecto es puntual)

La llamada de script es la siguiente:

Código:
sprite = get_picture_sprite(1)
sprite.color = Color.new(32, 32, 32, 64)
return true

El formato es get_picture_sprite(Número de picture)
y luego al sprite obtenido le haces los cambios que quieras, en el ejemplo le apliqué color gris oscuro para que se vea más oscura toda la picture.

Eso es todo espero que os sirva. Es un script bastante simple y compatible con la mayoría.
avatar
Wecoc
Administrador
Administrador



Créditos 12314

Gracias : 655

Volver arriba Ir abajo

RPG Maker XP Re: [XP] Sprite_Picture Shortcut

Mensaje por orochii el 2017-12-19, 02:56

Está muy bueno Wec. Acabo de pensar que si tus scripts fueran parches de RPG Maker 2003, la gente les vería más uso. Pero como son herramientas para sobrepasar pequeñas limitaciones del maker y la gente busca sistemas de batalla hechos pues no xD.

Este de hecho me gusta porque ya he encontrado ese problema, el comando para llamar imágenes queda muy largo xD, y no tiene las funcionalidades que has puesto. Aparte se ve cómodo el cambio de tinte del sprite accediendo a sus propiedades así. :O

Con este script prácticamente alguien con algo de ingenio puede hacerse efectos muy locos xD.
avatar
orochii
Reportero

0/3

Créditos 7343

Gracias : 477

Volver arriba Ir abajo

RPG Maker XP Re: [XP] Sprite_Picture Shortcut

Mensaje por xXIsrael0499Xx el 2017-12-19, 10:33

Oh ya lo pillo, es decir que puedo crear una carpeta por ejemplo "Faces" en otra carpeta sin tener que ponerla en Pictures.

Habria que probarlo, pero se ve interesante.
avatar
xXIsrael0499Xx
Veterano
Veterano

0/3

Créditos 2043

Gracias : 113

Volver arriba Ir abajo

RPG Maker XP Re: [XP] Sprite_Picture Shortcut

Mensaje por Contenido patrocinado


Contenido patrocinado


Volver arriba Ir abajo

Ver el tema anterior Ver el tema siguiente Volver arriba


Permisos de este foro:
No puedes responder a temas en este foro.