Partagez
Aller en bas
avatar
Alo-Tesum
Membre

Nombre de messages : 7
Distinction : aucune
Date d'inscription : 26/02/2008

Brouillard pour RMVX

le 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 Laughing ).
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
#============================================

#===============================================================
#
# www.rpgmakervx-fr.com
#
#===============================================================


# 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+ Smile

Petit EDIT :
Oups je viens de trouver mieux à l\'instant... Rolling Eyes
Dans les tutoriels débutant, le topic \" Effet de soleil \" de Jejemaker.
Finalement c\'est beaucoup plus simple que le script rabbit
désolé tout le monde...


Dernière édition par Alo-Tesum le Sam 1 Mar 2008 - 17:15, édité 1 fois
avatar
Gummy
Staffeux retraité

Nombre de messages : 2666
Age : 27
Localisation : Belgique
Distinction : Modérateur imprévisible

Papy Lolo' [Nabots Nimousse]


Date d'inscription : 27/01/2008

Re: Brouillard pour RMVX

le 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
avatar
Alo-Tesum
Membre

Nombre de messages : 7
Distinction : aucune
Date d'inscription : 26/02/2008

Re: Brouillard pour RMVX

le Sam 1 Mar 2008 - 17:17
Merci Gamemaker !
Je vais quand même l'essayer ! Very Happy
Contenu sponsorisé

Re: Brouillard pour RMVX

Revenir en haut
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum