################################################################################
############################# ANIM FACE ########################################
################################################################################
=begin
Auteur : Biward
Version : 1.0
Fonctionne sur : VX
=end
module BI
module FACE
# Déterminez ici la variable qui stockera l'animation de la face
VARIABLE = 1
# Indiquez ici les index du fichier de la Face utilisée pour le message
# Ces différents index seront choisis en fonction de la valeur de la variable
# Par exemple, si on a :
#
# VARIABLE = 1
#
# NB_INDEX = {
# 1 => [2, 1],
# }
#
# Cela veut dire que si la variable 1 vaut 1, alors les faces affichées sur
# le message seront les faces (du fichier choisi) qui ont pour index 2 puis 1.
# Ces deux faces s'afficheront donc à intervalle régulieur.
NB_INDEX = {
1 => [2, 1],
2 => [3, 4],
}
# Déterminez ici l'intervalle entre chaque affichage de face en fonction de
# la valeur de la variable choisie plus haut.
FRAME = {
1 => 30,
2 => 60,
}
end
end
################################################################################
##### Début du script
################################################################################
### Window_Message ###
# ajout d'une méthode permettant l'affichage de la face en fonction de l'index
# reconnaissance à la commande \A
class Window_Message < Window_Selectable
def aff_new_face(index)
i = BI::FACE::NB_INDEX[$game_variables[BI::FACE::VARIABLE]][index - 1] - 1
draw_face($game_message.face_name, i, 0, 0) if index
end
alias pec_bi convert_special_characters
def convert_special_characters
@text.gsub!(/\\A/) { "\x33" }
pec_bi
end
alias um_bi update_message
def update_message
loop do
c = @text.slice!(/./m) # Get next text character
case c
when nil # There is no text that must be drawn
finish_message # Finish update
break
when "\x00" # New line
new_line
if @line_count >= MAX_LINE # If line count is maximum
unless @text.empty? # If there is more
self.pause = true # Insert number input
break
end
end
when "\x01" # \C[n] (text character color change)
@text.sub!(/\[([0-9]+)\]/, "")
contents.font.color = text_color($1.to_i)
next
when "\x02" # \G (gold display)
@gold_window.refresh
@gold_window.open
when "\x03" # \. (wait 1/4 second)
@wait_count = 15
break
when "\x04" # \| (wait 1 second)
@wait_count = 60
break
when "\x05" # \! (Wait for input)
self.pause = true
break
when "\x06" # \> (Fast display ON)
@line_show_fast = true
when "\x07" # \< (Fast display OFF)
@line_show_fast = false
when "\x08" # \^ (No wait for input)
@pause_skip = true
when "\x33"
print "yo"
$anim_mess = true
else # Normal text character
contents.draw_text(@contents_x, @contents_y, 40, WLH, c)
c_width = contents.text_size(c).width
@contents_x += c_width
end
break unless @show_fast or @line_show_fast
end
end
end
### Scene_Map ###
# ajout d'outils dans l'update afin de mettre à jour la fenêtre de message
class Scene_Map < Scene_Base
alias u_face_bi update
def update
u_face_bi
if ! $game_message.visible && $anim_mess
$anim_mess = false
end
if $game_message.visible
if $anim_mess
@count = 0 if ! @count
@index_face = 0 if ! @index_face
@index_face += 1 if @count == BI::FACE::FRAME[$game_variables[BI::FACE::VARIABLE]]
@message_window.aff_new_face(@index_face.to_i) if @count == BI::FACE::FRAME[$game_variables[BI::FACE::VARIABLE]]
if @count == BI::FACE::FRAME[$game_variables[BI::FACE::VARIABLE]] && @index_face == (BI::FACE::NB_INDEX[$game_variables[BI::FACE::VARIABLE]].size)
@index_face = 0
end
@count = 0 if @count == BI::FACE::FRAME[$game_variables[BI::FACE::VARIABLE]]
@count += 1 if @count
else
@count = nil if @count
@index_face = nil if @index_face
end
else
@count = nil if @count
@index_face = nil if @index_face
end
end
end
################################################################################
##### Fin du script
################################################################################