RPG Creator : créez votre MMORPG ou RPG sans aucune connaissance en programmation


Disponible le 4 Juin !




- Jouez à votre jeu sur tablettes tactiles, Smartphones et navigateurs Web
- Personnalisez vos menus
- Dessinez facilement et rapidement vos cartes
- Créez des actions pour le combat A-RPG


www.rpgcreator.net


Heures au format UTC + 1 heure [ Heure d’été ]


Règles du forum


Consultez la liste des Scripts : cliquez ici



Publier un nouveau sujet Répondre au sujet  [ 7 messages ] 
Auteur Message
 Sujet du message: Multi-panorama
MessagePublié: 03 Aoû 2010, 21:14 
Membre VIP
Membre VIP

Inscrit le: 04 Mai 2009, 00:00
Messages: 356
Points d'aide: 53/60

Créations :

Voir ses créations

Multi-panorama


Auteur : Lufia

Description :

Ce script permet de gérer plusieurs panoramas / fogs sur une carte, à la manière des pictures accessibles en évènements. Les images se répètent en boucle automatiquement.

Copiez-collez la version adéquate du script dans un nouveau script au-dessus de Main / dans la section Materials. Toutes les explications nécessaires à l'utilisation se trouvent en commentaire dans le script.

Version RMXP
Version RMVX


Dernière édition par Lufia le 03 Aoû 2010, 21:21, édité 1 fois au total.

Haut
 Profil  
 
 Sujet du message: Re: Multi-panorama
MessagePublié: 03 Aoû 2010, 21:16 
Membre VIP
Membre VIP

Inscrit le: 04 Mai 2009, 00:00
Messages: 356
Points d'aide: 53/60

Créations :

Voir ses créations

Version RMXP

Code: Tout sélectionner
#==============================================================================
# (RMXP)                        ~ Multi-panorama ~
#                                   de Lufia
#                                     v 1.0
#==============================================================================
# Ce script permet d'afficher plusieurs panoramas en même temps durant le jeu.
# Nombre maximum de panoramas :
MAX_PANORAMAS = 20
#
# Les panoramas / fogs doivent être pacés dans le dossier Fogs du jeu.
# Les commandes suivantes sont à utiliser dans une insertion de script.
#
# Afficher un panorama :
#    show_pano(id, name, z, opacity, blend_type, zoom_x, zoom_y,
#      autoscroll_x_speed, autoscroll_y_speed, move_x_speed, move_y_speed)
#        id : numéro du panorama (de 0 à MAX_PANORAMAS - 1)
#        name : nom du fchier dans Graphics/Parallaxes
#        z : coordonnée en z, si ce nombre est grand, le panorama apparaît
#            au-dessus d'autres éléments de la carte
#        opacity : opacité (de 0 à 255, nombre décimaux autorisés)
#        blend_type : type de transparence (0 : normale, 1 : addition, 2 : soustraction)
#        zoom_x : zoom en x (taille normale : 100.0)
#        zoom_y : zoom en y (taille normale : 100.0)
#        autoscroll_x_speed : vitesse de défilement horizontal
#        autoscroll_y_speed : vitesse de défilement vertical
#        move_x_speed : scrolling parallaxe en x (même vitesse que la carte : 2)
#        move_y_speed : scrolling parallaxe en y (même vitesse que la carte : 2)
#      ex : show_pano(0, "MonFog", 30, 160, 1, 54.3, 100, -10, 0, 2, 1)
#
# Modifier un panorama :
#    change_pano_properties(id, z, opacity, blend_type, zoom_x, zoom_y,
#      autoscroll_x_speed, autoscroll_y_speed, move_x_speed, move_y_speed,
#      duration, wait_for_end)
#        duration : temps de transition (en frames)
#        wait_for_end : attendre la fin de la transition ? (oui : true / non : false)
#      ex : change_pano_properties(0, 20, 255, 0, 100, 100, 0, 15, 2, 2, 20, true)
#
# Modifier le ton d'un panorama :
#    change_pano_tone(id, red, green, blue, gray, duration, wait_for_end)
#        red : ajustement du rouge (de -255 à 255)
#        green : ajustement du vert (de -255 à 255)
#        blue : ajustement du bleu (de -255 à 255)
#        gray : ajustement du gris (de -255 à 255)
#      ex : change_pano_tone(0, 100, -100, 0, 35, 15, false)
#
# Modifier la couleur d'un panorama :
#    change_pano_color(id, red, green, blue, alpha, duration, wait_for_end)
#       red : valeur du rouge (de 0 à 255)
#       green : valeur du vert (de 0 à 255)
#       blue : valeur du bleu (de 0 à 255)
#       alpha : alpha blending (de 0 à 255)
#      ex : change_pano_color(0, 255, 100, 0, 0, 0, false)
#
# Effacer un panorama :
#    hide_pano(args)
#       args : ids des panoramas
#      ex : hide_pano(1, 3, 12)
#
#==============================================================================
# Merci à Zeus81 pour ses précieux conseils.
# Enjoy !
#==============================================================================


#==============================================================================
# ** Game_Panorama
#------------------------------------------------------------------------------
#  This class handles panoramas. This class is used within the Game_Map class.
#==============================================================================
class Game_Panorama

  #--------------------------------------------------------------------------
  # * Public Instance Variables
  #--------------------------------------------------------------------------
  attr_reader   :id
  attr_accessor :name
  attr_accessor :z
  attr_accessor :opacity
  attr_accessor :blend_type
  attr_accessor :zoom_x
  attr_accessor :zoom_y
  attr_accessor :color
  attr_accessor :tone
  attr_accessor :autoscroll_x_speed
  attr_accessor :autoscroll_y_speed
  attr_accessor :move_x_speed
  attr_accessor :move_y_speed
 
  #--------------------------------------------------------------------------
  # * Object initialization
  #      id : panorama number
  #--------------------------------------------------------------------------
  def initialize(id)
    @id = id
    @name = ""
    @z = 0
    @opacity = 255.0
    @target_opacity = 255.0
    @blend_type = 0
    @zoom_x = 100.0
    @target_zoom_x = 100.0
    @zoom_y = 100.0
    @target_zoom_y = 100.0
    @color = Color.new(0, 0, 0, 0)
    @target_color = Color.new(0, 0, 0, 0)
    @tone = Tone.new(0, 0, 0, 0)
    @target_tone = Tone.new(0, 0, 0, 0)
    @autoscroll_x_speed = 0
    @autoscroll_y_speed = 0
    @move_x_speed = 0.0
    @move_y_speed = 0.0
    @duration = 0
    @tone_duration = 0
    @color_duration = 0
  end
 
  #--------------------------------------------------------------------------
  # * Show panorama
  #      name : filename
  #      z : z coordinate
  #      opacity : sprite opacity
  #      blend_type : blend type
  #      zoom_x : x axis zoom
  #      zoom_y : y axis zoom
  #      autoscroll_x_speed : x axis autoscroll speed
  #      autoscroll_y_speed : y axis autoscroll speed
  #      move_x_speed : x axis scroll speed
  #      move_y_speed : y axis scroll speed
  #--------------------------------------------------------------------------
  def show(name, z, opacity, blend_type, zoom_x, zoom_y, autoscroll_x_speed,
    autoscroll_y_speed, move_x_speed, move_y_speed)
    @name = name
    @z = z
    @opacity = opacity.to_f
    @target_opacity = opacity
    @blend_type = blend_type
    @zoom_x = zoom_x.to_f
    @target_zoom_x = @zoom_x
    @zoom_y = zoom_y.to_f
    @target_zoom_y = @zoom_y
    @color = Color.new(0, 0, 0, 0)
    @target_color = @color.clone
    @tone = Tone.new(0, 0, 0, 0)
    @target_tone = @tone.clone
    @autoscroll_x_speed = autoscroll_x_speed
    @autoscroll_y_speed = autoscroll_y_speed
    @move_x_speed = move_x_speed.to_f
    @move_y_speed = move_y_speed.to_f
  end
 
  #--------------------------------------------------------------------------
  # * Erase panorama
  #--------------------------------------------------------------------------
  def hide
    @name = ""
  end
 
  #--------------------------------------------------------------------------
  # * Change panorama properties
  #      z : z coordinate
  #      zoom_x : x axis zoom
  #      zoom_y : y axis zoom
  #      blend_type : blend type
  #      opacity : sprite opacity
  #      duration : transition time
  #--------------------------------------------------------------------------
  def change_opacity(z, zoom_x, zoom_y, opacity, blend_type, autoscroll_x_speed,
    autoscroll_y_speed, move_x_speed, move_y_speed, duration)
    @z = z
    @blend_type = blend_type
    @autoscroll_x_speed = autoscroll_x_speed
    @autoscroll_y_speed = autoscroll_y_speed
    @move_x_speed = move_x_speed.to_f
    @move_y_speed = move_y_speed.to_f
    @target_zoom_x = zoom_x.to_f
    @target_zoom_y = zoom_y.to_f
    @target_opacity = opacity.to_f
    @duration = duration
    if duration == 0
      @zoom_x = @target_zoom_x
      @zoom_y = @target_zoom_y
      @opacity = @target_opacity
    end
  end
 
  #--------------------------------------------------------------------------
  # * Change panorama tone
  #      tone : new tone (Tone object)
  #      duration : transition time
  #--------------------------------------------------------------------------
  def change_tone(tone, duration)
    @target_tone = tone.clone
    @tone_duration = duration
    if duration == 0
      @tone = @target_tone.clone
    end
  end
 
  #--------------------------------------------------------------------------
  # * Change panorama color
  #      color : new color (Color object)
  #      duration : transition time
  #--------------------------------------------------------------------------
  def change_color(color, duration)
    @target_color = color.clone
    @color_duration = duration
    if duration == 0
      @color = @target_color.clone
    end
  end
 
  #--------------------------------------------------------------------------
  # * Frame update
  #--------------------------------------------------------------------------
  def update
    if @duration > 0
      d = @duration
      @zoom_x = (@zoom_x * (d-1) + @target_zoom_x) / d
      @zoom_y = (@zoom_y * (d-1) + @target_zoom_y) / d
      @opacity = (@opacity * (d-1) + @target_opacity) / d
      @duration -= 1
    end
    if @tone_duration > 0
      d = @tone_duration
      @tone.red = (@tone.red * (d-1) + @target_tone.red) / d
      @tone.green = (@tone.green * (d-1) + @target_tone.green) / d
      @tone.blue = (@tone.blue * (d-1) + @target_tone.blue) / d
      @tone.gray = (@tone.gray * (d-1) + @target_tone.gray) / d
      @tone_duration -= 1
    end
    if @color_duration > 0
      d = @color_duration
      @color.red = (@color.red * (d-1) + @target_color.red) / d
      @color.green = (@color.green * (d-1) + @target_color.green) / d
      @color.blue = (@color.blue * (d-1) + @target_color.blue) / d
      @color.alpha = (@color.alpha * (d-1) + @target_color.alpha) / d
      @color_duration -= 1
    end
  end
 
end

#==============================================================================
# ** Game_Map
#------------------------------------------------------------------------------
#  This class handles maps. It includes scrolling and passage determination
#  functions. The instance of this class is referenced by $game_map.
#==============================================================================
class Game_Map

  #--------------------------------------------------------------------------
  # * Public Instance Variables
  #--------------------------------------------------------------------------
  attr_accessor :panoramas
 
  #--------------------------------------------------------------------------
  # * Object initialization
  #--------------------------------------------------------------------------
  alias lufia_multipano_initialize initialize
  def initialize
    @panoramas = []
    for i in 0...MAX_PANORAMAS
      @panoramas.push(Game_Panorama.new(i))
    end
    lufia_multipano_initialize
  end
 
  #--------------------------------------------------------------------------
  # * Frame Update
  #--------------------------------------------------------------------------
  alias lufia_multipano_update update
  def update
    @panoramas.each { |i| i.update }
    lufia_multipano_update
  end
 
end

#==============================================================================
# ** Sprite_Panorama
#------------------------------------------------------------------------------
#  This plane is used to display panoramas. It observes a instance of the
# Game_Panorama class and automatically changes plane properties.
#==============================================================================
class Sprite_Panorama < Plane
 
  #--------------------------------------------------------------------------
  # * Object initialization
  #      pano : panorama (Game_Panorama)
  #--------------------------------------------------------------------------
  def initialize(pano)
    super()
    @pano = pano
    @name = ""
    update
  end
 
  #--------------------------------------------------------------------------
  # * Frame update
  #--------------------------------------------------------------------------
def update
    if @pano.name != @name
      @name = @pano.name
      if @name.empty?
        self.bitmap = nil
        self.visible = false
      else
        self.bitmap = RPG::Cache.fog(@name, 0)
        @width_x_8, @height_x_8 = self.bitmap.width * 8, self.bitmap.height * 8
        @scroll_x = @scroll_y = 0
        self.visible = true
      end
    end
    unless @name.empty?
      self.z = @pano.z
      self.opacity = @pano.opacity
      self.blend_type = @pano.blend_type
      self.zoom_x = @pano.zoom_x / 100.0
      self.zoom_y = @pano.zoom_y / 100.0
      self.color = @pano.color
      self.tone = @pano.tone
      @scroll_x = (@scroll_x + @pano.autoscroll_x_speed) % @width_x_8
      @scroll_y = (@scroll_y + @pano.autoscroll_y_speed) % @height_x_8
      self.ox = (@scroll_x + $game_map.display_x * @pano.move_x_speed) / 8
      self.oy = (@scroll_y + $game_map.display_y * @pano.move_y_speed) / 8
    end
  end
   
end

#==============================================================================
# ** Spriteset_Map
#------------------------------------------------------------------------------
#  This class brings together map screen sprites, tilemaps, etc. It's used
# within the Scene_Map class.
#==============================================================================
class Spriteset_Map
 
  #--------------------------------------------------------------------------
  # * Create parallax
  #--------------------------------------------------------------------------
  alias lufia_multipano_initialize initialize
  def initialize
    @sprites_panoramas = []
    for i in 0...MAX_PANORAMAS
      @sprites_panoramas.push(Sprite_Panorama.new($game_map.panoramas[i]))
    end
    lufia_multipano_initialize
  end
 
  #--------------------------------------------------------------------------
  # * Dispose parallax
  #--------------------------------------------------------------------------
  alias lufia_multipano_dispose dispose
  def dispose
    lufia_multipano_dispose
    @sprites_panoramas.each { |i| i.dispose if i != nil }
  end

  #--------------------------------------------------------------------------
  # * Update parallax
  #--------------------------------------------------------------------------
  alias lufia_multipano_update update
  def update
    for pano in @sprites_panoramas
      pano.update
    end
    lufia_multipano_update
  end

end

#==============================================================================
# ** Interpreter
#------------------------------------------------------------------------------
#  An interpreter for executing event commands. This class is used within the
# Game_Map, Game_Troop, and Game_Event classes.
#==============================================================================
class Interpreter
 
  #--------------------------------------------------------------------------
  # * Show panorama
  #      id : panorama number
  #      name : filemane
  #      z : z coordinate
  #      opacity : sprite opacity
  #      blend_type : blend type
  #      zoom_x : x axis zoom
  #      zoom_y : y axis zoom
  #      autoscroll_x_speed : x axis autoscroll speed
  #      autoscroll_y_speed : y axis autoscroll speed
  #      move_x_speed : x axis scroll speed
  #      move_y_speed : y axis scroll speed
  #--------------------------------------------------------------------------
  def show_pano(id, name, z, opacity, blend_type, zoom_x, zoom_y,
    autoscroll_x_speed, autoscroll_y_speed, move_x_speed, move_y_speed)
    $game_map.panoramas[id].show(name, z, opacity, blend_type, zoom_x, zoom_y,
      autoscroll_x_speed, autoscroll_y_speed, move_x_speed, move_y_speed)
    return true
  end
 
  #--------------------------------------------------------------------------
  # * Erase panorama
  #      args : panorama numbers
  #--------------------------------------------------------------------------
  def hide_pano(*args)
    args.each { |id| $game_map.panoramas[id].hide }
    return true
  end
 
  #--------------------------------------------------------------------------
  # * Change panorama properties
  #      id : panorama number
  #      z : z coordinate
  #      zoom_x : x axis zoom
  #      zoom_y : y axis zoom
  #      opacity : sprite opacity
  #      blend_type : blend type
  #      autoscroll_x_speed : x axis autoscroll speed
  #      autoscroll_y_speed : y axis autoscroll speed
  #      move_x_speed : x axis scroll speed
  #      move_y_speed : y axis scroll speed
  #      duration : transition time
  #      wait_for_end : wait for end of transition?
  #--------------------------------------------------------------------------
  def change_pano_properties(id, z, opacity, blend_type, zoom_x, zoom_y, 
    autoscroll_x_speed, autoscroll_y_speed, move_x_speed, move_y_speed, duration, wait_for_end)
    $game_map.panoramas[id].change_opacity(z, zoom_x, zoom_y, opacity, blend_type,
      autoscroll_x_speed, autoscroll_y_speed, move_x_speed, move_y_speed, duration)
    @wait_count = duration if wait_for_end
    return true
  end
 
  #--------------------------------------------------------------------------
  # * Change panorama tone
  #      id : panorama number
  #      red : red value (-255 - 255)
  #      green : green value (-255 - 255)
  #      blue : blue value (-255 - 255)
  #      gray : grayscale value (-255 - 255)
  #      duration : transition time
  #      wait_for_end : wait for end of transition?
  #--------------------------------------------------------------------------
  def change_pano_tone(id, red, green, blue, gray, duration, wait_for_end)
    $game_map.panoramas[id].change_tone(Tone.new(red, green, blue, gray), duration)
    @wait_count = duration if wait_for_end
    return true
  end
 
  #--------------------------------------------------------------------------
  # * Change panorama color
  #      id : panorama number
  #      red : red value (0 - 255)
  #      green : green value (0 - 255)
  #      blue : blue value (0 - 255)
  #      alpha : alpha blending (0 - 255)
  #      duration : transition time
  #      wait_for_end : wait for end of transition?
  #--------------------------------------------------------------------------
  def change_pano_color(id, red, green, blue, alpha, duration, wait_for_end)
    $game_map.panoramas[id].change_color(Color.new(red, green, blue, alpha), duration)
    @wait_count = duration if wait_for_end
    return true
  end
 
end


Dernière édition par Lufia le 03 Aoû 2010, 21:20, édité 1 fois au total.

Haut
 Profil  
 
 Sujet du message: Re: Multi-panorama
MessagePublié: 03 Aoû 2010, 21:17 
Membre VIP
Membre VIP

Inscrit le: 04 Mai 2009, 00:00
Messages: 356
Points d'aide: 53/60

Créations :

Voir ses créations

Version RMVX

Code: Tout sélectionner
#==============================================================================
#  (RMVX)                                                     ~ Multi-panorama ~
#                                                                             de Lufia
#                                                                               v 1.0
#==============================================================================
# Ce script permet d'afficher plusieurs panoramas / fogs en même temps durant le jeu.
# Nombre maximum de panoramas :
MAX_PANORAMAS = 20
#
# Les images doivent être dans le dossier Graphics/Parallaxes.
# Les commandes suivantes sont à utiliser en insertion de script.
#
# Afficher un panorama :
#    show_pano(id, name, z, opacity, blend_type, zoom_x, zoom_y, autoscroll_x_speed,
#      autoscroll_y_speed, move_x_speed, move_y_speed)
#        id : numéro du panorama (de 0 à MAX_PANORAMAS - 1)
#        name : nom du fchier dans Graphics/Parallaxes
#        z : coordonnée en z, si ce nombre est grand, le panorama apparaît au-dessus d'autres
#             éléments de la carte
#        opacity : opacité (de 0 à 255, nombre décimaux autorisés)
#        blend_type : type de transparence (0 : normale, 1 : addition, 2 : soustraction)
#        zoom_x : zoom en x (taille normale : 100.0)
#        zoom_y : zoom en y (taille normale : 100.0)
#        autoscroll_x_speed : vitesse de défilement horizontal
#        autoscroll_y_speed : vitesse de défilement vertical
#        move_x_speed : scrolling parallaxe en x (même vitesse que la carte : 2)
#        move_y_speed : scrolling parallaxe en y (même vitesse que la carte : 2)
#      ex : show_pano(0, "MonPano", -1, 160, 1, 54.3, 100, -10, 0, 2, 1)
#
# Modifier un panorama :
#    change_pano_properties(id, z, opacity, blend_type, zoom_x, zoom_y, autoscroll_x_speed,
#      autoscroll_y_speed, move_x_speed, move_y_speed, duration, wait_for_end)
#        duration : temps de transition (en frames)
#        wait_for_end : attendre la fin de la transition ? (oui : true / non : false)
#      ex : change_pano_properties(0, 20, 255, 0, 100, 100, 0, 15, 2, 2, 20, true)
#
# Modifier le ton d'un panorama :
#    change_pano_tone(id, red, green, blue, gray, duration, wait_for_end)
#        red : ajustement du rouge (de -255 à 255)
#        green : ajustement du vert (de -255 à 255)
#        blue : ajustement du bleu (de -255 à 255)
#        gray : ajustement du gris (de -255 à 255)
#      ex : change_pano_tone(0, 100, -100, 0, 35, 15, false)
#
# Modifier la couleur d'un panorama :
#    change_pano_color(id, red, green, blue, alpha, duration, wait_for_end)
#       red : valeur du rouge (de 0 à 255)
#       green : valeur du vert (de 0 à 255)
#       blue : valeur du bleu (de 0 à 255)
#       alpha : alpha blending (de 0 à 255)
#      ex : change_pano_color(0, 255, 100, 0, 0, 0, false)
#
# Effacer un panorama :
#    hide_pano(args)
#       args : ids des panoramas
#      ex : hide_pano(1, 3, 12)
#
#==============================================================================
# Merci à Zeus81 pour ses précieux conseils.
# Enjoy !
#==============================================================================


#==============================================================================
# ** Game_Panorama
#------------------------------------------------------------------------------
#  This class handles panoramas. This class is used within the Game_Map class.
#==============================================================================
class Game_Panorama

  #--------------------------------------------------------------------------
  # * Public Instance Variables
  #--------------------------------------------------------------------------
  attr_reader      :id
  attr_accessor :name
  attr_accessor :z
  attr_accessor :opacity
  attr_accessor :blend_type
  attr_accessor :zoom_x
  attr_accessor :zoom_y
  attr_accessor :color
  attr_accessor :tone
  attr_accessor :autoscroll_x_speed
  attr_accessor :autoscroll_y_speed
  attr_accessor :move_x_speed
  attr_accessor :move_y_speed
 
  #--------------------------------------------------------------------------
  # * Object initialization
  #      id : panorama number
  #--------------------------------------------------------------------------
  def initialize(id)
    @id = id
    @name = ""
    @z = 0
    @opacity = 255.0
    @target_opacity = 255.0
    @blend_type = 0
    @zoom_x = 100.0
    @target_zoom_x = 100.0
    @zoom_y = 100.0
    @target_zoom_y = 100.0
    @color = Color.new(0, 0, 0, 0)
    @target_color = Color.new(0, 0, 0, 0)
    @tone = Tone.new(0, 0, 0, 0)
    @target_tone = Tone.new(0, 0, 0, 0)
    @autoscroll_x_speed = 0
    @autoscroll_y_speed = 0
    @move_x_speed = 0.0
    @move_y_speed = 0.0
    @duration = 0
    @tone_duration = 0
    @color_duration = 0
  end
 
  #--------------------------------------------------------------------------
  # * Show panorama
  #      name : filename
  #      z : z coordinate
  #      opacity : sprite opacity
  #      blend_type : blend type
  #      zoom_x : x axis zoom
  #      zoom_y : y axis zoom
  #      autoscroll_x_speed : x axis autoscroll speed
  #      autoscroll_y_speed : y axis autoscroll speed
  #      move_x_speed : x axis scroll speed
  #      move_y_speed : y axis scroll speed
  #--------------------------------------------------------------------------
  def show(name, z, opacity, blend_type, zoom_x, zoom_y, autoscroll_x_speed,
    autoscroll_y_speed, move_x_speed, move_y_speed)
    @name = name
    @z = z
    @opacity = opacity.to_f
    @target_opacity = opacity
    @blend_type = blend_type
    @zoom_x = zoom_x.to_f
    @target_zoom_x = @zoom_x
    @zoom_y = zoom_y.to_f
    @target_zoom_y = @zoom_y
    @color = Color.new(0, 0, 0, 0)
    @target_color = @color.clone
    @tone = Tone.new(0, 0, 0, 0)
    @target_tone = @tone.clone
    @autoscroll_x_speed = autoscroll_x_speed
    @autoscroll_y_speed = autoscroll_y_speed
    @move_x_speed = move_x_speed.to_f
    @move_y_speed = move_y_speed.to_f
  end
 
  #--------------------------------------------------------------------------
  # * Erase panorama
  #--------------------------------------------------------------------------
  def hide
    @name = ""
  end
 
  #--------------------------------------------------------------------------
  # * Change panorama properties
  #      z : z coordinate
  #      zoom_x : x axis zoom
  #      zoom_y : y axis zoom
  #      blend_type : blend type
  #      opacity : sprite opacity
  #      duration : transition time
  #--------------------------------------------------------------------------
  def change_opacity(z, zoom_x, zoom_y, opacity, blend_type, autoscroll_x_speed,
    autoscroll_y_speed, move_x_speed, move_y_speed, duration)
    @z = z
    @blend_type = blend_type
    @autoscroll_x_speed = autoscroll_x_speed
    @autoscroll_y_speed = autoscroll_y_speed
    @move_x_speed = move_x_speed.to_f
    @move_y_speed = move_y_speed.to_f
    @target_zoom_x = zoom_x.to_f
    @target_zoom_y = zoom_y.to_f
    @target_opacity = opacity.to_f
    @duration = duration
    if duration == 0
      @zoom_x = @target_zoom_x
      @zoom_y = @target_zoom_y
      @opacity = @target_opacity
    end
  end
 
  #--------------------------------------------------------------------------
  # * Change panorama tone
  #      tone : new tone (Tone object)
  #      duration : transition time
  #--------------------------------------------------------------------------
  def change_tone(tone, duration)
    @target_tone = tone.clone
    @tone_duration = duration
    if duration == 0
      @tone = @target_tone.clone
    end
  end
 
  #--------------------------------------------------------------------------
  # * Change panorama color
  #      color : new color (Color object)
  #      duration : transition time
  #--------------------------------------------------------------------------
  def change_color(color, duration)
    @target_color = color.clone
    @color_duration = duration
    if duration == 0
      @color = @target_color.clone
    end
  end
 
  #--------------------------------------------------------------------------
  # * Frame update
  #--------------------------------------------------------------------------
  def update
    if @duration > 0
      d = @duration
      @zoom_x = (@zoom_x * (d-1) + @target_zoom_x) / d
      @zoom_y = (@zoom_y * (d-1) + @target_zoom_y) / d
      @opacity = (@opacity * (d-1) + @target_opacity) / d
      @duration -= 1
    end
    if @tone_duration > 0
      d = @tone_duration
      @tone.red = (@tone.red * (d-1) + @target_tone.red) / d
      @tone.green = (@tone.green * (d-1) + @target_tone.green) / d
      @tone.blue = (@tone.blue * (d-1) + @target_tone.blue) / d
      @tone.gray = (@tone.gray * (d-1) + @target_tone.gray) / d
      @tone_duration -= 1
    end
    if @color_duration > 0
      d = @color_duration
      @color.red = (@color.red * (d-1) + @target_color.red) / d
      @color.green = (@color.green * (d-1) + @target_color.green) / d
      @color.blue = (@color.blue * (d-1) + @target_color.blue) / d
      @color.alpha = (@color.alpha * (d-1) + @target_color.alpha) / d
      @color_duration -= 1
    end
  end
 
end

#==============================================================================
# ** Game_Map
#------------------------------------------------------------------------------
#  This class handles maps. It includes scrolling and passage determination
#  functions. The instance of this class is referenced by $game_map.
#==============================================================================
class Game_Map

  #--------------------------------------------------------------------------
  # * Public Instance Variables
  #--------------------------------------------------------------------------
  attr_accessor :panoramas
 
  #--------------------------------------------------------------------------
  # * Object initialization
  #--------------------------------------------------------------------------
  alias lufia_multipano_initialize initialize
  def initialize
    @panoramas = []
    for i in 0...MAX_PANORAMAS
      @panoramas.push(Game_Panorama.new(i))
    end
    lufia_multipano_initialize
  end
 
  #--------------------------------------------------------------------------
  # * Frame Update
  #--------------------------------------------------------------------------
  alias lufia_multipano_update update
  def update
    @panoramas.each { |i| i.update }
    lufia_multipano_update
  end
 
end

#==============================================================================
# ** Sprite_Panorama
#------------------------------------------------------------------------------
#  This plane is used to display panoramas. It observes a instance of the
# Game_Panorama class and automatically changes plane properties.
#==============================================================================
class Sprite_Panorama < Plane
 
  #--------------------------------------------------------------------------
  # * Object initialization
  #      pano : panorama (Game_Panorama)
  #--------------------------------------------------------------------------
  def initialize(pano)
    super()
    @pano = pano
    @name = ""
    update
  end
 
  #--------------------------------------------------------------------------
  # * Frame update
  #--------------------------------------------------------------------------
def update
    if @pano.name != @name
      @name = @pano.name
      if @name.empty?
        self.bitmap = nil
        self.visible = false
      else
        self.bitmap = Cache.parallax(@name)
        @width_x_8, @height_x_8 = self.bitmap.width * 8, self.bitmap.height * 8
        @scroll_x = @scroll_y = 0
        self.visible = true
      end
    end
    unless @name.empty?
      self.z = @pano.z
      self.opacity = @pano.opacity
      self.blend_type = @pano.blend_type
      self.zoom_x = @pano.zoom_x / 100.0
      self.zoom_y = @pano.zoom_y / 100.0
      self.color = @pano.color
      self.tone = @pano.tone
      @scroll_x = (@scroll_x + @pano.autoscroll_x_speed) % @width_x_8
      @scroll_y = (@scroll_y + @pano.autoscroll_y_speed) % @height_x_8
      self.ox = (@scroll_x + $game_map.display_x * @pano.move_x_speed) / 8
      self.oy = (@scroll_y + $game_map.display_y * @pano.move_y_speed)  / 8
    end
  end
   
end

#==============================================================================
# ** Spriteset_Map
#------------------------------------------------------------------------------
#  This class brings together map screen sprites, tilemaps, etc. It's used
# within the Scene_Map class.
#==============================================================================
class Spriteset_Map
 
  #--------------------------------------------------------------------------
  # * Create parallax
  #--------------------------------------------------------------------------
  alias lufia_multipano_create_parallax create_parallax
  def create_parallax
    @sprites_panoramas = []
    for i in 0...MAX_PANORAMAS
      @sprites_panoramas.push(Sprite_Panorama.new($game_map.panoramas[i]))
    end
    lufia_multipano_create_parallax
  end
 
  #--------------------------------------------------------------------------
  # * Dispose parallax
  #--------------------------------------------------------------------------
  alias lufia_multipano_dispose_parallax dispose_parallax
  def dispose_parallax
    lufia_multipano_dispose_parallax
    @sprites_panoramas.each { |i| i.dispose if i != nil }
  end

  #--------------------------------------------------------------------------
  # * Update parallax
  #--------------------------------------------------------------------------
  alias lufia_multipano_update_parallax update_parallax
  def update_parallax
    lufia_multipano_update_parallax
    for pano in @sprites_panoramas
      pano.update
    end
  end

end

#==============================================================================
# ** Game_Interpreter
#------------------------------------------------------------------------------
#  An interpreter for executing event commands. This class is used within the
# Game_Map, Game_Troop, and Game_Event classes.
#==============================================================================
class Game_Interpreter
 
  #--------------------------------------------------------------------------
  # * Show panorama
  #      id : panorama number
  #      name : filemane
  #      z : z coordinate
  #      opacity : sprite opacity
  #      blend_type : blend type
  #      zoom_x : x axis zoom
  #      zoom_y : y axis zoom
  #      autoscroll_x_speed : x axis autoscroll speed
  #      autoscroll_y_speed : y axis autoscroll speed
  #      move_x_speed : x axis scroll speed
  #      move_y_speed : y axis scroll speed
  #--------------------------------------------------------------------------
  def show_pano(id, name, z, opacity, blend_type, zoom_x, zoom_y, autoscroll_x_speed,
    autoscroll_y_speed, move_x_speed, move_y_speed)
    $game_map.panoramas[id].show(name, z, opacity, blend_type, zoom_x, zoom_y, autoscroll_x_speed,
      autoscroll_y_speed, move_x_speed, move_y_speed)
    return true
  end
 
  #--------------------------------------------------------------------------
  # * Erase panorama
  #      args : panorama numbers
  #--------------------------------------------------------------------------
  def hide_pano(*args)
    args.each { |id| $game_map.panoramas[id].hide }
    return true
  end
 
  #--------------------------------------------------------------------------
  # * Change panorama properties
  #      id : panorama number
  #      z : z coordinate
  #      zoom_x : x axis zoom
  #      zoom_y : y axis zoom
  #      opacity : sprite opacity
  #      blend_type : blend type
  #      autoscroll_x_speed : x axis autoscroll speed
  #      autoscroll_y_speed : y axis autoscroll speed
  #      move_x_speed : x axis scroll speed
  #      move_y_speed : y axis scroll speed
  #      duration : transition time
  #      wait_for_end : wait for end of transition?
  #--------------------------------------------------------------------------
  def change_pano_properties(id, z, opacity, blend_type, zoom_x, zoom_y,  autoscroll_x_speed,
    autoscroll_y_speed, move_x_speed, move_y_speed, duration, wait_for_end)
    $game_map.panoramas[id].change_opacity(z, zoom_x, zoom_y, opacity, blend_type, autoscroll_x_speed,
      autoscroll_y_speed, move_x_speed, move_y_speed, duration)
    @wait_count = duration if wait_for_end
    return true
  end
 
  #--------------------------------------------------------------------------
  # * Change panorama tone
  #      id : panorama number
  #      red : red value (-255 - 255)
  #      green : green value (-255 - 255)
  #      blue : blue value (-255 - 255)
  #      gray : grayscale value (-255 - 255)
  #      duration : transition time
  #      wait_for_end : wait for end of transition?
  #--------------------------------------------------------------------------
  def change_pano_tone(id, red, green, blue, gray, duration, wait_for_end)
    $game_map.panoramas[id].change_tone(Tone.new(red, green, blue, gray), duration)
    @wait_count = duration if wait_for_end
    return true
  end
 
  #--------------------------------------------------------------------------
  # * Change panorama color
  #      id : panorama number
  #      red : red value (0 - 255)
  #      green : green value (0 - 255)
  #      blue : blue value (0 - 255)
  #      alpha : alpha blending (0 - 255)
  #      duration : transition time
  #      wait_for_end : wait for end of transition?
  #--------------------------------------------------------------------------
  def change_pano_color(id, red, green, blue, alpha, duration, wait_for_end)
    $game_map.panoramas[id].change_color(Color.new(red, green, blue, alpha), duration)
    @wait_count = duration if wait_for_end
    return true
  end
 
end


Haut
 Profil  
 
 Sujet du message: Re: Multi-panorama
MessagePublié: 04 Aoû 2010, 01:41 
Villageois (Nv 2)
Avatar de l’utilisateur

Inscrit le: 20 Juin 2010, 03:30
Messages: 22
Sexe: Masculin
Points d'aide: 0/60

Créations :

Voir ses créations

Si je comprend bien ça sert à faire un panorama devant l'écran pas derrière l'écran comme le panorama par défaut, il exploite donc les fogs qui se fait devant l'écran pour faire même chose avec des images normaux (non les images de brouillard)
Alors ça peut être ce que celui qui veut faire une map de son panorama par défaut et les décors par les autre panorama cherche ...
Dit moi est ce que j'ai tord un peu dans ce que j'ai compris ou non ?
Merci ;)

_________________
Voir RICSRB ...


Haut
 Profil  
 
 Sujet du message: Re: Multi-panorama
MessagePublié: 04 Aoû 2010, 13:09 
Membre VIP
Membre VIP

Inscrit le: 04 Mai 2009, 00:00
Messages: 356
Points d'aide: 53/60

Créations :

Voir ses créations

Les fogs et les panoramas, c'est pareil. Les panos que tu peux gérer dans ce script, tu les mets où tu veux par rapport à la carte, devant, derrière, en travers... Et il faut utiliser des images qui bouclent (comme les panos / fogs de base), sinon on voit le raccord.


Haut
 Profil  
 
 Sujet du message: Re: Multi-panorama
MessagePublié: 04 Aoû 2010, 14:05 
Villageois (Nv 2)
Avatar de l’utilisateur

Inscrit le: 20 Juin 2010, 03:30
Messages: 22
Sexe: Masculin
Points d'aide: 0/60

Créations :

Voir ses créations

Dans les commentaire t'as écrit :
Citer:
nom du fchier dans Graphics/Parallaxes

Parallaxes ? Qu'est ce que c'est ? :shock:

Autre chose :
Citer:
z : coordonnée en z, si ce nombre est grand, le panorama apparaît au-dessus d'autres
# éléments de la carte


Ce commentaire répond aussi à ma question précédente, n'est ce pas ?
Merci

Edit: Si c'est le cas peut-tu me préciser je t'en prie des valeurs de z qui peuvent servir exactement à ce que je veux : une pour que le pano soit totalement en dessus de tout et une pour l'inverse ... Mais est ce que par ailleur si je met pour un pano ce z=3 et un autre z=4, ce dernier sera en dessus du premmier (z=4 en dessus de z=3) ?
Merci pour tout

_________________
Voir RICSRB ...


Haut
 Profil  
 
 Sujet du message: Re: Multi-panorama
MessagePublié: 04 Aoû 2010, 22:16 
Membre VIP
Membre VIP

Inscrit le: 04 Mai 2009, 00:00
Messages: 356
Points d'aide: 53/60

Créations :

Voir ses créations

Citer:
Parallaxes ? Qu'est ce que c'est ?

Les panos sous VX.

Citer:
Si c'est le cas peut-tu me préciser je t'en prie des valeurs de z qui peuvent servir exactement à ce que je veux : une pour que le pano soit totalement en dessus de tout et une pour l'inverse ... Mais est ce que par ailleur si je met pour un pano ce z=3 et un autre z=4, ce dernier sera en dessus du premmier (z=4 en dessus de z=3) ?

J'ai plus vraiment les chiffres en tête. Un nombre négatif, ce sera sous la carte. Avec un nombre positif suffisamment grand (100 ? 200 ?) tu passeras au-dessus des pictures. Et oui, un pano avec un z=3 est en-dessous d'un pano avec z=4, c'est ça le principe.


Haut
 Profil  
 
Afficher les messages depuis:  Trier par  
Publier un nouveau sujet Répondre au sujet  [ 7 messages ] 

Heures au format UTC + 1 heure [ Heure d’été ]


Qui est en ligne ?

Utilisateurs parcourant actuellement ce forum : Aucun utilisateur inscrit et 2 invités


Vous ne pouvez pas publier de nouveaux sujets dans ce forum
Vous ne pouvez pas répondre aux sujets dans ce forum
Vous ne pouvez pas éditer vos messages dans ce forum
Vous ne pouvez pas supprimer vos messages dans ce forum
Vous ne pouvez pas insérer de pièces jointes dans ce forum

Rechercher pour:
Sauter vers:  
cron
RPG Creative Forum version 5 ; Tous droits réservés
phpBB Group (Traduit par Xaphos)
Optimisé pour une résolution 1024*728