Partagez
Aller en bas
avatar
Arx
Membre

Nombre de messages : 217
Age : 19
Localisation : Isère
Distinction : aucune
Date d'inscription : 19/01/2012

MOG Scene Credits

le Mer 25 Juin 2014 - 15:14
Bonjour !
Je vais partager aujourd'hui un super script de Moghunter qui je pense va servir à plus d'un.
Il permet d'ajouter un système de crédit animé.

Nom du Script : Scene Credits
Auteur : Moghunter
Version du script : 1.1

Comment s'en servir?

-Toutes les images utilisées doivent être placées dans le dossier /GRAPHICS/CREDITS
-Les images de type texte doivent posséder un nom de la forme C0.png , C1.png, C2.png...
-Et pour les images de fond, mettez en autant que les images de type texte. Nommez les P0.png, P1.png, P2.png
-Pour appeler le script utilisez l'appel SceneManager.call(Scene_Credits)

Ce que l'on peut modifier dans le script.

-Le nom de la musique de fond (ligne 43 du script)
-La musique de l'image de fin (ligne 46 du script)
-Activer/Désactiver les particules (ligne 40 du script)
-Le nombre de frames que dure chaque image texte (ligne 38 du script)
-Pouvoir passer ou non les crédits (ligne 48 du script)

Screens :
Spoiler:




Script:
Code:
#==============================================================================
# +++ MOG - Scene Credits (v1.1) +++
#==============================================================================
# By Moghunter
# http://www.atelier-rgss.com
#==============================================================================
# Cena de créditos ou tela final com efeitos animados.
#==============================================================================

#==============================================================================
# UTILIZAÇÃO
#==============================================================================
# As imagens devem esta na pasta
#
# /GRAPHICS/CREDITS
#
# Para definir a quantidade de imagens do texto de créditos basta nomear
# os arquivos da seguinte forma.
#
# C0.png
# C1.png
# C2.png
# ...
#
# Para definir a quantidade de imagens do texto de créditos basta nomear
# os arquivos da seguinte forma.
#
# P0.png
# P1.png
# P2.png
# ...
#
# (*Não é necessário definir o número de imagens pelo script.)
#
#==============================================================================
module MOG_SCENE_CREDITS
   # Definição do tempo de apresentação do texto de créditos.
   TEXT_DURATION = 180
   # Ativar partículas
   PARTICLES = true
   # Definição do nome da música da cena de créditos.
   # Para desativar está função basta não colocar o arquivo de música na pasta.
   MUSIC_NAME = "Ending"
   # Definição do nome da música da imagem final.
   # Para desativar está função basta não colocar o arquivo de música na pasta.
   END_MUSIC_NAME = "Ending_2"  
   # Ativar a função pular a cena ao apertar o botão.
   DISABLE_SKIP_BUTTON = false
   # Definição das imagens que terão o efeito deslize.
   SLIDE_EFFECT_FRAME_ID = [0,3,9,12,17]
   # Definição da prioridade das imagens.
   BACKGROUND_Z = 0
   PICTURES_Z = 1
   PARTICLES_Z = 2
   CREDITS_TEXT_Z = 4
   LAYOUT_Z  = 3
end
 
$imported = {} if $imported.nil?
$imported[:mog_scene_credits] = true

#==============================================================================
# ■ Scene Cache
#==============================================================================
module Cache
  
  #--------------------------------------------------------------------------
  # ● Credits
  #--------------------------------------------------------------------------
  def self.credits(filename)
      load_bitmap("Graphics/Credits/", filename)
  end  
  
end

#==============================================================================
# ■ Game Interpreter
#==============================================================================
class Game_Interpreter
  
  #--------------------------------------------------------------------------
  # ● Credits
  #--------------------------------------------------------------------------
  def credits
      SceneManager.call(Scene_Credits)
  end
  
end

#==============================================================================
# ■ Scene_Credits
#==============================================================================
class Scene_Credits
  
  include MOG_SCENE_CREDITS
  
  #--------------------------------------------------------------------------
  # ● Main
  #--------------------------------------------------------------------------  
  def main
      setup
      create_sprites
      execute_loop
      dispose_sprites
  end
  
  #--------------------------------------------------------------------------
  # ● Setup
  #--------------------------------------------------------------------------    
  def setup
      @effect_type = 0
      @phase = 0
      @music = false
      @text_duration = TEXT_DURATION
      @text_duration = 1 if @text_duration < 1
      $credits = true      
      if MUSIC_NAME != nil
         BattleManager.save_bgm_and_bgs
         RPG::BGM.fade(2000)
         RPG::BGS.fade(2000)      
      end    
  end
  
  #--------------------------------------------------------------------------
  # ● Execute Loop
  #--------------------------------------------------------------------------    
  def execute_loop
      Graphics.transition(60)
      loop do
           update
           Input.update
           Graphics.update
           break if SceneManager.scene != self
      end
  end  
  
  #--------------------------------------------------------------------------
  # ● Play Music
  #--------------------------------------------------------------------------      
  def play_music
      return if @music_start != nil
      @music_start = true
      file = "Audio/BGM/" + MUSIC_NAME.to_s rescue nil
      if file != nil
         @music = true
         Audio.bgm_play(file,100,100)
      end  
  end
    
  #--------------------------------------------------------------------------
  # ● Create Sprites
  #--------------------------------------------------------------------------    
  def create_sprites      
      create_background
      create_particles
      create_layout
      create_credits
      create_pictures        
  end

  #--------------------------------------------------------------------------
  # ● Create Particles
  #--------------------------------------------------------------------------  
  def create_particles
      return if !PARTICLES
      @particles_bitmap =[]
      for i in 0...10
          @particles_bitmap.push(Particles_Credits.new(nil))
      end  
  end    
  
  #--------------------------------------------------------------------------
  # ● Create Pictures
  #--------------------------------------------------------------------------    
  def create_pictures
      @p_index = 0
      @p_duration = [0,(179 + @text_duration) * @credits.size]
      @pictures = []
      for i in 0...999
          @pictures.push(Cache.credits("P" + i.to_s)) rescue nil
          break if @pictures[i] == nil
      end
      if @pictures.size > 0
         @real_time = ((179 + @text_duration) * @credits.size)
         @real_time2 = (@real_time / @pictures.size)
         @real_time3 = @real_time - @real_time2
         @p_duration[1] = @real_time2 - 90
      end  
      @end_picture = Cache.credits("End_Picture") rescue nil
      @p_sprite = Sprite.new
      @p_sprite.bitmap = Bitmap.new(Graphics.width,Graphics.height)
      @p_sprite.opacity = 0
      @p_sprite.z = PICTURES_Z
      @p_org = [0,0]
      refresh_pictures
  end
  
  #--------------------------------------------------------------------------
  # ● Update P Sprites
  #--------------------------------------------------------------------------            
  def update_p_sprites      
      @p_duration[0] += 1 unless @phase == 3 and @p_duration[0] >  90
      if @p_duration[0].between?(0,90)
         @p_sprite.opacity += 1
      elsif @p_duration[0].between?(91,@p_duration[1])
         @p_sprite.opacity += 1
      elsif @p_duration[0].between?(@p_duration[1],@p_duration[1] + 90)
         @p_sprite.opacity -= 3 unless @phase == 3
      else  
         refresh_pictures unless @phase == 3
      end
  end  
  
  #--------------------------------------------------------------------------
  # ● Refresh Pictures
  #--------------------------------------------------------------------------          
  def refresh_pictures
      return if @phase == 3
      @p_duration[0] = 0
      @p_sprite.ox = 0
      @p_sprite.oy = 0        
      @p_sprite.bitmap.clear
      b_rect = Rect.new(0,0,Graphics.width,Graphics.height)
      if @pictures[@p_index] != nil
         @p_sprite.bitmap.blt(0,0,@pictures[@p_index],b_rect)
      else  
         @p_sprite.bitmap.blt(0,0,@end_picture,b_rect) unless @end_picture == nil
         @particles_bitmap.each {|sprite| sprite.refresh_bitmap } unless @particles_bitmap == nil
         @phase = 3 unless @end_picture == nil or @pictures.size == 0
         file = "Audio/BGM/" + END_MUSIC_NAME.to_s rescue nil
         if file != nil
            Audio.bgm_play(file,100,100)
            @music = true
         end  
      end  
      @p_sprite.opacity = 0
      @p_index += 1
  end  
  
  #--------------------------------------------------------------------------
  # ● Create Background
  #--------------------------------------------------------------------------      
  def create_background
      @background = Sprite.new
      @background.bitmap = Cache.credits("Background")
      @background.z = BACKGROUND_Z
      @background.opacity = 0
  end
  
  #--------------------------------------------------------------------------
  # ● Create Layout
  #--------------------------------------------------------------------------      
  def create_layout
      @layout = Sprite.new
      @layout.bitmap = Cache.credits("Layout")
      @layout.z = LAYOUT_Z
      @layout.opacity = 0
  end  
  
  #--------------------------------------------------------------------------
  # ● Create creadits
  #--------------------------------------------------------------------------        
  def create_credits
      @c_index = 0
      @c_duration = [0,91 + @text_duration]
      @credits = []
      for i in 0...999
          @credits.push(Cache.credits("C" + i.to_s)) rescue nil
          break if @credits[i] == nil
      end
      @c_sprite = Sprite.new
      @c_sprite.bitmap = Bitmap.new(Graphics.width,Graphics.height)
      @c_sprite.z = CREDITS_TEXT_Z
      @c_org = [0,0]
      refresh_credits
  end
  
  #--------------------------------------------------------------------------
  # ● Refresh creadits
  #--------------------------------------------------------------------------          
  def refresh_credits
      @effect_type = 0
      if @music and @c_index == (@credits.size - 1)
         fade_time = 2000 + 25 * @text_duration
         RPG::BGM.fade(fade_time)
         unless @phase == 3
            @particles_bitmap.each {|sprite| sprite.force_fade } unless @particles_bitmap == nil
         end  
      end  
      if @credits[@c_index] == nil and @phase == 0
         SceneManager.return if @end_picture == nil          
         @phase = 1
         return
      end
      @c_duration[0] = 0
      @c_sprite.bitmap.clear unless @c_sprite.bitmap == nil
      return if @credits[@c_index] == nil
      cw = @credits[@c_index].width
      ch = @credits[@c_index].height
      @c_org = [0,0]
      @c_sprite.x = @c_org[0]
      @c_sprite.y = @c_org[1]            
      b_rect = Rect.new(0,0,cw,ch)
      @c_sprite.bitmap.blt(0,0,@credits[@c_index],b_rect)
      @c_sprite.opacity = 0
      if SLIDE_EFFECT_FRAME_ID.include?(@c_index)
         @effect_type = 1
         @c_sprite.x -= 100
      end
      @c_sprite.zoom_y = @c_sprite.zoom_x
      @c_index += 1
  end
  
  #--------------------------------------------------------------------------
  # ● Update C Sprites
  #--------------------------------------------------------------------------            
  def update_c_sprites    
      @c_duration[0] += 1      
      if @c_duration[0].between?(0,90)
         @c_sprite.opacity += 3
         @c_sprite.x += 1 if @c_sprite.x < 0
         @c_sprite.x = 0 if @c_sprite.x > 0
      elsif @c_duration[0].between?(91,@c_duration[1])
         @c_sprite.x += 1 if @c_sprite.x < 0
         @c_sprite.x = 0 if @c_sprite.x > 0        
      elsif @c_duration[0].between?(@c_duration[1],@c_duration[1] + 90)
         @c_sprite.opacity -= 3
         @c_sprite.x += 1 if @effect_type == 1        
       else          
         refresh_credits
      end      
  end
  
  #--------------------------------------------------------------------------
  # ● Dispose Sprites
  #--------------------------------------------------------------------------        
  def dispose_sprites      
      Graphics.fadeout(120)
      Graphics.freeze
      @c_sprite.bitmap.dispose
      @c_sprite.dispose
      @p_sprite.bitmap.dispose
      @p_sprite.dispose      
      @background.bitmap.dispose
      @background.dispose
      @layout.bitmap.dispose
      @layout.dispose      
      dispose_particles
      @credits.each {|sprite| sprite.dispose}
      @pictures.each {|sprite| sprite.dispose}
      @end_picture.dispose if @end_picture != nil
      if @music
         RPG::BGM.stop
         BattleManager.replay_bgm_and_bgs    
      end        
  end
  
 #--------------------------------------------------------------------------
 # ● Dispose Particles
 #--------------------------------------------------------------------------              
  def dispose_particles
      return if @particles_bitmap == nil
      @particles_bitmap.each {|sprite| sprite.dispose_sprites }
      @particles_bitmap.each {|sprite| sprite.dispose }
      @particles_bitmap = nil
  end  
  
  #--------------------------------------------------------------------------
  # ● Update
  #--------------------------------------------------------------------------      
  def update
      if @phase == 0
         @background.opacity += 3
         @layout.opacity += 3
      else  
         @background.opacity -= 3
         @layout.opacity -= 3        
      end  
         update_command if @background.opacity > 60 or @phase > 0
         update_c_sprites if @background.opacity > 200 or @phase > 0
         update_p_sprites if @background.opacity > 200 or @phase > 0
      update_particles
      play_music if MUSIC_NAME != nil
  end  
  
 #--------------------------------------------------------------------------
 # ● Update Particles
 #--------------------------------------------------------------------------              
 def update_particles
     return if @particles_bitmap == nil    
     @particles_bitmap.each {|sprite| sprite.update }
 end  
  
  #--------------------------------------------------------------------------
  # ● Update Command
  #--------------------------------------------------------------------------        
  def update_command
      return if @phase == 0 and DISABLE_SKIP_BUTTON
      if Input.trigger?(:B) or Input.trigger?(:C)
         @phase = 3
         RPG::BGM.fade(2000) if @music
         SceneManager.return
      end
  end  
  
end

#==============================================================================
# ■ Particles_
#==============================================================================
class Particles_Credits < Sprite
  
  include MOG_SCENE_CREDITS
  
 #--------------------------------------------------------------------------
 # ● Initialize
 #--------------------------------------------------------------------------            
  def initialize(viewport = nil)
      super(viewport)
      @speed_x = 0
      @speed_y = 0
      @speed_a = 0
      @fade = false
      self.bitmap = Cache.credits("Particles")
      self.blend_type = 1
      self.z = PARTICLES_Z
      @width_range = Graphics.width + self.bitmap.width
      @height_range = Graphics.height + self.bitmap.height
      reset_setting(true)
  end  
  
 #--------------------------------------------------------------------------
 # ● Refresh Bitmap
 #--------------------------------------------------------------------------                
  def refresh_bitmap
      if self.bitmap != nil
         self.bitmap.dispose rescue nil
      end  
      self.bitmap = Cache.credits("Particles_2") rescue nil
      if self.bitmap != nil
         @fade = false
         @width_range = Graphics.width + self.bitmap.width
         @height_range = Graphics.height + self.bitmap.height
         reset_setting(true)
      end  
  end
  
 #--------------------------------------------------------------------------
 # ● Reset Setting
 #--------------------------------------------------------------------------              
  def reset_setting(initial = false)
      zoom = (50 + rand(100)) / 100.1
      self.zoom_x = zoom
      self.zoom_y = zoom
      self.x = rand(@width_range) - 160
      self.y = initial == true ? rand(@height_range) : @height_range
      self.opacity = 0
      self.angle = rand(360)
      @speed_y = -(1 + rand(3))
      @speed_x = (1 + rand(2))
      @speed_a = (1 + rand(2))    
  end
  
 #--------------------------------------------------------------------------
 # ● Force Fade
 #--------------------------------------------------------------------------                
  def force_fade
      @fade = true
  end
  
 #--------------------------------------------------------------------------
 # ● Dispose
 #--------------------------------------------------------------------------              
  def dispose_sprites
      if self.bitmap != nil
         self.bitmap.dispose rescue nil
      end  
  end  
  
 #--------------------------------------------------------------------------
 # ● Update
 #--------------------------------------------------------------------------              
  def update
      super
      self.x += @speed_x
      self.y += @speed_y
      self.angle += @speed_a
      self.opacity += @fade ? -2 : 2
      reset_setting if can_reset_setting?
  end  
  
 #--------------------------------------------------------------------------
 # ● Can Reset Setting
 #--------------------------------------------------------------------------                
  def can_reset_setting?
      return true if self.y < -50
      return true if self.x > @width_range
      return false
  end  
    
end

Lien de la Demo: http://www.atelier-rgss.com/RGSS/Demos/Monogatari.zip
(Il y a peut être d'autres scripts sur la demo mais le script qui nous intéresse se nomme "MOG_Scene_Ending" et les ressources sont les musiques "Ending" et "Ending_2" du dossier BGM et le dossier Credits présent dans Graphics)

+2 points de participation




Dernière édition par Arx le Mer 25 Juin 2014 - 17:25, édité 3 fois
avatar
Xandiar
Membre

Nombre de messages : 497
Age : 23
Localisation : Suisse
Distinction : aucune
Date d'inscription : 12/10/2013

Re: MOG Scene Credits

le Mer 25 Juin 2014 - 15:41
Yeha merci, c'est vraiment cool =D !!
avatar
Heaven
Staffeux retraité

Nombre de messages : 2451
Age : 17
Localisation : Alpes-Maritimes VIRILITÉ OLALA
Distinction : Aucune
Date d'inscription : 18/10/2012

Re: MOG Scene Credits

le Mer 25 Juin 2014 - 15:42
Très sympa en effet, merci du partage^^


Heav'n
avatar
Zangther
Membre

Nombre de messages : 899
Distinction : aucune
Date d'inscription : 06/02/2013

Re: MOG Scene Credits

le Mer 25 Juin 2014 - 16:18
Ca serait bien d'avoir le script direct.
Pas envie de me taper le download d'une démo pour avoir juste un script et deux images dans un projet :/
avatar
Arx
Membre

Nombre de messages : 217
Age : 19
Localisation : Isère
Distinction : aucune
Date d'inscription : 19/01/2012

Re: MOG Scene Credits

le Mer 25 Juin 2014 - 16:59
Script rajouté sur le premier post pour ceux qui préfèrent l'avoir sans Demo.
avatar
Spytje
Administrateur

Nombre de messages : 5899
Localisation : La terre
Distinction : Spiraliste [Korn']
Forestia : Projet du mois juillet 2014
Papy Pulkigrat [Yama']
Date d'inscription : 16/03/2008

Re: MOG Scene Credits

le Mer 25 Juin 2014 - 17:01
Merci du partage Arx.
avatar
az3rtY
Membre

Nombre de messages : 436
Age : 17
Localisation : Sûrement, devant mon pc ^^
Distinction : aucune
Date d'inscription : 16/04/2013
http://kwang.webobo.biz

Re: MOG Scene Credits

le Mer 25 Juin 2014 - 21:21
Waw parfait , mais pour ceux qui on vraiment beaucoup de crédit vive Photoshop ! x)

Merci.
avatar
LightNox
Membre

Nombre de messages : 1755
Age : 27
Localisation : Chez Moi ^^
Date d'inscription : 10/04/2008

Re: MOG Scene Credits

le Jeu 26 Juin 2014 - 12:53
je vais surement l'utiliser merci du partage Wink
avatar
Dakusy
Membre

Nombre de messages : 10
Age : 21
Distinction : aucune
Date d'inscription : 12/09/2014

Re: MOG Scene Credits

le Mar 16 Sep 2014 - 22:31
Merci, je t'aime :o
Contenu sponsorisé

Re: MOG Scene Credits

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