RPG Fusion
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.



 
AccueilPortailRechercherDernières imagesS'enregistrerConnexion
-21%
Le deal à ne pas rater :
LEGO® Icons 10329 Les Plantes Miniatures, Collection Botanique
39.59 € 49.99 €
Voir le deal

 

 Gestion avancée des messages (AMS R4)

Aller en bas 
AuteurMessage
Don Estebahn
Maître du Savoir
Maître du Savoir
Don Estebahn


Masculin
Nombre de messages : 2145
Age : 33
Jeux Préférés : Soul Reaver, Morrowind, Way of the Samurai
Date d'inscription : 18/02/2007

Gestion avancée des messages (AMS R4) Empty
MessageSujet: Gestion avancée des messages (AMS R4)   Gestion avancée des messages (AMS R4) EmptyLun 27 Aoû 2007, 15:16

Ce script est une petite merveille qui n'en finira plus de vous ravir confused.
Il permet à de faire à peu près tout avec les boîtes de dialogues, de l'intégration de facesets aux boîtes séparées pour afficher le nom du héros, de l'affichage d'à peu près tout ce que la base de données contient comme noms (armes, objets, héros, classes) et valeurs.

- Auteur : Dubealex (script original par XRXS scripter [des gars japonais] ; fonctionnalité code couleur hexadécimal par Phylomorphis ; traduction en Français des commentaires et du manuel par Fulmens)

- Screens :

Gestion avancée des messages (AMS R4) Sanstitresj8


- Utilisation :

Dans le script lui-même, de la ligne 53 à 80, il y a en vert les explications de Fulmens pour modifier police, taille de police, windowskin, place et taille de la name box... ce genre de petits détails, mais il est nécessaire de passer jeter un coup d'oeil pour modifier le plus important (par exemple la police et sa taille, le windowskin) puisque le script ne se réfère pas à ce que vous avez choisi dans la database ou dans le script Main.

Sinon, voici toutes les fonctionnalités possibles (le code est à écrire dans le message lui même et se limitent à lui seul) :

    Changer la police d'écriture utilisée dans la boîte de messages : \t[Nom_police] (exemple : \t[Comic Sans MS]) ;
    Afficher le nom de la classe d'un héros : \Class[Numéro du héros dans la database] (exemple : \Class[1] pour le premier héros de la liste) ;
    Afficher le prix d'un objet : \Price[Numéro de l'objet dans la database] (exemple : \Price[25] pour le 25ème objet de la liste) ;
    Utiliser des codes de coleur HTML : \c[#000000] (exemple : \c[#FF0000] pour la couleur rouge) ;
    Afficher un faceset dans le message (l'image doit etre au format .png de dimension
    96x96 stoqué dans le dossier "Graphics->Picture") : \f[Nom de l'image] (exemple : \f[Don] pour le faceset qui a "Don.png" pour nom) ;

    Afficher un nom au dessus de la boîte de dialogue : \Name[Nom désiré] (exemple : \Name[Don] pour affichr Don comme sur le screen plus haut - marche aussi avec la commande \N[Numéro du héros dans la database]) ;
    Mettre la fenêtre au dessus d'un event ou du héros : \P[Event ID] (exemple : \P[18] pour que la fenêtre se place au dessus du 18ème event de la carte ; l'ID du héros est 0) ;
    Montrer le contenu d'une variable ou le nom d'un élément de la base de donnée : \V[Numéro de la variable], rajouter S, I, A, W devant le chiffre pour montrer respectivement un nom de technique, objet, armure et arme (exemple : \v[i1] pour afficher le nom du premier objet de la database) ;
    Changer la couleur du texte : \C[Nombre de la couleur dans le script "Window_Base"] (exemple : \C[7] pour du gris) ;
    Montrer l'argent du joueur ( dans une fenêtre à l'extérieur du message, comme pour un magasin ) : \G ;
    Modifier la vitesse du texte : \S[Nombre entre 0 et 19] (exemple : \S[0] très rapide, \s[19] très lent) ;
    Modifier la taille de la police : \H[Numéro entre 6 et 36] (exemple : \h[36] pour afficher la police en très grand) ;
    Modifier la vitesse du texte : \S[Nombre entre 0 et 19] (exemple : \S[0] très rapide, \s[19] très lent) ;
    Modifier l'opacité du texte : \o[Nombre entre 0 et 255] (exemple : \o[255] pour l'opacité maxi) ;
    Effet "bruit de frappe" à chaque lettre : \a[Nom du fichier] (exemple : \a[Typing] si votre son s'appelle Typing ; \a[] pour enlever l'effet audio, conseillé après chaque message) ;
    Marquer une pause dans le message : \| ou \. (exemple : \| pause de 1 seconde, \. pause de 0,25 secondes) ;
    Effet "lettre par lettre" : \> pour activer, \< pour arrêter ;
    Forcer la fenêtre à se fermer : \~ ;
    Montrer une image nommée Sample.png
    venant de "Graphic -> Gaigi" : \e[Nombre entre 0 et 1] (\e[0] pour afficher l'image en haut à gauche, \e[1] pour la droite) ;

    Mettre le texte en retrait : \i ;
    Montrer le nom d'un héros ou d'un monstre : Respectivement \N[Numéro du héros dans la database] ou \M[Numéro du monstre dans la database] (exemple : \N[2] pour le deuxième héros de la database, \M[10] pour le dixième monstre de la database);
    Attendre la pression de la touche action pour continuer le déroulement du texte : \! ;

    Ajout par Swype :

    Montrer le nom de la map dans la boîte de dialogues : \Map ;
    Afficher un nombre au hasard : \Rand(#) ;
    Afficher une icone dans le texte (doit être présente dans Graphics/Icon : \Rand(#) ;
    Activer ou désactiver l'italique dans le texte : \I ;



Et zou, une modification par Horus.

    Ajout de trois fonctionnalités :

    Afficher l'argent possédé : \O ;
    Afficher l'argent possédé, suivi du nom de la monnaie : \M ;
    Afficher le nombre de pas effectués : \P ;
[/list]


Dernière édition par Don Estebahn le Dim 06 Juil 2008, 22:07, édité 4 fois
Revenir en haut Aller en bas
Don Estebahn
Maître du Savoir
Maître du Savoir
Don Estebahn


Masculin
Nombre de messages : 2145
Age : 33
Jeux Préférés : Soul Reaver, Morrowind, Way of the Samurai
Date d'inscription : 18/02/2007

Gestion avancée des messages (AMS R4) Empty
MessageSujet: Re: Gestion avancée des messages (AMS R4)   Gestion avancée des messages (AMS R4) EmptyLun 27 Aoû 2007, 15:17

- Installation :

Insérez un nouveau script au dessus de Main et collez-y le script suivant :

Code:
#===================================================
# ■ AMS - Advanced Message scrîpt - R4 [Update #2]
#===================================================
# Pour plus d'infos et de mises a jour, rendez vous sur :
# www.dubealex.com (Creation Asylum)
#
# Edition, débuggage et amélioration : Dubealex
# Amélioration par Horus (ajout affichage monnaie/nombre de pas dans
# les messages)
# Scrîpt original par : XRXS scripter (Jap Dudes)
# Fonctionnalité Code Couleur Hexadécimal : Phylomorphis
# Traduction en Français (demo, commentaires, manuel) : Fulmens
#
# Remerciements :
# Rabu, pour avoir permis l'utilisation des facesets dans un projet crypté
#
# Pour trouver tous mes ajouts, recherchez : #NEW
# Pour configurer le bouton pour passer le texte : #SKIP_TEXT_CODE
#
# 18 Mai 2005
#===================================================

LETTER_BY_LETTER_MODE = true # Valeur par défaut du mode lettre par lettre
# (ON ou OFF)

#===================================================
# ▼ CLASS AMS Begins
#===================================================
class AMS

attr_accessor :name_box_x_offset
attr_accessor :name_box_y_offset
attr_accessor :font_type
attr_accessor :name_font_type
attr_accessor :font_size
attr_accessor :name_font_size
attr_accessor :message_box_opacity
attr_accessor :name_box_skin
attr_accessor :name_box_text_color
attr_accessor :message_box_text_color
attr_accessor :message_box_skin
attr_accessor :name_box_width
attr_accessor :name_box_height
attr_accessor :message_width
attr_accessor :message_height
attr_accessor :message_x
attr_accessor :message_y_bottom
attr_accessor :message_y_middle
attr_accessor :message_y_top
attr_accessor :event_message_x_ofset
attr_accessor :event_message_y_ofset

def initialize

@name_box_x_offset = 0 #Position en X de la name box. defaut= 0
@name_box_y_offset = -10 #Position en Y de la name box. defaut= -10
#/!\ le réglage se fait par rapport à la boîte de dialogue
@name_box_width = 8 #Choix de la largeur de la name box. defaut= 8
@name_box_height = 26 #Choix de la hauteur de la name box. defaut= 26

@font_type = "Arial" #Choix de la police (Sensible à la casse) pour les messages
@name_font_type = "Arial" #Choix de la police (Sensible à la casse) pour la name box
@font_size = 28 #Choix de la taille par defaut de la police pour les messages
@name_font_size = 28 #Choix de la taille par defaut de la police pour la name box
@name_box_text_color=0#Choix de la couleur du texte de la name box
@message_box_text_color=0 #Choix de la couleur du texte des messages

@message_box_opacity = 160 #Choix de l'opacité de la boîte de dialogue. Defaut=160
@message_box_skin = "001-Blue01" #Choix de la windowskin pour la boîte de dialogue
@name_box_skin = "001-Blue01" #Choix de la windowskin pour la name box

@message_width = 480 #Choix de la largeur de la boîte de dialogue. Defaut=480
@message_height = 160 #Choix de la hauteur de la boîte de dialogue. Defaut=160
@message_x = 80 #Choix de la position en X de la boîte de dialogue. Defaut=80
@message_y_bottom = 304 #Choix de la position basse en Y de la boîte de dialogue. Defaut=304
@message_y_middle = 160 #Choix de la position moyenne en Y de la boîte de dialogue. Defaut=160
@message_y_top = 16 #Choix de la position haute en Y de la boîte de dialogue. Defaut=16

@event_message_x_ofset = 0 #Choix de la position en X de la boite de dialogue
#(quand celle ci est affichée au dessus d'un event) Defaut=0
@event_message_y_ofset = 48 #Choix de la position en Y de la boîte de dialogue.
#(quand celle ci est affichée au dessus d'un event) Defaut=48

end
end
#===================================================
# ▲ CLASS AMS Ends
#===================================================


#===================================================
# ▼ Class Window_Message Begins
#===================================================
class Window_Message < Window_Selectable

alias xrxs9_initialize initialize

def initialize

@alex_skip = false

xrxs9_initialize

if $soundname_on_speak == nil then
$soundname_on_speak = ""
end

$gaiji_file = "./Graphics/Gaiji/sample.png"

if FileTest.exist?($gaiji_file)
@gaiji_cache = Bitmap.new($gaiji_file)
else
@gaigi_cache = nil
end
@opacity_text_buf = Bitmap.new(32, 32)
end


#--------------------------------------------------------------------------

alias xrxs9_terminate_message terminate_message

def terminate_message

if @name_window_frame != nil
@name_window_frame.dispose
@name_window_frame = nil
end

if @name_window_text != nil
@name_window_text.dispose
@name_window_text = nil
end
xrxs9_terminate_message
end

#--------------------------------------------------------------------------

def refresh

self.contents.clear
self.contents.font.color = text_color($ams.message_box_text_color)
self.contents.font.name = $ams.font_type
self.contents.font.size = $ams.font_size
self.windowskin = RPG::Cache.windowskin($ams.message_box_skin)
@x = @y = @max_x = @max_y = @indent = @lines = 0
@face_indent = 0
@opacity = 255
@cursor_width = 0
@write_speed = 0
@write_wait = 0
@mid_stop = false
@face_file = nil
@popchar = -2

if $game_temp.choice_start == 0
@x = 8
end

if $game_temp.message_text != nil
@now_text = $game_temp.message_text
if (/\A\\[Ff]\[(.+?)\]/.match(@now_text))!=nil then
@face_file = $1 + ".png"
@x = @face_indent = 128
if FileTest.exist?("Graphics/Pictures/" + $1 + ".png")
self.contents.blt(16, 16, RPG::Cache.picture(@face_file), Rect.new(0, 0, 96, 96))
end
@now_text.gsub!(/\\[Ff]\[(.*?)\]/) { "" }
end
# Code pour afficher dans le message l'or possédé
@now_text.gsub! (/\\[Oo]/) do
$game_party.gold.to_s
end
 
# Code pour afficher dans le message l'or possédé et la monnaie
@now_text.gsub! (/\\[Mm]/) do
$game_party.gold.to_s + " " + $data_system.words.gold
end

# Code pour afficher dans le message les pas effectués
@now_text.gsub! (/\\[Pp]/) do
$game_party.steps.to_s
end
begin
last_text = @now_text.clone
@now_text.gsub!(/\\[Vv]\[([IiWwAaSs]?)([0-9]+)\]/) { convart_value($1, $2.to_i) }
end until @now_text == last_text
@now_text.gsub!(/\\[Nn]\[([0-9]+)\]/) do
$game_actors[$1.to_i] != nil ? $game_actors[$1.to_i].name : ""
end

#NEW
#Dubealex's Stop Skip Text ON-OFF
@now_text.gsub!(/\\[%]/) { "\100" }
#End new command

#NEW
#Dubealex's Show Monster Name Feature
@now_text.gsub!(/\\[Mm]\[([0-9]+)\]/) do
$data_enemies[$1.to_i] != nil ? $data_enemies[$1.to_i].name : ""
end
#End new command

#NEW
#Dubealex's Show Item Price Feature
@now_text.gsub!(/\\[Pp]rice\[([0-9]+)\]/) do
$data_items[$1.to_i] != nil ? $data_items[$1.to_i].price : ""
end
#End new command

#NEW
#Dubealex's Show Hero Class Name Feature
@now_text.gsub!(/\\[Cc]lass\[([0-9]+)\]/) do
$data_classes[$data_actors[$1.to_i].class_id] != nil ? $data_classes[$data_actors[$1.to_i].class_id].name : ""
end
#End new command

#NEW
#Dubealex's Show Current Map Name Feature
@now_text.gsub!(/\\[Mm]ap/) do
$game_map.name != nil ? $game_map.name : ""
end
#End new command

#NEW
#Dubealex's Choose Name Box Text Color
@now_text.gsub!(/\\[Zz]\[([0-9]+)\]/) do
$ams.name_box_text_color=$1.to_i
@now_text.sub!(/\\[Zz]\[([0-9]+)\]/) { "" }
end
#End new command

name_window_set = false
if (/\\[Nn]ame\[(.+?)\]/.match(@now_text)) != nil
name_window_set = true
name_text = $1
@now_text.sub!(/\\[Nn]ame\[(.*?)\]/) { "" }
end

if (/\\[Pp]\[([-1,0-9]+)\]/.match(@now_text))!=nil then
@popchar = $1.to_i
if @popchar == -1
@x = @indent = 48
@y = 4
end
@now_text.gsub!(/\\[Pp]\[([-1,0-9]+)\]/) { "" }
end

@max_choice_x = 0
if @popchar >= 0
@text_save = @now_text.clone
@max_x = 0
@max_y = 4
for i in 0..3
line = @now_text.split(/\n/)[3-i]
@max_y -= 1 if line == nil and @max_y <= 4-i
next if line == nil
line.gsub!(/\\\w\[(\w+)\]/) { "" }
cx = contents.text_size(line).width
@max_x = cx if cx > @max_x
if i >= $game_temp.choice_start
@max_choice_x = cx if cx > @max_choice_x
end
end
self.width = @max_x + 32 + @face_indent
self.height = (@max_y - 1) * 32 + 64
@max_choice_x -= 68
@max_choice_x -= @face_indent*216/128
else
@max_x = self.width - 32 - @face_indent
for i in 0..3
line = @now_text.split(/\n/)[i]
next if line == nil
line.gsub!(/\\\w\[(\w+)\]/) { "" }
cx = contents.text_size(line).width
if i >= $game_temp.choice_start
@max_choice_x = cx if cx > @max_choice_x
end
end
@max_choice_x += 8
end
@cursor_width = 0
@now_text.gsub!(/\\\\/) { "\000" }
@now_text.gsub!(/\\[Cc]\[([0123456789ABCDEF#]+)\]/) { "\001[#{$1}]" }
@now_text.gsub!(/\\[Gg]/) { "\002" }
@now_text.gsub!(/\\[Ss]\[([0-9]+)\]/) { "\003[#{$1}]" }
@now_text.gsub!(/\\[Aa]\[(.*?)\]/) { "\004[#{$1}]" }

#NEW
#Dubealex's Permanent Color Change
@now_text.gsub!(/\\[Cc]olor\[([0-9]+)\]/) do
$ams.message_box_text_color= $1.to_i
@now_text.sub!(/\\[Cc]\[([0-9]+)\]/) { "" }
end
#End of new command

#NEW
#Dubealex's Font Change Feature
@now_text.gsub(/\\[Tt]\[(.*?)\]/) do
buftxt = $1.to_s
$ams.font_type = buftxt
@now_text.sub!(/\\[Tt]\[(.*?)\]/) { "" }
end
#End of new command

@now_text.gsub!(/\\[.]/) { "\005" }
@now_text.gsub!(/\\[|]/) { "\006" }
@now_text.gsub!(/\\[>]/) { "\016" }
@now_text.gsub!(/\\[<]/) { "\017" }
@now_text.gsub!(/\\[!]/) { "\020" }
@now_text.gsub!(/\\[~]/) { "\021" }
@now_text.gsub!(/\\[Ee]\[([0-9]+)\]/) { "\022[#{$1}]" }
@now_text.gsub!(/\\[Ii]/) { "\023" }
@now_text.gsub!(/\\[Oo]\[([0-9]+)\]/) { "\024[#{$1}]" }
@now_text.gsub!(/\\[Hh]\[([0-9]+)\]/) { "\025[#{$1}]" }
@now_text.gsub!(/\\[Bb]\[([0-9]+)\]/) { "\026[#{$1}]" }
@now_text.gsub!(/\\[Rr]\[(.*?)\]/) { "\027[#{$1}]" }

reset_window

if name_window_set
color=$ams.name_box_text_color
off_x = $ams.name_box_x_offset
off_y = $ams.name_box_y_offset
space = 2
x = self.x + off_x - space / 2
y = self.y + off_y - space / 2
w = self.contents.text_size(name_text).width + $ams.name_box_width + space
h = $ams.name_box_height + space
@name_window_frame = Window_Frame.new(x, y, w, h)
@name_window_frame.z = self.z + 1
x = self.x + off_x + 4
y = self.y + off_y
@name_window_text = Air_Text.new(x, y, name_text, color)
@name_window_text.z = self.z + 2
end
end

reset_window

if $game_temp.choice_max > 0
@item_max = $game_temp.choice_max
self.active = true
self.index = 0
end

if $game_temp.num_input_variable_id > 0
digits_max = $game_temp.num_input_digits_max
number = $game_variables[$game_temp.num_input_variable_id]
@input_number_window = Window_InputNumber.new(digits_max)
@input_number_window.number = number
@input_number_window.x = self.x + 8
@input_number_window.y = self.y + $game_temp.num_input_start * 32
end
end

#--------------------------------------------------------------------------

def update

super

if @fade_in
self.contents_opacity += 24
if @input_number_window != nil
@input_number_window.contents_opacity += 24
end
if self.contents_opacity == 255
@fade_in = false
end
return
end
@now_text = nil if @now_text == ""

if @now_text != nil and @mid_stop == false
if @write_wait > 0
@write_wait -= 1
return
end
text_not_skip = LETTER_BY_LETTER_MODE
while true
@max_x = @x if @max_x < @x
@max_y = @y if @max_y < @y
if (c = @now_text.slice!(/./m)) != nil
if c == "\000"
c = "\\"
end

if c == "\001"
@now_text.sub!(/\[([0123456789ABCDEF#]+)\]/, "")
temp_color = $1
color = temp_color.to_i
leading_x = temp_color.to_s.slice!(/./m)
if leading_x == "#"
self.contents.font.color = hex_color(temp_color)
next
end
if color >= 0 and color <= 7
self.contents.font.color = text_color(color)
end
next
end

if c == "\002"
if @gold_window == nil and @popchar <= 0
@gold_window = Window_Gold.new
@gold_window.x = 560 - @gold_window.width
if $game_temp.in_battle
@gold_window.y = 192
else
@gold_window.y = self.y >= 128 ? 32 : 384
end
@gold_window.opacity = self.opacity
@gold_window.back_opacity = self.back_opacity
end
c = ""
end

if c == "\003"
@now_text.sub!(/\[([0-9]+)\]/, "")
speed = $1.to_i
if speed >= 0 and speed <= 19
@write_speed = speed
end
c = ""
end

if c == "\004"
@now_text.sub!(/\[(.*?)\]/, "")
buftxt = $1.dup.to_s
if buftxt.match(/\//) == nil and buftxt != "" then
$soundname_on_speak = "Audio/SE/" + buftxt
else
$soundname_on_speak = buftxt.dup
end
c = ""
elsif c == "\004"
c = ""
end

if c == "\005"
@write_wait += 5
c = ""
end

if c == "\006"
@write_wait += 20
c = ""
end

if c == "\016"
text_not_skip = false
c = ""
end

if c == "\017"
text_not_skip = true
c = ""
end

if c == "\020"
@mid_stop = true
c = ""
end

if c == "\021"
terminate_message
return
end

if c == "\023"
@indent = @x
c = ""
end

if c == "\024"
@now_text.sub!(/\[([0-9]+)\]/, "")
@opacity = $1.to_i
color = self.contents.font.color
self.contents.font.name = $ams.font_type
self.contents.font.size = $ams.font_size
self.contents.font.color = Color.new(color.red, color.green, color.blue, color.alpha * @opacity / 255)
c = ""
end

if c == "\025"
@now_text.sub!(/\[([0-9]+)\]/, "")
self.contents.font.size = [[$1.to_i, 6].max, 32].min
c = ""
end

if c == "\026"
@now_text.sub!(/\[([0-9]+)\]/, "")
@x += $1.to_i
c = ""
end

if c == "\027"
@now_text.sub!(/\[(.*?)\]/, "")
@x += ruby_draw_text_shadow(self.contents, @x, @y * line_height + (line_height - self.contents.font.size), $1, @opacity)
if $soundname_on_speak != ""
Audio.se_play($soundname_on_speak)
end
c = ""
end

if c == "\030"
@now_text.sub!(/\[(.*?)\]/, "")
self.contents.blt(@x , @y * line_height + 8, RPG::Cache.icon($1), Rect.new(0, 0, 24, 24))
if $soundname_on_speak != ""
Audio.se_play($soundname_on_speak)
end
@x += 24
c = ""
end

if c == "\n"
@lines += 1
@y += 1
@x = 0 + @indent + @face_indent
if @lines >= $game_temp.choice_start
@x = 8 + @indent + @face_indent
@cursor_width = @max_choice_x
end
c = ""
end

if c == "\022"
@now_text.sub!(/\[([0-9]+)\]/, "")
@x += gaiji_draw(4 + @x, @y * line_height + (line_height - self.contents.font.size), $1.to_i)
c = ""
end

#NEW
#Dubealex's Text Skip On/OFF Command
if c == "\100"
if @alex_skip==false
@alex_skip=true
else
@alex_skip=false
end
c = ""
end
#end of new command

if c != ""
self.contents.draw_text(0+@x, 32 * @y, 40, 32, c)
@x += self.contents.text_size(c).width
if $soundname_on_speak != "" then
Audio.se_play($soundname_on_speak)
end
end



Dernière édition par Don Estebahn le Dim 06 Juil 2008, 22:02, édité 2 fois
Revenir en haut Aller en bas
Don Estebahn
Maître du Savoir
Maître du Savoir
Don Estebahn


Masculin
Nombre de messages : 2145
Age : 33
Jeux Préférés : Soul Reaver, Morrowind, Way of the Samurai
Date d'inscription : 18/02/2007

Gestion avancée des messages (AMS R4) Empty
MessageSujet: Re: Gestion avancée des messages (AMS R4)   Gestion avancée des messages (AMS R4) EmptyLun 27 Aoû 2007, 15:18

Suite et fin du code :

Code:
#SKIP_TEXT_CODE

# B = Escape, 0 (Clavier numérique), X
# C = Entrée, Espace et C
# A = Shift, Z

if Input.press?(Input::C) # <-- Changer la valeur de la touche sur cette ligne
if @alex_skip==false
text_not_skip = false
end
end
else
text_not_skip = true
break
end

if text_not_skip
break
end
end
@write_wait += @write_speed
return
end

if @input_number_window != nil
@input_number_window.update
if Input.trigger?(Input::C)
$game_system.se_play($data_system.decision_se)
$game_variables[$game_temp.num_input_variable_id] =
@input_number_window.number
$game_map.need_refresh = true
@input_number_window.dispose
@input_number_window = nil
terminate_message
end
return
end

if @contents_showing
if $game_temp.choice_max == 0
self.pause = true
end

if Input.trigger?(Input::B)
if $game_temp.choice_max > 0 and $game_temp.choice_cancel_type > 0
$game_system.se_play($data_system.cancel_se)
$game_temp.choice_proc.call($game_temp.choice_cancel_type - 1)
terminate_message
end
end

if Input.trigger?(Input::C)
if $game_temp.choice_max > 0
$game_system.se_play($data_system.decision_se)
$game_temp.choice_proc.call(self.index)
end
if @mid_stop
@mid_stop = false
return
else
terminate_message
end
end
return
end

if @fade_out == false and $game_temp.message_text != nil
@contents_showing = true
$game_temp.message_window_showing = true
refresh
Graphics.frame_reset
self.visible = true
self.contents_opacity = 0
if @input_number_window != nil
@input_number_window.contents_opacity = 0
end
@fade_in = true
return
end

if self.visible
@fade_out = true
self.opacity -= 48
if self.opacity == 0
self.visible = false
@fade_out = false
$game_temp.message_window_showing = false
end
return
end
end

#--------------------------------------------------------------------------

def get_character(parameter)

case parameter
when 0
return $game_player
else
events = $game_map.events
return events == nil ? nil : events[parameter]
end
end

#--------------------------------------------------------------------------

def reset_window

#MESSAGE_SIZE
#MESSAGE_POSITION

if @popchar >= 0
events = $game_map.events
if events != nil
character = get_character(@popchar)
x = [[character.screen_x - $ams.event_message_x_ofset - self.width / 2, 4].max, 636 - self.width].min
y = [[character.screen_y - $ams.event_message_y_ofset - self.height, 4].max, 476 - self.height].min
self.x = x
self.y = y
end
elsif @popchar == -1
self.x = -4
self.y = -4
self.width = 648
self.height = 488
else
if $game_temp.in_battle
self.y = 16
else
case $game_system.message_position
when 0
self.y = $ams.message_y_top
when 1
self.y = $ams.message_y_middle
when 2
self.y = $ams.message_y_bottom
end
self.x = $ams.message_x
if @face_file == nil
self.width = $ams.message_width
self.x = $ams.message_x
else
if self.width <= 600
self.width = 600
self.x -=60
end
end
self.height = $ams.message_height
end
end
self.contents = Bitmap.new(self.width - 32, self.height - 32)
self.contents.font.color = text_color($ams.message_box_text_color)
self.contents.font.name = $ams.font_type
self.contents.font.size = $ams.font_size
if @face_file != nil
self.contents.blt(16, 16, RPG::Cache.picture(@face_file), Rect.new(0, 0, 96, 96))
end
if @popchar == -1
self.opacity = 255
self.back_opacity = 0
elsif $game_system.message_frame == 0
self.opacity = 255
self.back_opacity = $ams.message_box_opacity
else
self.opacity = 0
self.back_opacity = $ams.message_box_opacity
end
end

#--------------------------------------------------------------------------

def gaiji_draw(x, y, num)

if @gaiji_cache == nil
return 0
else
if @gaiji_cache.width < num * 24
return 0
end

if self.contents.font.size >= 20 and self.contents.font.size <= 24
size = 24
else
size = self.contents.font.size * 100 * 24 / 2200
end

self.contents.stretch_blt(Rect.new(x, y, size, size), @gaiji_cache, Rect.new(num * 24, 0, 24, 24))

if $soundname_on_speak != "" then
Audio.se_play($soundname_on_speak)
end
return size
end
end

#--------------------------------------------------------------------------

def line_height
return 32

if self.contents.font.size >= 20 and self.contents.font.size <= 24
return 32
else
return self.contents.font.size * 15 / 10
end
end

#--------------------------------------------------------------------------

def ruby_draw_text_shadow(target, x, y, str,opacity)

sizeback = target.font.size
target.font.size * 3 / 2 > 32 ? rubysize = 32 - target.font.size : rubysize = target.font.size / 2
rubysize = [rubysize, 6].max
opacity = [[opacity, 0].max, 255].min
split_s = str.split(/,/)
split_s[0] == nil ? split_s[0] = "" : nil
split_s[1] == nil ? split_s[1] = "" : nil

height = sizeback + rubysize
width = target.text_size(split_s[0]).width

target.font.size = rubysize
ruby_width = target.text_size(split_s[1]).width
target.font.size = sizeback

buf_width = [target.text_size(split_s[0]).width, ruby_width].max

width - ruby_width != 0 ? sub_x = (width - ruby_width) / 2 : sub_x = 0

if opacity == 255
target.font.size = rubysize
target.draw_text(x + sub_x, y - target.font.size, target.text_size(split_s[1]).width, target.font.size, split_s[1])
target.font.size = sizeback
target.draw_text(x, y, width, target.font.size, split_s[0])
return width
else
if @opacity_text_buf.width < buf_width or @opacity_text_buf.height < height
@opacity_text_buf.dispose
@opacity_text_buf = Bitmap.new(buf_width, height)
else
@opacity_text_buf.clear
end
@opacity_text_buf.font.size = rubysize
@opacity_text_buf.draw_text(0 , 0, buf_width, rubysize, split_s[1], 1)
@opacity_text_buf.font.size = sizeback
@opacity_text_buf.draw_text(0 , rubysize, buf_width, sizeback, split_s[0], 1)
if sub_x >= 0
target.blt(x, y - rubysize, @opacity_text_buf, Rect.new(0, 0, buf_width, height), opacity)
else
target.blt(x + sub_x, y - rubysize, @opacity_text_buf, Rect.new(0, 0, buf_width, height), opacity)
end
return width
end
end

#--------------------------------------------------------------------------

def convart_value(option, index)
option == nil ? option = "" : nil
option.downcase!

case option
when "i"
unless $data_items[index].name == nil
r = sprintf("\030[%s]%s", $data_items[index].icon_name, $data_items[index].name)
end
when "w"
unless $data_weapons[index].name == nil
r = sprintf("\030[%s]%s", $data_weapons[index].icon_name, $data_weapons[index].name)
end
when "a"
unless $data_armors[index].name == nil
r = sprintf("\030[%s]%s", $data_armors[index].icon_name, $data_armors[index].name)
end
when "s"
unless $data_skills[index].name == nil
r = sprintf("\030[%s]%s", $data_skills[index].icon_name, $data_skills[index].name)
end
else
r = $game_variables[index]
end

r == nil ? r = "" : nil
return r
end

#--------------------------------------------------------------------------

def dispose
terminate_message

if @gaiji_cache != nil
unless @gaiji_cache.disposed?
@gaiji_cache.dispose
end
end

unless @opacity_text_buf.disposed?
@opacity_text_buf.dispose
end

$game_temp.message_window_showing = false
if @input_number_window != nil
@input_number_window.dispose
end
super
end

#--------------------------------------------------------------------------

def update_cursor_rect
if @index >= 0
n = $game_temp.choice_start + @index
self.cursor_rect.set(8 + @indent + @face_indent, n * 32, @cursor_width, 32)
else
self.cursor_rect.empty
end
end
end
#=========================================
# ▲ CLASS Window_Message Ends
#=========================================


#=========================================
# ▼ Class Window_Frame Begins
#=========================================
class Window_Frame < Window_Base

def initialize(x, y, width, height)
super(x, y, width, height)
self.windowskin = RPG::Cache.windowskin($ams.name_box_skin)
self.contents = nil
end

#--------------------------------------------------------------------------

def dispose
super
end
end
#=========================================
# ▲ CLASS Window_Frame Ends
#=========================================


#=========================================
# ▼ CLASS Game_Map Additional Code Begins
#=========================================
class Game_Map

#Dubealex's Addition (from XRXS) to show Map Name on screen
def name
$map_infos[@map_id]
end
end
#=========================================
# ▲ CLASS Game_Map Additional Code Ends
#=========================================


#=========================================
# ▼ CLASS Scene_Title Additional Code Begins
#=========================================
class Scene_Title

#Dubealex's Addition (from XRXS) to show Map Name on screen
$map_infos = load_data("Data/MapInfos.rxdata")
for key in $map_infos.keys
$map_infos[key] = $map_infos[key].name
end

#Dubealex's addition to save data from the AMS in the save files
$ams = AMS.new

end
#=========================================
# ▲ CLASS Scene_Title Additional Code Ends
#=========================================


#=========================================
# ▼ CLASS Window_Base Additional Code Begins
#=========================================
class Window_Base < Window

#Dubealex Addition (from Phylomorphis) to use HTML Hex Code Colors
def hex_color(string)
red = 0
green = 0
blue = 0
if string.size != 6
print("Hex strings must be six characters long.")
print("White text will be used.")
return Color.new(255, 255, 255, 255)
end
for i in 1..6
s = string.slice!(/./m)
if s == "#"
print("Hex color string may not contain the \"#\" character.")
print("White text will be used.")
return Color.new(255, 255, 255, 255)
end
value = hex_convert(s)
if value == -1
print("Error converting hex value.")
print("White text will be used.")
return Color.new(255, 255, 255, 255)
end
case i
when 1
red += value * 16
when 2
red += value
when 3
green += value * 16
when 4
green += value
when 5
blue += value * 16
when 6
blue += value
end
end
return Color.new(red, green, blue, 255)
end

#--------------------------------------------------------------------------

def hex_convert(character)
case character
when "0"
return 0
when "1"
return 1
when "2"
return 2
when "3"
return 3
when "4"
return 4
when "5"
return 5
when "6"
return 6
when "7"
return 7
when "8"
return 8
when "9"
return 9
when "A"
return 10
when "B"
return 11
when "C"
return 12
when "D"
return 13
when "E"
return 14
when "F"
return 15
end
return -1
end
end
#=========================================
# ▲ CLASS Window_Base Additional Code Ends
#=========================================


#=========================================
# ▼ Class Air_Text Begins
#=========================================
class Air_Text < Window_Base

def initialize(x, y, designate_text, color=0)

super(x-16, y-16, 32 + designate_text.size * 12, 56)
self.opacity = 0
self.back_opacity = 0
self.contents = Bitmap.new(self.width - 32, self.height - 32)
w = self.contents.width
h = self.contents.height
self.contents.font.name = $ams.name_font_type
self.contents.font.size = $ams.name_font_size
self.contents.font.color = text_color(color)
self.contents.draw_text(0, 0, w, h, designate_text)
end

#--------------------------------------------------------------------------

def dispose
self.contents.clear
super
end
end
#==========================================
# ▲ CLASS Air_Text Ends
#==========================================


#===================================================
# ▼ CLASS Scene_Save Additional Code Begins
#===================================================
class Scene_Save < Scene_File

alias ams_original_write_save_data write_save_data

def write_save_data(file)
ams_original_write_save_data(file)
Marshal.dump($ams, file)
end

end
#===================================================
# ▲ CLASS Scene_Save Additional Code Ends
#===================================================


#===================================================
# ▼ CLASS Scene_Load Additional Code Begins
#===================================================
class Scene_Load < Scene_File

alias ams_original_read_save_data read_save_data

def read_save_data(file)
ams_original_read_save_data(file)
$ams = Marshal.load(file)
end

end
#===================================================
# ▲ CLASS Scene_Load Additional Code Ends
#===================================================
Revenir en haut Aller en bas
Don Estebahn
Maître du Savoir
Maître du Savoir
Don Estebahn


Masculin
Nombre de messages : 2145
Age : 33
Jeux Préférés : Soul Reaver, Morrowind, Way of the Samurai
Date d'inscription : 18/02/2007

Gestion avancée des messages (AMS R4) Empty
MessageSujet: Re: Gestion avancée des messages (AMS R4)   Gestion avancée des messages (AMS R4) EmptyDim 06 Juil 2008, 22:28

Hop, un petit ajout par Horus (la modif est de lui).
Testé et fonctionnel rendeer.

Il permet d'afficher le montant de l'argent possédé (avec et sans le nom de la monnaie, au choix) et le nombre de pas effectués par le joueur dans un message, respectivement en entrant les commandes \O, \M et \P.

J'ai édité mes précédents posts, la modif d'Horus est donc maintenant intégrée au script que vous pourrez copier/coller ci-dessus suivant les consignes données dans le premier message.
Pour ceux qui avaient déjà entré le script dans leur projet et que ces nouvelles commandes intéressent, il suffit de copier ce code :

Code:
# Code pour afficher dans le message l'or possédé
@now_text.gsub! (/\\[Oo]/) do
$game_party.gold.to_s
end
 
# Code pour afficher dans le message l'or possédé et la monnaie
@now_text.gsub! (/\\[Mm]/) do
$game_party.gold.to_s + " " + $data_system.words.gold
end

# Code pour afficher dans le message les pas effectués
@now_text.gsub! (/\\[Pp]/) do
$game_party.steps.to_s
end

En dessous de :

Code:
if $game_temp.message_text != nil
@now_text = $game_temp.message_text
if (/\A\\[Ff]\[(.+?)\]/.match(@now_text))!=nil then
@face_file = $1 + ".png"
@x = @face_indent = 128
if FileTest.exist?("Graphics/Pictures/" + $1 + ".png")
self.contents.blt(16, 16, RPG::Cache.picture(@face_file), Rect.new(0, 0, 96, 96))
end
@now_text.gsub!(/\\[Ff]\[(.*?)\]/) { "" }
end

Qui se trouve aux alentours de la ligne 170.
A la fin, vous devez donc avoir ceci (c'est le code qu'il faut ajouter qui est selectionné) :

Gestion avancée des messages (AMS R4) Sanstitreab2


Au cas où vous vous poseriez la question, ce screen ne sert à rien, je l'ai fait dans un élan de zèle.

Voilà voilà. Horus, merci à toi - et les autres... enjoy ! Wink
Revenir en haut Aller en bas
Contenu sponsorisé





Gestion avancée des messages (AMS R4) Empty
MessageSujet: Re: Gestion avancée des messages (AMS R4)   Gestion avancée des messages (AMS R4) Empty

Revenir en haut Aller en bas
 
Gestion avancée des messages (AMS R4)
Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» Gestion des Tilesets / Chipsets
» Bug avec la fontion : Gestion des variables.. ( :( )
» 10000 messages !!!
» Contour blanc dans les messages

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
RPG Fusion :: BANQUE DU CODE :: Antre des Scripts :: Système-
Sauter vers:  
Ne ratez plus aucun deal !
Abonnez-vous pour recevoir par notification une sélection des meilleurs deals chaque jour.
IgnorerAutoriser