- RPG-manMembre
- Nombre de messages : 55
Age : 30
Distinction : aucune
Date d'inscription : 16/03/2009
Bulles de dialogues au dessus des events!
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 :
Les instructions sont dans le script, à placer au dessus de main :
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" :
Dans update, juste après $game_map.update
Dans terminate, juste après
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 ^^
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 :
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
- 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:
- Code:
fadeout(30) if fade
- 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 ^^
- TommynatorMembre
- Nombre de messages : 25
Distinction : aucune
Date d'inscription : 07/02/2009
Re: Bulles de dialogues au dessus des events!
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 ?
- ManekinekoMembre
- Nombre de messages : 5
Age : 30
Localisation : À la maison
Distinction : aucune
Date d'inscription : 22/03/2009
Re: Bulles de dialogues au dessus des events!
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 :-)
Sans doute en utilisant une image, ça pourrait rendre mieux :-)
- Shadow Tr.Membre
- Nombre de messages : 438
Age : 33
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
Re: Bulles de dialogues au dessus des events!
Dim 29 Mar 2009 - 12:34
assez sympa, bien que je n'aime pas trop l'apparence des phylactère ^^
good job.
good job.
- sekunderesMembre
- Nombre de messages : 31
Localisation : Square enix
Distinction : aucune
Date d'inscription : 14/01/2009
Re: Bulles de dialogues au dessus des events!
Dim 29 Mar 2009 - 13:22
Salut , sympas le script mais on peux changer les couleurs , ou les apparences ?
Sekunderes
Sekunderes
- RPG-manMembre
- Nombre de messages : 55
Age : 30
Distinction : aucune
Date d'inscription : 16/03/2009
Re: Bulles de dialogues au dessus des events!
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) :
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
- yakzawikStaffeux retraité
- Nombre de messages : 1845
Age : 34
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' ]
Date d'inscription : 31/05/2008
Re: Bulles de dialogues au dessus des events!
Dim 29 Mar 2009 - 17:53
C'est un script intéressant ^^ Cependant, comme tu peux le voir, dès qu'on parle à
et qu'on a parlé au mec qui fait disparaitre notre bulle avant, ça plante ^^"
Erreur à "Effacer2"
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
- La MecheMembre
- Nombre de messages : 44
Age : 30
Localisation : Dans une contrée fort fort lointaine...
Distinction : aucune
Date d'inscription : 19/08/2008
Re: Bulles de dialogues au dessus des events!
Dim 29 Mar 2009 - 18:21
C'est normal !
Tu n'as pas créer ton dialogue !
Rajoute une condition comme sur l'affiche :
Et voilà !
Ca va juste être chian de faire ça tout le temps x]
Tu n'as pas créer ton dialogue !
Rajoute une condition comme sur l'affiche :
Et voilà !
Ca va juste être chian de faire ça tout le temps x]
- RPG-manMembre
- Nombre de messages : 55
Age : 30
Distinction : aucune
Date d'inscription : 16/03/2009
Re: Bulles de dialogues au dessus des events!
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 ^^
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
- yakzawikStaffeux retraité
- Nombre de messages : 1845
Age : 34
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' ]
Date d'inscription : 31/05/2008
Re: Bulles de dialogues au dessus des events!
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 ^^
Oui un évènement commun qui appelle cette condition par l'appel à un script...
Faudrait voir ^^
Sinon, bonne correction ^^
- RPG-manMembre
- Nombre de messages : 55
Age : 30
Distinction : aucune
Date d'inscription : 16/03/2009
Re: Bulles de dialogues au dessus des events!
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 ^^
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum