Mundo Maker
¡Bienvenid@ a Mundo Maker!

¿Quieres aprender todo sobre el RPG Maker?



Regístrate y forma parte de Mundo Maker.

[XP][VX][ACE]Una de partículas

Ver el tema anterior Ver el tema siguiente Ir abajo

[XP][VX][ACE]Una de partículas

Mensaje por newold el 2018-07-15, 18:57

Con este script creas una serie de partículas en pantalla, para adornar tus mapas ;)



Partículas usadas en el vídeo (van dentro de la carpeta Graphics/Pictures): LINK

Script (Va encima del main, instrucciones para configurarlo dentro)

Código:
=begin

  Muestra partículas en pantalla para adornar los mapas
 
  Versión 1.01 - Añadido dos nuevos comandos (añadir nueva imagen de partícula
                                              y borrar imágenes)
 
  Se puede configurar más abajo (a partir de la línea 41)
 
  Para desactivar el efecto, con un comando llamar script de los eventos
  puedes usar estos comandos:
 
    set_enabled_particles_to(value) # value puede ser true (activado) o false
 
  o también puedes usar el comando
 
    $newold_particles_enabled = value # (true = Activado, false = Desactivado)
   
   
  Para borrar las imágenes de particulas por defecto, usar este comando
  con el comando llamar script:
 
    delete_images_of_particles
   
   
  Para añadir una nueva imagen a la lista de imágenes de partículas,
  usar este comando:
 
    add_particle_image("nombre imagen dentro de Graphics/Pictures")

=end




#===============================================================================
class Newold_Particles
  # ----------------------------------------------------------------------------
  def initialize
    # **************************************************************************
    #                          CONFIGUATION
    # **************************************************************************
   
    @screen_width = RUBY_VERSION == "1.8.1" ? 640 : 544 # Screen width
    @screen_height = RUBY_VERSION == "1.8.1" ? 480 : 416 # Screen height
    @max_particles = 1200 # max particles drawn on screen
    @max_velocity = 0.4 # Max velocity for the particles
    @min_velocity = 0.02 # min velocity for the particles
    @max_zoom = 1.5 # max zoom for particles
    # Particle images name (inside folder Graphics/Pictures)
    @particle_bitmaps = ["particle1", "particle2", "particle3",
      "particle4", "particle5", "particle6"]
     
    $newold_particles_enabled = true # Default activate mode
   
    # **************************************************************************
    #                        END CONFIGURATION
    # **************************************************************************
   
    create_particles
    draw
  end
  # ----------------------------------------------------------------------------
  def create_particles
    if $backup_current_map_particles.nil?
      @particles = []
     
      @max_particles.times{
        data = {}
        update_particle(data)
        @particles << data
      }
    else
      @particles = $backup_current_map_particles
      $backup_current_map_particles = nil
    end
  end
  # ----------------------------------------------------------------------------
  def update_particle(data, ox=0, oy=0)
    data[:x] = rand(@screen_width) + ox
    data[:y] = rand(@screen_height) + oy
    data[:cx] = data[:x]
    data[:cy] = data[:y]
    data[:opacity] = rand(255)
    data[:id] = rand(@particle_bitmaps.size)
    data[:vx] = (rand(3) == 0 ? "#{rand(@max_velocity)}.#{rand(10)}".to_f :
      @min_velocity) * (rand(2) == 0 ? -1 : 1)
    data[:vy] = (rand(3) == 0 ? "#{rand(@max_velocity)}.#{rand(10)}".to_f :
      @min_velocity) * (rand(2) == 0 ? -1 : 1)
    data[:zoom] = "#{rand(2)}.#{rand(10)}".to_f
    data[:max_zoom] = "#{rand(@max_zoom)}.#{rand(10)}".to_f
    data[:zoom_mode] = rand(2)
  end
  # ----------------------------------------------------------------------------
  def draw
    @sprite = Sprite.new
    @sprite.bitmap = Bitmap.new(@screen_width, @screen_height)
    @sprite.z = 10000000
  end
  # ----------------------------------------------------------------------------
  def refresh
    @sprite.bitmap.clear
    default_particle_bitmap = Bitmap.new(1,1)
    default_particle_bitmap.set_pixel(0, 0, Color.new(255,255,255))
    if RUBY_VERSION == "1.8.1"
      ox = $game_map.display_x / 4
      oy = $game_map.display_y / 4
    else
      ox = $game_map.display_x * 32
      oy = $game_map.display_y * 32
    end
    @particles.each{|data|
      begin
        begin
          bitmap = Cache.picture(@particle_bitmaps[data[:id]])
        rescue
          bitmap = RPG::Cache.picture(@particle_bitmaps[data[:id]])
        end
      rescue
        bitmap = default_particle_bitmap
      end
      rect = Rect.new(
        data[:cx].to_i - ox,
        data[:cy].to_i - oy,
        (bitmap.width * data[:zoom]).to_i,
        (bitmap.height * data[:zoom]).to_i
      )
      @sprite.bitmap.stretch_blt(rect, bitmap, bitmap.rect, data[:opacity])
     
      data[:opacity] -= 1
      if data[:opacity] == 0
        update_particle(data, ox, oy)
      else
        data[:cx] += data[:vx]
        data[:cy] += data[:vy]
        if data[:zoom_mode] == 1
          data[:zoom] = [data[:zoom] + 0.02, data[:max_zoom]].min
        else
          data[:zoom] = [data[:zoom] - 0.02, 0].max
        end
      end
    }
  end
  # ----------------------------------------------------------------------------
  def update
    return unless $newold_particles_enabled
    refresh
  end
  # ----------------------------------------------------------------------------
  def dispose
    @sprite.dispose
    $backup_current_map_particles = @particles
  end
  # ----------------------------------------------------------------------------
  def set_enabled(value)
    $newold_particles_enabled = (value==true)
    $backup_current_map_particles = nil
    @sprite.visible = $newold_particles_enabled
    if $newold_particles_enabled
      @particles.clear
      create_particles
    end
  end
  # ----------------------------------------------------------------------------
  def delete_images_of_particles
    @particle_bitmaps.clear
  end
  # --------------------------------------------------------------------------
  def add_particle_image(url)
    @particle_bitmaps << url
  end
  # --------------------------------------------------------------------------
end
#===============================================================================


if RUBY_VERSION == "1.8.1"
  #=============================================================================
  class Scene_Map
    # --------------------------------------------------------------------------
    alias main_particles_newold main
    def main
      @particles = Newold_Particles.new
      main_particles_newold
      @particles.dispose
    end
    # --------------------------------------------------------------------------
    alias update_particles_newold update
    def update
      @particles.update
      update_particles_newold
    end
    # --------------------------------------------------------------------------
    def set_enabled_particles_to(value)
      @particles.set_enabled(value==true)
    end
    # --------------------------------------------------------------------------
    def delete_images_of_particles
      @particles.delete_images_of_particles
    end
    # --------------------------------------------------------------------------
    def add_particle_image(url)
      @particles.add_particle_image(url)
    end
    # --------------------------------------------------------------------------
  end
  #=============================================================================

  #=============================================================================
  class Interpreter
    def set_enabled_particles_to(value)
      scene = $scene
      if scene.is_a?(Scene_Map)
        scene.set_enabled_particles_to(value)
      end
    end
    def delete_images_of_particles
      scene = $scene
      if scene.is_a?(Scene_Map)
        scene.delete_images_of_particles
      end
    end
    def add_particle_image(url)
      scene = $scene
      if scene.is_a?(Scene_Map)
        scene.add_particle_image(url)
      end
    end
  end
  #=============================================================================
else
  #=============================================================================
  class Scene_Map < Scene_Base
    # --------------------------------------------------------------------------
    alias start_particles_newold start
    def start
      start_particles_newold
      @particles = Newold_Particles.new
    end
    # --------------------------------------------------------------------------
    alias update_particles_newold update
    def update
      @particles.update
      update_particles_newold
    end
    # --------------------------------------------------------------------------
    alias terminate_particles_newold terminate
    def terminate
      @particles.dispose
      terminate_particles_newold
    end
    # --------------------------------------------------------------------------
    def set_enabled_particles_to(value)
      @particles.set_enabled(value==true)
    end
    # --------------------------------------------------------------------------
    def delete_images_of_particles
      @particles.delete_images_of_particles
    end
    # --------------------------------------------------------------------------
    def add_particle_image(url)
      @particles.add_particle_image(url)
    end
    # --------------------------------------------------------------------------
  end
  #=============================================================================

  #=============================================================================
  class Game_Interpreter
    def set_enabled_particles_to(value)
      scene = SceneManager.scene
      if scene.is_a?(Scene_Map)
        scene.set_enabled_particles_to(value)
      end
    end
    def delete_images_of_particles
      scene = SceneManager.scene
      if scene.is_a?(Scene_Map)
        scene.delete_images_of_particles
      end
    end
    def add_particle_image(url)
      scene = SceneManager.scene
      if scene.is_a?(Scene_Map)
        scene.add_particle_image(url)
      end
    end
  end
  #=============================================================================
end


Última edición por newold el 2018-07-16, 20:41, editado 3 veces
avatar
newold
Principiante
Principiante

0/3

Créditos 1232

Gracias : 119

Volver arriba Ir abajo

Re: [XP][VX][ACE]Una de partículas

Mensaje por xXIsrael0499Xx el 2018-07-16, 16:10

Muy buena idea, no perdon, excelente idea.

Me gusta, esta chido, y creo que es algo que se me vino a la cabeza, pero que lo habia planteado de manera diferente, con fogs por ejemplo.

Pero me gusta el resultado, se agradece el aporte.

Saludos.
avatar
xXIsrael0499Xx
Veterano
Veterano

0/3

Créditos 2036

Gracias : 112

Volver arriba Ir abajo

Re: [XP][VX][ACE]Una de partículas

Mensaje por AsFzKakarotto el 2018-07-16, 20:04

Hermoso y Brillante... XD
Mmm... Pues es un buen aporte al maker para hacer una que otra cosilla extra, al
menos no se ve similar a otros efectos ya conocidos, ademas parece simple de usar
y muy personalizable, con resultados geniales.
avatar
AsFzKakarotto
Soñador
Soñador

0/3

Créditos 303

Gracias : 67

Volver arriba Ir abajo

Re: [XP][VX][ACE]Una de partículas

Mensaje por newold el 2018-07-16, 20:32

Versión 1.01 añadida. Ahora existe un par de comandos extras para usar con el comando llamar script:

# Borrar todas las imágenes de partículas que están configuradas (útil para poner imágenes personalizadas en cada mapa)
delete_images_of_particles


# Añadir una nueva imagen de partículas (útil para poner imágenes personalizadas en cada mapa)
add_particle_image("nombre imagen dentro de Graphics/Pictures")
avatar
newold
Principiante
Principiante

0/3

Créditos 1232

Gracias : 119

Volver arriba Ir abajo

Re: [XP][VX][ACE]Una de partículas

Mensaje por luistop12 el 2018-07-17, 02:26

omg neworld!!!! yo amo tus script, y que lindo que recuerdes a los usuarios del vx, es mas lo añadiré a mi proyecto ahora ;)

gracias por el aporte.
avatar
luistop12
Veterano
Veterano

0/3

Créditos 1189

Gracias : 30

Volver arriba Ir abajo

Re: [XP][VX][ACE]Una de partículas

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.