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

Problemas com um script de parallax!

Iniciado por Misa, 05/07/2014 às 13:34

05/07/2014 às 13:34 Última edição: 05/07/2014 às 14:54 por Vash
Help, please?  :derp:

E lá estava eu, toda contente por ter terminado meu roteiro e estar criando os mapas do meu jogo, quando me deparei com este erro (ou ignorância minha):  :grr:

Spoiler
[close]

No script do MOG é dito que para ativar os efeitos só é preciso adicionar um destes comentários na caixa de notas do mapa: <Parallax Wave>,<Parallax Fade>,<Parallax Zoom> ou  <Parallax Fixed>, mas não foi o que aconteceu.  :x--x:

Spoiler
[close]

Eu fiz tudo exatamente da forma que foi explicado, mas não aconteceu nada, tentei pedir ajuda para o meu irmão, mas ele também não soube me dizer o que poderia ter dado errado.

Alguém sabe me dizer como concertar isso???

Começcei a usar o RPG Maker a pouco tempo, então me perdoem pela ignorância!

Agradeço antecipadamente!

Não sei se é necessário, mas por via das dúvidas aqui está o script:

Script
#==============================================================================
# +++ MOG - Parallax EX (v1.2) +++
#==============================================================================
# By Moghunter 
# http://www.atelier-rgss.com/
#==============================================================================
# Adiciona alguns efeitos nos panoramas.
# - Transição suave entre os panoramas.
# - Efeito Wave. (Útil para criar cenários de desertos.)
# - Efeito Fade em loop.
# - Efeito Zoom em loop.
# - Efeito Fixed Position. (Para criar cenários de panoramas.)
#
#==============================================================================

#==============================================================================
# ● Auto Mode
#==============================================================================
# Para ativar os efeitos basta colocar os seguintes comentários na caixa de
# notas do mapa.
#
# <Parallax Wave>
#
# <Parallax Fade>
#
# <Parallax Zoom>
#
# <Parallax Fixed>
#
# O poder do efeito WAVE é baseado nos valores de Auto Scroll X e Y.
#
# X - Area de distorção no efeito WAVE. (de 0 a 9)
# Y - Velocidade de distorção do efeito WAVE. (de 0 a 9)
#
#==============================================================================
# ● Manual Mode
#==============================================================================
# Use o comando abaixo através do evento usando o comando chamar script.
#
# parallax_effect(EFFECT 1,EFFECT 2,EFFECT 3)
# 
# EFFECT 1
# 0 - Efeito Scroll
# 1 - Efeito Wave
# 2 - Efeito Zoom
#
# EFFECT 2
#
# true or false para ativar os efeitos.
#
#==============================================================================
# Se caso deseja desativar a transição suave use o código abaixo.
#
# parallax_transition(false) 
#
#==============================================================================

#==============================================================================
# ● NOTA
#==============================================================================
# O Efeito WAVE e ZOOM cancelam o efeito SCROLLING (Default Effect)
# O Efeito FIXED não funciona junto com os outros efeitos.
#==============================================================================

module MOG_PARALLAX_EX
    #Definição da resolução do projeto.
    SCREEN_RESOLUTION = [544,416]
    #Poder do efeito Zoom. de (0.1 a 0.0001)
    PARALLAX_ZOOM_POWER = 0.005
end  

#==============================================================================
# ■ Game System
#==============================================================================
class Game_System
  
  attr_accessor :parallax_change_values
  attr_accessor :parallax_ignore_transition
  
  #--------------------------------------------------------------------------
  # ● Initialize
  #--------------------------------------------------------------------------    
  alias mog_parallax_effects_initialize initialize
  def initialize
      @parallax_change_values = []
      @parallax_ignore_transition = false
      mog_parallax_effects_initialize
  end  
  
  #--------------------------------------------------------------------------
  # ● Can Update Parallax_EX
  #--------------------------------------------------------------------------        
  def can_update_parallax_ex?
      if $schala_battle_system != nil
         return false if $game_temp.battle_phase[0]
      end   
      return true
  end  
  
end  

#==============================================================================
# ■ Game Intepreter
#==============================================================================
class Game_Interpreter
 
  #--------------------------------------------------------------------------
  # ● Parallax Transition
  #--------------------------------------------------------------------------     
  def parallax_transition(value = false)
      $game_system.parallax_ignore_transition = value
  end  
  
  #--------------------------------------------------------------------------
  # ● Effect
  #--------------------------------------------------------------------------       
  def parallax_effect(value = true,fade = false,zoom = false,fixed_p = false)
      value2 = value == true ? 1 : 0
      $game_map.parallax_effect = [value2,120,fade,0,zoom,0,fixed_p]
  end  
  
  #--------------------------------------------------------------------------
  # ● Command 284
  #--------------------------------------------------------------------------   
  alias mog_parallax_effects_command_284 command_284
  def command_284
      if $game_system.can_update_parallax_ex?
         if !$game_system.parallax_ignore_transition
             $game_system.parallax_change_values.clear
             $game_system.parallax_change_values[0] = @params[0]
             $game_system.parallax_change_values[1] = @params[1]
             $game_system.parallax_change_values[2] = @params[2]
             $game_system.parallax_change_values[3] = @params[3]
             $game_system.parallax_change_values[4] = @params[4]     
             $game_map.parallax_effect[1] = 120
             return 
         end
         $game_map.parallax_effect[1] = 0
      end
      mog_parallax_effects_command_284  
   end
 
end   

#==============================================================================
# ■ Game Map
#==============================================================================
class Game_Map
  attr_accessor :parallax_effect
  attr_accessor :parallax_sx 
  attr_accessor :parallax_sy
  attr_accessor :parallax_loop_x
  attr_accessor :parallax_loop_y
  attr_accessor :parallax_sprite
  
  #--------------------------------------------------------------------------
  # ● Setup Parallax
  #--------------------------------------------------------------------------     
  alias mog_parrallax_effects_setup_parallax setup_parallax
  def setup_parallax
      mog_parrallax_effects_setup_parallax
      setup_parallax_effects  
  end    

  #--------------------------------------------------------------------------
  # ● Setup Parallax Effects
  #--------------------------------------------------------------------------      
  def setup_parallax_effects
      return if @map == nil
      @parallax_effect = [0,0,false,0,false,0,false]
      @parallax_sprite = [0,0,255,1.00,0]
      if @map.note =~ /<Parallax Wave>/
         @parallax_effect[0] = 1
      end 
      if @map.note =~ /<Parallax Fade>/ 
         @parallax_effect[2] = true
      end
      if @map.note =~ /<Parallax Zoom>/ 
         @parallax_effect[4] = true
      end         
      if @map.note =~ /<Parallax Fixed>/ 
         @parallax_effect[6] = true
      end         
  end
  
