Mundo Maker
¡Bienvenid@ a Mundo Maker!

¿Quieres aprender todo sobre el RPG Maker?



Regístrate y forma parte de Mundo Maker.
Conectarse

Recuperar mi contraseña

Temas importantes
----------------------------------------
Páginas con recursos RPG Maker
----------------------------------------
----------------------------------------
----------------------------------------
----------------------------------------
----------------------------------------
----------------------------------------
----------------------------------------
----------------------------------------
----------------------------------------
Afiliados
Estadísticas
Tenemos 4133 miembros registrados.
El último usuario registrado es Neysersitoh.

Nuestros miembros han publicado un total de 84767 mensajes en 12064 argumentos.

[XP] Custom Bush

Ver el tema anterior Ver el tema siguiente Ir abajo

RPG Maker XP [XP] Custom Bush

Mensaje por Wecoc el 2016-09-26, 11:53

Otro script facilillo para la colección xD Éste script permite modificar el modo en el que se ve el efecto "hierba alta" en el jugador y los eventos.
Va encima de main. No requiere créditos.

Código:
#==============================================================================
# ** Custom Bush v1.2
#------------------------------------------------------------------------------
#  Autor: Wecoc (no requiere créditos)
#==============================================================================

module Custom_Bush
  DEPTH = 12                    # Profundidad default
  COLOR = Color.new(0, 0, 0, 0) # Color default
  OPACITY = 160                # Opacidad default
  TEMPLATE = ''                # Plantilla
end

#==============================================================================
# ** Game_Character
#==============================================================================

class Game_Character
 
  attr_writer  :bush_depth
 
  attr_accessor :bush_color
  attr_accessor :bush_opacity
  attr_accessor :bush_template
 
  alias custom_bush_ini initialize unless $@
  def initialize
    custom_bush_ini
    @bush_depth = Custom_Bush::DEPTH
    @bush_color = Custom_Bush::COLOR
    @bush_opacity = Custom_Bush::OPACITY
    @bush_template = Custom_Bush::TEMPLATE
  end
 
  def bush_depth
    return 0 if @tile_id > 0 or @always_on_top
    if @jump_count == 0 and $game_map.bush?(@x, @y)
      return @bush_depth
    else
      return 0
    end
  end
end

#==============================================================================
# ** Sprite_Character
#==============================================================================

class Sprite_Character < RPG::Sprite
 
  attr_accessor :bush_color
  attr_accessor :bush_opacity
  attr_accessor :bush_template
 
  def initialize(viewport, character = nil)
    super(viewport)
    @character = character
    @bush_depth = 0
    @bush_color = Custom_Bush::COLOR
    @bush_opacity = Custom_Bush::OPACITY
    @bush_template = Custom_Bush::TEMPLATE
    update
  end
 
  def bush_depth
    @bush_depth
  end
 
  def bush_depth=(bush_depth)
    @bush_depth = bush_depth
  end
 
  def refresh_bush
    return if @bush_depth == 0
    bush_depth = @bush_depth
    if @template_bitmap != nil
      bush_depth += @template_bitmap.height / 2
    end
    for iy in 0...bush_depth
      for ix in 0...bitmap.width
        for dy in 0..4
          x = ix
          y = (@ch * dy) - bush_depth + iy
          bitmap_color = self.bitmap.get_pixel(x, y)
          if @template_bitmap != nil && iy < @template_bitmap.height
            tx = ix % (bitmap.width / 4)
            tx = tx % @template_bitmap.width
            ty = iy
            template_color = @template_bitmap.get_pixel(tx, ty)
            next if template_color.alpha == 0
            next if template_color == Color.new(0,0,0)
          end
          next if bitmap_color.alpha == 0
          r = bitmap_color.red
          g = bitmap_color.green
          b = bitmap_color.blue
          bc = @bush_color
          r = (r * (255 - bc.alpha) + (bc.red  * bc.alpha)) / 255
          g = (g * (255 - bc.alpha) + (bc.green * bc.alpha)) / 255
          b = (b * (255 - bc.alpha) + (bc.blue  * bc.alpha)) / 255
          a = (bitmap_color.alpha * @bush_opacity) / 255
          self.bitmap.set_pixel(x, y, Color.new(r,g,b,a))
        end
      end
    end
  end
 
  def update
    super
    if @bush_template != @character.bush_template or @template_bitmap.nil?
      bush_template = @character.bush_template
      if bush_template != ''
        @template_bitmap = RPG::Cache.picture(bush_template) rescue nil
      else
        @template_bitmap = nil
      end
    end
    if @tile_id != @character.tile_id or
      @character_name != @character.character_name or
      @character_hue != @character.character_hue or
      @bush_depth != @character.bush_depth or
      @bush_color != @character.bush_color or
      @bush_opacity != @character.bush_opacity or
      @bush_template != @character.bush_template
      @tile_id = @character.tile_id
      @character_name = @character.character_name
      @character_hue = @character.character_hue
      if @tile_id >= 384
        self.bitmap = RPG::Cache.tile($game_map.tileset_name,
          @tile_id, @character.character_hue).clone
        self.src_rect.set(0, 0, 32, 32)
        self.ox = 16
        self.oy = 32
      else
        self.bitmap = RPG::Cache.character(@character.character_name,
          @character.character_hue).clone
        @cw = bitmap.width / 4
        @ch = bitmap.height / 4
        self.ox = @cw / 2
        self.oy = @ch
        self.bush_depth = @character.bush_depth
        self.bush_color = @character.bush_color
        self.bush_opacity = @character.bush_opacity
        self.bush_template = @character.bush_template
        refresh_bush
      end
    end
    self.visible = (not @character.transparent)
    if @tile_id == 0
      sx = @character.pattern * @cw
      sy = (@character.direction - 2) / 2 * @ch
      self.src_rect.set(sx, sy, @cw, @ch)
    end
    self.x = @character.screen_x
    self.y = @character.screen_y
    self.z = @character.screen_z(@ch)
    self.opacity = @character.opacity
    self.blend_type = @character.blend_type
    if @character.animation_id != 0
      animation = $data_animations[@character.animation_id]
      animation(animation, true)
      @character.animation_id = 0
    end
  end
end

Es muy fácil de utilizar: Podéis ir al principio del script y configurar la profundidad, color y opacidad por defecto del efecto bush.
Nuevo: También podéis definir la plantilla. Es una picture, solo tenéis que poner su nombre en TEMPLATE para definir la plantilla por defecto.

Además podéis configurarlo por evento en el juego, usando lo siguiente:

$game_player.bush_depth = (VALOR)
$game_map.events[1].bush_depth = (VALOR)

Ésto cambia la profundidad (por defecto 12) del jugador y del evento 1 respectivamente. Si le pones 0 significa que no le afectará nunca la hierba alta.

$game_player.bush_color = Color.new(R, G, B, A)
$game_map.events[1].bush_color = Color.new(R, G, B, A)

Ésto cambia el color (por defecto tiene opacidad 0 por lo tanto está desactivado) del efecto.

$game_player.bush_opacity = (VALOR)
$game_map.events[1].bush_opacity = (VALOR)

Ésto cambia la opacidad (por defecto 160) del efecto.

Nuevo:
$game_player.bush_template = 'NOMBRE PICTURE'
$game_map.events[1].bush_template = 'NOMBRE PICTURE'


Última edición por Wecoc el 2016-10-04, 15:14, editado 2 veces
avatar
Wecoc
Administrador
Administrador



Créditos 9217

Gracias : 493

Volver arriba Ir abajo

RPG Maker XP Re: [XP] Custom Bush

Mensaje por Ledai el 2016-09-26, 19:04

Waahhh, llevas una tanda de script que son la leche.
Es otro aporte perfecto!!! Hum... y como idea final podía ser que el efecto sea configurable con una imagen que sirviera de capa para que el corte no fuera "recto" en los pies. Algo como lo que usas en el Wecoc's tools para configurar algunas cosas.

¡¡Bueno!!
avatar
Ledai
Aventurero
Aventurero

0/3

Créditos 2354

Gracias : 170

Volver arriba Ir abajo

RPG Maker XP Re: [XP] Custom Bush

Mensaje por Wecoc el 2016-09-26, 20:40

Personalmente no me gusta mucho la idea de usar plantilla ahí, porque cada evento puede tener un ancho distinto y eso podría llevar problemas. Pero bueno, por integrarlo y dejarlo vacío por defecto no pasa nada, quizá a álguien le sirva.

Ya puse cómo usarlo, básicamente es una picture.
He hecho una de ejemplo que se ve similar a lo default pero un poco cóncavo.
En la parte negra no se aplica el efecto, en la parte blanca sí. Puede ser del tamaño que queráis pero se recomienda que el ancho sea el mismo que el del evento.



Con un pequeño truco podéis agregarle un efecto de animación al andar; solo tenéis que hacerlo tan ancho como el gráfico del chara (4 veces el tamaño real del evento)

Ejemplo:

avatar
Wecoc
Administrador
Administrador



Créditos 9217

Gracias : 493

Volver arriba Ir abajo

RPG Maker XP Re: [XP] Custom Bush

Mensaje por orochii el 2016-09-27, 01:20

