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

[Woratana] Multiple Fog

Iniciado por Raizen, 22/12/2012 às 16:36

Multiple Fog

Compativel com: RMVX
Compatibilidade :boa
Facilidade de uso: fácil
Lag gerado: baixo
[box class=titlebg]
Condições de Uso
[/box]
Não especificado pela autora.

[box class=titlebg]
Para que serve o script
[/box]
  Permite a função de fogs no RMVX, e adicional a isso permite mais que uma fog.

[box class=titlebg]
Script
[/box]

#===============================================================
# ● [VX] ◦ Multiplas Névoas ◦ □
# * Use Layers Ilimitados de Névoa *
#--------------------------------------------------------------
# ◦ Por Woratana [woratana@hotmail.com]
# ◦ Thaiware RPG Maker Community
# ◦ Lançado em: 13/05/2008
# ◦ Versão: 1.0
# ◦ Tradução: tcm_1 [tarcisiocm@hotmail.com.br]
#--------------------------------------------------------------

#==================================================================
# ** Como Usar**
# * Use o 'Chamar Script' para qualquer comando a baixo
#-----------------------------------------------------------------
#
#---------------------------------------------------------------
# ** Propriedades da Névoa & Mostras Névoa **
# * ~Você tem que fazer as propriedades da Névoa antes de mostra-la~
#-------------------------------------------------------------
# * Tem 3 maneiras de criar a Névoa:
# >> Fazer Névoa [Customizada]:
# $fog.name = 'image_name' # Arquivo da Imagem, precisa estar na pata Pictures(Editavel).
# $fog.hue = (integer) # Cor da Névoa. 0 - 360, 0 para não mudar nada.
# $fog.tone = [red, green, blue, gray] # Tonalidade da Névoa.
# $fog.opacity = (integer) # Opacidade da Névoa. 0 - 255, você não verá a Névoa em 0.
# $fog.blend = (0, 1, or 2) # "Blend" na Névoa. 0 para Normal, 1 para Adicionar, 2 for Tirar.
# $fog.zoom = (integer) # Tamanho da Névoa (Em %). 100 para o tamanho normal.
# $fog.sx = (+ or - integer) # Velocidade de movivento da Névoa em Horizontal.
# $fog.sy = (+ or - integer) # Velocidade de movivento da Névoa em Vertical.
#
# >> Fazer Névoa [Pré-Progamada]:
# (Você pode fazer Névoas Pré-Progamadas em Criação de Pré-Progamação abaixo)
# $fog.load_preset(preset_id)
#
# >> Setup Fog [De outra Névoa que esta sendo mostrada]:
# $fog.load_fog(fog_id)
#
#--------------------------------------------------------------
# ** Mostrar Névoa **
#-------------------------------------------------------------
# Depois de Criar a Névoa, faça ela aparecer com o seguinte comando:
# $fog.show(fog_id)
#
# Caso você não queira mostrar o mesmo "ox", "oy", chame o Script:
# $fog.show(old_fog_id, false)
#
# * fog_id: O ID que você quer colocar essa Névoa.
# (Qualquer numero positivo ou Zero)
#
# Depois de Mostrar sua Névoa, as Propriedades da Névoa que você colocou irão
# Substituir as Configurações Padrão.
# (Você pode editar as Configurações Parão em "Configurações Padrão da Névoa" abaixo)
#
#--------------------------------------------------------------
# ** Deletar Névoa **
#-------------------------------------------------------------
# Você pode deletar 1 ou mais Nêvoa(s) a qualquer hora chamando esse script:
# $fog.delete(fog_id, fog_id, fog_id, ...)
#
#---------------------------------------------------------------
# ** Antigos Eventos de Controlar Névoa **
#-------------------------------------------------------------
# Mudar Tom da Névoa:
# $game_map.fogtone(fog_id, [red, green, blue, gray], duration)
# e.g. $game_map.fogtone(1, [100,200,-100,0], 10)

# Mudar Opacidade da Névoa:
# $game_map.fogopac(fog_id, new_opacity, duration)
# e.g. $game_map.fogopac(2, 200, 10)
#
#---------------------------------------------------------------
# ** Configurações Adicionais **
#-------------------------------------------------------------
# Mudar a pasta da Névoa:
# $game_map.fog_path = 'image_path'
# e.g. $game_map.fog_path = 'Graphics/Pictures/'

# Deixar Ligado/Desligado [Automaticamente Reseta todas as Névoas quando o Jogador muda de Mapa]:
# $game_map.fog_reset = (true / false)
#
#===============================================================

#==================================================================
# Inicio ** Criação de Mutiplas Névoas **
#==================================================================
class Game_Map
  alias wora_mulfog_gammap_ini initialize
  def initialize
    wora_mulfog_gammap_ini
   
    #==================================================================
    # ** Criação de Mutiplas Névoas ** Configurações
    #--------------------------------------------------------------
    @fog_path = 'Graphics/Pictures/'
    # Pasta da Imagem da Névoa
    @fog_reset = true # (true ou false)
    # Nêvoas Desaparecem Automaticamente ao Mudar o Jogador de Mapa
    #==================================================================
   
    @mulfog_name = []
    @mulfog_hue = []
    @mulfog_opacity = []
    @mulfog_blend_type = []
    @mulfog_zoom = []
    @mulfog_sx = []
    @mulfog_sy = []
    @mulfog_ox = []
    @mulfog_oy = []
    @mulfog_tone = []
    @mulfog_tone_target = []
    @mulfog_tone_duration = []
    @mulfog_opacity_duration = []
    @mulfog_opacity_target = []
  end
end
class Wora_Multiple_Fog
  def set_default
    #==================================================================
    # ** Criação de Mutiplas Névoas ** Configurações Padrão da Névoa
    #--------------------------------------------------------------
    @name = ''
    @hue = 0
    @opacity = 64
    @blend = 0
    @zoom = 200
    @sx = 0
    @sy = 0
    @tone = [0,0,0,0]
    #==================================================================
  end
 
  def load_preset(preset_id)
    case preset_id
    #==================================================================
    # ** Criação de Mutiplas Névoa ** Criação de Pré-Progamação
    #--------------------------------------------------------------
    when 1 # Preset ID 1
      @name = '001-Fog01'
      @hue = 0
      @tone = [100,-255,20,0]
      @opacity = 60
      @blend = 0
      @zoom = 200
      @sx = 10
      @sy = 0
    when 2 # Preset ID 2
      @name = '002-Clouds01'
      @hue = 0
      @tone = [0,0,0,0]
      @opacity = 200
      @blend = 1
      @zoom = 200
      @sx = -2
      @sy = -2
    #==================================================================
    end
  end
#==================================================================
# Fim da ** Criação de Mutiplas Névoa**
# * Não mude nada aqui em baixo se não souber o que esta fazendo!
#==================================================================

  attr_accessor :name, :hue, :opacity, :blend, :zoom, :sx, :sy, :tone
  def initialize
    set_default
  end
 
  def load_fog(id)
    @name = $game_map.mulfog_name[id].sub($game_map.fog_path, '')
    @hue = $game_map.mulfog_hue[id]
    @opacity = $game_map.mulfog_opacity[id]
    @blend = $game_map.mulfog_blend_type[id]
    @zoom = $game_map.mulfog_zoom[id]
    @sx = $game_map.mulfog_sx[id]
    @sy = $game_map.mulfog_sy[id]
    tn = $game_map.mulfog_tone[id]
    @tone = [tn.red, tn.blue, tn.green, tn.gray]
  end

  def show(id, reset_all = true)
    $game_map.mulfog_name[id] = $game_map.fog_path + @name
    $game_map.mulfog_hue[id] = @hue
    $game_map.mulfog_opacity[id] = @opacity
    $game_map.mulfog_blend_type[id] = @blend
    $game_map.mulfog_zoom[id] = @zoom
    $game_map.mulfog_sx[id] = @sx
    $game_map.mulfog_sy[id] = @sy
    $game_map.mulfog_tone[id] = Tone.new(@tone[0], @tone[1], @tone[2], @tone[3])
    if $game_map.mulfog_ox[id].nil? or reset_all
      $game_map.mulfog_ox[id] = 0
      $game_map.mulfog_oy[id] = 0
      $game_map.mulfog_tone_target[id] = Tone.new(0, 0, 0, 0)
      $game_map.mulfog_tone_duration[id] = 0
      $game_map.mulfog_opacity_duration[id] = 0
      $game_map.mulfog_opacity_target[id] = 0
    end
    set_default
  end
 
  def delete(*args)
    args.each do |id|
      $game_map.mulfog_name[id] = ''
    end
  end
end

class Game_Interpreter
  alias wora_mulfog_interpret_com201 command_201
  #--------------------------------------------------------------------------
  # * Tranferir Jogador de Mapa
  #--------------------------------------------------------------------------
  def command_201
    if $game_map.fog_reset
      if @params[0] == 0; id_map = @params[1]
      else; id_map = $game_variables[@params[1]]
      end
      $game_map.clear_mulfog if id_map != @map_id
    end
    wora_mulfog_interpret_com201
  end
end

class Game_Map
  attr_accessor :mulfog_name, :mulfog_hue, :mulfog_opacity, :mulfog_blend_type,
  :mulfog_zoom, :mulfog_sx, :mulfog_sy, :mulfog_ox, :mulfog_oy, :mulfog_tone,
  :mulfog_tone_target, :mulfog_tone_duration, :mulfog_opacity_duration,
  :mulfog_opacity_target, :fog_reset, :fog_path
 
  alias wora_mulfog_gammap_upd update
  def update
    wora_mulfog_gammap_upd
    @mulfog_name.each_index do |i|
      next if @mulfog_name[i].nil? or @mulfog_name[i] == ''
      # Mudar Movimento da Névoa
      @mulfog_ox[i] -= @mulfog_sx[i] / 8.0
      @mulfog_oy[i] -= @mulfog_sy[i] / 8.0
      # Mudar Mudança de Tom da Névoa
      if @mulfog_tone_duration[i] >= 1
        d = @mulfog_tone_duration[i]
        target = @mulfog_tone_target[i]
        @mulfog_tone[i].red = (@mulfog_tone[i].red * (d - 1) + target.red) / d
        @mulfog_tone[i].green = (@mulfog_tone[i].green * (d - 1) + target.green) / d
        @mulfog_tone[i].blue = (@mulfog_tone[i].blue * (d - 1) + target.blue) / d
        @mulfog_tone[i].gray = (@mulfog_tone[i].gray * (d - 1) + target.gray) / d
        @mulfog_tone_duration[i] -= 1
      end
      # Mudar Mudança de Opacidade da Névoa
      if @mulfog_opacity_duration[i] >= 1
        d = @mulfog_opacity_duration[i]
        @mulfog_opacity[i] = (@mulfog_opacity[i] * (d - 1) + @mulfog_opacity_target[i]) / d
        @mulfog_opacity_duration[i] -= 1
      end
    end
  end
  #--------------------------------------------------------------------------
  # * Começando a Mudança de Tom de Cor
  #--------------------------------------------------------------------------
  def fogtone(i, tone, duration)
    duration = duration * 2
    tone = Tone.new(tone[0], tone[1], tone[2], tone[3])
    @mulfog_tone_target[i] = tone.clone
    @mulfog_tone_duration[i] = duration
    if @mulfog_tone_duration[i] == 0
      @mulfog_tone[i] = @mulfog_tone_target[i].clone
    end
  end
  #--------------------------------------------------------------------------
  # * Começando a Mudança de Opacidade da Névoa
  #--------------------------------------------------------------------------
  def fogopac(i, opacity, duration)
    duration = duration * 2
    @mulfog_opacity_target[i] = opacity * 1.0
    @mulfog_opacity_duration[i] = duration
    if @mulfog_opacity_duration[i] == 0
      @mulfog_opacity[i] = @mulfog_opacity_target[i]
    end
  end
 
  def clear_mulfog
    @mulfog_name.each_index {|i| @mulfog_name[i] = '' }
  end
end
$worale = {} if !$worale
$worale['MutipleFog'] = true
$fog = Wora_Multiple_Fog.new
class Spriteset_Map
  alias wora_mulfog_sprmap_crepal create_parallax
  alias wora_mulfog_sprmap_updpal update_parallax
  alias wora_mulfog_sprmap_dispal dispose_parallax
 
  def create_parallax
    @mulfog = []
    @mulfog_name = []
    @mulfog_hue = []
    wora_mulfog_sprmap_crepal
  end
 
  def update_parallax
    wora_mulfog_sprmap_updpal
    $game_map.mulfog_name.each_index do |i|
      next if $game_map.mulfog_name[i].nil?
      # Se a Névoa é Diferente da Nêvoa Atual
      if @mulfog_name[i] != $game_map.mulfog_name[i] or @mulfog_hue[i] != $game_map.mulfog_hue[i]
        @mulfog_name[i] = $game_map.mulfog_name[i]
        @mulfog_hue[i] = $game_map.mulfog_hue[i]
        if @mulfog[i].nil?
          @mulfog[i] = Plane.new(@viewport1)
          @mulfog[i].z = 3000
        end
        if @mulfog[i].bitmap != nil
          @mulfog[i].bitmap.dispose
          @mulfog[i].bitmap = nil
        end
        if @mulfog_name[i] != ''
          @mulfog[i].bitmap = Cache.load_bitmap('', @mulfog_name[i], @mulfog_hue[i])
        end
        Graphics.frame_reset
      end
      next if @mulfog[i].bitmap.nil?
      # Atualizar Névoa Plana
      @mulfog[i].zoom_x = ($game_map.mulfog_zoom[i] / 100.0) if @mulfog[i].zoom_x != ($game_map.mulfog_zoom[i] / 100.0)
      @mulfog[i].zoom_y = ($game_map.mulfog_zoom[i] / 100.0) if @mulfog[i].zoom_y != ($game_map.mulfog_zoom[i] / 100.0)
      @mulfog[i].opacity = $game_map.mulfog_opacity[i] if @mulfog[i].opacity != $game_map.mulfog_opacity[i]
      @mulfog[i].blend_type = $game_map.mulfog_blend_type[i] if @mulfog[i].blend_type != $game_map.mulfog_blend_type[i]
      @mulfog[i].ox = ($game_map.display_x / 8.0 + $game_map.mulfog_ox[i]) if @mulfog[i].ox != ($game_map.display_x / 8.0 + $game_map.mulfog_ox[i])
      @mulfog[i].oy = ($game_map.display_y / 8.0 + $game_map.mulfog_oy[i]) if @mulfog[i].oy != ($game_map.display_y / 8.0 + $game_map.mulfog_oy[i])
      @mulfog[i].tone = $game_map.mulfog_tone[i] if @mulfog[i].tone != $game_map.mulfog_tone[i]
    end
  end
 
  def dispose_parallax
    @mulfog.each_index do |i|
      next if @mulfog[i].nil?
      @mulfog[i].bitmap.dispose if !@mulfog[i].bitmap.nil?
      @mulfog[i].dispose
    end
    wora_mulfog_sprmap_dispal
  end
end
#============================================================================
# [FIM] VX Multiple Fog (Mutiplas Névoas) por Woratana [woratana@hotmail.com]
#============================================================================



[box class=titlebg]
Imagens
[/box]




[box class=titlebg]
Créditos e Avisos
[/box]

Woratana a criadora do script
tcm_1 traduziu o script