The World of EverGrand
Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.


 
PortalPortal  InícioInício  ProcurarProcurar  Últimas imagensÚltimas imagens  RegistrarRegistrar  Entrar  

Compartilhe|

XP Wave Effect

Ver o tópico anterior Ver o tópico seguinte Ir para baixo
AutorMensagem
zecomeia
zecomeia
RPG Maker
RPG Maker

Masculino Postagens : 51
Data de inscrição : 20/08/2009
XP Wave Effect 11101010

XP Wave Effect Vide http://colmeia-do-ze.blogspot.com/
MensagemAssunto: XP Wave Effect XP Wave Effect EmptyQui Abr 01, 2010 4:05 pm

XP Wave Effect
por zecomeia

Introdução

Modificações na classe Sprite para usar o efeito "wave" existente apenas no RGSS2.

Características

* Muito fiel ao efeito do RMVX


Screen Shot

XP Wave Effect Xpeaveeffectss

Como Usar

* Cole o script acima de main;
* Use da mesma forma como é usado no RGSS2, se não souber procure pelo manual de referencia ao RGSS no próprio arquivo de help do RMVX.


Demo

Dowload da demo

script

Código:
#========================================
# XP Wave Effect
#----------------------------------------
#by:      zecomeia
#date:    01/03/2010
#for:    RGSS
#version: 1.0
#www.colmeia-do-ze.blogspot.com
#----------------------------------------
=begin
Reproduction of the VX's wave effect
(see the help file of the RPGMaker VX
in the RGSS manual reference topic)
=end

#==============#
# Sprite class #
#==============#
class Sprite
 
  include Math
 
  attr_accessor  :wave_amp
  attr_accessor  :wave_length
  attr_accessor  :wave_speed
  attr_accessor  :wave_phase
  attr_accessor  :temp_bitmap
 
  alias initialize default_initialize rescue nil
  alias default_initialize initialize
  def initialize(viewport=nil)
    @wave_amp = 0
    @wave_length = 180
    @wave_speed = 360
    @wave_phase = 0.0
    default_initialize(viewport)
    @temp_bitmap = nil
  end
 
  alias update default_update rescue nil
  alias default_update update 
  def update()
    # the wave effect only works if wave_amp
    # propertie is a number more than zero
    wave_effect if @wave_amp > 0
    default_update()
  end
 
  # Return the width of image, because when use
  # obj.bitmap.width the value will be more than
  # the original value(because effect)
  def width()
    return (self.bitmap.width - @wave_amp * 2)
  end
   
  #---------------
  # Wave Effect
  #---------------
  def wave_effect()
    return if self.bitmap.nil?
    @temp_bitmap = self.bitmap if @temp_bitmap.nil?
    cw = @temp_bitmap.width + (@wave_amp * 2)
    ch = @temp_bitmap.height
    # Follow the VX wave effect, each horizontal line
    # has 8 pixel of height. This device provides less
    # lag in game.
    divisions = @temp_bitmap.height / 8
    divisions += 1 if @temp_bitmap.height % 8 != 0
    self.bitmap = Bitmap.new(cw, ch)
    for i in 0..divisions
      x = @wave_amp * Math.sin(i * 2 * PI / (@wave_length / 8).to_i + Math.deg_to_rad(@wave_phase))
      src_rect = Rect.new(0, i*8, @temp_bitmap.width, 8)
      dest_rect = Rect.new(@wave_amp + x, i * 8, @temp_bitmap.width, 8)
      self.bitmap.stretch_blt(dest_rect, @temp_bitmap, src_rect)
    end
    # frame rate: VX = 60 | XP = 40
    # wave speed compatibility VX to XP: wave_speed * 60/40
    # then: wave_speed * 1.5
    @wave_phase += @wave_speed * 1.5 / @wave_length
    @wave_phase -= 360 if @wave_phase > 360
    @wave_phase += 360 if @wave_phase < 0
  end
 
end

#=============#
# module Math #
#=============#
module Math
 
  #-------------------------------
  # Conversion Degree to Radian
  #-------------------------------
  def Math.deg_to_rad(deg)
    return (deg * PI) / 180.0
  end
 
end


Créditos e Agradecimentos
zecomeia pela versão para XP

XP Wave Effect 88x31

scripts RGSS, Resources, Tutorials and Translations by zecomeia is licensed under a
Creative Commons Atribuição-Uso Não-Comercial-Compartilhamento pela mesma Licença 2.5 Brasil License.
Permissions beyond the scope of this license may be available at Santuário RPG Maker
Ir para o topo Ir para baixo

XP Wave Effect

Ver o tópico anterior Ver o tópico seguinte Ir para o topo
Página 1 de 1

Permissões neste sub-fórumNão podes responder a tópicos
The World of EverGrand :: Programação em Linguagens :: Ruby Game Scripting System :: Scripts :: RPG Maker XP-