Partagez
Aller en bas
Nérylis
Nérylis
Membre

Nombre de messages : 612
Age : 31
Localisation : Seine Maritime
Distinction : aucune
Date d'inscription : 23/11/2014

Résolu [résolu]Modification de script - Pretitle

le Jeu 19 Mar 2015 - 17:38
Coucou, j'ai testé le script de TonyRyu pour afficher des images avant l'écran titre. Il marche bien mais il y a une chose qui me chagrine.

Dans le script, on peut définir la musique qu'on veut pendant les images à l'écran. Dans la BDD, on peut définir la musique qu'on veut à l'écran titre. Dans le cas où ces deux musiques sont les mêmes, il y a un arrêt en fondu puis un redémmarage de cette musique lorsqu'on arrive à l'écran titre.

Serait-il possible de ne pas avoir de coupure ? Par exemple, dans RPG Maker de base, lorsqu'on fait commencer une musique avant un combat de boss, et que la BGM des combats est la même que celle-ci, il n'y a pas de coupure et c'est super. J'aimerais la même chose pour cela.

Le script en question est ci-dessous :

Code:
#==============================================================================
# ** Scene_PreTitle
#------------------------------------------------------------------------------
#  Cette class a pour objectif d'afficher une suite d'images stockées dans le
# dossier \Graphics\Pictures, les noms des images doivent être placés dans le
# tableau PRETITLE_TAB_PICTURE, séparés par des ,
#  PRETITLE_NB_FRAME définit le nombre de frame d'attente avant de passer à
# l'image suivante
#  PRETITLE_FADE_SPEED définit la vitesse d'apparition et d'effacement
#  PRETITLE_MUSIC définit le fichier de musique se trouvant dans le dossier
# \Audio\BGM
#
# Version  Date        Auteur    Commentaire
# 1.00    25/10/2012  Tonyryu    Création du script
# 1.01    28/10/2012  Tonyryu    Ajout de la gestion d'un BGM
#
# Attention : Ce script est ma propriété en tant que création et il est donc
# soumis au droit de la propriété intellectuelle.
# En aucun cas, il ne doit être copié ou publié vers un autre forum sans en
# avoir reçu mon accord au préalable.
#
#==============================================================================

PRETITLE_TAB_PICTURE = ["TitreAzaruss"]
PRETITLE_NB_FRAME = 400
PRETITLE_FADE_SPEED = 4
PRETITLE_MUSIC = "Field1.ogg"

class Scene_PreTitle < Scene_Base
  
  def initialize
    @index_img = -1
    @nb_frame = 0
    @sens_fade = 0
  end
  
  #--------------------------------------------------------------------------
  # * Démarrage de la scene
  #--------------------------------------------------------------------------
  def start
    super
    image_suivante
    Audio.bgm_play("./Audio/BGM/" + PRETITLE_MUSIC) if PRETITLE_MUSIC != ""
  end
  #--------------------------------------------------------------------------
  # * Fin de la scene
  #--------------------------------------------------------------------------
  def terminate
    super
    if @sprite_bkg
      @sprite_bkg.bitmap.dispose if @sprite_bkg.bitmap
      @sprite_bkg.dispose
    end
  end
  
  #--------------------------------------------------------------------------
  # * Mise à jour à chaque frame
  #--------------------------------------------------------------------------
  def update
    super
    if !@sprite_bkg
      SceneManager.goto(Scene_Title)
      fadeout_all
    end
    gerer_clavier
    gerer_picture
  end

  #--------------------------------------------------------------------------
  # * Image suivante
  #--------------------------------------------------------------------------
  def image_suivante
    @index_img += 1
    
    if @index_img < PRETITLE_TAB_PICTURE.size
      
      @sens_fade = PRETITLE_FADE_SPEED
      
      @sprite_bkg = Sprite.new if !@sprite_bkg
      @sprite_bkg.bitmap.dispose if @sprite_bkg.bitmap
      @sprite_bkg.bitmap = Cache.picture(PRETITLE_TAB_PICTURE[@index_img])
      @sprite_bkg.opacity = 0
    else
      if @sprite_bkg
        @sprite_bkg.bitmap.dispose
        @sprite_bkg.dispose
        @sprite_bkg = nil
      end
    end
  end
  
  #--------------------------------------------------------------------------
  # * Gestion du clavier
  #--------------------------------------------------------------------------
  def gerer_clavier
    @sens_fade = -PRETITLE_FADE_SPEED if Input.trigger?(:C)
  end
  
  #--------------------------------------------------------------------------
  # * Gestion de l'image
  #--------------------------------------------------------------------------
  def gerer_picture
    if @sprite_bkg
      if @sens_fade != 0
        if @sprite_bkg.opacity + @sens_fade > 255
          @sprite_bkg.opacity = 255
        elsif @sprite_bkg.opacity + @sens_fade < 0
          @sprite_bkg.opacity = 0
        else
          @sprite_bkg.opacity += @sens_fade
        end
        
        if @sprite_bkg.opacity == 0 or @sprite_bkg.opacity == 255
          @sens_fade = 0
          @nb_frame = 0
          if @sprite_bkg.opacity == 0
            image_suivante
          end
        end
      else
        @nb_frame += 1
        if @nb_frame == PRETITLE_NB_FRAME
          @sens_fade = -PRETITLE_FADE_SPEED
        end
      end
    end
  end
end

#==============================================================================
# ** SceneManager
#------------------------------------------------------------------------------
#  Modification du module SceneManager afin de démarer sur la Scene_PreTitle
#==============================================================================
module SceneManager
  #--------------------------------------------------------------------------
  # * Get First Scene Class
  #--------------------------------------------------------------------------
  def self.first_scene_class
    $BTEST ? Scene_Battle : Scene_PreTitle
  end
end


Dernière édition par Nérylis le Ven 20 Mar 2015 - 17:08, édité 1 fois
vincent26
vincent26
Membre

Nombre de messages : 766
Age : 24
Localisation : baume de transit le village paumé
Distinction : aucune
Date d'inscription : 17/08/2010

Résolu Re: [résolu]Modification de script - Pretitle

le Jeu 19 Mar 2015 - 18:55
Peut-être juste en modifiant le

def play_title_music
$data_system.title_bgm.play
RPG::BGS.stop
RPG::ME.stop
end

dans la scene_Title

met un # devant $data_system.title_bgm.play
Nérylis
Nérylis
Membre

Nombre de messages : 612
Age : 31
Localisation : Seine Maritime
Distinction : aucune
Date d'inscription : 23/11/2014

Résolu Re: [résolu]Modification de script - Pretitle

le Jeu 19 Mar 2015 - 20:07
J'ai essayé, ça ne marche pas. La musique se coupe et ne repart pas quand j'arrive à l'écran titre.
vincent26
vincent26
Membre

Nombre de messages : 766
Age : 24
Localisation : baume de transit le village paumé
Distinction : aucune
Date d'inscription : 17/08/2010

Résolu Re: [résolu]Modification de script - Pretitle

le Jeu 19 Mar 2015 - 22:06
Ajoute ça dans le script scene_pretitle

def fadeout_all(time = 1000)
RPG::BGS.fade(time)
RPG::ME.fade(time)
Graphics.fadeout(time * Graphics.frame_rate / 1000)
RPG::BGS.stop
RPG::ME.stop
end
Nérylis
Nérylis
Membre

Nombre de messages : 612
Age : 31
Localisation : Seine Maritime
Distinction : aucune
Date d'inscription : 23/11/2014

Résolu Re: [résolu]Modification de script - Pretitle

le Jeu 19 Mar 2015 - 22:18
J'ai essayé, ça n'a pas marché. Ça coupe et redémarre.
Il y a un endroit précis où le placer dans scene_pretitle ?
vincent26
vincent26
Membre

Nombre de messages : 766
Age : 24
Localisation : baume de transit le village paumé
Distinction : aucune
Date d'inscription : 17/08/2010

Résolu Re: [résolu]Modification de script - Pretitle

le Jeu 19 Mar 2015 - 22:40
il faut aussi le mettre dans le scene_title je pense
Nérylis
Nérylis
Membre

Nombre de messages : 612
Age : 31
Localisation : Seine Maritime
Distinction : aucune
Date d'inscription : 23/11/2014

Résolu Re: [résolu]Modification de script - Pretitle

le Jeu 19 Mar 2015 - 23:07
Nom d'un pétard, après quelques manipulations hasardeuses, ça marche. Mais par précaution, dis-moi si je n'ai pas fais de bêtises.

Comme tu me l'as dit, dans Scene_Pretitle et dans Scene_Title, j'ai mis tes lignes :
def fadeout_all(time = 1000)
RPG::BGS.fade(time)
RPG::ME.fade(time)
Graphics.fadeout(time * Graphics.frame_rate / 1000)
RPG::BGS.stop
RPG::ME.stop
end

Comme ça ne marchait pas, dans Scene_Title, j'ai passé en commentaires les lignes suivantes :
#def play_title_music
# $data_system.title_bgm.play
# RPG::BGS.stop
# RPG::ME.stop
#end

Après ça, j'ai eu un plantage à cause de la ligne 18 du Scene_Title :
play_title_music

Du coup, j'ai passé en commentaires cette ligne et ça marche.

Si tu me dis que c'est bon, est-ce qu'il y a possibilité que tu m'écrives quelque chose à ajouter à part pour faire la même chose que ça ? Je n'aime pas écrire dans les scripts de base, il paraît qu'il ne faut pas le faire d'ailleurs.
vincent26
vincent26
Membre

Nombre de messages : 766
Age : 24
Localisation : baume de transit le village paumé
Distinction : aucune
Date d'inscription : 17/08/2010

Résolu Re: [résolu]Modification de script - Pretitle

le Ven 20 Mar 2015 - 13:21
Yep tient le global :

Code:

#==============================================================================
# ** Scene_PreTitle
#------------------------------------------------------------------------------
#  Cette class a pour objectif d'afficher une suite d'images stockées dans le
# dossier \Graphics\Pictures, les noms des images doivent être placés dans le
# tableau PRETITLE_TAB_PICTURE, séparés par des ,
#  PRETITLE_NB_FRAME définit le nombre de frame d'attente avant de passer à
# l'image suivante
#  PRETITLE_FADE_SPEED définit la vitesse d'apparition et d'effacement
#  PRETITLE_MUSIC définit le fichier de musique se trouvant dans le dossier
# \Audio\BGM
#
# Version  Date        Auteur    Commentaire
# 1.00    25/10/2012  Tonyryu    Création du script
# 1.01    28/10/2012  Tonyryu    Ajout de la gestion d'un BGM
#
# Attention : Ce script est ma propriété en tant que création et il est donc
# soumis au droit de la propriété intellectuelle.
# En aucun cas, il ne doit être copié ou publié vers un autre forum sans en
# avoir reçu mon accord au préalable.
#
#==============================================================================

PRETITLE_TAB_PICTURE = ["BattleStart"]
PRETITLE_NB_FRAME = 400
PRETITLE_FADE_SPEED = 4
PRETITLE_MUSIC = "Field1.ogg"

class Scene_PreTitle < Scene_Base
 
  def initialize
    @index_img = -1
    @nb_frame = 0
    @sens_fade = 0
  end
 
  #--------------------------------------------------------------------------
  # * Démarrage de la scene
  #--------------------------------------------------------------------------
  def start
    super
    image_suivante
    Audio.bgm_play("./Audio/BGM/" + PRETITLE_MUSIC) if PRETITLE_MUSIC != ""
  end
  #--------------------------------------------------------------------------
  # * Fin de la scene
  #--------------------------------------------------------------------------
  def terminate
    super
    if @sprite_bkg
      @sprite_bkg.bitmap.dispose if @sprite_bkg.bitmap
      @sprite_bkg.dispose
    end
  end
 
  #--------------------------------------------------------------------------
  # * Mise à jour à chaque frame
  #--------------------------------------------------------------------------
  def update
    super
    if !@sprite_bkg
      SceneManager.goto(Scene_Title)
      fadeout_all
    end
    gerer_clavier
    gerer_picture
  end

  #--------------------------------------------------------------------------
  # * Image suivante
  #--------------------------------------------------------------------------
  def image_suivante
    @index_img += 1
   
    if @index_img < PRETITLE_TAB_PICTURE.size
     
      @sens_fade = PRETITLE_FADE_SPEED
     
      @sprite_bkg = Sprite.new if !@sprite_bkg
      @sprite_bkg.bitmap.dispose if @sprite_bkg.bitmap
      @sprite_bkg.bitmap = Cache.picture(PRETITLE_TAB_PICTURE[@index_img])
      @sprite_bkg.opacity = 0
    else
      if @sprite_bkg
        @sprite_bkg.bitmap.dispose
        @sprite_bkg.dispose
        @sprite_bkg = nil
      end
    end
  end
 
  #--------------------------------------------------------------------------
  # * Gestion du clavier
  #--------------------------------------------------------------------------
  def gerer_clavier
    @sens_fade = -PRETITLE_FADE_SPEED if Input.trigger?(:C)
  end
 
  #--------------------------------------------------------------------------
  # * Gestion de l'image
  #--------------------------------------------------------------------------
  def gerer_picture
    if @sprite_bkg
      if @sens_fade != 0
        if @sprite_bkg.opacity + @sens_fade > 255
          @sprite_bkg.opacity = 255
        elsif @sprite_bkg.opacity + @sens_fade < 0
          @sprite_bkg.opacity = 0
        else
          @sprite_bkg.opacity += @sens_fade
        end
       
        if @sprite_bkg.opacity == 0 or @sprite_bkg.opacity == 255
          @sens_fade = 0
          @nb_frame = 0
          if @sprite_bkg.opacity == 0
            image_suivante
          end
        end
      else
        @nb_frame += 1
        if @nb_frame == PRETITLE_NB_FRAME
          @sens_fade = -PRETITLE_FADE_SPEED
        end
      end
    end
  end
 
  def fadeout_all(time = 1000)
    RPG::BGS.fade(time)
    RPG::ME.fade(time)
    Graphics.fadeout(time * Graphics.frame_rate / 1000)
    RPG::BGS.stop
    RPG::ME.stop
  end
end
class Scene_Title < Scene_Base
  def fadeout_all(time = 1000)
    RPG::BGS.fade(time)
    RPG::ME.fade(time)
    Graphics.fadeout(time * Graphics.frame_rate / 1000)
    RPG::BGS.stop
    RPG::ME.stop
  end
 
  def play_title_music
    RPG::BGS.stop
    RPG::ME.stop
  end
end
#==============================================================================
# ** SceneManager
#------------------------------------------------------------------------------
#  Modification du module SceneManager afin de démarer sur la Scene_PreTitle
#==============================================================================
module SceneManager
  #--------------------------------------------------------------------------
  # * Get First Scene Class
  #--------------------------------------------------------------------------
  def self.first_scene_class
    $BTEST ? Scene_Battle : Scene_PreTitle
  end
end
Nérylis
Nérylis
Membre

Nombre de messages : 612
Age : 31
Localisation : Seine Maritime
Distinction : aucune
Date d'inscription : 23/11/2014

Résolu Re: [résolu]Modification de script - Pretitle

le Ven 20 Mar 2015 - 17:07
Testé, ça marche super bien.
Merci pour ton aide. Smile
Revenir en haut
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum