- GirloMembre
- Nombre de messages : 468
Age : 29
Localisation : Chez ta mamie [punchline]
Distinction : Ronce-Man dans toute sa splendeur [Coco' ]
Date d'inscription : 31/07/2009
Yanfly Engine Ace - Ace Message System v1.01
Mer 18 Jan 2012 - 12:48
Script : Ace Message Syctem v1.01 + Add-on de Yami : Bubble message
Créateur : Yanfly Engine Ace
Traducteur : Girlo
Présentation : Ce script permet de modifier le message dans le jeu. Par exemple de modifier la couleur ou la taille directement à partir du texte. Il permet aussi de créer une "Name Box" au dessus de la fenêtre du message. Ce script est très utile et simple d'utilisation.
A placer au dessus de Main, comme d'hab.
Enjoy !
Add-on de Yami :
P.S : Si un problème est détecté, veuillez me le préciser. Merci.
Créateur : Yanfly Engine Ace
Traducteur : Girlo
Présentation : Ce script permet de modifier le message dans le jeu. Par exemple de modifier la couleur ou la taille directement à partir du texte. Il permet aussi de créer une "Name Box" au dessus de la fenêtre du message. Ce script est très utile et simple d'utilisation.
A placer au dessus de Main, comme d'hab.
- Code:
#==============================================================================
#
# ▼ Yanfly Engine Ace - Ace Message System v1.01
# -- Dernière MAJ: 2012.01.04
# -- Niveau: Normal
# -- Nécessite: n/a
# -- Traduction de Girlo le 09/01/2012
#==============================================================================
$imported = {} if $imported.nil?
$imported["YEA-MessageSystem"] = true
#==============================================================================
# ▼ Mises à jour
# =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
# 2012.01.04 - Bug trouvé: \ii était \ic. Ce n'est plus le cas.
# - Ajout: Police de fenêtre dans le texte de défilement.
# 2011.12.31 - Commencement du script et finission.
#
#==============================================================================
# ▼ Introduction
# =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
#
# Bien que RpgMaker VxAce est améliorer le système de message, il est tout de
# même encore à rajouter quelques fonctionnalités, tel que la name box, le
# choix d'ajuster la taille de la fenêtre du message pendant le jeu. Il
# permet aussi à l'utilisateur d'utiliser plusieurs polices d'écriture et
# donne au joueur une avance rapide caractéristique des messages.
#
#==============================================================================
# ▼ Instructions
# =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
# Copier le script et placer le en dessous de main.
# Esperons qu'il sera utile à tous les makers francophone.
#
# -----------------------------------------------------------------------------
# ▼ Les codes pour vos messages - Insérez les directement dans le texte.
# -----------------------------------------------------------------------------
# Defaut: Effet:
# \v[x] - Ecrire la valeur de la variable x.
# \n[x] - Ecrire le nom de l'acteur x.
# \p[x] - Ecrire le nom du membre de l'équipe x.
# \g - Ecrire le nom de la monnaie.
# \c[x] - Changer la couleur du texte par x.
# \i[x] - Insérer une icone dans le texte par x.
# \{ - Augmenter la taille de l'écriture x8.
# \} - Diminuer la taille de l'écriture x8.
# \$ - Ouvrir une fenêtre pour faire apparaître l'argent possédé.
# \. - Attendre 15 frammes (1/4 de seconde).
# \| - Attendre 60 frammes (1 seconde).
# \! - Attendre qu'une touche soit pressée.
# \> - Le texte suivant est instantanné.
# \< - Le texte qui suit n'est pas instantanné.
# \^ - Passer au prochain message.
# \\ - Ecrire "\" dans le message.
#
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
#
# Attendre: Effet:
# \w[x] - Attendre x frame (60 frames = 1 seconde).
#
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
#
# Nomfenêtre: Effet:
# \n<x> - Créer une name box en remplaçant x par le nom. A gauche. *Note
# \nc<x> - Créer une name box en remplaçant x par le nom. Au centre. *Note
# \nr<x> - Créer une name box en remplaçant x par le nom. A droite. *Note
#
# *Note: Ceci est seulement pour les messages.
#
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
#
# Position: Effet:
# \px[x] - Définir la position x du texte x. *Note
# \py[x] - Définir la position y du texte x. *Note
#
# *Note: Ceci est seulement pour les messages.
#
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
#
# Externe: Effet:
# \oc[x] - Saisir la couleur des bordures externes en x.
# \oo[x] - Saisir l'opacité des bordures externes en x.
#
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
#
# Police: Effet:
# \fr - Réinitialiser tous les changements de police.
# \fz[x] - Modifier la taille de police à x.
# \fn[x] - Modifier le nom de la police à x.
# \fb - Passer la police en gras.
# \fi - Passer la police en italique.
# \fo - Faire apparaître les contours de la police.
# \fs - Faire apparaître les ombres de la police.
#
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
#
# Acteur: Effet:
# \af[x] - Montrer le faceset de l'acteur x. *Note
# \ac[x] - Ecrire le nom de la classe de l'acteur x. *Note
# \as[x] - Ecrire le nom de la sous-classe de l'acteur x. *Note
# \an[x] - Ecrire le surnom de l'acteur x. *Note
#
# *Note: Si x est égal à 0 ou négatif, il montrera les faces
# des membres de l'équipe :
# 0 - Leader de l'équipe.
# -1 - 1er membre non-leader.
# -2 - 2ème membre non leader. ETC.
#
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
#
# Noms: Effet:
# \nc[x] - Ecrire le nom de la classe x.
# \ni[x] - Ecrire le nom de l'objet x.
# \nw[x] - Ecrire le nom de l'arme x.
# \na[x] - Ecrire le nom de l'armure x.
# \ns[x] - Ecrire le nom de la compétence x.
# \nt[x] - Ecrire le nom de l'état x.
#
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
#
# NomsIcones: Effet:
# \ic[x] - Ecrire le nom de la classe x et y compris l'icone. *
# \ii[x] - Ecrire le nom de l'objet x et y compris l'icone.
# \iw[x] - Ecrire le nom de l'arme x et y compris l'icone.
# \ia[x] - Ecrire le nom de l'arumure x et y compris l'icone.
# \is[x] - Ecrire le nom de la compétence x et y compris l'icone.
# \it[x] - Ecrire le nom de l'état x et y compris l'icone.
#
# *Note: Necessite YEA - Class System
#
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
#
# Ce sont les codes de texte ajouté avec ce script. Gardez à l'esprit que
# certains nombre de ces codes ne fonctionnent que pour ce texte de la
# fenêtre de message. Sinon ils vont travailler pour l'aide à la déscription,
# les biographies des acteurs, et d'autres.
#==============================================================================
# ▼ Compatibilité
# =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
# Ce script est strictement fait pour RpgMaker VxAce. Il est hautement
# improbable qu'il fonctionne avec Vx sans ajustements.
#
#==============================================================================
module YEA
module MESSAGE
#=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
# - Paramètres généraux des messages -
#=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
# Ce qui est inscrit ci dessous sont les réglages de base qui auront une
# incidence sur la majorité du script. Ajustez-les à votre gout.
#=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
# Ce bouton est le bouton utilisé pour faire sauter instantanément les
# fenêtres de messages. Maintenez la enfoncé pour l'effet. Notez que même
# si elle accellerera le défilement, elle s'aretera toujours au pause.
# Cependant ils iront automatiquement à la page suivante.
TEXT_SKIP = :A # Input::A is the shift button on keyboard.
# Cette variable permet de régler le nombre visble de ligne indiqué dans le
# message. Si vous ne souhaitez pas utiliser cette fonctionnalité définnissez
# cette constante à 0 ou en dessous. Alors elle sera automatiquement de 4 rangées.
VARIABLE_ROWS = 21
# Cette variable permet de régler la largeur de la fenêtre du message qui
# s'affiche. Si vous ne souhaitez pas utiliser cette fonction, définnissez
# la à 0 ou en dessous. Alors elle sera automatiquement à la largeur d'écran.
VARIABLE_WIDTH = 22
# C'est la quantité d'espace que la fenêtre de message retirait à chaque
# fois qu'un face est utilisé. Par défaut: 112
FACE_INDENT_X = 112
#=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
# - Réglages de la name box -
#=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
# La name box est une petite fenêtre placé au dessus du message pour
# libérer une ligne du message général et de faire plus ésthetique.
#=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
NAME_WINDOW_X_BUFFER = -20 # position x de la name box.
NAME_WINDOW_Y_BUFFER = 0 # position y de la name box
NAME_WINDOW_PADDING = 20 # Padding added to the horizontal position.
NAME_WINDOW_OPACITY = 255 # Opacité de la police de nom.
NAME_WINDOW_COLOUR = 6 # Couleur de la police du nom par défaut.
#=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
# - Réglages de la police d'écriture des messages -
#=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
# Ace Message System sépare la police d'écriture du système et celle des
# messages. Ajustez les ci dessous pour régler vos polices.
#=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
# Cette constante détermine les polices utilisées. Si la première indiquée
# n'existe pas sur l'ordinateur du joueur, la deuxième sera à la suite
# utilisé, la troisième et ainsi de suite.
MESSAGE_WINDOW_FONT_NAME = ["Verdana", "Arial", "Courier New"]
# Ces ajustements sont d'autres réglages conçernant la façon dont la police
# du jeu apparaît. Notamment si elle est en gras, en italique, par défaut
# etc.
MESSAGE_WINDOW_FONT_SIZE = 24 # Taille de la police.
MESSAGE_WINDOW_FONT_BOLD = false # Gras par défaut?
MESSAGE_WINDOW_FONT_ITALIC = false # Italique par défaut?
MESSAGE_WINDOW_FONT_OUTLINE = true # Apperçu par défaut?
MESSAGE_WINDOW_FONT_SHADOW = false # Ombre par défaut?
end # MESSAGE
end # YEA
#==============================================================================
# ▼ Ne rien modifié, ce point peut potentiellement provoquer des dommages
# causant l'ordinateur, l'incontinence, l'explosion de la tête de l'utilisateur,
# le coma, la mort et/ou l'halitose. Donc modifier à votre propre risque. (LOL)
#==============================================================================
#==============================================================================
# ■ Variable
#==============================================================================
module Variable
#--------------------------------------------------------------------------
# self.message_rows
#--------------------------------------------------------------------------
def self.message_rows
return 4 if YEA::MESSAGE::VARIABLE_ROWS <= 0
return 4 if $game_variables[YEA::MESSAGE::VARIABLE_ROWS] <= 0
return $game_variables[YEA::MESSAGE::VARIABLE_ROWS]
end
#--------------------------------------------------------------------------
# self.message_width
#--------------------------------------------------------------------------
def self.message_width
return Graphics.width if YEA::MESSAGE::VARIABLE_WIDTH <= 0
return Graphics.width if $game_variables[YEA::MESSAGE::VARIABLE_WIDTH] <= 0
return $game_variables[YEA::MESSAGE::VARIABLE_WIDTH]
end
end # Variable
#==============================================================================
# ■ Game_Interpreter
#==============================================================================
class Game_Interpreter
#--------------------------------------------------------------------------
# overwrite method: command_101
#--------------------------------------------------------------------------
def command_101
wait_for_message
$game_message.face_name = @params[0]
$game_message.face_index = @params[1]
$game_message.background = @params[2]
$game_message.position = @params[3]
while continue_message_string?
@index += 1
if @list[@index].code == 401
$game_message.add(@list[@index].parameters[0])
end
break if $game_message.texts.size >= Variable.message_rows
end
case next_event_code
when 102
@index += 1
setup_choices(@list[@index].parameters)
when 103
@index += 1
setup_num_input(@list[@index].parameters)
when 104
@index += 1
setup_item_choice(@list[@index].parameters)
end
wait_for_message
end
#--------------------------------------------------------------------------
# new method: continue_message_string?
#--------------------------------------------------------------------------
def continue_message_string?
return true if next_event_code == 101 && Variable.message_rows > 4
return next_event_code == 401
end
end # Game_Interpreter
#==============================================================================
# ■ Window_Base
#==============================================================================
class Window_Base < Window
#--------------------------------------------------------------------------
# new method: setup_message_font
#--------------------------------------------------------------------------
def setup_message_font
@message_font = true
change_color(normal_color)
contents.font.out_color = Font.default_out_color
contents.font.name = YEA::MESSAGE::MESSAGE_WINDOW_FONT_NAME
contents.font.size = YEA::MESSAGE::MESSAGE_WINDOW_FONT_SIZE
contents.font.bold = YEA::MESSAGE::MESSAGE_WINDOW_FONT_BOLD
contents.font.italic = YEA::MESSAGE::MESSAGE_WINDOW_FONT_ITALIC
contents.font.outline = YEA::MESSAGE::MESSAGE_WINDOW_FONT_OUTLINE
contents.font.shadow = YEA::MESSAGE::MESSAGE_WINDOW_FONT_SHADOW
end
#--------------------------------------------------------------------------
# alias method: reset_font_settings
#--------------------------------------------------------------------------
alias window_base_reset_font_settings_ams reset_font_settings
def reset_font_settings
if @message_font
setup_message_font
else
window_base_reset_font_settings_ams
contents.font.out_color = Font.default_out_color
contents.font.outline = Font.default_outline
contents.font.shadow = Font.default_shadow
end
end
#--------------------------------------------------------------------------
# alias method: convert_escape_characters
#--------------------------------------------------------------------------
alias window_base_convert_escape_characters_ams convert_escape_characters
def convert_escape_characters(text)
result = window_base_convert_escape_characters_ams(text)
result = convert_ace_message_system_new_escape_characters(result)
return result
end
#--------------------------------------------------------------------------
# new method: convert_ace_message_system_new_escape_characters
#--------------------------------------------------------------------------
def convert_ace_message_system_new_escape_characters(result)
#---
result.gsub!(/\eFR/i) { "\eAMSF[0]" }
result.gsub!(/\eFB/i) { "\eAMSF[1]" }
result.gsub!(/\eFI/i) { "\eAMSF[2]" }
result.gsub!(/\eFO/i) { "\eAMSF[3]" }
result.gsub!(/\eFS/i) { "\eAMSF[4]" }
#---
result.gsub!(/\eAC\[(\d+)\]/i) { escape_actor_class_name($1.to_i) }
result.gsub!(/\eAS\[(\d+)\]/i) { escape_actor_subclass_name($1.to_i) }
result.gsub!(/\eAN\[(\d+)\]/i) { escape_actor_nickname($1.to_i) }
#---
result.gsub!(/\eNC\[(\d+)\]/i) { $data_classes[$1.to_i].name }
result.gsub!(/\eNI\[(\d+)\]/i) { $data_items[$1.to_i].name }
result.gsub!(/\eNW\[(\d+)\]/i) { $data_weapons[$1.to_i].name }
result.gsub!(/\eNA\[(\d+)\]/i) { $data_armors[$1.to_i].name }
result.gsub!(/\eNS\[(\d+)\]/i) { $data_skills[$1.to_i].name }
result.gsub!(/\eNT\[(\d+)\]/i) { $data_states[$1.to_i].name }
#---
result.gsub!(/\eIC\[(\d+)\]/i) { escape_icon_item($1.to_i, :class) }
result.gsub!(/\eII\[(\d+)\]/i) { escape_icon_item($1.to_i, :item) }
result.gsub!(/\eIW\[(\d+)\]/i) { escape_icon_item($1.to_i, :weapon) }
result.gsub!(/\eIA\[(\d+)\]/i) { escape_icon_item($1.to_i, :armour) }
result.gsub!(/\eIS\[(\d+)\]/i) { escape_icon_item($1.to_i, :skill) }
result.gsub!(/\eIT\[(\d+)\]/i) { escape_icon_item($1.to_i, :state) }
#---
return result
end
#--------------------------------------------------------------------------
# new method: escape_actor_class_name
#--------------------------------------------------------------------------
def escape_actor_class_name(actor_id)
if actor_id <= 0
actor_id = $game_party.members[actor_id.abs].id
end
actor = $game_actors[actor_id]
return "" if actor.nil?
return actor.class.name
end
#--------------------------------------------------------------------------
# new method: actor_subclass_name
#--------------------------------------------------------------------------
def escape_actor_subclass_name(actor_id)
return "" unless $imported["YEA-ClassSystem"]
if actor_id <= 0
actor_id = $game_party.members[actor_id.abs].id
end
actor = $game_actors[actor_id]
return "" if actor.nil?
return "" if actor.subclass.nil?
return actor.subclass.name
end
#--------------------------------------------------------------------------
# new method: escape_actor_nickname
#--------------------------------------------------------------------------
def escape_actor_nickname(actor_id)
if actor_id <= 0
actor_id = $game_party.members[actor_id.abs].id
end
actor = $game_actors[actor_id]
return "" if actor.nil?
return actor.nickname
end
#--------------------------------------------------------------------------
# new method: escape_icon_item
#--------------------------------------------------------------------------
def escape_icon_item(data_id, type)
case type
when :class
return "" unless $imported["YEA-ClassSystem"]
icon = $data_classes[data_id].icon_index
name = $data_items[data_id].name
when :item
icon = $data_items[data_id].icon_index
name = $data_items[data_id].name
when :weapon
icon = $data_weapons[data_id].icon_index
name = $data_weapons[data_id].name
when :armour
icon = $data_armors[data_id].icon_index
name = $data_armors[data_id].name
when :skill
icon = $data_skills[data_id].icon_index
name = $data_skills[data_id].name
when :state
icon = $data_states[data_id].icon_index
name = $data_states[data_id].name
else; return ""
end
text = "\eI[#{icon}]" + name
return text
end
#--------------------------------------------------------------------------
# alias method: process_escape_character
#--------------------------------------------------------------------------
alias window_base_process_escape_character_ams process_escape_character
def process_escape_character(code, text, pos)
case code.upcase
#---
when 'FZ'
contents.font.size = obtain_escape_param(text)
when 'FN'
text.sub!(/\[(.*?)\]/, "")
font_name = $1.to_s
font_name = Font.default_name if font_name.nil?
contents.font.name = font_name.to_s
#---
when 'OC'
colour = text_color(obtain_escape_param(text))
contents.font.out_color = colour
when 'OO'
contents.font.out_color.alpha = obtain_escape_param(text)
#---
when 'AMSF'
case obtain_escape_param(text)
when 0; reset_font_settings
when 1; contents.font.bold = !contents.font.bold
when 2; contents.font.italic = !contents.font.italic
when 3; contents.font.outline = !contents.font.outline
when 4; contents.font.shadow = !contents.font.shadow
end
#---
else
window_base_process_escape_character_ams(code, text, pos)
end
end
end # Window_Base
#==============================================================================
# ■ Window_ChoiceList
#==============================================================================
class Window_ChoiceList < Window_Command
#--------------------------------------------------------------------------
# alias method: initialize
#--------------------------------------------------------------------------
alias window_choicelist_initialize_ams initialize
def initialize(message_window)
window_choicelist_initialize_ams(message_window)
setup_message_font
end
end # Window_ChoiceList
#==============================================================================
# ■ Window_ScrollText
#==============================================================================
class Window_ScrollText < Window_Base
#--------------------------------------------------------------------------
# alias method: initialize
#--------------------------------------------------------------------------
alias window_scrolltext_initialize_ams initialize
def initialize
window_scrolltext_initialize_ams
setup_message_font
end
end # Window_ScrollText
#==============================================================================
# ■ Window_NameMessage
#==============================================================================
class Window_NameMessage < Window_Base
#--------------------------------------------------------------------------
# initialize
#--------------------------------------------------------------------------
def initialize(message_window)
@message_window = message_window
super(0, 0, Graphics.width, fitting_height(1))
self.opacity = YEA::MESSAGE::NAME_WINDOW_OPACITY
self.z = @message_window.z + 1
self.openness = 0
setup_message_font
@close_counter = 0
deactivate
end
#--------------------------------------------------------------------------
# update
#--------------------------------------------------------------------------
def update
super
return if self.active
return if self.openness == 0
return if @closing
@close_counter -= 1
return if @close_counter > 0
close
end
#--------------------------------------------------------------------------
# start_close
#--------------------------------------------------------------------------
def start_close
@close_counter = 4
deactivate
end
#--------------------------------------------------------------------------
# force_close
#--------------------------------------------------------------------------
def force_close
@close_counter = 0
deactivate
close
end
#--------------------------------------------------------------------------
# start
#--------------------------------------------------------------------------
def start(text, x_position)
@text = text.clone
set_width
create_contents
set_x_position(x_position)
set_y_position
refresh
activate
open
end
#--------------------------------------------------------------------------
# set_width
#--------------------------------------------------------------------------
def set_width
text = @text.clone
dw = standard_padding * 2 + text_size(text).width
dw += YEA::MESSAGE::NAME_WINDOW_PADDING * 2
dw += calculate_size(text.slice!(0, 1), text) until text.empty?
self.width = dw
end
#--------------------------------------------------------------------------
# calculate_size
#--------------------------------------------------------------------------
def calculate_size(code, text)
case code
when "\e"
return calculate_escape_code_width(obtain_escape_code(text), text)
else
return 0
end
end
#--------------------------------------------------------------------------
# calculate_escape_code_width
#--------------------------------------------------------------------------
def calculate_escape_code_width(code, text)
dw = -text_size("\e").width - text_size(code).width
case code.upcase
when 'C', 'OC', 'OO'
dw += -text_size("[" + obtain_escape_param(text).to_s + "]").width
return dw
when 'I'
dw += -text_size("[" + obtain_escape_param(text).to_s + "]").width
dw += 24
return dw
when '{'
make_font_bigger
when '}'
make_font_smaller
when 'FZ'
contents.font.size = obtain_escape_param(text)
when 'FN'
text.sub!(/\[(.*?)\]/, "")
font_name = $1.to_s
font_name = Font.default_name if font_name.nil?
contents.font.name = font_name.to_s
when 'AMSF'
case obtain_escape_param(text)
when 0; reset_font_settings
when 1; contents.font.bold = !contents.font.bold
when 2; contents.font.italic = !contents.font.italic
when 3; contents.font.outline = !contents.font.outline
when 4; contents.font.shadow = !contents.font.shadow
end
else
return dw
end
end
#--------------------------------------------------------------------------
# set_y_position
#--------------------------------------------------------------------------
def set_x_position(x_position)
case x_position
when 1 # Left
self.x = @message_window.x
self.x += YEA::MESSAGE::NAME_WINDOW_X_BUFFER
when 2 # 3/10
self.x = @message_window.x
self.x += @message_window.width * 3 / 10
self.x -= self.width / 2
when 3 # Center
self.x = @message_window.x
self.x += @message_window.width / 2
self.x -= self.width / 2
when 4 # 7/10
self.x = @message_window.x
self.x += @message_window.width * 7 / 10
self.x -= self.width / 2
when 5 # Right
self.x = @message_window.x + @message_window.width
self.x -= self.width
self.x -= YEA::MESSAGE::NAME_WINDOW_X_BUFFER
end
self.x = [[self.x, Graphics.width - self.width].min, 0].max
end
#--------------------------------------------------------------------------
# set_y_position
#--------------------------------------------------------------------------
def set_y_position
case $game_message.position
when 0
self.y = @message_window.height
self.y -= YEA::MESSAGE::NAME_WINDOW_Y_BUFFER
else
self.y = @message_window.y - self.height
self.y += YEA::MESSAGE::NAME_WINDOW_Y_BUFFER
end
end
#--------------------------------------------------------------------------
# refresh
#--------------------------------------------------------------------------
def refresh
contents.clear
reset_font_settings
@text = sprintf("\eC[%d]%s", YEA::MESSAGE::NAME_WINDOW_COLOUR, @text)
draw_text_ex(YEA::MESSAGE::NAME_WINDOW_PADDING, 0, @text)
end
end # Window_NameMessage
#==============================================================================
# ■ Window_Message
#==============================================================================
class Window_Message < Window_Base
#--------------------------------------------------------------------------
# alias method: initialize
#--------------------------------------------------------------------------
alias window_message_initialize_ams initialize
def initialize
window_message_initialize_ams
setup_message_font
end
#--------------------------------------------------------------------------
# overwrite method: window_width
#--------------------------------------------------------------------------
def window_width
return Variable.message_width
end
#--------------------------------------------------------------------------
# overwrite method: window_height
#--------------------------------------------------------------------------
def window_height
return fitting_height(Variable.message_rows)
end
#--------------------------------------------------------------------------
# alias method: create_all_windows
#--------------------------------------------------------------------------
alias window_message_create_all_windows_ams create_all_windows
def create_all_windows
window_message_create_all_windows_ams
@name_window = Window_NameMessage.new(self)
end
#--------------------------------------------------------------------------
# overwrite method: create_back_bitmap
#--------------------------------------------------------------------------
def create_back_bitmap
@back_bitmap = Bitmap.new(width, height)
rect1 = Rect.new(0, 0, Graphics.width, 12)
rect2 = Rect.new(0, 12, Graphics.width, fitting_height(4) - 24)
rect3 = Rect.new(0, fitting_height(4) - 12, Graphics.width, 12)
@back_bitmap.gradient_fill_rect(rect1, back_color2, back_color1, true)
@back_bitmap.fill_rect(rect2, back_color1)
@back_bitmap.gradient_fill_rect(rect3, back_color1, back_color2, true)
end
#--------------------------------------------------------------------------
# alias method: dispose_all_windows
#--------------------------------------------------------------------------
alias window_message_dispose_all_windows_ams dispose_all_windows
def dispose_all_windows
window_message_dispose_all_windows_ams
@name_window.dispose
end
#--------------------------------------------------------------------------
# alias method: update_all_windows
#--------------------------------------------------------------------------
alias window_message_update_all_windows_ams update_all_windows
def update_all_windows
window_message_update_all_windows_ams
@name_window.update
end
#--------------------------------------------------------------------------
# alias method: update_show_fast
#--------------------------------------------------------------------------
alias window_message_update_show_fast_ams update_show_fast
def update_show_fast
@show_fast = true if Input.press?(YEA::MESSAGE::TEXT_SKIP)
window_message_update_show_fast_ams
end
#--------------------------------------------------------------------------
# overwrite method: input_pause
#--------------------------------------------------------------------------
def input_pause
self.pause = true
wait(10)
Fiber.yield until Input.trigger?(:B) || Input.trigger?(:C) ||
Input.press?(YEA::MESSAGE::TEXT_SKIP)
Input.update
self.pause = false
end
#--------------------------------------------------------------------------
# overwrite method: convert_escape_characters
#--------------------------------------------------------------------------
def convert_escape_characters(text)
result = super(text.to_s.clone)
result = namebox_escape_characters(result)
result = message_escape_characters(result)
return result
end
#--------------------------------------------------------------------------
# new method: namebox_escape_characters
#--------------------------------------------------------------------------
def namebox_escape_characters(result)
result.gsub!(/\eN\<(.+?)\>/i) { namewindow($1, 1) }
result.gsub!(/\eN1\<(.+?)\>/i) { namewindow($1, 1) }
result.gsub!(/\eN2\<(.+?)\>/i) { namewindow($1, 2) }
result.gsub!(/\eNC\<(.+?)\>/i) { namewindow($1, 3) }
result.gsub!(/\eN3\<(.+?)\>/i) { namewindow($1, 3) }
result.gsub!(/\eN4\<(.+?)\>/i) { namewindow($1, 4) }
result.gsub!(/\eN5\<(.+?)\>/i) { namewindow($1, 5) }
result.gsub!(/\eNR\<(.+?)\>/i) { namewindow($1, 5) }
return result
end
#--------------------------------------------------------------------------
# new method: namebox
#--------------------------------------------------------------------------
def namewindow(text, position)
@name_text = text
@name_position = position
return ""
end
#--------------------------------------------------------------------------
# new method: message_escape_characters
#--------------------------------------------------------------------------
def message_escape_characters(result)
result.gsub!(/\eAF\[(\d+)\]/i) { change_face($1.to_i) }
return result
end
#--------------------------------------------------------------------------
# new method: change_face
#--------------------------------------------------------------------------
def change_face(actor_id)
if actor_id <= 0
actor_id = $game_party.members[actor_id.abs].id
end
actor = $game_actors[actor_id]
return "" if actor.nil?
$game_message.face_name = actor.face_name
$game_message.face_index = actor.face_index
return ""
end
#--------------------------------------------------------------------------
# alias method: new_page
#--------------------------------------------------------------------------
alias window_message_new_page_ams new_page
def new_page(text, pos)
adjust_message_window_size
window_message_new_page_ams(text, pos)
end
#--------------------------------------------------------------------------
# overwrite method: new_line_x
#--------------------------------------------------------------------------
def new_line_x
return $game_message.face_name.empty? ? 0 : YEA::MESSAGE::FACE_INDENT_X
end
#--------------------------------------------------------------------------
# new method: adjust_message_window_size
#--------------------------------------------------------------------------
def adjust_message_window_size
self.height = window_height
self.width = window_width
create_contents
update_placement
self.x = (Graphics.width - self.width) / 2
start_name_window
end
#--------------------------------------------------------------------------
# new method: clear_name_window
#--------------------------------------------------------------------------
def clear_name_window
@name_text = ""
@name_position = 0
end
#--------------------------------------------------------------------------
# new method: start_name_window
#--------------------------------------------------------------------------
def start_name_window
return if @name_text == ""
@name_window.start(@name_text, @name_position)
end
#--------------------------------------------------------------------------
# overwrite method: fiber_main
#--------------------------------------------------------------------------
def fiber_main
$game_message.visible = true
update_background
update_placement
loop do
process_all_text if $game_message.has_text?
process_input
$game_message.clear
@gold_window.close
@name_window.start_close
Fiber.yield
break unless text_continue?
end
close_and_wait
$game_message.visible = false
@fiber = nil
end
#--------------------------------------------------------------------------
# alias method: open_and_wait
#--------------------------------------------------------------------------
alias window_message_open_and_wait_ams open_and_wait
def open_and_wait
clear_name_window
adjust_message_window_size
window_message_open_and_wait_ams
end
#--------------------------------------------------------------------------
# alias method: close_and_wait
#--------------------------------------------------------------------------
alias window_message_close_and_wait_ams close_and_wait
def close_and_wait
@name_window.force_close
window_message_close_and_wait_ams
end
#--------------------------------------------------------------------------
# alias method: all_close?
#--------------------------------------------------------------------------
alias window_message_all_close_ams all_close?
def all_close?
return window_message_all_close_ams && @name_window.close?
end
#--------------------------------------------------------------------------
# alias method: process_escape_character
#--------------------------------------------------------------------------
alias window_message_process_escape_character_ams process_escape_character
def process_escape_character(code, text, pos)
case code.upcase
when 'W' # Wait
wait(obtain_escape_param(text))
when 'PX'
pos[:x] = obtain_escape_param(text)
when 'PY'
pos[:y] = obtain_escape_param(text)
else
window_message_process_escape_character_ams(code, text, pos)
end
end
end # Window_Message
#==============================================================================
#
# ▼ Fin du script.
#
#==============================================================================
Enjoy !
Add-on de Yami :
- Code:
#==============================================================================
#
# ? Yami Script Ace - YEA Message System Add-on: Bubble Message
# -- Dernière MAJ : 2012.01.09
# -- Niveau : Normal
# -- Requis : Yanfly Engine Ace - Ace Message System v1.00+
#
#==============================================================================
$imported = {} if $imported.nil?
$imported["YSA-BubbleMessage"] = true
#==============================================================================
# ? MAJ
# =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
# 2012.01.09 - Bugfix coordinate buffer.
# - Update placement for face.
# - Window flick.
# - Out screen.
# 2012.01.05 - Update Coordinate buffer.
# Fix a placement error.
# 2012.01.04 - Started and Finished script.
#
#==============================================================================
# ? Instructions
# =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
# Pour intaller le script, ouvrez l'éditeur de script et copier/coller ce script
# en dessous de Mateials mais au dessus de Main. N'oubliez pas de sauvergarder.
#
# -----------------------------------------------------------------------------
# Code pour la fenêtre du message - Ecrivez le direcetement dans le message.
# -----------------------------------------------------------------------------
# Position: Effect:
# \bm[x] - Placer la fenêtre du message à l'event x. *Note
# \cbm - Supprimer la fenêtre du message.
#
# *Note: Mettre à 0 pour le placer au dessus du héros.
#
#==============================================================================
# ? Compatibilité.
# =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
# Ce script est strictement fait pour RpgMaker VxAce. Il est hautement
# improbable qu'il fonctionne avec Vx sans ajustements.
#
# Le script Yanfly Engine Ace - Ace Message System v1.00+, est requis pour
# le bon fonctionnement de ce script.
#
#==============================================================================
module YSA
module POP_MESSAGE
LIMIT_WIDTH = 480
LIMIT_LINE = 2
POP_X_BUFFER = 0
POP_Y_BUFFER = -36
FACE_SPRITE_X_BUFFER = 8 # Buffer x position of the name window.
FACE_SPRITE_Y_BUFFER = 0 # Buffer y position of the name window.
FACE_X_BUFFER_WINDOW_HEIGHT = true
NAME_BUFFER_X_FROM_FACE = 112 # Only apply for Name Window left
FADE_FACE = true
MOVE_FACE = true # Only for first time
end
end
#==============================================================================
# ? Ne rien modifié, ce point peut potentiellement provoquer des dommages
# causant l'ordinateur, l'incontinence, l'explosion de la tête de l'utilisateur,
# le coma, la mort et/ou l'halitose. Donc modifier à votre propre risque. (LOL)
#==============================================================================
#==============================================================================
# ¦ Game_Message
#==============================================================================
class Game_Message
#--------------------------------------------------------------------------
# public instance variables
#--------------------------------------------------------------------------
attr_accessor :face_sprite
end # Game_Message
#==============================================================================
# ¦ Scene_Map
#==============================================================================
class Scene_Map < Scene_Base
#--------------------------------------------------------------------------
# public instance variables
#--------------------------------------------------------------------------
attr_accessor :spriteset
#--------------------------------------------------------------------------
# alias method: update
#--------------------------------------------------------------------------
alias pop_message_update update
def update
pop_message_update
$game_message.face_sprite.update if $game_message.face_sprite
end
end # Scene_Map
#==============================================================================
# ¦ Spriteset_Map
#==============================================================================
class Spriteset_Map
#--------------------------------------------------------------------------
# public instance variables
#--------------------------------------------------------------------------
attr_accessor :character_sprites
attr_accessor :viewport1
end # Spriteset_Map
#==============================================================================
# ¦ Sprite_Message_Face
#==============================================================================
class Window_Message_Face < Window_Base
#--------------------------------------------------------------------------
# initialize
#--------------------------------------------------------------------------
def initialize
super(0, 0, 120, 120)
self.opacity = 0
self.visible = false
@disposing = false
@face_name = ""
@face_index = 0
@move_x = 0
self.z = 100
end
#--------------------------------------------------------------------------
# set_face
#--------------------------------------------------------------------------
def set_face(x, y)
contents.clear
if !$game_message.face_name.empty?
draw_face($game_message.face_name, $game_message.face_index, 0, 0)
self.x = x
self.x += YSA::POP_MESSAGE::FACE_SPRITE_X_BUFFER
if (@face_name != $game_message.face_name || @face_index != $game_message.face_index) && YSA::POP_MESSAGE::MOVE_FACE
self.x -= 30
@move_x = 30
@face_name = $game_message.face_name
@face_index = $game_message.face_index
self.contents_opacity = 0 if YSA::POP_MESSAGE::FADE_FACE
end
self.y = y
self.y -= 96
self.y += YSA::POP_MESSAGE::FACE_SPRITE_Y_BUFFER
self.visible = true
else
self.visible = false
end
end
#--------------------------------------------------------------------------
# hide_face
#--------------------------------------------------------------------------
def hide_face
contents.clear
self.visible = false
end
#--------------------------------------------------------------------------
# update
#--------------------------------------------------------------------------
def update
super
self.contents_opacity += 15 if self.contents_opacity < 255
unless @move_x <= 0
self.x += 2
@move_x -= 2
end
end
end # Sprite_Message_Face
#==============================================================================
# ¦ Window_Message
#==============================================================================
class Window_Message < Window_Base
#--------------------------------------------------------------------------
# alias method: message_escape_characters
#--------------------------------------------------------------------------
alias pop_message_message_escape_characters message_escape_characters
def message_escape_characters(result)
result.gsub!(/\eBM\[(\d+)\]/i) { event_pop_message_setup($1.to_i) }
result.gsub!(/\eCBM/i) { event_pop_message_setup(-1) }
result = pop_message_message_escape_characters(result)
return result
end
#--------------------------------------------------------------------------
# new method: event_pop_message_setup
#--------------------------------------------------------------------------
def event_pop_message_setup(event_id)
@event_pop_id = event_id
return ""
end
#--------------------------------------------------------------------------
# overwrite method: new_page
#--------------------------------------------------------------------------
def new_page(text, pos)
adjust_message_window_size(text)
window_message_new_page_ams(text, pos)
if SceneManager.scene_is?(Scene_Map)
if @event_pop_id && @event_pop_id >= 0
contents.clear
$game_message.face_sprite = Window_Message_Face.new if !$game_message.face_sprite
$game_message.face_sprite.set_face(self.x, self.y)
$game_message.face_sprite.y += (self.height / 5) * 2 if YSA::POP_MESSAGE::FACE_X_BUFFER_WINDOW_HEIGHT
self.z = 98
@name_window.x = self.x + YSA::POP_MESSAGE::FACE_SPRITE_X_BUFFER + YSA::POP_MESSAGE::NAME_BUFFER_X_FROM_FACE if (@name_position == 1 || @name_position == 2) && $game_message.face_sprite
end
end
end
#--------------------------------------------------------------------------
# alias method: close
#--------------------------------------------------------------------------
alias pop_message_close close
def close
$game_message.face_sprite.hide_face if $game_message.face_sprite
pop_message_close
end
#--------------------------------------------------------------------------
# alias method: process_all_text
#--------------------------------------------------------------------------
alias pop_message_process_all_text process_all_text
def process_all_text
convert_escape_characters($game_message.all_text)
pop_message_process_all_text
end
#--------------------------------------------------------------------------
# alias method: update_placement
#--------------------------------------------------------------------------
alias event_pop_message_update_placement update_placement
def update_placement
if SceneManager.scene_is?(Scene_Map)
if !@event_pop_id || @event_pop_id < 0
event_pop_message_update_placement
$game_message.face_sprite.hide_face if $game_message.face_sprite
elsif @event_pop_id == 0
hash = SceneManager.scene.spriteset.character_sprites
character = hash[hash.size - 1]
self.y = character.character.screen_y - self.height + YSA::POP_MESSAGE::POP_Y_BUFFER
self.x = character.character.screen_x - self.width / 2 + YSA::POP_MESSAGE::POP_X_BUFFER
if self.x < 0
self.x = 0
end
if self.y < 0
self.y = 64
end
elsif @event_pop_id > 0
hash = SceneManager.scene.spriteset.character_sprites
character = hash[@event_pop_id - 1]
self.y = character.character.screen_y - self.height + YSA::POP_MESSAGE::POP_Y_BUFFER
self.x = character.character.screen_x - self.width / 2 + YSA::POP_MESSAGE::POP_X_BUFFER
if self.x < 0
self.x = 0
end
if self.y < 0
self.y = 64
end
end
else
event_pop_message_update_placement
end
end
#--------------------------------------------------------------------------
# new method: cal_number_line
#--------------------------------------------------------------------------
def cal_number_line(text)
result = 0
text.each_line { result += 1 }
return result
end
#--------------------------------------------------------------------------
# alias method: adjust_message_window_size
#--------------------------------------------------------------------------
alias yea_me_pop_engine_adjust_message_window_size adjust_message_window_size
def adjust_message_window_size(text = " ")
if SceneManager.scene_is?(Scene_Map) && @event_pop_id && @event_pop_id >= 0
n_line = cal_number_line(text) > YSA::POP_MESSAGE::LIMIT_LINE ? YSA::POP_MESSAGE::LIMIT_LINE : cal_number_line(text)
self.height = fitting_height(n_line)
self.width = text_size(text).width + 24
self.width += new_line_x
if self.width < YEA::MESSAGE::FACE_INDENT_X + YSA::POP_MESSAGE::FACE_SPRITE_X_BUFFER + @name_window.width
self.width += @name_window.width
end
if self.width > YSA::POP_MESSAGE::LIMIT_WIDTH
self.width = YSA::POP_MESSAGE::LIMIT_WIDTH
end
create_contents
update_placement
start_name_window
else
yea_me_pop_engine_adjust_message_window_size
end
end
#--------------------------------------------------------------------------
# overwrite method: new_line_x
#--------------------------------------------------------------------------
def new_line_x
return $game_message.face_name.empty? ? 0 : (YEA::MESSAGE::FACE_INDENT_X + YSA::POP_MESSAGE::FACE_SPRITE_X_BUFFER)
end
end # Window_Message
#==============================================================================
#
# ? Fin du script.
#
#==============================================================================
P.S : Si un problème est détecté, veuillez me le préciser. Merci.
- UltimaSasukeMembre
- Nombre de messages : 88
Age : 29
Localisation : France, 05
Distinction : aucune
Date d'inscription : 27/07/2011
Re: Yanfly Engine Ace - Ace Message System v1.01
Mer 18 Jan 2012 - 13:05
Merci pour cette traduction, j'utilise ce script depuis sa sortie mais ne l'ai pas traduit bon boulot. Il y a cette Add-on de Yami qui permet de réglé la taille de la fenêtre des texte et de les placé là ou l'on veut ce qui peut donner un aspect dinamique à une scéne. Non traduit je vous le propose si quelqu'un veut le traduire.
- Code:
#==============================================================================
#
# ▼ Yami Script Ace - YEA Message System Add-on: Bubble Message
# -- Last Updated: 2012.01.09
# -- Level: Normal
# -- Requires: Yanfly Engine Ace - Ace Message System v1.00+
#
#==============================================================================
$imported = {} if $imported.nil?
$imported["YSA-BubbleMessage"] = true
#==============================================================================
# ▼ Updates
# =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
# 2012.01.09 - Bugfix coordinate buffer.
# - Update placement for face.
# - Window flick.
# - Out screen.
# 2012.01.05 - Update Coordinate buffer.
# Fix a placement error.
# 2012.01.04 - Started and Finished script.
#
#==============================================================================
# ▼ Instructions
# =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
# To install this script, open up your script editor and copy/paste this script
# to an open slot below ▼ Materials/素材 but above ▼ Main. Remember to save.
#
# -----------------------------------------------------------------------------
# Message Window text Codes - These go inside of your message window.
# -----------------------------------------------------------------------------
# Position: Effect:
# \bm[x] - Sets Message Window position to event x. *Note
# \cbm - Cancel bubble message.
#
# *Note: Set to 0 to sets position to Game Player.
#
#==============================================================================
# ▼ Compatibility
# =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
# This script is made strictly for RPG Maker VX Ace. It is highly unlikely that
# it will run with RPG Maker VX without adjusting.
#
# This script requires Yanfly Engine Ace - Ace Message System v1.00+, put this
# script below that one.
#
#==============================================================================
module YSA
module POP_MESSAGE
LIMIT_WIDTH = 480
LIMIT_LINE = 2
POP_X_BUFFER = 0
POP_Y_BUFFER = -36
FACE_SPRITE_X_BUFFER = 8 # Buffer x position of the name window.
FACE_SPRITE_Y_BUFFER = 0 # Buffer y position of the name window.
FACE_X_BUFFER_WINDOW_HEIGHT = true
NAME_BUFFER_X_FROM_FACE = 112 # Only apply for Name Window left
FADE_FACE = true
MOVE_FACE = true # Only for first time
end
end
#==============================================================================
# ▼ Editting anything past this point may potentially result in causing
# computer damage, incontinence, explosion of user's head, coma, death, and/or
# halitosis so edit at your own risk.
#==============================================================================
#==============================================================================
# ■ Game_Message
#==============================================================================
class Game_Message
#--------------------------------------------------------------------------
# public instance variables
#--------------------------------------------------------------------------
attr_accessor :face_sprite
end # Game_Message
#==============================================================================
# ■ Scene_Map
#==============================================================================
class Scene_Map < Scene_Base
#--------------------------------------------------------------------------
# public instance variables
#--------------------------------------------------------------------------
attr_accessor :spriteset
#--------------------------------------------------------------------------
# alias method: update
#--------------------------------------------------------------------------
alias pop_message_update update
def update
pop_message_update
$game_message.face_sprite.update if $game_message.face_sprite
end
end # Scene_Map
#==============================================================================
# ■ Spriteset_Map
#==============================================================================
class Spriteset_Map
#--------------------------------------------------------------------------
# public instance variables
#--------------------------------------------------------------------------
attr_accessor :character_sprites
attr_accessor :viewport1
end # Spriteset_Map
#==============================================================================
# ■ Sprite_Message_Face
#==============================================================================
class Window_Message_Face < Window_Base
#--------------------------------------------------------------------------
# initialize
#--------------------------------------------------------------------------
def initialize
super(0, 0, 120, 120)
self.opacity = 0
self.visible = false
@disposing = false
@face_name = ""
@face_index = 0
@move_x = 0
self.z = 100
end
#--------------------------------------------------------------------------
# set_face
#--------------------------------------------------------------------------
def set_face(x, y)
contents.clear
if !$game_message.face_name.empty?
draw_face($game_message.face_name, $game_message.face_index, 0, 0)
self.x = x
self.x += YSA::POP_MESSAGE::FACE_SPRITE_X_BUFFER
if (@face_name != $game_message.face_name || @face_index != $game_message.face_index) && YSA::POP_MESSAGE::MOVE_FACE
self.x -= 30
@move_x = 30
@face_name = $game_message.face_name
@face_index = $game_message.face_index
self.contents_opacity = 0 if YSA::POP_MESSAGE::FADE_FACE
end
self.y = y
self.y -= 96
self.y += YSA::POP_MESSAGE::FACE_SPRITE_Y_BUFFER
self.visible = true
else
self.visible = false
end
end
#--------------------------------------------------------------------------
# hide_face
#--------------------------------------------------------------------------
def hide_face
contents.clear
self.visible = false
end
#--------------------------------------------------------------------------
# update
#--------------------------------------------------------------------------
def update
super
self.contents_opacity += 15 if self.contents_opacity < 255
unless @move_x <= 0
self.x += 2
@move_x -= 2
end
end
end # Sprite_Message_Face
#==============================================================================
# ■ Window_Message
#==============================================================================
class Window_Message < Window_Base
#--------------------------------------------------------------------------
# alias method: message_escape_characters
#--------------------------------------------------------------------------
alias pop_message_message_escape_characters message_escape_characters
def message_escape_characters(result)
result.gsub!(/\eBM\[(\d+)\]/i) { event_pop_message_setup($1.to_i) }
result.gsub!(/\eCBM/i) { event_pop_message_setup(-1) }
result = pop_message_message_escape_characters(result)
return result
end
#--------------------------------------------------------------------------
# new method: event_pop_message_setup
#--------------------------------------------------------------------------
def event_pop_message_setup(event_id)
@event_pop_id = event_id
return ""
end
#--------------------------------------------------------------------------
# overwrite method: new_page
#--------------------------------------------------------------------------
def new_page(text, pos)
adjust_message_window_size(text)
window_message_new_page_ams(text, pos)
if SceneManager.scene_is?(Scene_Map)
if @event_pop_id && @event_pop_id >= 0
contents.clear
$game_message.face_sprite = Window_Message_Face.new if !$game_message.face_sprite
$game_message.face_sprite.set_face(self.x, self.y)
$game_message.face_sprite.y += (self.height / 5) * 2 if YSA::POP_MESSAGE::FACE_X_BUFFER_WINDOW_HEIGHT
self.z = 98
@name_window.x = self.x + YSA::POP_MESSAGE::FACE_SPRITE_X_BUFFER + YSA::POP_MESSAGE::NAME_BUFFER_X_FROM_FACE if (@name_position == 1 || @name_position == 2) && $game_message.face_sprite
end
end
end
#--------------------------------------------------------------------------
# alias method: close
#--------------------------------------------------------------------------
alias pop_message_close close
def close
$game_message.face_sprite.hide_face if $game_message.face_sprite
pop_message_close
end
#--------------------------------------------------------------------------
# alias method: process_all_text
#--------------------------------------------------------------------------
alias pop_message_process_all_text process_all_text
def process_all_text
convert_escape_characters($game_message.all_text)
pop_message_process_all_text
end
#--------------------------------------------------------------------------
# alias method: update_placement
#--------------------------------------------------------------------------
alias event_pop_message_update_placement update_placement
def update_placement
if SceneManager.scene_is?(Scene_Map)
if !@event_pop_id || @event_pop_id < 0
event_pop_message_update_placement
$game_message.face_sprite.hide_face if $game_message.face_sprite
elsif @event_pop_id == 0
hash = SceneManager.scene.spriteset.character_sprites
character = hash[hash.size - 1]
self.y = character.character.screen_y - self.height + YSA::POP_MESSAGE::POP_Y_BUFFER
self.x = character.character.screen_x - self.width / 2 + YSA::POP_MESSAGE::POP_X_BUFFER
if self.x < 0
self.x = 0
end
if self.y < 0
self.y = 64
end
elsif @event_pop_id > 0
hash = SceneManager.scene.spriteset.character_sprites
character = hash[@event_pop_id - 1]
self.y = character.character.screen_y - self.height + YSA::POP_MESSAGE::POP_Y_BUFFER
self.x = character.character.screen_x - self.width / 2 + YSA::POP_MESSAGE::POP_X_BUFFER
if self.x < 0
self.x = 0
end
if self.y < 0
self.y = 64
end
end
else
event_pop_message_update_placement
end
end
#--------------------------------------------------------------------------
# new method: cal_number_line
#--------------------------------------------------------------------------
def cal_number_line(text)
result = 0
text.each_line { result += 1 }
return result
end
#--------------------------------------------------------------------------
# alias method: adjust_message_window_size
#--------------------------------------------------------------------------
alias yea_me_pop_engine_adjust_message_window_size adjust_message_window_size
def adjust_message_window_size(text = " ")
if SceneManager.scene_is?(Scene_Map) && @event_pop_id && @event_pop_id >= 0
n_line = cal_number_line(text) > YSA::POP_MESSAGE::LIMIT_LINE ? YSA::POP_MESSAGE::LIMIT_LINE : cal_number_line(text)
self.height = fitting_height(n_line)
self.width = text_size(text).width + 24
self.width += new_line_x
if self.width < YEA::MESSAGE::FACE_INDENT_X + YSA::POP_MESSAGE::FACE_SPRITE_X_BUFFER + @name_window.width
self.width += @name_window.width
end
if self.width > YSA::POP_MESSAGE::LIMIT_WIDTH
self.width = YSA::POP_MESSAGE::LIMIT_WIDTH
end
create_contents
update_placement
start_name_window
else
yea_me_pop_engine_adjust_message_window_size
end
end
#--------------------------------------------------------------------------
# overwrite method: new_line_x
#--------------------------------------------------------------------------
def new_line_x
return $game_message.face_name.empty? ? 0 : (YEA::MESSAGE::FACE_INDENT_X + YSA::POP_MESSAGE::FACE_SPRITE_X_BUFFER)
end
end # Window_Message
#==============================================================================
#
# ▼ End of File
#
#==============================================================================
- GirloMembre
- Nombre de messages : 468
Age : 29
Localisation : Chez ta mamie [punchline]
Distinction : Ronce-Man dans toute sa splendeur [Coco' ]
Date d'inscription : 31/07/2009
Re: Yanfly Engine Ace - Ace Message System v1.01
Mer 18 Jan 2012 - 13:13
Merci Ultima, je vais tenter de le traduire.
EDIT : Traduction de l'add-on :
EDIT : Traduction de l'add-on :
- Code:
#==============================================================================
#
# ? Yami Script Ace - YEA Message System Add-on: Bubble Message
# -- Dernière MAJ : 2012.01.09
# -- Niveau : Normal
# -- Requis : Yanfly Engine Ace - Ace Message System v1.00+
#
#==============================================================================
$imported = {} if $imported.nil?
$imported["YSA-BubbleMessage"] = true
#==============================================================================
# ? MAJ
# =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
# 2012.01.09 - Bugfix coordinate buffer.
# - Update placement for face.
# - Window flick.
# - Out screen.
# 2012.01.05 - Update Coordinate buffer.
# Fix a placement error.
# 2012.01.04 - Started and Finished script.
#
#==============================================================================
# ? Instructions
# =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
# Pour intaller le script, ouvrez l'éditeur de script et copier/coller ce script
# en dessous de Mateials mais au dessus de Main. N'oubliez pas de sauvergarder.
#
# -----------------------------------------------------------------------------
# Code pour la fenêtre du message - Ecrivez le direcetement dans le message.
# -----------------------------------------------------------------------------
# Position: Effect:
# \bm[x] - Placer la fenêtre du message à l'event x. *Note
# \cbm - Supprimer la fenêtre du message.
#
# *Note: Mettre à 0 pour le placer au dessus du héros.
#
#==============================================================================
# ? Compatibilité.
# =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
# Ce script est strictement fait pour RpgMaker VxAce. Il est hautement
# improbable qu'il fonctionne avec Vx sans ajustements.
#
# Le script Yanfly Engine Ace - Ace Message System v1.00+, est requis pour
# le bon fonctionnement de ce script.
#
#==============================================================================
module YSA
module POP_MESSAGE
LIMIT_WIDTH = 480
LIMIT_LINE = 2
POP_X_BUFFER = 0
POP_Y_BUFFER = -36
FACE_SPRITE_X_BUFFER = 8 # Buffer x position of the name window.
FACE_SPRITE_Y_BUFFER = 0 # Buffer y position of the name window.
FACE_X_BUFFER_WINDOW_HEIGHT = true
NAME_BUFFER_X_FROM_FACE = 112 # Only apply for Name Window left
FADE_FACE = true
MOVE_FACE = true # Only for first time
end
end
#==============================================================================
# ? Ne rien modifié, ce point peut potentiellement provoquer des dommages
# causant l'ordinateur, l'incontinence, l'explosion de la tête de l'utilisateur,
# le coma, la mort et/ou l'halitose. Donc modifier à votre propre risque. (LOL)
#==============================================================================
#==============================================================================
# ¦ Game_Message
#==============================================================================
class Game_Message
#--------------------------------------------------------------------------
# public instance variables
#--------------------------------------------------------------------------
attr_accessor :face_sprite
end # Game_Message
#==============================================================================
# ¦ Scene_Map
#==============================================================================
class Scene_Map < Scene_Base
#--------------------------------------------------------------------------
# public instance variables
#--------------------------------------------------------------------------
attr_accessor :spriteset
#--------------------------------------------------------------------------
# alias method: update
#--------------------------------------------------------------------------
alias pop_message_update update
def update
pop_message_update
$game_message.face_sprite.update if $game_message.face_sprite
end
end # Scene_Map
#==============================================================================
# ¦ Spriteset_Map
#==============================================================================
class Spriteset_Map
#--------------------------------------------------------------------------
# public instance variables
#--------------------------------------------------------------------------
attr_accessor :character_sprites
attr_accessor :viewport1
end # Spriteset_Map
#==============================================================================
# ¦ Sprite_Message_Face
#==============================================================================
class Window_Message_Face < Window_Base
#--------------------------------------------------------------------------
# initialize
#--------------------------------------------------------------------------
def initialize
super(0, 0, 120, 120)
self.opacity = 0
self.visible = false
@disposing = false
@face_name = ""
@face_index = 0
@move_x = 0
self.z = 100
end
#--------------------------------------------------------------------------
# set_face
#--------------------------------------------------------------------------
def set_face(x, y)
contents.clear
if !$game_message.face_name.empty?
draw_face($game_message.face_name, $game_message.face_index, 0, 0)
self.x = x
self.x += YSA::POP_MESSAGE::FACE_SPRITE_X_BUFFER
if (@face_name != $game_message.face_name || @face_index != $game_message.face_index) && YSA::POP_MESSAGE::MOVE_FACE
self.x -= 30
@move_x = 30
@face_name = $game_message.face_name
@face_index = $game_message.face_index
self.contents_opacity = 0 if YSA::POP_MESSAGE::FADE_FACE
end
self.y = y
self.y -= 96
self.y += YSA::POP_MESSAGE::FACE_SPRITE_Y_BUFFER
self.visible = true
else
self.visible = false
end
end
#--------------------------------------------------------------------------
# hide_face
#--------------------------------------------------------------------------
def hide_face
contents.clear
self.visible = false
end
#--------------------------------------------------------------------------
# update
#--------------------------------------------------------------------------
def update
super
self.contents_opacity += 15 if self.contents_opacity < 255
unless @move_x <= 0
self.x += 2
@move_x -= 2
end
end
end # Sprite_Message_Face
#==============================================================================
# ¦ Window_Message
#==============================================================================
class Window_Message < Window_Base
#--------------------------------------------------------------------------
# alias method: message_escape_characters
#--------------------------------------------------------------------------
alias pop_message_message_escape_characters message_escape_characters
def message_escape_characters(result)
result.gsub!(/\eBM\[(\d+)\]/i) { event_pop_message_setup($1.to_i) }
result.gsub!(/\eCBM/i) { event_pop_message_setup(-1) }
result = pop_message_message_escape_characters(result)
return result
end
#--------------------------------------------------------------------------
# new method: event_pop_message_setup
#--------------------------------------------------------------------------
def event_pop_message_setup(event_id)
@event_pop_id = event_id
return ""
end
#--------------------------------------------------------------------------
# overwrite method: new_page
#--------------------------------------------------------------------------
def new_page(text, pos)
adjust_message_window_size(text)
window_message_new_page_ams(text, pos)
if SceneManager.scene_is?(Scene_Map)
if @event_pop_id && @event_pop_id >= 0
contents.clear
$game_message.face_sprite = Window_Message_Face.new if !$game_message.face_sprite
$game_message.face_sprite.set_face(self.x, self.y)
$game_message.face_sprite.y += (self.height / 5) * 2 if YSA::POP_MESSAGE::FACE_X_BUFFER_WINDOW_HEIGHT
self.z = 98
@name_window.x = self.x + YSA::POP_MESSAGE::FACE_SPRITE_X_BUFFER + YSA::POP_MESSAGE::NAME_BUFFER_X_FROM_FACE if (@name_position == 1 || @name_position == 2) && $game_message.face_sprite
end
end
end
#--------------------------------------------------------------------------
# alias method: close
#--------------------------------------------------------------------------
alias pop_message_close close
def close
$game_message.face_sprite.hide_face if $game_message.face_sprite
pop_message_close
end
#--------------------------------------------------------------------------
# alias method: process_all_text
#--------------------------------------------------------------------------
alias pop_message_process_all_text process_all_text
def process_all_text
convert_escape_characters($game_message.all_text)
pop_message_process_all_text
end
#--------------------------------------------------------------------------
# alias method: update_placement
#--------------------------------------------------------------------------
alias event_pop_message_update_placement update_placement
def update_placement
if SceneManager.scene_is?(Scene_Map)
if !@event_pop_id || @event_pop_id < 0
event_pop_message_update_placement
$game_message.face_sprite.hide_face if $game_message.face_sprite
elsif @event_pop_id == 0
hash = SceneManager.scene.spriteset.character_sprites
character = hash[hash.size - 1]
self.y = character.character.screen_y - self.height + YSA::POP_MESSAGE::POP_Y_BUFFER
self.x = character.character.screen_x - self.width / 2 + YSA::POP_MESSAGE::POP_X_BUFFER
if self.x < 0
self.x = 0
end
if self.y < 0
self.y = 64
end
elsif @event_pop_id > 0
hash = SceneManager.scene.spriteset.character_sprites
character = hash[@event_pop_id - 1]
self.y = character.character.screen_y - self.height + YSA::POP_MESSAGE::POP_Y_BUFFER
self.x = character.character.screen_x - self.width / 2 + YSA::POP_MESSAGE::POP_X_BUFFER
if self.x < 0
self.x = 0
end
if self.y < 0
self.y = 64
end
end
else
event_pop_message_update_placement
end
end
#--------------------------------------------------------------------------
# new method: cal_number_line
#--------------------------------------------------------------------------
def cal_number_line(text)
result = 0
text.each_line { result += 1 }
return result
end
#--------------------------------------------------------------------------
# alias method: adjust_message_window_size
#--------------------------------------------------------------------------
alias yea_me_pop_engine_adjust_message_window_size adjust_message_window_size
def adjust_message_window_size(text = " ")
if SceneManager.scene_is?(Scene_Map) && @event_pop_id && @event_pop_id >= 0
n_line = cal_number_line(text) > YSA::POP_MESSAGE::LIMIT_LINE ? YSA::POP_MESSAGE::LIMIT_LINE : cal_number_line(text)
self.height = fitting_height(n_line)
self.width = text_size(text).width + 24
self.width += new_line_x
if self.width < YEA::MESSAGE::FACE_INDENT_X + YSA::POP_MESSAGE::FACE_SPRITE_X_BUFFER + @name_window.width
self.width += @name_window.width
end
if self.width > YSA::POP_MESSAGE::LIMIT_WIDTH
self.width = YSA::POP_MESSAGE::LIMIT_WIDTH
end
create_contents
update_placement
start_name_window
else
yea_me_pop_engine_adjust_message_window_size
end
end
#--------------------------------------------------------------------------
# overwrite method: new_line_x
#--------------------------------------------------------------------------
def new_line_x
return $game_message.face_name.empty? ? 0 : (YEA::MESSAGE::FACE_INDENT_X + YSA::POP_MESSAGE::FACE_SPRITE_X_BUFFER)
end
end # Window_Message
#==============================================================================
#
# ? Fin du script.
#
#==============================================================================
- SagiMembre
- Nombre de messages : 38
Distinction : aucune
Date d'inscription : 19/03/2014
Re: Yanfly Engine Ace - Ace Message System v1.01
Dim 23 Mar 2014 - 18:05
Je remonte ce sujet pour éviter de refaire un nouveau post,
Est ce qu'il est possible d'ajuster les fenêtres lorsqu'elles apparaissent ?
Un screen parlera mieux de lui même :
Voilà c'est assez moche et disproportionné, il y aurait-il un moyen de redimensionner correctement cela ? ^_^
Est ce qu'il est possible d'ajuster les fenêtres lorsqu'elles apparaissent ?
Un screen parlera mieux de lui même :
Voilà c'est assez moche et disproportionné, il y aurait-il un moyen de redimensionner correctement cela ? ^_^
- SpytjeAdministrateur
- Nombre de messages : 5935
Localisation : La terre
Distinction : Spiraliste [Korn']
Forestia : Projet du mois juillet 2014
Papy Pulkigrat [Yama']
Date d'inscription : 16/03/2008
Re: Yanfly Engine Ace - Ace Message System v1.01
Dim 23 Mar 2014 - 18:18
Kikou Sagi attention aux nécropost
Lorsque tu as une question de la sorte tu dois le faire dans la catégorie adéquate.
_________________
- SagiMembre
- Nombre de messages : 38
Distinction : aucune
Date d'inscription : 19/03/2014
Re: Yanfly Engine Ace - Ace Message System v1.01
Dim 23 Mar 2014 - 18:53
Justement ! je pense qu'il est plus adéquat de remonter un post de ce genre pour demander une modification plutôt que de faire un nouveau post qui, après avoir obtenu une réponse sombrera et polluera le fond du forum..
Ma demande pourra servir au personnes futur qui liront ce sujet car je parle clairement d'une amélioration de script.
Ma demande pourra servir au personnes futur qui liront ce sujet car je parle clairement d'une amélioration de script.
- SpytjeAdministrateur
- Nombre de messages : 5935
Localisation : La terre
Distinction : Spiraliste [Korn']
Forestia : Projet du mois juillet 2014
Papy Pulkigrat [Yama']
Date d'inscription : 16/03/2008
Re: Yanfly Engine Ace - Ace Message System v1.01
Dim 23 Mar 2014 - 18:58
Non, tu serais gentil de faire cette demande dans la section entraide merci.
_________________
Re: Yanfly Engine Ace - Ace Message System v1.01
Dim 23 Mar 2014 - 20:28
Houla... Changement de police, changement de couleur, écriture plus attentionnée, pas de doute... Il ne peut s'agir que d'une seule chose au monde...
Spy est maintenant modérateur
Je ne comprends par contre pas pourquoi tout le monde poste encore des scripts dans cette section alors que j'ai posté le lien de la wikiliste qui recense tous les scripts actuels du marchés anglophones, hispanophone, portugophone, ritalophone, etc.
Spy est maintenant modérateur
Je ne comprends par contre pas pourquoi tout le monde poste encore des scripts dans cette section alors que j'ai posté le lien de la wikiliste qui recense tous les scripts actuels du marchés anglophones, hispanophone, portugophone, ritalophone, etc.
- XandiarMembre
- Nombre de messages : 497
Age : 29
Localisation : Suisse
Distinction : aucune
Date d'inscription : 12/10/2013
Re: Yanfly Engine Ace - Ace Message System v1.01
Dim 23 Mar 2014 - 20:40
XtremeViper a écrit:Je ne comprends par contre pas pourquoi tout le monde poste encore des scripts dans cette section alors que j'ai posté le lien de la wikiliste qui recense tous les scripts actuels du marchés anglophones, hispanophone, portugophone, ritalophone, etc.
Sa permet de présenter un script précis, sa évite de chercher dans la liste (même si j'utilise énormément la wikiliste)
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum