Script couches de brouillard multiple
Publié : ven. oct. 24, 2008 8:22 am
Comme vous l'avez remarqués RPGMaker VX n'a plus d'option Fog à la XP...
Le seul inconvénient est qu'un certain nombre de propriétés sont à configurer manuellement, ce qui rend ce script un peu plus difficile à utiliser.
Code à placer dans l'éditeur de script, rubrique Materials. Cliquez droit sur "Insert Here"' et choisissez "insérer"', puis collez le code à gauche.
Ce script à plusieurs fonctions :
- Affiche un ou plusieurs brouillards.
- Possibilité de changer le chemin du dossier dans lequel l'image est stockée (par defaut Graphics/Pictures )
- Réglage de l'opacité, de la tonnalité, de la couleur, de la vitesse et direction de defilement, du grossissement et de la saturation.
- utilisation de brouillard pré-configurés, simplifiant l'intégration à une map.
- 2 commandes d'événement, 'Changer la tonalité' , Changer l'opacité.
Pour ajouter un brouillard, vous avez 2 solutions :
- soit il faut définir le brouillard via un script.
- soit vous définissez un ou plusieurs brouillards via une préconfiguration.
La préconfiguration est à créer dans le script principal fourni plus haut, à partir de la ligne 134.
Dans les 2 cas, ne pas oublier d'ajouter la commande 'Effacer cet évènement' Pour éviter tout conflit et être sur que cet évenement ne se produira qu'une seule fois en entrant dans cette map.
Vous avez la possiblité d'activer automatiquement l'évenement ou de passer par une condition.
Le seul inconvénient est qu'un certain nombre de propriétés sont à configurer manuellement, ce qui rend ce script un peu plus difficile à utiliser.
Code à placer dans l'éditeur de script, rubrique Materials. Cliquez droit sur "Insert Here"' et choisissez "insérer"', puis collez le code à gauche.
Ce script à plusieurs fonctions :
- Affiche un ou plusieurs brouillards.
- Possibilité de changer le chemin du dossier dans lequel l'image est stockée (par defaut Graphics/Pictures )
- Réglage de l'opacité, de la tonnalité, de la couleur, de la vitesse et direction de defilement, du grossissement et de la saturation.
- utilisation de brouillard pré-configurés, simplifiant l'intégration à une map.
- 2 commandes d'événement, 'Changer la tonalité' , Changer l'opacité.
Code : Tout sélectionner
#================================================= ==============
# ● [VX] ◦ Multiple Fogs ◦ □
# * Nombre de Couches de brouillard illimité*
#------------------------------------------------- -------------
# ◦ par Woratana [woratana@hotmail.com]
# ◦ Thaiware RPG Maker Community
# ◦ Sorti le: 13/05/2008
# ◦ Version: 1.0
#------------------------------------------------- -------------
#================================================= =================
# ** Utilisation **
# * Utilisez la commande 'Appeler un script' dans un Evenement pour les lignes qui suivent~
#------------------------------------------------- ----------------
#
#------------------------------------------------- --------------
# ** DEFINIR LES PROPRIETES ET L'AFFICHAGE DU BROUILLARD **
# * Vous devez définir les propriétés du brouillard, avant de l'afficher ~
#------------------------------------------------- ------------
# * Vous avez 3 possiblités pour définir les propriétés du brouillard:
# >> Définir le brouillard [Custom]:
# $fog.name = 'image_name' # nom du fichier image, doit etre dans le dossier défini dans ce script (voir plus bas).
# $fog.hue = (entier) # Teinte du brouillard. 0 - 360, 0 innactif.
# $fog.tone = [rouge, vers, bleu, gris] # teinte du brouillard.
# $fog.opacity = (entier) # opacité du brouillard. 0 - 255, brouillard invisible à 0.
# $fog.blend = (0, 1, ou 2) # type de fondu du brouillard. 0. Normal, 1 ajouter, 2 soustraire.
# $fog.zoom = (entier) # dimension du brouillard (en %). 100 pour sa taille normale.
# $fog.sx = (+ ou - entier) # vitesse et direction du brouillard sur l'axe X.
# $fog.sy = (+ ou - entier) # vitesse et direction du brouillard sur l'axe Y.
#
# >> Définir le brouillard [avec des PréConfigurations]:
# (Vous pouvez utiliser des brouillards préconfigurés, voir plus bas)
# $fog.load_preset(preset_id)
#
# >> Définir le brouillard [depuis un autre brouillard visible]:
# $fog.load_fog(fog_id) # ID du brouillard à copier
#
#------------------------------------------------- -------------
# ** AFFICHER LE BROUILLARD **
#------------------------------------------------- ------------
# Apres avoir défini le brouillard, il faut l'afficher en appelant le script:
# $fog.show(fog_id)
#
# Dans le cas ou vous voudriez afficher un nouveau brouillard en remplacement d'un en cours d'utilisation, Appellez ce Script:
# $fog.show(old_fog_id, false)
#
# * fog_id: Numero identifiant lme brouillard.
# (Uniquement des chiffres positifs ou 0)
#
# Apres avoir affiché le brouillard, les propriétés que vous avez défini seront remplacées par celles par defaut.
# (Vous pouvez définir les propriétés par defautdans la partie Brouillard CONFIGURATION PAR DEFAUT plus bas)
#
#------------------------------------------------- -------------
# ** EFFACER UN BROUILLARD **
#------------------------------------------------- ------------
# Vous pouvez éffacer 1 ou plusieurs brouillards en une fois en appelant un script.
# $fog.delete(fog_id, fog_id, fog_id, ...)
#
#------------------------------------------------- --------------
# ** EVENEMENTS DE CONTROLE DU BROUILLARD **
#------------------------------------------------- ------------
# Changer la teinte:
# $game_map.fogtone(fog_id, [rouge, vert, bleu, gris], durée)
# ex. $game_map.fogtone(1, [100,200,-100,0], 10)
# Changer l'Opacité:
# $game_map.fogopac(fog_id, new_opacity, durée)
# ex. $game_map.fogopac(2, 200, 10)
#
#------------------------------------------------- --------------
# ** CONTROLES SUPPLEMENTAIRES **
#------------------------------------------------- ------------
# Changer le dossier des images par defaut:
# $game_map.fog_path = 'image_path'
# ex. $game_map.fog_path = 'Graphics/Pictures/'
# Fonction ON/OFF [Supprime automatiquement tous les brouillards lorsque le joueur est transféré]:
# $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 ** Propriétés
#------------------------------------------------- -------------
@fog_path = 'Graphics/Pictures/'
# Dossier par defaut contenant les images des brouillards
@fog_reset = true # (true or false)
# Supprime les brouillards lors du tranfert du joueur
#================================================= =================
@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
#================================================= =================
# ** MULTIPLE FOG SETUP ** PROPRIETES PAR DEFAUT
#------------------------------------------------- -------------
@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 ** PROPRIETE DES BROUILLARDS PRE-DEFINIS
#------------------------------------------------- -------------
when 1 # Preset ID 1
@name = '001-Fog01'
@hue = 0
@tone = [0,0,0,0]
@opacity = 255
@blend = 0
@zoom = 100
@sx = 0
@sy = 0
when 2 # Preset ID 2
@name = '001-Fog02'
@hue = 0
@tone = [0,0,0,0]
@opacity = 60
@blend = 1
@zoom = 100
@sx = -2
@sy = -2
when 3 # Preset ID 2
@name = '001-Cloud01'
@hue = 0
@tone = [0,0,0,0]
@opacity = 250
@blend = 0
@zoom = 100
@sx = -5
@sy = -3
#================================================= =================
end
end
#================================================= =================
# END ** MULTIPLE FOG SETUP **
# * Ne rien changer de ce qui suit à moins que vous ne sachiez ce que vous faites.
#================================================= =================
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
#------------------------------------------------- -------------------------
# * 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
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] == ''
# Manage fog scrolling
@mulfog_ox[i] -= @mulfog_sx[i] / 8.0
@mulfog_oy[i] -= @mulfog_sy[i] / 8.0
# Manage change in fog color tone
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
# Manage change in fog opacity level
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
#------------------------------------------------- -------------------------
# * 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[i] = tone.clone
@mulfog_tone_duration[i] = duration
if @mulfog_tone_duration[i] == 0
@mulfog_tone[i] = @mulfog_tone_target[i].clone
end
end
#------------------------------------------------- -------------------------
# * Start Changing Fog Opacity Level
#------------------------------------------------- -------------------------
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?
# If fog is different than current fog
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?
# Update fog plane
@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
#================================================= =================
# [END] VX Multiple Fog by Woratana [woratana@hotmail.com]
#================================================= =================
- soit il faut définir le brouillard via un script.
- soit vous définissez un ou plusieurs brouillards via une préconfiguration.
La préconfiguration est à créer dans le script principal fourni plus haut, à partir de la ligne 134.
Dans les 2 cas, ne pas oublier d'ajouter la commande 'Effacer cet évènement' Pour éviter tout conflit et être sur que cet évenement ne se produira qu'une seule fois en entrant dans cette map.
Vous avez la possiblité d'activer automatiquement l'évenement ou de passer par une condition.