Partagez
Aller en bas
RPG-man
RPG-man
Membre

Nombre de messages : 55
Age : 25
Distinction : aucune
Date d'inscription : 16/03/2009

Bulles de dialogues au dessus des events! Empty Bulles de dialogues au dessus des events!

le Dim 29 Mar 2009 - 9:00
Amis makeurs, bonjour ^^
Je viens vous présenter aujourd'hui, un script, codé par mes soins, permettant d'afficher des bulles de message au dessus du héro et des events. Aucune ressource n'est nécessaire, il y a trois alogorithmes (codés par moi ^^) qui les créent automatiquement.

Quelques screens pour commencer :
Bulles de dialogues au dessus des events! Screen02-ccf5f1
Bulles de dialogues au dessus des events! Screen01-ccf5ec

Les instructions sont dans le script, à placer au dessus de main :
Code:

#====================================================
# *RPGman_Bulle
#-------------------------------------------------------------
#Par : RPG-man
#Le 28/03/09
# Permet de créer des bulles de message au dessus des events et
# du héro.
#====================================================
=begin
/!\ MODE D'EMPLOI /!\
Pour créer une nouvelle bulle, placez en commande :

<> Script :
text = " Votre texte entre guillemets"
text2 = "Votre deuxième texte facultatif entre guillemets"

if $bulle[numero] != nil
$bulle[numero] = RPGman_Bulle.new(id_de_l_event, text [, text2] [, largeur] [, hauteur] [, ecart] )
end
<> Fin Script
text2 est entre crochets car il est facultatif! (mais ne mettez pas de crochets!)
id_de_l_event, c'est l'id de l'event. Lorsque c'est 0, c'est sur le héro!
largeur est à préciser lorsque vous voulez un message d'une largeur différente
à celle d'origine.
idem pour hauteur.
idem pour ecart. Utile pour des characters super grands!

Pour supprimer la bulle, faites :
<> Script :
if $bulle[numero] != nil                      # Sécurité! Au cas où elle soit déjà effacée.
$bulle[numero].effacer                    ( A faire             
$bulle[numero] = nil                        ( dans l'ordre   
end

<> Fin Script
effacer peut être remplacé par effacer2 qui provoque un "fondu" de la bulle
mais arrête tout ce qu'il se passe durant le fondu!
$bulle[numero] = nil permet de faire en sorte qu'on puisse à nouveau
créer une bulle ayant cet ID.



Bon making! Enjoy!

=end
module RPGman
  LARGEUR = 200                                              # Largeur de la bulle
  HAUTEUR = 100                                              # Hauteur de la bulle (100 conseillé)
  ECART_VERTICAL = 10                                  # Ecart entre l'event (ou le héros) et la bulle
  TYPE = 1                                                            # Type de dégradé (0 d->g ; 1 g->d;
                                                                              # 2 h->b ; 3 b->h) g = gauche; d = droite...
  BULLES = 50                                                    # Nombres de bulles max sur une map
end


#====================================================
# *RPGman_Bulle
#-------------------------------------------------------------
#
#====================================================

class RPGman_Bulle
  def initialize(event_id, text, text2=nil, w=nil, h=nil, ecart=nil)
#/////////////// Couleurs \\\\\\\\\\\\\\\\\#
@color1 = Color.new(255, 200, 0, 125)          # Couleur 1 du dégradé de la bulle
@color2 = Color.new(255, 0, 0, 125)              # Couleur 2 du dégradé de la bulle
@color3= Color.new(0, 0, 255, 125)              # Couleur 1 du dégradé de la flèche
@color4 = Color.new(0, 200, 255, 125)          # Couleur 2 du dégradé de la flèche
#----------------------------------------

  # On enregistre ce qui servira après
@event_id = event_id
if w.nil? ; @w = RPGman::LARGEUR ; else ; @w = w ; end
if h.nil? ; @h = RPGman::HAUTEUR ; else ; @h = h; end
if ecart.nil? ; @ecart = RPGman::ECART_VERTICAL ; else; @ecart = ecart ; end
    # On crée la bulle
    @sprite = Sprite.new
    @sprite.bitmap = Bitmap.new(@w, @h)
    @sprite.bitmap.draw_degrade(@w, @h-50, @color1, @color2, RPGman::TYPE)
    @sprite.bitmap.encadre(@w, @h-50, Color.new(0, 0, 0, 255), 1)

    # On crée flèche sous la bulle
    bitmap = Bitmap.new(@w, 20)
    bitmap.draw_degrade(@w, 50, @color3, @color4, 2)
    bitmap.taille(@w/2)

    # On rajoute la flèche sous la bulle
    @sprite.bitmap.blt(0, @h-50, bitmap, bitmap.rect)
    @sprite.bitmap.font.size = 16
    @sprite.bitmap.font.color = Color.new(255, 255, 255, 255)
    @sprite.bitmap.font.name = 'Arial'

    # On regarde si c'est un event ou le héros
    if event_id != 0
    x = $game_map.events[event_id].screen_x
    y = $game_map.events[event_id].screen_y
  else
    x = $game_player.screen_x
    y = $game_player.screen_y
  end
    @sprite.x = x - @w/2
    @sprite.y = y - @h - @ecart
    @sprite. z = 500


    # On écrit le texte soit au centre (une ligne de texte), soit sur deux lignes
  if text2 != nil
    @sprite.bitmap.draw_text(@sprite.bitmap.rect.set(0, 0, @w, (@h-50)/2), text.to_s,1)
    @sprite.bitmap.draw_text(@sprite.bitmap.rect.set(0, 25, @w, (@h-50)/2), text2.to_s,1)
  else
    @sprite.bitmap.draw_text(@sprite.bitmap.rect.set(0, 0, @w, @h-50), text.to_s,1)
  end
 
  end
 
    #================================
    # /// Mise à jour de la position de la bulle \\\
    #--------------------------
    #================================
  def update_pos

#Si le sprite est disposé, on sort.
    if @sprite.disposed?
      return
    end
   
# On regarde si c'est un event ou le héros
  if @event_id != 0
    x = $game_map.events[@event_id].screen_x
    y = $game_map.events[@event_id].screen_y
  else
    x = $game_player.screen_x
    y = $game_player.screen_y
  end
    @sprite.x = x - @w/2
    @sprite.y = y - @h - @ecart
end
 

    #================================
    # /// Effacement de la bulle \\\
    #--------------------------
    #================================
  def effacer
    return if @sprite.disposed?
    if @sprite != nil
    @sprite.dispose if @sprite.disposed? == false
    end
  end
   
    #================================
    # /// Effacement de avec fondu \\\
    #--------------------------
    #================================
  def effacer2
  return if @sprite.disposed?
  col = Color.new(0, 0, 0, 0)
  for i in 0...@h/2 +1
    @sprite.bitmap.fill_rect(0, i, @w, 1, col)
    @sprite.bitmap.fill_rect(0, @h-i, @w, 1, col)
    Graphics.update if i%3 == 1
  end
    if @sprite != nil
    @sprite.dispose if @sprite.disposed? == false
    end
  end
end



#====================================================
# *Scene_Map
#-------------------------------------------------------------
#
#====================================================
class Scene_Map < Scene_Base
 
  #--------------------------------------------------------------------------
  # *  Mise à jour de Scene_Map (avec les bulles)
  #--------------------------------------------------------------------------
    def update
    super
    $game_map.interpreter.update            # Update interpreter
    $game_map.update                                # Update map
    for i in 0..RPGman::BULLES
    $bulle[i].update_pos if $bulle[i] != nil # Update bubles
  end
    $game_player.update                              # Update player
    $game_system.update                            # Update timer
    @spriteset.update                                    # Update sprite set
    @message_window.update                  # Update message window
    unless $game_message.visible          # Unless displaying a message
      update_transfer_player
      update_encounter
      update_call_menu
      update_call_debug
      update_scene_change
    end
  end
 
  #--------------------------------------------------------------------------
  # *  Entrer dans Scene_Map en instantiant $bulle (Array)
  #--------------------------------------------------------------------------
  def start
    super
    $bulle = [nil]
    $game_map.refresh
    @spriteset = Spriteset_Map.new
    @message_window = Window_Message.new
  end
 
  #--------------------------------------------------------------------------
  # *  Effacer les bulles quand passage à un menu...
  #--------------------------------------------------------------------------
  def terminate
    super
    if $scene.is_a?(Scene_Battle)        # If switching to battle screen
      @spriteset.dispose_characters  # Hide characters for background creation
    end
      for i in 0..RPGman::BULLES
        $bulle[i].effacer if $bulle[i] != nil # Efface toutes les bulles en sortie de Map
        $bulle[i] = nil
      end
    snapshot_for_background
    @spriteset.dispose
    @message_window.dispose
    if $scene.is_a?(Scene_Battle)    # If switching to battle screen
      perform_battle_transition      # Execute pre-battle transition
    end
  end
 
  #--------------------------------------------------------------------------
  # *  Sortir de Scene_Map en effaçant les bulles
  #--------------------------------------------------------------------------
  def update_transfer_player
    return unless $game_player.transfer?
    fade = (Graphics.brightness > 0)
    fadeout(30) if fade
   
    for i in 0..RPGman::BULLES
        $bulle[i].effacer if $bulle[i] != nil # Efface toutes les bulles en sortie de Map
        $bulle[i] = nil
    end
     
    @spriteset.dispose              # Dispose of sprite set
    $game_player.perform_transfer  # Execute player transfer
    $game_map.autoplay              # Automatically switch BGM and BGS
    $game_map.update
    Graphics.wait(15)
    @spriteset = Spriteset_Map.new  # Recreate sprite set
    fadein(30) if fade
    Input.update
  end
end


#====================================================
# * Bitmap : fonctions graphiques
#-------------------------------------------------------------
# Par : RPG-man
#====================================================
class Bitmap
 
#====================================================
# * Draw_degrade
#====================================================
  def draw_degrade(w, h, col1, col2, type=0)
    @col1 = col1
    @col2 = col2
    @couleur = col1


case type
# * Gauche vers droite
when 0
@red = (col2.red - col1.red) / w
@blue = (col2.blue - col1.blue) / w
@green = (col2.green - col1.green) / w
@opacity = (col2.alpha - col1.alpha) / w
    for i in 0...w
      self.fill_rect(i, 0, 1, h, @couleur)
      @couleur.red += @red
      @couleur.blue += @blue
      @couleur.green += @green
      @couleur.alpha += @opacity
    end
   
# * Droite vers gauche
when 1
@red = (col2.red - col1.red) / w
@blue = (col2.blue - col1.blue) / w
@green = (col2.green - col1.green) / w
@opacity = (col2.alpha - col1.alpha) / w
    for i in 0...w
  self.fill_rect(w-i, 0, 1, h, @couleur)
      @couleur.red += @red
      @couleur.blue += @blue
      @couleur.green += @green
      @couleur.alpha += @opacity
    end
   

# * Bas vers haut
when 2
@red = (col2.red - col1.red)/ h
@blue = (col2.blue - col1.blue) / h
@green = (col2.green - col1.green) / h
@opacity = (col2.alpha - col1.alpha) /h
    for i in 0...h
      self.fill_rect(0, i, w, 1, @couleur)
      @couleur.red += @red
      @couleur.blue += @blue
      @couleur.green += @green
      @couleur.alpha += @opacity
  end


# * Haut vers bas
when 3
@red = (col2.red - col1.red)/ h
@blue = (col2.blue - col1.blue) / h
@green = (col2.green - col1.green) / h
@opacity = (col2.alpha - col1.alpha) / h
    for i in 0...h
      self.fill_rect(0, h-i, w, 1, @couleur)
      @couleur.red += @red
      @couleur.blue += @blue
      @couleur.green += @green
      @couleur.alpha += @opacity
    end
end
end


#====================================================
# * Encadre
#====================================================
  def encadre(w, h, color, ep=1)
      deb = 0
    for i in deb...w-deb
      for j in 0...ep
      self.set_pixel(i, j, color)
      self.set_pixel(i, h-(j+1), color)
      end
  end
    for i in deb...h-deb
      for j in 0...ep
      self.set_pixel(j, i, color)
      self.set_pixel(w-(j+1), i, color)
      end
    end
  end
#====================================================
# * Taille
#====================================================
    def taille(r=100, color=Color.new(0, 0, 0, 0))
    h = self.height
    w = self.width
  for j in 0...r
    for i in 0...r-j
      self.set_pixel(i, h-j, color)
      self.set_pixel(w-i, h-j, color)
    end
  end
end
end

Alors, je précise qu'il peut y avoir des incompatibilités avec d'autres scripts qui MODIFIENT les méthodes:
-start
-terminate
-update
-update_transfer_player
de Scene_Map.
Donc, si vous avez un script qui redéfinit une de ces méthodes, placez mon script au dessus de celui qui redéfinit Scene_Map, et rajoutés dans les méthodes:
Start:
juste après la ligne "super" :
Code:
$bulle = [0]

Dans update, juste après $game_map.update
Code:
for i in RPGman::BULLES
$bulle[i].update_pos if $bulle[i] != nil
end

Dans terminate, juste après
Code:
    if $scene.is_a?(Scene_Battle)        # If switching to battle screen
      @spriteset.dispose_characters  # Hide characters for background creation
    end
Placer :
Code:
      for i in 0..RPGman::BULLES
        $bulle[i].effacer if $bulle[i] != nil # Efface toutes les bulles en sortie de Map
        $bulle[i] = nil
      end:
Dans update_transfer_player, juste aprs :
Code:
    fadeout(30) if fade
Placer :
Code:
    for i in 0..RPGman::BULLES
        $bulle[i].effacer if $bulle[i] != nil # Efface toutes les bulles en sortie de Map
        $bulle[i] = nil
    end

Je rappelle que vous devez faire ces modifications dans le script ui modifie Scene_Map UNIQUEMENT SI IL Y EN A UN QUI MODIFIE LES METHODES CI-DESSUS!


//////////// LIEN VERS LA DEMO \\\\\\\\\\\\



RPG-man



Voilà, si vous avez des questions/problèmes, n'hésitez pas ^^


Dernière édition par RPG-man le Dim 12 Avr 2009 - 9:00, édité 3 fois
Tommynator
Tommynator
Membre

Nombre de messages : 25
Distinction : aucune
Date d'inscription : 07/02/2009

Bulles de dialogues au dessus des events! Empty Re: Bulles de dialogues au dessus des events!

le Dim 29 Mar 2009 - 10:06
Ca va etre très utile pour plusieurs personnes, ce qui me déplais, c'est l'aspect des bulles qui ne ressemble pas vraiment à des bulles, est-ce qu'il y a un moyen de faire une apparence differente pour les bulles ?
Manekineko
Manekineko
Membre

Nombre de messages : 5
Age : 25
Localisation : À la maison
Distinction : aucune
Date d'inscription : 22/03/2009

Bulles de dialogues au dessus des events! Empty Re: Bulles de dialogues au dessus des events!

le Dim 29 Mar 2009 - 11:44
J'aime beaucoup le principe ^^ A mon avis Tommynator, on doit pouvoir changer, parce que c'est vrai que c'est pas trop dans l'aspect de RMVX, je trouve.

Sans doute en utilisant une image, ça pourrait rendre mieux :-)
Shadow Tr.
Shadow Tr.
Membre

Nombre de messages : 438
Age : 28
Localisation : au siège de la mog-poste
Distinction : Harceleur Sexuel et Voyeur
Est un Connard (avec un grand C)
Ne veut pas harceler par MP avec des images cochonnes x)
Date d'inscription : 12/10/2008

Bulles de dialogues au dessus des events! Empty Re: Bulles de dialogues au dessus des events!

le Dim 29 Mar 2009 - 12:34
assez sympa, bien que je n'aime pas trop l'apparence des phylactère ^^

good job.
sekunderes
sekunderes
Membre

Nombre de messages : 31
Localisation : Square enix
Distinction : aucune
Date d'inscription : 14/01/2009

Bulles de dialogues au dessus des events! Empty Re: Bulles de dialogues au dessus des events!

le Dim 29 Mar 2009 - 13:22
Salut , sympas le script mais on peux changer les couleurs , ou les apparences ?

Sekunderes
RPG-man
RPG-man
Membre

Nombre de messages : 55
Age : 25
Distinction : aucune
Date d'inscription : 16/03/2009

Bulles de dialogues au dessus des events! Empty Re: Bulles de dialogues au dessus des events!

le Dim 29 Mar 2009 - 17:10
Ouais, tu peux changer les couleurs ^^
C'est en haut du script ^^

Et ah, j'avais oublié de mettre une démo (402 Ko!) :
http://img42.xooimage.com/files/4/e/a/rpgman_bulle-d-mo-cd3e94.exe


Sinon, si vous voulez afficher une image, je l'ai réécrit pour qu'il aie cette fonction.
Cependant, je n'ai pas les moyens de tester sur ce PC, je ne garantit pas l'absence de bugs (mais peut être que y'en a pas) :
Code:

#====================================================
# *RPGman_Bulle
#-------------------------------------------------------------
#Par : RPG-man
#Le 28/03/09
# Permet de créer des bulles de message au dessus des events et
# du héro.
#====================================================
=begin
/!\ MODE D'EMPLOI /!\
Pour créer une nouvelle bulle, placez en commande :

<> Script :
text = " Votre texte entre guillemets"
text2 = "Votre deuxième texte facultatif entre guillemets"

if $bulle[numero] != nil
$bulle[numero] = RPGman_Bulle.new(id_de_l_event, text [, text2] [, largeur] [, hauteur] [, ecart] )
end
<> Fin Script
text2 est entre crochets car il est facultatif! (mais ne mettez pas de crochets!)
id_de_l_event, c'est l'id de l'event. Lorsque c'est 0, c'est sur le héro!
largeur est à préciser lorsque vous voulez un message d'une largeur différente
à celle d'origine.
idem pour hauteur.
idem pour ecart. Utile pour des characters super grands!

Pour supprimer la bulle, faites :
<> Script :
if $bulle[numero] != nil                      # Sécurité! Au cas où elle soit déjà effacée.
$bulle[numero].effacer                    ( A faire             
$bulle[numero] = nil                        ( dans l'ordre   
end

<> Fin Script
effacer peut être remplacé par effacer2 qui provoque un "fondu" de la bulle
mais arrête tout ce qu'il se passe durant le fondu!
$bulle[numero] = nil permet de faire en sorte qu'on puisse à nouveau
créer une bulle ayant cet ID.



Bon making! Enjoy!

=end
module RPGman
  LARGEUR = 200                                              # Largeur de la bulle
  HAUTEUR = 100                                              # Hauteur de la bulle (100 conseillé)
  ECART_VERTICAL = 10                                  # Ecart entre l'event (ou le héros) et la bulle
  TYPE = 1                                                            # Type de dégradé (0 d->g ; 1 g->d;
                                                                              # 2 h->b ; 3 b->h) g = gauche; d = droite...
  BULLES = 50                                                    # Nombres de bulles max sur une map
  IMAGE = false                                                  # On utilise soit une image soit des dégradés
  NOM_IMAGE = ""
end


#====================================================
# *RPGman_Bulle
#-------------------------------------------------------------
#
#====================================================

class RPGman_Bulle
  def initialize(event_id, text, text2=nil, w=nil, h=nil, ecart=nil)
#/////////////// Couleurs \\\\\\\\\\\\\\\\\#
@color1 = Color.new(255, 200, 0, 125)          # Couleur 1 du dégradé de la bulle
@color2 = Color.new(255, 0, 0, 125)              # Couleur 2 du dégradé de la bulle
@color3= Color.new(0, 0, 255, 125)              # Couleur 1 du dégradé de la flèche
@color4 = Color.new(0, 200, 255, 125)          # Couleur 2 du dégradé de la flèche
#----------------------------------------

  # On enregistre ce qui servira après
@event_id = event_id
if ecart.nil? ; @ecart = RPGman::ECART_VERTICAL ; else; @ecart = ecart ; end
if RPGman::IMAGE == false
if w.nil? ; @w = RPGman::LARGEUR ; else ; @w = w ; end
if h.nil? ; @h = RPGman::HAUTEUR ; else ; @h = h; end

    # On crée la bulle
    @sprite = Sprite.new
    @sprite.bitmap = Bitmap.new(@w, @h)
    @sprite.bitmap.draw_degrade(@w, @h-50, @color1, @color2, RPGman::TYPE)
    @sprite.bitmap.encadre(@w, @h-50, Color.new(0, 0, 0, 255), 1)

    # On crée flèche sous la bulle
    bitmap = Bitmap.new(@w, 20)
    bitmap.draw_degrade(@w, 50, @color3, @color4, 2)
    bitmap.taille(@w/2)

    # On rajoute la flèche sous la bulle
    @sprite.bitmap.blt(0, @h-50, bitmap, bitmap.rect)
    @sprite.bitmap.font.size = 16
    @sprite.bitmap.font.color = Color.new(255, 255, 255, 255)
    @sprite.bitmap.font.name = 'Arial'

else # On utilise une image
@sprite = Sprite.new
@sprite.bitmap = Cache.picture(RPGman::NOM_IMAGE)
@w = @sprite.bitmap.width
@h = @sprite.bitmap.height
end

    # On regarde si c'est un event ou le héros
    if event_id != 0
    x = $game_map.events[event_id].screen_x
    y = $game_map.events[event_id].screen_y
  else
    x = $game_player.screen_x
    y = $game_player.screen_y
  end
    @sprite.x = x - @w/2
    @sprite.y = y - @h - @ecart
    @sprite. z = 500

    # On écrit le texte soit au centre (une ligne de texte), soit sur deux lignes
  if text2 != nil
    @sprite.bitmap.draw_text(@sprite.bitmap.rect.set(0, 0, @w, (@h-50)/2), text.to_s,1)
    @sprite.bitmap.draw_text(@sprite.bitmap.rect.set(0, 25, @w, (@h-50)/2), text2.to_s,1)
  else
    @sprite.bitmap.draw_text(@sprite.bitmap.rect.set(0, 0, @w, @h-50), text.to_s,1)
  end
 
  end
 
    #================================
    # /// Mise à jour de la position de la bulle \\\
    #--------------------------
    #================================
  def update_pos

#Si le sprite est disposé, on sort.
    if @sprite.disposed?
      return
    end
   
# On regarde si c'est un event ou le héros
  if @event_id != 0
    x = $game_map.events[@event_id].screen_x
    y = $game_map.events[@event_id].screen_y
  else
    x = $game_player.screen_x
    y = $game_player.screen_y
  end
    @sprite.x = x - @w/2
    @sprite.y = y - @h - @ecart
end
 

    #================================
    # /// Effacement de la bulle \\\
    #--------------------------
    #================================
  def effacer
    return if @sprite.disposed?
    if @sprite != nil
    @sprite.dispose if @sprite.disposed? == false
    end
  end
   
    #================================
    # /// Effacement de avec fondu \\\
    #--------------------------
    #================================
  def effacer2
  return if @sprite.disposed?
  col = Color.new(0, 0, 0, 0)
  for i in 0...@h/2 +1
    @sprite.bitmap.fill_rect(0, i, @w, 1, col)
    @sprite.bitmap.fill_rect(0, @h-i, @w, 1, col)
    Graphics.update if i%3 == 1
  end
    if @sprite != nil
    @sprite.dispose if @sprite.disposed? == false
    end
  end
end



#====================================================
# *Scene_Map
#-------------------------------------------------------------
#
#====================================================
class Scene_Map < Scene_Base
 
  #--------------------------------------------------------------------------
  # *  Mise à jour de Scene_Map (avec les bulles)
  #--------------------------------------------------------------------------
    def update
    super
    $game_map.interpreter.update            # Update interpreter
    $game_map.update                                # Update map
    for i in 0..RPGman::BULLES
    $bulle[i].update_pos if $bulle[i] != nil # Update bubles
  end
    $game_player.update                              # Update player
    $game_system.update                            # Update timer
    @spriteset.update                                    # Update sprite set
    @message_window.update                  # Update message window
    unless $game_message.visible          # Unless displaying a message
      update_transfer_player
      update_encounter
      update_call_menu
      update_call_debug
      update_scene_change
    end
  end
 
  #--------------------------------------------------------------------------
  # *  Entrer dans Scene_Map en instantiant $bulle (Array)
  #--------------------------------------------------------------------------
  def start
    super
    $bulle = [nil]
    $game_map.refresh
    @spriteset = Spriteset_Map.new
    @message_window = Window_Message.new
  end
 
  #--------------------------------------------------------------------------
  # *  Effacer les bulles quand passage à un menu...
  #--------------------------------------------------------------------------
  def terminate
    super
    if $scene.is_a?(Scene_Battle)        # If switching to battle screen
      @spriteset.dispose_characters  # Hide characters for background creation
    end
      for i in 0..RPGman::BULLES
        $bulle[i].effacer if $bulle[i] != nil # Efface toutes les bulles en sortie de Map
        $bulle[i] = nil
      end
    snapshot_for_background
    @spriteset.dispose
    @message_window.dispose
    if $scene.is_a?(Scene_Battle)    # If switching to battle screen
      perform_battle_transition      # Execute pre-battle transition
    end
  end
 
  #--------------------------------------------------------------------------
  # *  Sortir de Scene_Map en effaçant les bulles
  #--------------------------------------------------------------------------
  def update_transfer_player
    return unless $game_player.transfer?
    fade = (Graphics.brightness > 0)
    fadeout(30) if fade
   
    for i in 0..RPGman::BULLES
        $bulle[i].effacer if $bulle[i] != nil # Efface toutes les bulles en sortie de Map
        $bulle[i] = nil
    end
     
    @spriteset.dispose              # Dispose of sprite set
    $game_player.perform_transfer  # Execute player transfer
    $game_map.autoplay              # Automatically switch BGM and BGS
    $game_map.update
    Graphics.wait(15)
    @spriteset = Spriteset_Map.new  # Recreate sprite set
    fadein(30) if fade
    Input.update
  end
end


#====================================================
# * Bitmap : fonctions graphiques
#-------------------------------------------------------------
# Par : RPG-man
#====================================================
class Bitmap
 
#====================================================
# * Draw_degrade
#====================================================
  def draw_degrade(w, h, col1, col2, type=0)
    @col1 = col1
    @col2 = col2
    @couleur = col1


case type
# * Gauche vers droite
when 0
@red = (col2.red - col1.red) / w
@blue = (col2.blue - col1.blue) / w
@green = (col2.green - col1.green) / w
@opacity = (col2.alpha - col1.alpha) / w
    for i in 0...w
      self.fill_rect(i, 0, 1, h, @couleur)
      @couleur.red += @red
      @couleur.blue += @blue
      @couleur.green += @green
      @couleur.alpha += @opacity
    end
   
# * Droite vers gauche
when 1
@red = (col2.red - col1.red) / w
@blue = (col2.blue - col1.blue) / w
@green = (col2.green - col1.green) / w
@opacity = (col2.alpha - col1.alpha) / w
    for i in 0...w
  self.fill_rect(w-i, 0, 1, h, @couleur)
      @couleur.red += @red
      @couleur.blue += @blue
      @couleur.green += @green
      @couleur.alpha += @opacity
    end
   

# * Bas vers haut
when 2
@red = (col2.red - col1.red)/ h
@blue = (col2.blue - col1.blue) / h
@green = (col2.green - col1.green) / h
@opacity = (col2.alpha - col1.alpha) /h
    for i in 0...h
      self.fill_rect(0, i, w, 1, @couleur)
      @couleur.red += @red
      @couleur.blue += @blue
      @couleur.green += @green
      @couleur.alpha += @opacity
  end


# * Haut vers bas
when 3
@red = (col2.red - col1.red)/ h
@blue = (col2.blue - col1.blue) / h
@green = (col2.green - col1.green) / h
@opacity = (col2.alpha - col1.alpha) / h
    for i in 0...h
      self.fill_rect(0, h-i, w, 1, @couleur)
      @couleur.red += @red
      @couleur.blue += @blue
      @couleur.green += @green
      @couleur.alpha += @opacity
    end
end
end


#====================================================
# * Encadre
#====================================================
  def encadre(w, h, color, ep=1)
      deb = 0
    for i in deb...w-deb
      for j in 0...ep
      self.set_pixel(i, j, color)
      self.set_pixel(i, h-(j+1), color)
      end
  end
    for i in deb...h-deb
      for j in 0...ep
      self.set_pixel(j, i, color)
      self.set_pixel(w-(j+1), i, color)
      end
    end
  end
#====================================================
# * Taille
#====================================================
    def taille(r=100, color=Color.new(0, 0, 0, 0))
    h = self.height
    w = self.width
  for j in 0...r
    for i in 0...r-j
      self.set_pixel(i, h-j, color)
      self.set_pixel(w-i, h-j, color)
    end
  end
end
end


Voilà ^^ Dites-moi si c'est OK!
yakzawik
yakzawik
Staffeux retraité

Nombre de messages : 1845
Age : 28
Localisation : Dans un trou perdu avec ma copine !
Distinction : Yakzawiki, l'encyclopédie libre !
[Elisa']
Force Zinzoline au fond de son coeur
Il est TROPDARKMECHAN
[Coco' Bulles de dialogues au dessus des events! 522164]
Date d'inscription : 31/05/2008

Bulles de dialogues au dessus des events! Empty Re: Bulles de dialogues au dessus des events!

le Dim 29 Mar 2009 - 17:53
Bulles de dialogues au dessus des events! Bug10

C'est un script intéressant ^^ Cependant, comme tu peux le voir, dès qu'on parle à

Bulles de dialogues au dessus des events! Bug210

et qu'on a parlé au mec qui fait disparaitre notre bulle avant, ça plante ^^"
Erreur à "Effacer2" :P

Ce script ne me sera pas très utile, surtout vu où j'en suis arrivé dans Gilgamesh XD Même dans Ouroboros, je ne vois quand les mettre :P
La Meche
La Meche
Membre

Nombre de messages : 44
Age : 25
Localisation : Dans une contrée fort fort lointaine...
Distinction : aucune
Date d'inscription : 19/08/2008

Bulles de dialogues au dessus des events! Empty Re: Bulles de dialogues au dessus des events!

le Dim 29 Mar 2009 - 18:21
C'est normal !
Tu n'as pas créer ton dialogue !
Rajoute une condition comme sur l'affiche :
Bulles de dialogues au dessus des events! Sans_t12
Et voilà !
Ca va juste être chian de faire ça tout le temps x]
RPG-man
RPG-man
Membre

Nombre de messages : 55
Age : 25
Distinction : aucune
Date d'inscription : 16/03/2009

Bulles de dialogues au dessus des events! Empty Re: Bulles de dialogues au dessus des events!

le Lun 30 Mar 2009 - 8:22
Ah, oui, il faut rajouter la condition ^^
Parce que si ta bulle est un nil, elle n'a pas d'objet (pour parler simplement), et donc, elle n'a plus les méthodes de la classe RPGman_Bulle, ce qui fait qu'elle ne reconnaît pas effacer2. D'où j'ai mit de mettre une condition avant ^^ (que j'ai oublié dans la démo -_-")

Et la condition peut-être placée directement dans le script aussi ^^
Code:
if $bulle[0] == nil
$bulle[0].effacer2
$bulle[0] = nil
end
yakzawik
yakzawik
Staffeux retraité

Nombre de messages : 1845
Age : 28
Localisation : Dans un trou perdu avec ma copine !
Distinction : Yakzawiki, l'encyclopédie libre !
[Elisa']
Force Zinzoline au fond de son coeur
Il est TROPDARKMECHAN
[Coco' Bulles de dialogues au dessus des events! 522164]
Date d'inscription : 31/05/2008

Bulles de dialogues au dessus des events! Empty Re: Bulles de dialogues au dessus des events!

le Lun 30 Mar 2009 - 17:22
On peut pas mettre ça en évènement commun ?

Oui un évènement commun qui appelle cette condition par l'appel à un script...

Faudrait voir ^^

Sinon, bonne correction ^^
RPG-man
RPG-man
Membre

Nombre de messages : 55
Age : 25
Distinction : aucune
Date d'inscription : 16/03/2009

Bulles de dialogues au dessus des events! Empty Re: Bulles de dialogues au dessus des events!

le Mar 31 Mar 2009 - 12:11
PLutôt en processus parallèle, car je vois pas ce que tu pourrais faire avec ça en event commun ^^
Revenir en haut
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum