Sign in to follow this  
Followers 0
Fegarur

[RMVX] Niebla en los Mapas

12 posts in this topic

Descripción:
Con este script se recupera la opción perdida del RMXP en el que los mapas podían tener niebla. Se puede configurar su velocidad, opacidad y tipo de niebla en cada mapa.

Screens:
[SPOILER]user posted image
user posted image[/SPOILER]

Demo:
Descargar Demo (MegaUpload)
Descargar Demo (FileFront)

Script:
[SPOILER]
CODE
#==============================================================================
# ■ DeadlyDan_MapFog por DeadlyDan
#------------------------------------------------------------------------------
#  Permite que los mapas tengan niebla, como en RPG Maker XP
#==============================================================================
# Uso:
=begin
 
 Para poner niebla en un mapa debes hacer lo siguiente:
 
 1) Crea un evento en el mapa y haz que esté disponible sólo cuando el
      Interruptor Local A está encendido.
 2) Llámalo NIEBLA.
 3) Ponlo como Proceso Paralelo.
 4) Añade por ejemplo, el siguiente código en Llamar Script:
 
 $game_map.fog_name = "fog"         # Nombre de la imagen de niebla en la carpeta Pictures
 $game_map.fog_zoom = 300           # Cuánto zoom hacer en la imagen
 $game_map.fog_sx = 1               # La velocidad de scroll en el eje X
 $game_map.fog_sy = 1               # La velocidad de scroll en el eje Y
 $game_map.fog_target_opacity = 80  # La opacidad de la niebla
 $game_map.fog_show                     # Llama siempre a esto después de cambiar variables de niebla  
 
 5) Luego, añade una Operación de Interruptor Local después del código, y
       haz que apague el Interruptor Local A.
 
 (Nota)
 Es necesario que el nombre de evento sea NIEBLA y el evento esté configurado como
 Proceso Paralelo y se active sólo cuando el Interruptor Local A está encendido.
 
 (Extras)
 Puedes usar comandos extra para cambiar la configuración de niebla, como
 en este ejemplo:
 
 $game_map.fog_tone = Tone.new ( 100, 0, 0, 0 )
 $game_map.fog_blend_type = 1 # ( 0 = NADA, 1 = AÑADIR, 2 = QUITAR )
 
 (¡Importante!)
 Cuando quieras tener un mapa sin niebla, haz todo lo anterior pero en vez de
 configurar las opciones de niebla y después llamar a $game_map.show, sólo
 añade un evento con Llamar Script y pon en él $game_map.fog_clear.
 
 Esto limpiará las configuraciones de niebla y la niebla desaparecerá, todos
 los mapas tienen que tener un evento de niebla en ellos, y además los mapas
 guardarán todas las configuraciones de niebla de los anteriores.
 
=end

class Game_Temp
 attr_accessor :fog_name
 attr_accessor :fog_opacity
 attr_accessor :fog_target_opacity
 attr_accessor :fog_blend_type
 attr_accessor :fog_zoom
 attr_accessor :fog_sx
 attr_accessor :fog_sy
 attr_accessor :fog_tone
 
 alias original_initialize initialize
 def initialize
   original_initialize
   @fog_name = ""
   @fog_tone = Tone.new ( 0, 0, 0, 0 )
   @fog_opacity = 0
   @fog_target_opacity = 0
   @fog_blend_type = 0
   @fog_zoom = 100
   @fog_sx = 0
   @fog_sy = 0
 end
 
end

class Game_Map
 attr_accessor :fog_name
 attr_accessor :fog_opacity
 attr_accessor :fog_target_opacity
 attr_accessor :fog_blend_type
 attr_accessor :fog_zoom
 attr_accessor :fog_sx
 attr_accessor :fog_sy
 attr_accessor :fog_ox
 attr_accessor :fog_oy
 attr_accessor :fog_tone
 attr_accessor :fog_start_loop
 attr_accessor :fog_eventid
 attr_accessor :fog_visible
 attr_accessor :fog
 
 alias original_initialize initialize
 def initialize
   original_initialize
   @fog = Plane.new ( @viewport1 )
   @fog_ox = 0
   @fog_oy = 0
 end
 
 alias original_setup setup
 def setup ( map_id )
   original_setup ( map_id )
   fog_event
 end

 alias original_update update
 def update
   original_update
   if ( @fog_visible and @fog )
     fog_update
   end
 end  

 def fog_init
     @fog_name = $game_temp.fog_name
     @fog_tone = $game_temp.fog_tone
     @fog_opacity = $game_temp.fog_opacity
     @fog_target_opacity = $game_temp.fog_target_opacity
     @fog_blend_type = $game_temp.fog_blend_type
     @fog_zoom = $game_temp.fog_zoom
     @fog_sx = $game_temp.fog_sx
     @fog_sy = $game_temp.fog_sy
     @fog_tone_target = Tone.new ( 0, 0, 0, 0 )
     @fog_tone_duration = 0
     @fog_opacity_duration = 0
     @fog_opacity_target = 0
     @fog_previous_name = ""
     fog_setup
 end
 
 def fog_setup
   fog_hide
   if ( ( @fog_previous_name != @fog_name ) and ( @fog_name != "" ) )
     @fog.bitmap = Cache.picture ( @fog_name )
     @fog_name_previous = @fog_name
     @fog_opacity = @fog_target_opacity
     @fog.opacity = @fog_opacity
     @fog.blend_type = @fog_blend_type
     @fog.zoom_x = @fog_zoom / 100
     @fog.zoom_y = @fog_zoom / 100
     @fog.ox = @fog_ox
     @fog.oy = @fog_oy
     @fog.tone = @fog_tone
     @fog.z = 99
     @fog_visible = true
   else
      fog_hide
   end
 end
 
 def fog_update
   @fog_ox -= @fog_sx / 8.0
   @fog_oy -= @fog_sy / 8.0

   if ( @fog_tone_duration >= 1 )
     d = @fog_tone_duration
     target = @fog_tone_target
     @fog_tone.red = (@fog_tone.red * (d - 1) + target.red) / d
     @fog_tone.green = (@fog_tone.green * (d - 1) + target.green) / d
     @fog_tone.blue = (@fog_tone.blue * (d - 1) + target.blue) / d
     @fog_tone.gray = (@fog_tone.gray * (d - 1) + target.gray) / d
     @fog_tone_duration -= 1
   end
   if ( @fog_opacity_duration >= 1 )
     d = @fog_opacity_duration
     @fog_opacity = (@fog_opacity * (d - 1) + @fog_opacity_target) / d
     @fog_opacity_duration -= 1
   end
   @fog.opacity = @fog_opacity
   @fog.blend_type = @fog_blend_type
   @fog.zoom_x = @fog_zoom / 100
   @fog.zoom_y = @fog_zoom / 100
   @fog.ox = @fog_ox
   @fog.oy = @fog_oy
   @fog.tone = @fog_tone
 end
 
 def fog_show
   fog_init
 end
 
 def fog_hide
   @fog_visible = false
   @fog_opacity = 0
   $game_temp.fog_opacity = 0
 end
 
 def fog_clear
   @fog_visible = false
   @fog_opacity = 0
   $game_temp.fog_opacity = 0
   @fog_target_opacity = 0
   $game_temp.fog_target_opacity = 0
   fog_show
 end
   
 def scroll_up ( distance )
   if ( loop_vertical? )
     @display_y += @map.height * 256 - distance
     @display_y %= @map.height * 256
     @parallax_y -= distance
     @fog_oy -= distance / 8.0
   else
     last_y = @display_y
     @display_y = [@display_y - distance, 0].max
     @parallax_y += @display_y - last_y
     @fog_oy += ( @display_y - last_y ) / 8.0
   end
 end
 
 def scroll_down ( distance )
   if ( loop_vertical? )
     @display_y += distance
     @display_y %= @map.height * 256
     @parallax_y += distance
     @fog_oy += distance / 8.0
   else
     last_y = @display_y
     @display_y = [@display_y + distance, (height - 13) * 256].min
     @parallax_y += @display_y - last_y
     @fog_oy += ( @display_y - last_y ) / 8.0
   end
 end

 def scroll_left ( distance )
   if ( loop_horizontal? )
     @display_x += @map.width * 256 - distance
     @display_x %= @map.width * 256
     @parallax_x -= distance
     @fog_ox -= distance / 8.0
   else
      last_x = @display_x
     @display_x = [@display_x - distance, 0].max
     @parallax_x += @display_x - last_x
     @fog_ox += ( @display_x - last_x ) / 8.0
   end
 end
 
 def scroll_right ( distance )
   if ( loop_horizontal? )
     @display_x += distance
     @display_x %= @map.width * 256
     @parallax_x += distance
     @fog_ox += distance / 8.0
   else
     last_x = @display_x
     @display_x = [@display_x + distance, (width - 17) * 256].min
     @parallax_x += @display_x - last_x
     @fog_ox += ( @display_x - last_x ) / 8.0
   end
 end
 
 def setup_events
   @fog_eventid = 0
   @events = {}
   for i in @map.events.keys
     @events[i] = Game_Event.new(@map_id, @map.events[i])
     if ( @events[i].name == "NIEBLA" )
       @fog_eventid = i
     end
   end
   @common_events = {}
   for i in 1...$data_common_events.size
     @common_events[i] = Game_CommonEvent.new(i)
   end
 end
   
 def fog_event
   if ( @fog_eventid != 0 )
     key = @events[@fog_eventid].selfswitch
     $game_self_switches[key] = true
   end
 end

end

class Scene_Map < Scene_Base
 
 alias original_start start
 def start
   original_start
   $game_map.fog_show
   $game_map.fog_event
 end

 alias original_terminate terminate
 def terminate
   original_terminate
   $game_map.fog_hide
 end
 
end

class Game_Player < Game_Character
 
 alias original_perform_transfer perform_transfer
 def perform_transfer
   original_perform_transfer
   $game_map.setup_events
   $game_map.fog_event
   $game_map.fog_show
 end
 
end

class Game_Event < Game_Character

 def name
   return @event.name
 end
 
 def selfswitch
   key = [@map_id, @event.id, 'A']
   return key
 end
 
end
[/SPOILER]

Instrucciones:
Está todo en los comentarios en la parte superior del script. Un resumen:

Crea un evento en el mapa. Es necesario que el nombre de evento sea NIEBLA, que el evento esté configurado como Proceso Paralelo y que se active sólo cuando el Interruptor Local A está encendido. Para configurar niebla:
$game_map.fog_name = "fog" # Nombre de la imagen de niebla en la carpeta Pictures
$game_map.fog_zoom = 300 # Cuánto zoom hacer en la imagen
$game_map.fog_sx = 1 # La velocidad de scroll en el eje X
$game_map.fog_sy = 1 # La velocidad de scroll en el eje Y
$game_map.fog_target_opacity = 80 # La opacidad de la niebla
$game_map.fog_show # Llama siempre a esto después de cambiar variables de niebla


Créditos:
Script creado por DeadlyDan. Edited by Fegarur
0

Share this post


Link to post
Share on other sites
Wow impresionado.gif este scrip mola mas que para el del Xp ^^ Bueno pensaba que no se harían tan pronto scripts para este Rpg Maker nuevo pero muchisimas gracias seguramente pase todo mi proyecto a este Rpg Maker pero esperare a que halla recursos graficos...
Ah lo prové y no me dió ningun error que yo sepa^^ evilgrin39.gif Bueno gracias de nuevo y sigue asi^^
0

Share this post


Link to post
Share on other sites
Ante las dificultades que me ha comunicado más de uno para hacerlo funcionar, he actualizado el primer post con demo. icon13.gif
0

Share this post


Link to post
Share on other sites
hey fer, no sabes si aun no actualizan el script para que no falle en guardar las partidas?
0

Share this post


Link to post
Share on other sites
Comprobé ayer si su autor lo había solucionado pero parece que aún no.
Supongo que tendremos que tener paciencia. icon13.gif
0

Share this post


Link to post
Share on other sites
Estas son las imágenes de la niebla tipo bosque que aparece como ejemplo del script en la imagen de arriba cedidas por Fegarur:

user posted image


user posted image
- - - - - - - - -
Me salta un error en cuanto intento dar un paso ¿alguien sabe como solucionarlo?

Thanks! Edited by gab91
0

Share this post


Link to post
Share on other sites
1) Mira a ver si todo está bien configurado.
2) Comprueba la compatibilidad con otros scripts que uses.
3) Compara con la demo.
4) Si aun así no lo consigues, al menos pon qué error te da. xD

PD: Recuerda que todos los mapas deben tener un evento de niebla, aunque ese sólo sirva para decir que no hay niebla en ese mapa.
0

Share this post


Link to post
Share on other sites
Como compruebo la compatibilidad???? me salta este error:

(k torpe x mi part no ponerlo XD)

Script: 'Niebla' line 219: NoMethodError ocurred.
undefined method `+ ' for nil:NilClass
0

Share this post


Link to post
Share on other sites
Prueba quitando otros scripts que uses poco a poco (pero haz copia de seguridad o algo, ¿eh?). Si al quitar uno de repente funciona, es que no es compatible con ese script.
0

Share this post


Link to post
Share on other sites
Pues yo tuve un error al momento de salvar la partida, ahorita no tengo como para poner la imagen, pero igual si tratas de grabar el archivo en la demo te sale el error... como se puede arreglar eso?
0

Share this post


Link to post
Share on other sites
Ami me da varios fallos xD.pngD sobretodo cuando pongo mover eventos con cosas a.......... ¿Saben por que? o ay alguna actualizacion o algo?. muerte.gif
0

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!


Register a new account

Sign in

Already have an account? Sign in here.


Sign In Now
Sign in to follow this  
Followers 0