Vengo a dar ideas x'D...

Supongo que al redefinir el bitmap del template, en lugar de hacer

Código:
@template_bitmap = RPG::Cache.picture(bush_template) rescue nil

...hacer algo como...

Código:
b = RPG::Cache.picture(bush_template) rescue nil
@template_bitmap = Bitmap.new(bitmap.width, b.height)

y hacer un stretch_blit dependiendo de si es animado o no (creo que habría que redefinir eso, quiza con un caracter al inicio como el $! en Ace).

Código:
animate = ( bush_template =~ /^\!/ ) #creo es algo así :'D
if animate
  @template_bitmap.stretch_blt(@template_bitmap.rect, b, b.rect)
else
  d_rect = Rect.new(0,0,@template_bitmap.width/4,@template_bitmap.height)
  s_rect = Rect.new(0,0,b.width,b.height)
  4.times {
    @template_bitmap.stretch_blt(@template_bitmap.rect, b, b.rect)
    d_rect.x += d_rect.width
  }
end

Asdf asdf asdf. Asdflut!
avatar
orochii
Caballero Shiro
Caballero Shiro

0/3

Créditos 6388

Gracias : 332

Volver arriba Ir abajo

RPG Maker XP Re: [XP] Custom Bush

Mensaje por Wecoc el 2016-09-27, 07:21

Maldita sea, con lo fácil que era el script, sois malvados xDD

Supongo que haciendo eso funcionaría una misma plantilla para más anchos, pero no creo que se viera bien en todos los casos. Una plantilla de 32px aplicada en uno de esos trolls gordos de RTP por ejemplo (su ancho es 96px) implicaría estirarla 3 veces; se vería aplanada y muy pixelada horizontalmente.

Intentaré implementarlo cuando pueda pero mi recomendación personal es no usar plantilla.

Por cierto, para casos puntuales más elavorados siempre podéis desactivar el bush en ese evento, hacerle un gráfico que imite el efecto pero hacérselo como queráis, y por engine cambiarle el gráfico según el tile/terreno en el que esté.
avatar
Wecoc
Administrador
Administrador



Créditos 9217

Gracias : 493

Volver arriba Ir abajo

RPG Maker XP Re: [XP] Custom Bush

Mensaje por Ledai el 2016-09-27, 10:51

Hum... Y porqué no directamente usar una plantilla que tilé en sí misma para dar continuidad, no tiene porqué ocupar el tamaño de todos y cada uno de los Charas, solo que una de 32 px tilé en todo lo largo de los charas más grandes, luego el problema es para el desarollador, que use una plantilla que tilé bien o no...

Bueno, que es una idea y hablo sin saber del tema, yo tonta, no entender @~@


Estará perfecto de cualquier manera!!
avatar
Ledai
Aventurero
Aventurero

0/3

Créditos 2354

Gracias : 170

Volver arriba Ir abajo

RPG Maker XP Re: [XP] Custom Bush

Mensaje por orochii el 2016-09-27, 14:25

Sí, puede ser una opción, que venga opción para tilear, como las windows con opción stretchear o tilear. Nada más no hacerla redondeada como los ejemplos de Wec.

O lo otro sería, hacer un template de ancho 96, por ejemplo (ojala sea lo más ancho), y que el template se centre en el chara xD. Con algo de "diseño creativo" (?) del gráfico del template del bush uno puede acomodarlo para que sirva con todos aproximadamente bien :^D (una curva que siga una cierta proporción, calculada con una función adecuada -oh sí compliquemos la vida aún más! xD-).

Ya ya perdón es que mis ideas son gratis y... tengo muchas a veces. Mi cerebro había estado muy vago, y como ahora lo tengo trabajando, me pide más trabajo (?).
avatar
orochii
Caballero Shiro
Caballero Shiro

0/3

Créditos 6388

Gracias : 332

Volver arriba Ir abajo

RPG Maker XP Re: [XP] Custom Bush

Mensaje por Wecoc el 2016-10-04, 15:16

¡Ya está! Al final no le hice versión animada porque tampoco es que se note mucho, pero por mi parte ya doy el script por terminado, a partir de aquí las locuras que cada cual quiera añadirle son cosa suya, ejem. xDD

La plantilla tilea a lo largo del chara, hice ésta de ejemplo pero podéis usar la que queráis, y del tamaño que queráis.



Muestra:
Para ésta muestra se modificó la opacidad y la plantilla (usé la de ejemplo)

avatar
Wecoc
Administrador
Administrador



Créditos 9217

Gracias : 493

Volver arriba Ir abajo

RPG Maker XP Re: [XP] Custom Bush

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.