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 84769 mensajes en 12064 argumentos.

[XP] MV-Type Weather

Ver el tema anterior Ver el tema siguiente Ir abajo

RPG Maker XP [XP] MV-Type Weather

Mensaje por Wecoc el 2017-07-20, 00:02

Ví en otro foro que alguien pedía un modificación para el sistema de clima de RPG maker, y he decidido hacerla.
Éste script Weather a parte de causar un poco menos de lag que el normal por como se dibujan sus Bitmap, añade cuatro variables extra para controlar el dibujado de las gotas.
Algunas de esas variables estan disponibles en RPG maker MV pero no lo estaban en los otros RPG maker, de ahí el nombre del script.

angle - Ángulo de las gotas
speed - Velocidad a la que caen las gotas
variation - Variación del ángulo de las gotas (se usa para que la nieve caiga de modo menos direccional)
fade - Velocidad a la que desaparecen las gotas

Cada tipo de clima tiene sus propiedades asignadas con esas cuatro variables, y los cambios que se quieran hacer para ello estan dentro del método type=
El script tal como está no ofrece un cambio dinámico de esas propiedades a lo largo del juego, dicho de otro modo tal como se definen en el script así se quedan. Aún así hacer una versión dinámica mediante Game_System no debería suponer demasiado problema para quien sepa algo de script.

No es tan "espectacular" gráficamente como otros scripts de edición del clima que he subido (siempre es recomendable cambiar ese tipo de cosas para dar un aire más personal al juego), pero viene bien tener control de esas propiedades. Por desgracia no es compatible con otros scripts que modifiquen el Weather.

En initialize hay algunas otras cosas que se pueden cambiar como el color o el largo de las gotas, o incluso usar imágenes para ellas... Vosotros ponéis el límite ;)
Ponedlo encima de main, no requiere créditos.

Código:
#==============================================================================
# ** MV-Type Weather System
#------------------------------------------------------------------------------
# Author: Wecoc (no credits required)
#==============================================================================

module RPG
  class Weather
    #--------------------------------------------------------------------------
    # * Initialize
    #--------------------------------------------------------------------------
    def initialize(viewport = nil)
      @type = 0
      @max = 0
      @ox = 0
      @oy = 0
      @angle = 0
      @speed = 8
      @variation = 0
      @fade = 8
      # Set colors
      color1 = Color.new(255, 255, 255, 255)
      color2 = Color.new(255, 255, 255, 128)
      # Rain
      @rain_bitmap = Bitmap.new(1, 60)
      @rain_bitmap.fill_rect(@rain_bitmap.rect, color1)
      # Storm
      @storm_bitmap = Bitmap.new(2, 100)
      @storm_bitmap.fill_rect(@storm_bitmap.rect, color1)
      # Snow
      @snow_bitmap = Bitmap.new(6, 6)
      @snow_bitmap.fill_rect(0, 1, 6, 4, color2)
      @snow_bitmap.fill_rect(1, 0, 4, 6, color2)
      @snow_bitmap.fill_rect(1, 2, 4, 2, color1)
      @snow_bitmap.fill_rect(2, 1, 2, 4, color1)
      # Draw sprites
      @sprites = []
      for i in 1..40
        sprite = Sprite.new(viewport)
        sprite.z = 1000
        sprite.visible = false
        sprite.opacity = 0
        @sprites.push(sprite)
      end
    end
    #--------------------------------------------------------------------------
    # * Set Type
    #--------------------------------------------------------------------------
    def type=(type)
      return if @type == type
      @type = type
      @angle = 0
      @speed = 8
      @fade = 8
      @variation = 0
      case @type
      when 1 # Rain
        bitmap = @rain_bitmap
        @angle = 345
        @variation = 2
      when 2 # Storm
        bitmap = @storm_bitmap
        @angle = 330
        @speed = 16
        @fade = 12
      when 3 # Snow
        bitmap = @snow_bitmap
        @speed = 3
        @variation = 24
      else
        bitmap = nil
      end
      for i in 1..40
        sprite = @sprites[i]
        if sprite != nil
          sprite.visible = (i <= @max)
          sprite.bitmap = bitmap
          if @variation > 0
            angle = (@angle + rand(@variation) - rand(@variation)) % 360
          else
            angle = @angle
          end
          sprite.angle = angle
        end
      end
    end
    #--------------------------------------------------------------------------
    # * Update
    #--------------------------------------------------------------------------
    def update
      return if @type == 0
      for i in 1..@max
        sprite = @sprites[i]
        if sprite == nil
          break
        end
        angle = sprite.angle * Math::PI / 180.0
        dx = (@speed * Math.sin(angle).abs).floor
        dy = (@speed * Math.cos(angle).abs).floor
        dx *= -1.0 if Math.sin(angle) < 0
        dy *= -1.0 if Math.cos(angle) < 0
        sprite.x += dx
        sprite.y += dy
        sprite.opacity -= @fade
        x = sprite.x - @ox
        y = sprite.y - @oy
        if sprite.opacity < 64 or x < -50 or x > 750 or y < -300 or y > 500
          sprite.x = rand(800) - 50 + @ox
          sprite.y = rand(800) - 200 + @oy
          sprite.opacity = 255
        end
      end
    end
  end
end

Añado una tabla con las propiedades por defecto, con éstas el resultado es muy parecido al RTP

anglespeedvariationfade
Rain345828
Storm33016012
Snow03248
avatar
Wecoc
Administrador
Administrador



Créditos 9217

Gracias : 493

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.