RPG Maker Forums

I'm attempting to use Woratana/Necromus's (or any other) multi-fog script in conjunction with Kread-EX's fairly recent Parallax Plane class rewrite, but am unable to get my fogs to loop.  The fogs show when called via event, and move as intended, but it seems the graphic simply ends once it scrolls through.  Is it possible to rewrite the parallax update in the multi-fog script to use the viewport (similar to Kread-EX's script) instead of game_map.display?  Or is there another solution?

Multi-Fog:

#===============================================================# ● [VX ACE] ◦ Multiple Fogs ◦ □# * Use unlimited layers of fog *#--------------------------------------------------------------# ◦ by Woratana [woratana@hotmail.com]# ◦ Thaiware RPG Maker Community# ◦ Released on: 13/05/2008# ◦ Version: 1.0# ◦ ported to VX Ace by Necromus 17/03/2012#--------------------------------------------------------------#==================================================================# ** HOW TO USE **# * use event command 'Script...' for the any script line below~#-----------------------------------------------------------------##---------------------------------------------------------------# ** SETUP FOG PROPERTIES & SHOW FOG **# * You have to setup fog properties, before show fog~#-------------------------------------------------------------# * There are 3 ways to setup fog properties:# >> Setup Fog [Custom]:# $fog.name = 'image_name' # Image file name, must be in fog image path (setup path below).# $fog.hue = (integer) # Fog's hue. 0 - 360, 0 for no hue.# $fog.tone = [red, green, blue, gray] # Fog's tone color.# $fog.opacity = (integer) # Fog's opacity. 0 - 255, you will not see fog in 0.# $fog.blend = (0, 1, or 2) # Fog's blend type. 0 for Normal, 1 for Add, 2 for Subtract.# $fog.zoom = (integer) # Fog's size (in %). 100 for normal size.# $fog.sx = (+ or - integer) # Fog's horizontal move speed.# $fog.sy = (+ or - integer) # Fog's vertical move speed.## >> Setup Fog [From Preset]:# (You can setup fog presets, in part FOG PRESET SETUP below)# $fog.load_preset(preset_id)## >> Setup Fog [From Fog that showing]:# $fog.load_fog(fog_id)##--------------------------------------------------------------# ** SHOW FOG **#-------------------------------------------------------------# After setup the fog, show fog by call script:# $fog.show(fog_id)## In case you want to show new fog on same ox, oy, tone as old fog. Call Script:# $fog.show(old_fog_id, false)## * fog_id: the ID number you want to put this fog in.# (It can be any positive number or zero)## After you show fog, the fog properties you've set will replace with default setting.# (You can setup default setting, in part FOG DEFAULT SETTING below)##--------------------------------------------------------------# ** DELETE FOG **#-------------------------------------------------------------# You can delete 1 or more fog(s) at a time by call script:# $fog.delete(fog_id, fog_id, fog_id, ...)##---------------------------------------------------------------# ** OLD FOG CONTROL EVENT COMMANDS **#-------------------------------------------------------------# Change Fog Tone:# $game_map.fogtone(fog_id, [red, green, blue, gray], duration)# e.g. $game_map.fogtone(1, [100,200,-100,0], 10)# Change Fog Opacity:# $game_map.fogopac(fog_id, new_opacity, duration)# e.g. $game_map.fogopac(2, 200, 10)##---------------------------------------------------------------# ** ADDITIONAL SETTINGS **#-------------------------------------------------------------# Change Fog Image's Path:# $game_map.fog_path = 'image_path'# e.g. $game_map.fog_path = 'Graphics/Pictures/'# Turn ON/OFF [Automatically clear all fogs when transfer player]:# $game_map.fog_reset = (true / false)##===============================================================#==================================================================# START ** MULTIPLE FOG SETUP **#==================================================================class Game_Map alias wora_mulfog_gammap_ini initialize def initialize wora_mulfog_gammap_ini #================================================================== # ** MULTIPLE FOG SETUP ** SETTINGS #-------------------------------------------------------------- @fog_path = 'Graphics/Pictures/' # Fog image's path @fog_reset = true # (true or false) # Automatically clear all multiple fogs when transfer player #================================================================== @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 = [] endendclass Wora_Multiple_Fog def set_default #================================================================== # ** MULTIPLE FOG SETUP ** FOG DEFAULT SETTING #-------------------------------------------------------------- @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 #================================================================== # ** MULTIPLE FOG SETUP ** FOG PRESET SETUP #-------------------------------------------------------------- when 1 # Preset ID 1 @name = 'Fog' @hue = 0 @tone = [100,-255,20,0] @opacity = 60 @blend = 0 @zoom = 200 @sx = 10 @sy = 0 when 2 # Preset ID 2 @name = 'Cloud2' @hue = 0 @tone = [0,0,0,0] @opacity = 60 @blend = 0 @zoom = 200 @sx = 10 @sy = 0 when 3 # Preset ID 3 @name = 'Cloud3' @hue = 0 @tone = [0,0,0,-100] @opacity = 150 @blend = 0 @zoom = 140 @sx = 2 @sy = 1 #================================================================== end end#==================================================================# END ** MULTIPLE FOG SETUP **# * Don't change anything below unless you know what you're doing.#================================================================== 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 endendclass Game_Interpreter alias wora_mulfog_interpret_com201 command_201 #-------------------------------------------------------------------------- # * Transfer Player #-------------------------------------------------------------------------- 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 endendclass 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(main) wora_mulfog_gammap_upd(main) @mulfog_name.each_index do |i| next if @mulfog_name.nil? or @mulfog_name == '' # Manage fog scrolling @mulfog_ox -= @mulfog_sx / 8.0 @mulfog_oy -= @mulfog_sy / 8.0 # Manage change in fog color tone if @mulfog_tone_duration >= 1 d = @mulfog_tone_duration target = @mulfog_tone_target @mulfog_tone.red = (@mulfog_tone.red * (d - 1) + target.red) / d @mulfog_tone.green = (@mulfog_tone.green * (d - 1) + target.green) / d @mulfog_tone.blue = (@mulfog_tone.blue * (d - 1) + target.blue) / d @mulfog_tone.gray = (@mulfog_tone.gray * (d - 1) + target.gray) / d @mulfog_tone_duration -= 1 end # Manage change in fog opacity level if @mulfog_opacity_duration >= 1 d = @mulfog_opacity_duration @mulfog_opacity = (@mulfog_opacity * (d - 1) + @mulfog_opacity_target) / d @mulfog_opacity_duration -= 1 end end end #-------------------------------------------------------------------------- # * Start Changing Fog Color Tone #-------------------------------------------------------------------------- def fogtone(i, tone, duration) duration = duration * 2 tone = Tone.new(tone[0], tone[1], tone[2], tone[3]) @mulfog_tone_target = tone.clone @mulfog_tone_duration = duration if @mulfog_tone_duration == 0 @mulfog_tone = @mulfog_tone_target.clone end end #-------------------------------------------------------------------------- # * Start Changing Fog Opacity Level #-------------------------------------------------------------------------- def fogopac(i, opacity, duration) duration = duration * 2 @mulfog_opacity_target = opacity * 1.0 @mulfog_opacity_duration = duration if @mulfog_opacity_duration == 0 @mulfog_opacity = @mulfog_opacity_target end end def clear_mulfog @mulfog_name.each_index {|i| @mulfog_name = '' } endend$worale = {} if !$worale$worale['MutipleFog'] = true$fog = Wora_Multiple_Fog.newclass 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.nil? # If fog is different than current fog if @mulfog_name != $game_map.mulfog_name or @mulfog_hue != $game_map.mulfog_hue @mulfog_name = $game_map.mulfog_name @mulfog_hue = $game_map.mulfog_hue if @mulfog.nil? @mulfog = Plane.new(@viewport3) @mulfog.z = 3000 end if @mulfog.bitmap != nil @mulfog.bitmap.dispose @mulfog.bitmap = nil end if @mulfog_name != '' @mulfog.bitmap = Cache.load_bitmap('', @mulfog_name, @mulfog_hue) end Graphics.frame_reset end next if @mulfog.bitmap.nil? # Update fog plane @mulfog.zoom_x = ($game_map.mulfog_zoom / 100.0) if @mulfog.zoom_x != ($game_map.mulfog_zoom / 100.0) @mulfog.zoom_y = ($game_map.mulfog_zoom / 100.0) if @mulfog.zoom_y != ($game_map.mulfog_zoom / 100.0) @mulfog.opacity = $game_map.mulfog_opacity if @mulfog.opacity != $game_map.mulfog_opacity @mulfog.blend_type = $game_map.mulfog_blend_type if @mulfog.blend_type != $game_map.mulfog_blend_type @mulfog.ox = $game_map.mulfog_ox + $game_map.display_x * 32 if @mulfog.ox != $game_map.mulfog_ox + $game_map.display_x * 32 @mulfog.oy = $game_map.mulfog_oy + $game_map.display_y * 32 if @mulfog.oy != $game_map.mulfog_oy + $game_map.display_y * 32 @mulfog.tone = $game_map.mulfog_tone if @mulfog.tone != $game_map.mulfog_tone end end def dispose_parallax @mulfog.each_index do |i| next if @mulfog.nil? @mulfog.bitmap.dispose if !@mulfog.bitmap.nil? @mulfog.dispose end wora_mulfog_sprmap_dispal endend#==================================================================# [END] VX Multiple Fog by Woratana [woratana@hotmail.com]#==================================================================

Plane Class:

Code:
#:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=#  ▼ Plane#  Author: Kread-EX#  Version 1.01#  Release date: 08/01/2013#:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=#------------------------------------------------------------------------------#  ▼ UPDATES#------------------------------------------------------------------------------# #  11/04/2013. Added compatibility with Yanfly's Parallax Lock.#------------------------------------------------------------------------------#  ▼ TERMS OF USAGE#------------------------------------------------------------------------------# #  You are free to adapt this work to suit your needs.# #  You can use this work for commercial purposes if you like it.# ## # For support:# # grimoirecastle.wordpress.com# # rpgmakerweb.com#------------------------------------------------------------------------------#  ▼ INTRODUCTION#------------------------------------------------------------------------------# # Rewrite the Plane class to work with Esrever's hacked DLL. Plug-and-play.#------------------------------------------------------------------------------#==============================================================================# ■ Plane#==============================================================================class Plane  #--------------------------------------------------------------------------  # ● Object initialize  #--------------------------------------------------------------------------  def initialize(view = nil)    @viewport = view    @sprite = Sprite.new(@viewport)  end  #--------------------------------------------------------------------------  # ● Free  #--------------------------------------------------------------------------  def dispose    @sprite.dispose  end  #--------------------------------------------------------------------------  # ● Get freed  #--------------------------------------------------------------------------  def disposed?    @sprite.disposed?  end  #--------------------------------------------------------------------------  # ● Get visible  #--------------------------------------------------------------------------  def visible    @sprite.visible  end  #--------------------------------------------------------------------------  # ● Set visible  #--------------------------------------------------------------------------  def visible=(value)    @sprite.visible = value  end  #--------------------------------------------------------------------------  # ● Get zoom x  #--------------------------------------------------------------------------  def zoom_x    @sprite.zoom_x  end  #--------------------------------------------------------------------------  # ● Set zoom x  #--------------------------------------------------------------------------  def zoom_x=(value)    @sprite.zoom_x = value  end  #--------------------------------------------------------------------------  # ● Get zoom y  #--------------------------------------------------------------------------  def zoom_y    @sprite.zoom_y  end  #--------------------------------------------------------------------------  # ● Set zoom y  #--------------------------------------------------------------------------  def zoom_y=(value)    @sprite.zoom_y = value  end  #--------------------------------------------------------------------------  # ● Get opacity  #--------------------------------------------------------------------------  def opacity    @sprite.opacity  end  #--------------------------------------------------------------------------  # ● Set opacity  #--------------------------------------------------------------------------  def opacity=(value)    @sprite.opacity = value  end  #--------------------------------------------------------------------------  # ● Get blend type  #--------------------------------------------------------------------------  def blend_type    @sprite.blend_type  end  #--------------------------------------------------------------------------  # ● Set blend type  #--------------------------------------------------------------------------  def blend_type=(value)    @sprite.blend_type = value  end  #--------------------------------------------------------------------------  # ● Get color  #--------------------------------------------------------------------------  def color    @sprite.color  end  #--------------------------------------------------------------------------  # ● Set color  #--------------------------------------------------------------------------  def color=(value)    @sprite.color = value  end  #--------------------------------------------------------------------------  # ● Get tone  #--------------------------------------------------------------------------  def tone    @sprite.tone  end  #--------------------------------------------------------------------------  # ● Set tone  #--------------------------------------------------------------------------  def tone=(value)    @sprite.tone = value  end  #--------------------------------------------------------------------------  # ● Frame update  #--------------------------------------------------------------------------  def update    @sprite.update  end  #--------------------------------------------------------------------------  # ● Get viewport  #--------------------------------------------------------------------------  def viewport    @viewport  end  #--------------------------------------------------------------------------  # ● Set viewport  #--------------------------------------------------------------------------  def viewport=(value)    @viewport = value    @sprite.viewport = viewport  end  #--------------------------------------------------------------------------  # ● Get bitmap  #--------------------------------------------------------------------------  def bitmap    @sprite.bitmap  end  #--------------------------------------------------------------------------  # ● Set bitmap  #--------------------------------------------------------------------------  def bitmap=(value)    if value.nil?      @sprite.bitmap = value      return    end    bw = @viewport ? @viewport.rect.width : Graphics.width    bh = @viewport ? @viewport.rect.height : Graphics.height    if SceneManager.scene.is_a?(Scene_Map) && $game_map.parallax_tile_lock?      bw = $game_map.width * 32      bh = $game_map.height * 32    end    rw = bw.fdiv(value.width).ceil    rh = bh.fdiv(value.height).ceil    new_bmp = Bitmap.new(bw, bh)    0.upto(rw).each do |x|      0.upto(rh).each do |y|        new_bmp.blt(x * value.width, y * value.height, value, value.rect)      end    end    @sprite.bitmap = new_bmp  end  #--------------------------------------------------------------------------  # ● Get ox  #--------------------------------------------------------------------------  def ox    @sprite.ox  end  #--------------------------------------------------------------------------  # ● Set ox  #--------------------------------------------------------------------------  def ox=(nox)    @sprite.ox = nox  end  #--------------------------------------------------------------------------  # ● Get oy  #--------------------------------------------------------------------------  def oy    @sprite.oy  end  #--------------------------------------------------------------------------  # ● Set oy  #--------------------------------------------------------------------------  def oy=(noy)    @sprite.oy = noy  end  #--------------------------------------------------------------------------  # ● Get z  #--------------------------------------------------------------------------  def z    @sprite.z  end  #--------------------------------------------------------------------------  # ● Set z  #--------------------------------------------------------------------------  def z=(z)    @sprite.z = z  endend

Latest Threads

Latest Profile Posts

Frostorm wrote on Featherbrain's profile.
Hey, so what species are your raptors? Any of these?
... so here's my main characters running around inside "Headspace", a place people use as a safe place away from anxious/panic related thinking.
Stream will be live shortly! I will be doing some music tonight! Feel free to drop by!
Made transition effects for going inside or outside using zoom, pixi filter, and a shutter effect
I have gathered enough feedback from a few selected people. But it is still available if you want to sign up https://forums.rpgmakerweb.com/index.php?threads/looking-for-testers-a-closed-tech-demo.130774/

Forum statistics

Threads
105,992
Messages
1,018,190
Members
137,772
Latest member
Kirakirna
Top