Advertisement
biward

[VX] AnimFace

Oct 28th, 2013
113
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Ruby 4.97 KB | None | 0 0
  1. ################################################################################
  2. ############################# ANIM FACE ########################################
  3. ################################################################################
  4. =begin
  5.  
  6. Auteur : Biward
  7. Version : 1.0
  8. Fonctionne sur : VX
  9.  
  10.  
  11.  
  12. =end
  13. module BI
  14.   module FACE
  15.    
  16.     # Déterminez ici la variable qui stockera l'animation de la face
  17.     VARIABLE = 1
  18.    
  19.     # Indiquez ici les index du fichier de la Face utilisée pour le message
  20.     # Ces différents index seront choisis en fonction de la valeur de la variable
  21.     # Par exemple, si on a :
  22.     #
  23.     # VARIABLE = 1
  24.     #
  25.     # NB_INDEX = {
  26.     # 1 => [2, 1],
  27.     # }
  28.     #
  29.     # Cela veut dire que si la variable 1 vaut 1, alors les faces affichées sur
  30.     # le message seront les faces (du fichier choisi) qui ont pour index 2 puis 1.
  31.     # Ces deux faces s'afficheront donc à intervalle régulieur.
  32.     NB_INDEX = {
  33.     1 => [2, 1],
  34.     2 => [3, 4],
  35.     }
  36.    
  37.     # Déterminez ici l'intervalle entre chaque affichage de face en fonction de
  38.     # la valeur de la variable choisie plus haut.
  39.     FRAME = {
  40.     1 => 30,
  41.     2 => 60,
  42.     }
  43.    
  44.   end
  45. end
  46.  
  47. ################################################################################
  48. ##### Début du script
  49. ################################################################################
  50.  
  51. ### Window_Message ###
  52. # ajout d'une méthode permettant l'affichage de la face en fonction de l'index
  53. # reconnaissance à la commande \A
  54. class Window_Message < Window_Selectable
  55.   def aff_new_face(index)
  56.     i = BI::FACE::NB_INDEX[$game_variables[BI::FACE::VARIABLE]][index - 1] - 1
  57.     draw_face($game_message.face_name, i, 0, 0) if index
  58.   end
  59.   alias pec_bi convert_special_characters
  60.   def convert_special_characters
  61.     @text.gsub!(/\\A/)              { "\x33" }
  62.     pec_bi
  63.   end  
  64.   alias um_bi update_message
  65.   def update_message
  66.     loop do
  67.       c = @text.slice!(/./m)            # Get next text character
  68.       case c
  69.       when nil                          # There is no text that must be drawn
  70.         finish_message                  # Finish update
  71.         break
  72.       when "\x00"                      # New line
  73.         new_line
  74.         if @line_count >= MAX_LINE      # If line count is maximum
  75.           unless @text.empty?          # If there is more
  76.             self.pause = true          # Insert number input
  77.             break
  78.           end
  79.         end
  80.       when "\x01"                      # \C[n]  (text character color change)
  81.         @text.sub!(/\[([0-9]+)\]/, "")
  82.         contents.font.color = text_color($1.to_i)
  83.         next
  84.       when "\x02"                      # \G  (gold display)
  85.         @gold_window.refresh
  86.         @gold_window.open
  87.       when "\x03"                      # \.  (wait 1/4 second)
  88.         @wait_count = 15
  89.         break
  90.       when "\x04"                      # \|  (wait 1 second)
  91.         @wait_count = 60
  92.         break
  93.       when "\x05"                      # \!  (Wait for input)
  94.         self.pause = true
  95.         break
  96.       when "\x06"                      # \>  (Fast display ON)
  97.         @line_show_fast = true
  98.       when "\x07"                      # \<  (Fast display OFF)
  99.         @line_show_fast = false
  100.       when "\x08"                      # \^  (No wait for input)
  101.         @pause_skip = true
  102.       when "\x33"
  103.         print "yo"
  104.         $anim_mess = true
  105.       else                              # Normal text character
  106.         contents.draw_text(@contents_x, @contents_y, 40, WLH, c)
  107.         c_width = contents.text_size(c).width
  108.         @contents_x += c_width
  109.       end
  110.       break unless @show_fast or @line_show_fast
  111.     end
  112.   end
  113. end
  114.  
  115. ### Scene_Map ###
  116. # ajout d'outils dans l'update afin de mettre à jour la fenêtre de message
  117. class Scene_Map < Scene_Base
  118.   alias u_face_bi update
  119.   def update
  120.     u_face_bi
  121.     if ! $game_message.visible && $anim_mess
  122.       $anim_mess = false
  123.     end
  124.     if $game_message.visible
  125.       if $anim_mess
  126.         @count = 0 if ! @count
  127.         @index_face = 0 if ! @index_face
  128.         @index_face += 1 if @count == BI::FACE::FRAME[$game_variables[BI::FACE::VARIABLE]]
  129.         @message_window.aff_new_face(@index_face.to_i) if @count == BI::FACE::FRAME[$game_variables[BI::FACE::VARIABLE]]
  130.         if @count == BI::FACE::FRAME[$game_variables[BI::FACE::VARIABLE]] && @index_face == (BI::FACE::NB_INDEX[$game_variables[BI::FACE::VARIABLE]].size)
  131.           @index_face = 0
  132.         end
  133.         @count = 0 if @count == BI::FACE::FRAME[$game_variables[BI::FACE::VARIABLE]]
  134.         @count += 1 if @count
  135.       else
  136.         @count = nil if @count
  137.         @index_face = nil if @index_face
  138.       end
  139.     else
  140.       @count = nil if @count
  141.       @index_face = nil if @index_face
  142.     end
  143.   end
  144. end
  145. ################################################################################
  146. ##### Fin du script
  147. ################################################################################
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement