- Alo-TesumMembre
- Nombre de messages : 7
Distinction : aucune
Date d'inscription : 26/02/2008
Brouillard pour RMVX
Sam 1 Mar 2008 - 17:00
Voici un script permettant de placer des brouillards (fog) dans La version VX
Il est de DeadlyDan.
Le hic c\'est que je n\'arrive pas à le faire fonctionner (à vrai dire je ne suis pas une bête en anglais ).
Donc voila si quelqu\'un pourrai m\'expliquer comment faire, merci...
Les explications en anglais sont au début du script.
J\'espère que, si il marche, il vous sera utile à vous aussi. Pour moi c\'est important le brouillard dans une carte. A+
Petit EDIT :
Oups je viens de trouver mieux à l\'instant...
Dans les tutoriels débutant, le topic \" Effet de soleil \" de Jejemaker.
Finalement c\'est beaucoup plus simple que le script
désolé tout le monde...
Il est de DeadlyDan.
Le hic c\'est que je n\'arrive pas à le faire fonctionner (à vrai dire je ne suis pas une bête en anglais ).
Donc voila si quelqu\'un pourrai m\'expliquer comment faire, merci...
Les explications en anglais sont au début du script.
- Spoiler:
- #===========================================
# ¦ DeadlyDan_MapFog by DeadlyDan
#--------------------------------------------
# Allows maps to have fogs like in RPG Maker XP
#============================================
#===============================================================
#
# rpgmakervx.1fr1.net
#
#===============================================================
# Usage:
=begin
To initialize a fog for a current map you must:
1) Create a map event and set it to only come on when Self Switch A is on.
2) Rename it to FOG. (Case sensitive, so it has to be FOG)
3) Set it to a Parallel Process.
4) Add for example, the following code into a Script Code event command:
$game_map.fog_name = \"fog\" # Filename of fog image located in the Pictures folder
$game_map.fog_zoom = 300 # How much to zoom into the fog image
$game_map.fog_sx = 1 # The scrolling speed across the x axis
$game_map.fog_sy = 1 # The scrolling speed across the y axis
$game_map.fog_target_opacity = 80 # The opacity of the fog
$game_map.fog_show # Always call this after changing fog variables
5) Then, add a Control Self Switch after that Script Code, and set it to turn A off.
(Note)
It is absolutely vital that you put the event name to FOG and set it to a Parallel Proccess and also set it to
only run when Self-Switch A is on.
Make sure you place this script after all other scripts except for Main.
(Extras)
You can also use extra commands to change the fog settings, such as the following example:
$game_map.fog_tone = Tone.new ( 100, 0, 0, 0 )
$game_map.fog_blend_type = 1 # ( 0 = NONE, 1 = ADD, 2 = SUBTRACT )
(Important!)
When you want to have a map with no fog, do all of the above but instead of seting the fog options and then
calling $game_map.fog_show, just add a Script Code event command and place in it $game_map.fog_clear.
This will clear the fog settings and the fog will dissapear, every map has to have a fog event in it, else maps
will keep all other maps fog settings that might be unintentional on the users side.
=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 == \"FOG\" )
@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
J\'espère que, si il marche, il vous sera utile à vous aussi. Pour moi c\'est important le brouillard dans une carte. A+
Petit EDIT :
Oups je viens de trouver mieux à l\'instant...
Dans les tutoriels débutant, le topic \" Effet de soleil \" de Jejemaker.
Finalement c\'est beaucoup plus simple que le script
désolé tout le monde...
- GummyStaffeux retraité
- Nombre de messages : 2666
Age : 33
Localisation : Belgique
Distinction : Modérateur imprévisible
Papy Lolo' [Nabots Nimousse]
Date d'inscription : 27/01/2008
Re: Brouillard pour RMVX
Sam 1 Mar 2008 - 17:14
#===========================================
# ¦ DeadlyDan_MapFog by DeadlyDan
#--------------------------------------------
# Allows maps to have fogs like in RPG Maker XP
#============================================
# Utilisation :
=begin
Pour configurer un brouillard sur votre map, vous devez :
1) Créer un event avec comme condition de démarrage si l'interrupteur local A est activé
2) Rennomez le "FOG" (Champ sensible, donc c'est obligatoire de noter FOG)
3) Application en Processus Parallèle
4) Ajouter, par exemple, le code suivant via la commande d'event "Insérer un Script" :
$game_map.fog_name = "fog" # Nom de l'image du brouillard situé dans le dossier Pictures
$game_map.fog_zoom = 300 # Zoom sur l'image
$game_map.fog_sx = 1 # Vitesse de défilement horizontal
$game_map.fog_sy = 1 # Vitesse de défilement vertical
$game_map.fog_target_opacity = 80 # Opacité du brouillard
$game_map.fog_show # Appelez toujours ce script après avoir modifié les paramètres du brouillard
5) Ensuite, modifiez l'interrupteur A et désactivez-le.
(Note)
C'est obligatoire de nommer l'event FOG et de le paramétrer en tant que Processus Parallèle et de le déclencher uniquement lorsque l'interrupteur local A est activé!
Assurez-vous de placer ce script juste au dessus de Main.
(Extras)
Vous pouvez aussi utiliser des commandes spéciales pour modifier les paramètres du brouillard, comme par exemple :
$game_map.fog_tone = Tone.new ( 100, 0, 0, 0 )
$game_map.fog_blend_type = 1 # ( 0 = NONE, 1 = ADD, 2 = SUBTRACT )
(Important!)
Quand vous voulez avoir une map sans brouillard, suivez les instructions mais à la place de paramétrer les options du brouillard et ensuite appeler $game_map.fog_show , insérez un script (via la commande event) indiquant $game_map.fog_clear.
Ceci fera disparaître le brouillard et effacera ses paramètres. Chaque map doit avoir son propre évènement paramétrant le brouillard, les autres maps garderont les paramètres du brouillard ce qui pourrait être inintentionnel voir gênant pour les utilisateurs et joueurs.
=end
- Alo-TesumMembre
- Nombre de messages : 7
Distinction : aucune
Date d'inscription : 26/02/2008
Re: Brouillard pour RMVX
Sam 1 Mar 2008 - 17:17
Merci Gamemaker !
Je vais quand même l'essayer !
Je vais quand même l'essayer !
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum