TheoAllen

Theo - Simple Text over Event

Jun 8th, 2013
429
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Ruby 3.73 KB | None | 0 0
  1. # =============================================================================
  2. # TheoAllen - Simple Text Over Event
  3. # Version : 1.0
  4. # Contact : www.rpgmakerid.com (or) http://theolized.blogspot.com
  5. # (This script documentation is written in informal indonesian language)
  6. # =============================================================================
  7. ($imported ||= {})[:Theo_TextEvent] = true
  8. # =============================================================================
  9. # CHANGE LOGS:
  10. # -----------------------------------------------------------------------------
  11. # 2013.06.09 - Finished script
  12. # =============================================================================
  13. =begin
  14.  
  15.   Perkenalan :
  16.   Script ini cuman nampilin text diatas event
  17.  
  18.   Cara penggunaan :
  19.   Pasang dibawah material namun diatas main
  20.   Tulis <text: terserah> pada nama event jika mau ditampilin
  21.  
  22.   TERMS OF USE :
  23.   Credit gw, TheoAllen. Kalo semisal u bisa ngedit2 script gw trus jadi lebih
  24.   keren, terserah. Ane bebasin. Asal ngga ngeklaim aja. Kalo semisal mau
  25.   dipake buat komersil, jangan lupa, gw dibagi gratisannya.
  26.  
  27. =end
  28. # =============================================================================
  29. # Konfigurasi kecil2an :
  30. # =============================================================================
  31. module THEO
  32.   module MAP
  33.    
  34.     # Lebar window yg diisi text
  35.     WINDOW_WIDTH = 200
  36.    
  37.     # Size font
  38.     FONT_SIZE   = 17
  39.    
  40.     # Warnanya (red,green,blue
  41.     FONT_COLOR  = Color.new(255,255,255)
  42.    
  43.     # Posisi offset dari koordinat y
  44.     OFFSET_Y    = 0
  45.    
  46.   end
  47. end
  48. # =============================================================================
  49. # Batas konfigurasi
  50. # =============================================================================
  51. module THEO
  52.   module MAP
  53.     module REGEXP
  54.      
  55.       TEXT = /<(?:TEXT|text):(.*)>/i
  56.      
  57.     end
  58.   end
  59. end
  60.  
  61.  
  62. class Window_CharText < Window_Base
  63.  
  64.   include THEO::MAP
  65.  
  66.   def initialize(char,text)
  67.     @char = char
  68.     @text = text
  69.     super(0,0,window_width,window_height)
  70.     self.opacity = 0
  71.     contents.font.size = FONT_SIZE
  72.     update_placement
  73.     refresh
  74.   end
  75.  
  76.   def update_placement
  77.     return unless @char
  78.     self.x = @char.screen_x - self.width/2
  79.     self.y = @char.screen_y - 20 - self.height - OFFSET_Y
  80.   end
  81.  
  82.   def update
  83.     super
  84.     update_placement
  85.   end
  86.  
  87.   def refresh
  88.     contents.clear
  89.     draw_text(0,0,contents.width,FONT_SIZE,@text,1)
  90.   end
  91.  
  92.   def window_width
  93.     WINDOW_WIDTH
  94.   end
  95.  
  96.   def window_height
  97.     return FONT_SIZE + standard_padding*2
  98.   end
  99.  
  100. end
  101.  
  102. class Game_Event < Game_Character
  103.  
  104.   def name
  105.     @event.name
  106.   end
  107.  
  108. end
  109.  
  110. class Scene_Map < Scene_Base
  111.  
  112.   include THEO::MAP
  113.  
  114.   alias pre_text_over_event_start start
  115.   def start
  116.     pre_text_over_event_start
  117.     create_text_event_windows
  118.   end
  119.  
  120.   def create_text_event_windows
  121.     @event_text_windows = []
  122.     $game_map.events.values.each do |event|
  123.       case event.name
  124.       when REGEXP::TEXT
  125.         text = $1.to_s
  126.         @event_text_windows.push(Window_CharText.new(event,text))
  127.       end
  128.     end
  129.   end
  130.  
  131.   alias pre_update_window_text update
  132.   def update
  133.     pre_update_window_text
  134.     update_text_window
  135.   end
  136.  
  137.   def update_text_window
  138.     @event_text_windows.each {|w| w.update}
  139.   end
  140.  
  141.   alias pre_text_event_terminate terminate
  142.   def termminate
  143.     pre_text_event_terminate
  144.     dispose_text_event_windows
  145.   end
  146.  
  147.   def dispose_text_event_windows
  148.     @event_text_windows.each {|w| w.dispose}
  149.   end
  150.  
  151.   alias text_event_post_transfer post_transfer
  152.   def post_transfer
  153.     dispose_text_event_windows
  154.     create_text_event_windows
  155.     text_event_post_transfer
  156.   end
  157.  
  158. end
Advertisement
Add Comment
Please, Sign In to add comment