O TEMA DO FÓRUM ESTÁ EM MANUTENÇÃO. FEEDBACKS AQUI: ACESSAR

GST Particle Effects

Iniciado por miguel8884, 14/08/2014 às 18:16

14/08/2014 às 18:16 Última edição: 14/08/2014 às 20:57 por miguel8884
GST Particle Effects

Compativel com: RMVXA
Compatibilidade: boa
Facilidade de uso: fácil
Lag gerado: baixo
Dependências: http://pastebin.com/ssN100hq

[box class=titlebg]
Condições de Uso
[/box]
Não poste em outro lugar sem minha permissão antes, livre para uso comercial e não comercial!

[box class=titlebg]
Para que serve o script
[/box]
O script permite que você crie partículas acima da cabeça ou do jogador ou dos eventos por um tempo específico e com uma configuração individual a cada partícula!

[box class=titlebg]
Vídeo
[/box]

[box class=titlebg]
Script
[/box]
#===============================================================================
# ** Particle Effects
# Autor: miguel8884
# Créditos: Khas - por ensinar a mexer com o spriteset_map
#-------------------------------------------------------------------------------
# Data de lançamento: 14/08/2014
# Versão: 1.0
#-------------------------------------------------------------------------------
# Dependências:
# * Bitmap Adittional Methods
#-------------------------------------------------------------------------------
# Descrição:
#
# O script permite que você crie particulas acma da cabeça ou do jogador ou dos
# eventos por um tempo específico e com uma configuração individual a cada
# particula!
#-------------------------------------------------------------------------------
# Características:
# * Configuração individual para cada partícula!
# * Tipos ilimitados de partícula!
# * Fácil configuração!
#-------------------------------------------------------------------------------
# Log:
# v1.0
#   14/08/2014 - Script lançado!
#-------------------------------------------------------------------------------
# - Criando um evento com partículas -
# Para criar um evento com partículas, em um comentári, coloque assim:
# Particle_Add=id target time
# id é o id da partícula criada nas configurações, target pode ser 0 ou 1, se
# for 0 a partícula será adicionada no jogador, se for 1 será adicionada no
# evento. E time é o tempo com que a partícula fica na tela em segundos.
#===============================================================================
module Particles_Effects
  #=============================================================================
  # Definiçãoo de array - Não mexa
  #=============================================================================
  Particle = Array.new
  #=============================================================================
  # Configurações
  #=============================================================================
  #=============================================================================
  # Criando uma partícula
  #
  # Para criar um nova partícula é bem simples, pegue o template no tópico e
  # cole abaixo da última partícula criada!
  #
  # Particle[id] = [
  # Aqui você deve colocar no lugar de id, o id da partícula que está criando
  # se for a primeira, recomendo que comece do 0!
  #
  # Image = id/ Image=""
  # Aqui você define a imagem da partícula, se for usar algum icon, deverá
  # colocar em número, se for usar alguma imagem, ela deve estar na pasta
  # pictures e deve ser colocada entre aspas, exemplo: "Fog"
  #
  # Up_Speed
  # Aqui você coloca a velocidade com a partícula sobre.
  #
  # Burn_Speed
  # Aqui você coloca a velocidade com que partícula some
  #
  # Create_Speed
  # Aqui você coloca a velocidade com que uma nova partícula é criada
  #
  # Variation
  # Aqui você coloca a variação com que a partícula aparece
  #=============================================================================
  Particle[0] = [
  Image = 56,
  Up_Speed = 0.1,
  Burn_Speed = 5,
  Create_Speed = 0.2,
  Variation = 20
  ]
end
#===============================================================================
# Concede acesso a uma variável que gerencia as imagens
#===============================================================================
class Game_Map
  attr_accessor :particle_effects
end
#===============================================================================
# Faz a verificação dos eventos e atualiza as partículas
#===============================================================================
class Game_Event < Game_Character
  alias gst_event_update update
  alias gst_event_sps setup_page_settings
  def setup_page_settings
    gst_event_sps
    @checked = false
    @checked_player = false
    check_events
  end
  def check_events
    return if @list.nil?
    for command in @list
      next unless command.code == 108 or command.code == 408
      if command.parameters[0].match(/Particle_Add=(\d+) (\d+) (\d+)/im)
        if Integer($2) == 1
          @particle_stats = [$1,$3]
          @timer = @particle_stats[1].to_i*60
          @create = Particles_Effects::Particle[@particle_stats[0].to_i][3]*60
          @checked = true
        else
          @particle_stats = [$1,$3]
          @timer = @particle_stats[1].to_i*60
          @create = Particles_Effects::Particle[@particle_stats[0].to_i][3]*60
          @checked_player = true
        end
      end
    end
  end
  def update
    gst_event_update
    update_particles
  end
  def update_particles
    if @checked == true
      if @timer > 0
        @timer -= 1
        if @create > 0
          @create -= 1
        else
          $game_map.particle_effects.push(Particle_Effects.new(self,Particles_Effects::Particle[@particle_stats[0].to_i][1],Particles_Effects::Particle[@particle_stats[0].to_i][2],Particles_Effects::Particle[@particle_stats[0].to_i][0],Particles_Effects::Particle[@particle_stats[0].to_i][4]))
          @create = Particles_Effects::Particle[@particle_stats[0].to_i][3]*60
        end
      else
        @checked = false
      end
    end
    if @checked_player == true
      if @timer > 0
        @timer -= 1
        if @create > 0
          @create -= 1
        else
          $game_map.particle_effects.push(Particle_Effects.new($game_player,Particles_Effects::Particle[@particle_stats[0].to_i][1],Particles_Effects::Particle[@particle_stats[0].to_i][2],Particles_Effects::Particle[@particle_stats[0].to_i][0],Particles_Effects::Particle[@particle_stats[0].to_i][4]))
          @create = Particles_Effects::Particle[@particle_stats[0].to_i][3]*60
        end
      else
        @checked_player = false
      end
    end
  end
end
#===============================================================================
# Gerencia as partículas criadas
#===============================================================================
class Spriteset_Map
  alias gst_pe_initialize initialize
  alias gst_pe_update update
  alias gst_pe_dispose dispose
  def initialize
    $game_map.particle_effects = []
    gst_pe_initialize
  end
  def update
    gst_pe_update
    trash = []
    for particle in $game_map.particle_effects
      particle.update
      trash.push(particle) if particle.disposed?
    end
    for i in trash
      $game_map.particle_effects.delete(i)
    end
    trash.clear
  end
  def dispose
    gst_pe_dispose
    for sprite in $game_map.particle_effects
      sprite.bitmap.dispose
      sprite.dispose
    end
    $game_map.particle_effects.clear
  end
end
#===============================================================================
# Classe que cria as partículas
#===============================================================================
class Particle_Effects < Sprite
  def initialize(character,speed,burn,img,variation)
    super(nil)
    @character = character
    @speed = speed
    @burn = burn
    @img = img
    self.bitmap = Bitmap.new(32,32)
    if @img.is_a?(String)
      self.bitmap = Cache.picture(@img)
    else
      self.bitmap.create_icon(@img,0,0)
    end
    @particle_variation = rand(variation)
    self.z = 3
    self.x = @character.screen_x - @particle_variation
    self.y = @character.screen_y - 16
  end
  def update
    self.x = @character.screen_x - @particle_variation
    self.y -= @speed
    if self.opacity > 0
      self.opacity -= @burn
    else
      dispose
    end
  end
  def dispose
    self.bitmap.dispose
    super
  end
end
#===============================================================================
# Fim do script
#===============================================================================

[box class=titlebg]
Créditos e Avisos
[/box]
Criador: Miguel8884
Créditos: Khas - Pela base na calsse spriteset_map
Vídeo: De

Esse efeito com partículas é muito bonito! eu gostei mais da animação no piano, a de dormindo ficou meio estranha.
é como se fosse evolução dos balões : )

Provavelmente a de dormindo ficou estranha pela localização que ela aparece! Vlw, mas vou ver se crio uma opção para definir a posição de partida para evitar essas coisas!