end 
#==============================================================================
# ■ Spriteset Map
#==============================================================================
class Spriteset_Map
  include MOG_PARALLAX_EX
  
  #--------------------------------------------------------------------------
  # ● Create Parallax
  #--------------------------------------------------------------------------  
  def create_parallax
      refresh_parallax
  end
  
  #--------------------------------------------------------------------------
  # ● Dispose Parallax
  #--------------------------------------------------------------------------
  def dispose_parallax
      return if @parallax == nil
      @parallax.bitmap.dispose if @parallax.bitmap
      @parallax.dispose
      @parallax_image.dispose if @parallax_image != nil
  end
  
  #--------------------------------------------------------------------------
  # ● Update Parallax
  #--------------------------------------------------------------------------      
  alias mog_parallax_ex_update_parallax update_parallax
  def update_parallax
      if $game_system.can_update_parallax_ex?
         refresh_parallax if can_refresh_parallax?
         update_parallax_transition_effect
         update_parallax_effects
         return
      end
      mog_parallax_ex_update_parallax 
  end  
  
  #--------------------------------------------------------------------------
  # ● Can Refresh Parallax?
  #--------------------------------------------------------------------------        
  def can_refresh_parallax?
      return false if @parallax_name == $game_map.parallax_name
      return false if $game_map.parallax_effect[1] > 0
      return true
  end
    
  #--------------------------------------------------------------------------
  # ● Refresh Parallax
  #--------------------------------------------------------------------------          
  def refresh_parallax
      dispose_parallax     
      @parallax_name = $game_map.parallax_name
      @parallax_effect_type = $game_map.parallax_effect[0]
      @parallax_zoom_effect = $game_map.parallax_effect[4] 
      @parallax_zoom_speed = PARALLAX_ZOOM_POWER > 0.1 ? 0.1 : PARALLAX_ZOOM_POWER
      @parallax_fade_effect = $game_map.parallax_effect[2]
      @parallax_fixed_position = $game_map.parallax_effect[6] 
      @power_1 = $game_map.parallax_loop_x == true ? $game_map.parallax_sx : 0
      @power_2 = $game_map.parallax_loop_y == true ? $game_map.parallax_sy : 0
      @orig = [0,0]
      @range = 0
      if @parallax_effect_type == 0 
         if !($game_map.parallax_loop_x and $game_map.parallax_loop_y) and
              @parallax_zoom_effect
              create_parallax_type0
              mode_zoom_setup
         else
              create_parallax_type1 
         end  
      else  
         create_parallax_type2
         mode_zoom_setup
      end  
      @parallax.z = -100
      @parallax.opacity = $game_map.parallax_sprite[2]      
      Graphics.frame_reset
      @parallax_effect_type = 1 if $game_map.parallax_effect[4]
      update_parallax_effects
  end  
  
  #--------------------------------------------------------------------------
  # ● Mode Zoom Setup
  #--------------------------------------------------------------------------              
  def mode_zoom_setup
      return if !@parallax_zoom_effect
      @orig[0] = (@parallax.bitmap.width / 2) 
      @orig[1] = (@parallax.bitmap.height / 2)
      @parallax.ox = @orig[0] 
      @parallax.oy = @orig[1]       
      @parallax.x = @orig[0] -@range
      @parallax.y = @orig[1]
  end
      
  #--------------------------------------------------------------------------
  # ● Create Parallax Type 0
  #--------------------------------------------------------------------------            
  def create_parallax_type0
      @parallax = Sprite.new(@viewport1)
      @parallax_image = Cache.parallax(@parallax_name)
      @parallax.bitmap = Bitmap.new(SCREEN_RESOLUTION[0],SCREEN_RESOLUTION[1])
      @parallax.bitmap.stretch_blt(@parallax.bitmap.rect, @parallax_image, @parallax_image.rect)
  end  
  
  #--------------------------------------------------------------------------
  # ● Create Parallax Type 1
  #--------------------------------------------------------------------------            
  def create_parallax_type1
      @parallax = Plane.new(@viewport1)
      @parallax.bitmap = Cache.parallax(@parallax_name)        
  end

  #--------------------------------------------------------------------------
  # ● Create Parallax Type 2
  #--------------------------------------------------------------------------              
  def create_parallax_type2
      @parallax = Sprite.new(@viewport1)
      @parallax_image = Cache.parallax(@parallax_name)         
      @range = (@power_1 + 1) * 10
      @range = 500 if @range > 500
      speed = (@power_2 + 1) * 100
      speed = 1000 if speed > 1000
      @parallax.x = -@range
      @parallax.wave_amp = @range
      @parallax.wave_length = SCREEN_RESOLUTION[0]
      @parallax.wave_speed = speed
      sc_size = [SCREEN_RESOLUTION[0] + (@range * 2),SCREEN_RESOLUTION[1]]
      @parallax.bitmap = Bitmap.new(sc_size[0],sc_size[1])
      @parallax.bitmap.stretch_blt(@parallax.bitmap.rect, @parallax_image, @parallax_image.rect)
  end  
  
  #--------------------------------------------------------------------------
  # ● Update parallax Fade
  #--------------------------------------------------------------------------            
  def update_parallax_transition_effect      
      return if $game_map.parallax_effect[1] == 0
      if @parallax_name == ""
         refresh_parallax
         if @parallax != nil
            @parallax.opacity = 0
            $game_map.parallax_effect[1] = 61
         end   
      end   
      $game_map.parallax_effect[1] -= 1
      execute_fade_effect if @parallax != nil      
  end  
  
  #--------------------------------------------------------------------------
  # ● Execute Fade Effect
  #--------------------------------------------------------------------------              
  def execute_fade_effect
      case $game_map.parallax_effect[1]
          when 61..120
             $game_map.parallax_sprite[2] -= 5
          when 1..60    
             parallax_transition_setup if $game_map.parallax_effect[1] == 60
             $game_map.parallax_sprite[2] += 5
          else
             $game_map.parallax_sprite[2] = 255
      end
  end  
  
  #--------------------------------------------------------------------------
  # ● Parallax Transition Setup
  #--------------------------------------------------------------------------                
  def parallax_transition_setup
      if !$game_system.parallax_change_values.empty?
          cv = $game_system.parallax_change_values
          $game_map.change_parallax(cv[0],cv[1],cv[2],cv[3],cv[4])
      end
      refresh_parallax
      $game_map.parallax_sprite[2] = 0
      $game_map.parallax_effect[3] = 0
      $game_map.parallax_effect[5] = 0
      @parallax.zoom_x = 1.00
      @parallax.zoom_y = 1.00
      $game_map.parallax_sprite[3] = 1.00        
  end
                
  #--------------------------------------------------------------------------
  # ● Update Parallax Effects
  #--------------------------------------------------------------------------        
  def update_parallax_effects
      return if @parallax == nil
      update_parallax_fade_effect
      update_parallax_zoom_effect   
      @parallax.opacity = $game_map.parallax_sprite[2]
      if @parallax_effect_type == 0
         if @parallax_fixed_position
            @parallax.ox = $game_map.display_x * 32
            @parallax.oy = $game_map.display_y * 32
         else
            @parallax.ox = $game_map.parallax_ox(@parallax.bitmap)
            @parallax.oy = $game_map.parallax_oy(@parallax.bitmap)
         end
      else
         @parallax.update         
      end  
  end
    
  #--------------------------------------------------------------------------
  # ● Update Parallax Fade Effect
  #--------------------------------------------------------------------------          
  def update_parallax_fade_effect
      return if !@parallax_fade_effect 
      return if $game_map.parallax_effect[1] > 0
      $game_map.parallax_effect[3] += 1
      case $game_map.parallax_effect[3]
          when 0..60
              $game_map.parallax_sprite[2] = 255
          when 61..189
              $game_map.parallax_sprite[2] -= 2 
          when 190..318
              $game_map.parallax_sprite[2] += 2         
        else
          $game_map.parallax_effect[3] = 0
          $game_map.parallax_sprite[2] = 255
      end
  end
  
  #--------------------------------------------------------------------------
  # ● Update Parallax Zoom Effect
  #--------------------------------------------------------------------------            
  def update_parallax_zoom_effect
      return if !@parallax_zoom_effect
      $game_map.parallax_effect[5] += 1
      case $game_map.parallax_effect[5]
          when 0..120
              $game_map.parallax_sprite[3] += @parallax_zoom_speed
          when 121..240
              $game_map.parallax_sprite[3] -= @parallax_zoom_speed
        else
          $game_map.parallax_effect[5] = 0
          $game_map.parallax_sprite[3] = 1.00
      end
      @parallax.zoom_x = $game_map.parallax_sprite[3]
      @parallax.zoom_y = $game_map.parallax_sprite[3]        
  end  
  
end

$mog_rgss3_parallax_ex = true
[close]

Funcionou aqui.

Mas os efeitos são aplicados na imagem do Parallax.

Em Propriedades do Mapa > Fundo Paralaxe > Gráfico.

O Zoom, por exemplo, ficaria assim.
For all to be accomplished, for me to feel less lonely, all that remained to hope was that on the day of my execution there should be a huge crowd of spectators and that they should greet me with howls of execration.

Spoiler
[close]

05/07/2014 às 14:20 #2 Última edição: 05/07/2014 às 14:22 por Misa
Então Zugzwang, talvez eu não tenha sido clara o bastante. Se eu deixar o mapa sem nenhum tile, funciona.

Spoiler
[close]
Mas eu queria que a imagem ficasse por cima do mapa, parecido com uma neblina, entende?

Estranho por que na DEMO que eu baixei ficava com esse efeito que eu queria, mas não consigo descobrir o que eu devo ter feito de diferente.

05/07/2014 às 14:24 #3 Última edição: 05/07/2014 às 14:26 por Lans
Acredito que os tileset fica por cima do parallax, por isso não há efeito nenhum.
Acho que se quiser que funcione, terá que fazer o mapa todo via parallax pois o script só altera imagens. não tilesets.
Ps: Não o mapa todo, mas pelo menos ter espaço para visualizar o parallax!
"Um gênio é 1% de inspiração e 99% de transpiração."

Thomas Edson

Cheguei!
É o seguinte: No mapa do MOG, ele alterou o tileset diminuindo a opacidade em um programa de edição de imagens, sendo assim a imagem como o caminho fica meio que transparente, como pode ver na água.
Isso dá a impressão de que o parallax fica acima do mapa mas isso é apenas impressão.
O Parallax fica abaixo do Tileset e isso é lei, mudar a opacidade é um truque de mapper.

Citação de: Lans online 05/07/2014 às 14:24
Acredito que os tileset fica por cima do parallax, por isso não há efeito nenhum.
Acho que se quiser que funcione, terá que fazer o mapa todo via parallax pois o script só altera imagens. não tilesets.
Ps: Não o mapa todo, mas pelo menos ter espaço para visualizar o parallax!

Citação de: Alisson online 05/07/2014 às 14:28
Cheguei!
É o seguinte: No mapa do MOG, ele alterou o tileset diminuindo a opacidade em um programa de edição de imagens, sendo assim a imagem como o caminho fica meio que transparente, como pode ver na água.
Isso dá a impressão de que o parallax fica acima do mapa mas isso é apenas impressão.
O Parallax fica abaixo do Tileset e isso é lei, mudar a opacidade é um truque de mapper.

Diminui a opacidade dos tilesets e deu certo, Alisson. Como pode algo tão simples, ser tão complicado ao mesmo tempo?  :derp:

Obrigada a todos que reponderam esse meu tópico! E fico devendo uma pra você Alisson!

Resolvido! (Mais rápido que o meu outro tópico hehe)

Adios!  :beijo: