Advertisement
Guest User

Message Window SEs v1.0 - By FenixFyreX

a guest
Mar 25th, 2012
647
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Ruby 4.30 KB | None | 0 0
  1. # -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-==-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- #
  2. # Message Window SEs v1.0
  3. # FenixFyreX
  4. # RPG Maker VxAce
  5. # -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-==-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- #
  6. # This script adds sound effects to the characters and control characters drawn
  7. # in the message window. You can choose for the character to wait with the se,
  8. # or just for the se to wait, thus not slowing the text any.
  9. # -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-==-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- #
  10.  
  11. module FyxA
  12.   module LetterSE
  13.  
  14.     # How long should each respective type of characte wait? In frames.
  15.     Waits = {
  16.       :char => 1,
  17.       :line => 4,
  18.       :page => 22, }
  19.  
  20.  
  21.     # Should the respective type of character wait for its alotted time above,
  22.     # or should just the SE wait?
  23.     CharsWait = {
  24.       :char => true,
  25.       :line => true,
  26.       :page => true, }
  27.  
  28.  
  29.     # RPG::SE.new(name,volume,pitch)
  30.     # volume and pitch can be left out, or included.
  31.     # Set to nil for no sound effect at all.
  32.  
  33.     SEs = {
  34.     :char => RPG::SE.new("Switch1",70),
  35.     :line => RPG::SE.new("Bell3",  70),
  36.     :page => RPG::SE.new("Book1"),
  37.     :gold => nil,
  38.     :wait => nil,
  39.     :input => nil,
  40.     :fast => nil,
  41.     :slow => nil,
  42.     :skip => nil,
  43.     :color => nil,
  44.     :icon => nil,
  45.     :big => nil,
  46.     :small => nil,  }
  47.  
  48.   end
  49. end
  50.  
  51.  
  52. class Window_Message < Window_Base
  53.  
  54.   alias initialize_char_se_wait initialize
  55.   def initialize(*a,&b)
  56.     @fyx_waits = {:char => fyx_wait(:char),
  57.                   :line => fyx_wait(:line),
  58.                   :page => fyx_wait(:page), }
  59.     initialize_char_se_wait(*a,&b)
  60.   end
  61.  
  62.   alias new_page_se_fyx new_page
  63.   def new_page(*a,&b)
  64.     new_page_char_wait
  65.     new_page_se_fyx(*a,&b)
  66.   end
  67.  
  68.   alias process_new_line_se_fyx process_new_line
  69.   def process_new_line(*a,&b)
  70.     new_line_char_wait
  71.     process_new_line_se_fyx(*a,&b)
  72.   end
  73.  
  74.   alias process_escape_se_fyx process_escape_character
  75.   def process_escape_character(*a,&b)
  76.     fyx_escape_se(a[0].upcase).play rescue nil
  77.     process_escape_se_fyx(*a,&b)
  78.   end
  79.  
  80.   alias process_norm_char_se_fyx process_normal_character
  81.   def process_normal_character(*a,&b)
  82.     normal_char_wait
  83.     process_norm_char_se_fyx(*a,&b)
  84.   end
  85.  
  86.   alias close_n_wait_se_fyx close_and_wait
  87.   def close_and_wait(*a,&b)
  88.     close_n_wait_se_fyx(*a,&b)
  89.     self.contents.clear
  90.   end
  91.  
  92.   def obtain_escape_param_!(text)
  93.     text.slice(/^\[\d+\]/)[/\d+/].to_i rescue 0
  94.   end
  95.  
  96.   def char_wait_se?(sym)
  97.     (b = FyxA::LetterSE::CharsWait[sym]).nil? ? false : b
  98.   end
  99.  
  100.   def fyx_wait(sym)
  101.     (n = FyxA::LetterSE::Waits[sym]).nil? ? 0 : n
  102.   end
  103.  
  104.   def reset_fyx_wait(sym)
  105.     @fyx_waits[sym] = fyx_wait(sym)
  106.   end
  107.  
  108.   def fyx_escape_se(code)
  109.     case code
  110.     when '$'; fyx_char_se(:gold)
  111.     when '.','|'; fyx_char_se(:wait)
  112.     when '!'; fyx_char_se(:input)
  113.     when '>'; fyx_char_se(:fast)
  114.     when '<'; fyx_char_se(:slow)
  115.     when '^'; fyx_char_se(:skip)
  116.     when 'C'; fyx_char_se(:color)
  117.     when 'I'; fyx_char_se(:icon)
  118.     when '{'; fyx_char_se(:big)
  119.     when '}'; fyx_char_se(:small)
  120.     end
  121.   end
  122.  
  123.   def fyx_char_se(sym)
  124.     (se = FyxA::LetterSE::SEs[sym]).nil? ? RPG::SE.new : se
  125.   end
  126.  
  127.   def normal_char_wait
  128.     if char_wait_se?(:char)
  129.       wait(fyx_wait(:char))
  130.       fyx_char_se(:char).play rescue nil
  131.     else
  132.       update_normal_char_wait
  133.     end
  134.   end
  135.  
  136.   def new_line_char_wait
  137.     if char_wait_se?(:line)
  138.       wait(fyx_wait(:line))
  139.       fyx_char_se(:line).play rescue nil
  140.     else
  141.       update_line_char_wait
  142.     end
  143.   end
  144.  
  145.   def new_page_char_wait
  146.     self.contents.clear
  147.     if char_wait_se?(:page)
  148.       wait(fyx_wait(:page))
  149.       fyx_char_se(:page).play rescue nil
  150.     else
  151.       update_page_char_wait
  152.     end
  153.   end
  154.  
  155.   def update_normal_char_wait
  156.     @fyx_waits[:char] -= 1
  157.     if @fyx_waits[:char] <= 0
  158.       fyx_char_se(:char).play rescue nil
  159.       reset_fyx_wait(:char)
  160.     end
  161.   end
  162.  
  163.   def update_line_char_wait
  164.     @fyx_waits[:line] -= 1
  165.     if @fyx_waits[:line] <= 0
  166.       fyx_char_se(:line).play rescue nil
  167.       reset_fyx_wait(:line)
  168.     end
  169.   end
  170.  
  171.   def update_page_char_wait
  172.     @fyx_waits[:page] -= 1
  173.     if @fyx_waits[:page] <= 0
  174.       fyx_char_se(:page).play rescue nil
  175.       reset_fyx_wait(:page)
  176.     end
  177.   end
  178. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement