Don't like ads? PRO users don't see any ads ;-)
Guest

Untitled

By: a guest on Apr 26th, 2011  |  syntax: Ruby  |  size: 7.50 KB  |  hits: 445  |  expires: Never
download  |  raw  |  embed  |  report abuse  |  print
Text below is selected. Please press Ctrl+C to copy to your clipboard. (⌘+C on Mac)
  1. #===============================================================================
  2. # SHOW THE MAP NAME - REVOLUTION MODE -
  3. #------------------------------------------------------------------------------
  4. # Author Ramiro (Holy_wyvern, ramiazul)
  5. #------------------------------------------------------------------------------
  6. # Version 1.0
  7. #------------------------------------------------------------------------------
  8. # Description:
  9. # Allows you to show the name of some maps, whit a nice graphical style
  10. #------------------------------------------------------------------------------
  11. # Compatibility:
  12. # RPG maker VX script.
  13. # Shoud work with anyting (99.999 % sure)
  14. #------------------------------------------------------------------------------
  15. # Instructions:
  16. # Insert on materials section
  17. #
  18. # To show the hero's name on a map or a variable
  19. # \N[id of actor on database]         (1  -  999)
  20. # \P[id of variable]                  (1  -  999)
  21. # \PN[id of actor on party position]  (0  -    3)
  22. # (Yes it's like the massage window...)
  23. #------------------------------------------------------------------------------
  24. # BUGS:
  25. # Not now... Report if you found one
  26. #------------------------------------------------------------------------------
  27. # Author's notes:
  28. # Just give credit if used.
  29. #===============================================================================
  30.  
  31. #===============================================================================
  32. # Configurations
  33. #===============================================================================
  34.  
  35. module MAPWINDOW
  36.  
  37.   VIEWING_TIME = 160                        # viewing time of letter
  38.   LETTER_ANIM  = 200                        # starting animating time
  39.   LETTER_END   = 20                         # time for hiding the name
  40.   INIT_X       = 10                         # start X of first letter
  41.   INIT_Y       = 10                         # start Y of first letter
  42.   START_ANGLE  = -180                       # start angle of firs letter
  43.   RECT_COLOR   = Color.new(255,255,255)     # The line's color
  44.   RECT_X       = 0                          # the X correction of the rect
  45.   RECT_Y       = -14                        # the Y correction
  46.   FIRST_LETTER = Color.new(255,255,255)     # the first letter´s color
  47.   LETTER_COLOR = Color.new(255,255,255,200) # other letter´s colors
  48.   OPACITY      = 200                        # the letter´s opacity
  49.   RECT_OPACITY = 255                        # opacity of the rect
  50.   FONT_SIZE    = 25                         # the size of the font
  51.   EX_START_X   = 0                          # X start movement
  52.   RECT_HEIGHT  = 1                          # the height of the rect
  53.   NOT_SHOW_MAPS= []                         # put map id of maps than don't show
  54.                                             # it's name eg. [1,2,3]
  55. end
  56.  
  57.  
  58. #===============================================================================
  59. # GAME MAP SETUP                                                
  60. #===============================================================================
  61. class Game_Map
  62.   def name
  63.     map_infos = load_data("Data/MapInfos.rvdata")
  64.     name = map_infos[@map_id].name.clone
  65.     name.gsub!(/\\N\[([0-9]+)\]/i) { $game_actors[$1.to_i].name }
  66.     name.gsub!(/\\PN\[([0-9]+)\]/i) { $game_party.members[$1.to_i].name }
  67.     name.gsub!(/\\V\[([0-9]+)\]/i) { $game_variables[$1.to_i] }  
  68.  
  69.     return name
  70.   end
  71. end
  72.  
  73. #===============================================================================
  74. # The spritest of letters                                            
  75. #===============================================================================
  76.  
  77. class Spriteset_MapName
  78.   include MAPWINDOW
  79.   def initialize
  80.     @letters = []
  81.     @index   = 0
  82.     @finish_count = @dispose_count = 0
  83.   end
  84.  
  85.   def set_sprites
  86.    if !NOT_SHOW_MAPS.include?($game_map.map_id)
  87.     dispose_sprites
  88.     @letters = []
  89.     name = $game_map.name.scan(/./).clone
  90.     @l_count = (LETTER_ANIM / name.size) + 1
  91.     @index   = 0
  92.     @finish = false
  93.     @finish_count = VIEWING_TIME
  94.     @dispose_count = LETTER_END
  95.  
  96.     for i in 0...name.size
  97.        @letters[i] = Sprite.new
  98.        @letters[i].bitmap = Bitmap.new(FONT_SIZE,FONT_SIZE)
  99.        @letters[i].ox = 10
  100.        @letters[i].oy = 10
  101.        @letters[i].bitmap.font.size = FONT_SIZE
  102.        @letters[i].bitmap.font.color = i == 0 ? FIRST_LETTER : LETTER_COLOR
  103.        @letters[i].bitmap.draw_text(0,0,FONT_SIZE,FONT_SIZE,name[i],1)
  104.        @letters[i].x = i * (FONT_SIZE / 2) + EX_START_X + INIT_X
  105.        @letters[i].y = INIT_Y
  106.        @letters[i].z = 9999
  107.        @letters[i].opacity = 0
  108.        @letters[i].angle = START_ANGLE
  109.      end
  110.     @b_count = @letters.size * ((LETTER_ANIM / @letters.size) + 1)
  111.     @border = Sprite.new
  112.     @border.bitmap = Bitmap.new(@letters.size * (FONT_SIZE / 2) + (FONT_SIZE / 2), RECT_HEIGHT)
  113.     @border.bitmap.fill_rect(Rect.new(0,0,@letters.size * (FONT_SIZE / 2) + (FONT_SIZE / 2), RECT_HEIGHT),RECT_COLOR)
  114.     @border.x = - @border.width + INIT_X - (FONT_SIZE / 2) - RECT_X
  115.     @border.opacity = 0
  116.     @border.y = INIT_Y + (FONT_SIZE ) + RECT_Y
  117.   end
  118.   end
  119.  
  120.   def update
  121.     if !@finish
  122.     if @letters[@index]
  123.       if @l_count > 0
  124.          @letters[@index].x = (@letters[@index].x * (@l_count - 1) + @index * (FONT_SIZE / 2) + INIT_X) / @l_count
  125.          @letters[@index].opacity = (@letters[@index].opacity * (@l_count - 1) + OPACITY) / @l_count
  126.          @letters[@index].angle = (@letters[@index].angle * (@l_count - 1)) / @l_count
  127.          @l_count -= 1
  128.  
  129.          if @b_count > 0
  130.            @border.x = (@border.x * (@b_count - 1) + INIT_X - (FONT_SIZE / 2) + RECT_X) / @b_count
  131.            @border.opacity = (@border.opacity * (@b_count - 1) + RECT_OPACITY) / @b_count
  132.            @b_count -= 1
  133.          end
  134.        else
  135.          @index += 1
  136.          @l_count = ((LETTER_ANIM / @letters.size) + 1)
  137.        end
  138.     else
  139.       @finish = true
  140.     end
  141.  
  142.   else
  143.     if @finish_count > 0
  144.       @finish_count -= 1
  145.       return
  146.     end  
  147.     if @dispose_count > 0
  148.  
  149.       for i in 0...@letters.size
  150.         @letters[i].x = (@letters[i].x * (@dispose_count - 1) + i * (FONT_SIZE / 2) + 24 + INIT_X) / @dispose_count
  151.         @letters[i].opacity = (@letters[i].opacity * (@dispose_count - 1)) / @dispose_count
  152.       end  
  153.       @border.x = (@border.x * (@dispose_count - 1)+ INIT_X + RECT_X - (FONT_SIZE / 2) - @border.width ) / @dispose_count
  154.       @border.opacity = (@border.opacity * (@dispose_count - 1)) / @dispose_count    
  155.       @dispose_count -= 1
  156.     end
  157.  
  158.   end
  159.  
  160.   end
  161.  
  162.   def dispose
  163.     dispose_sprites
  164.   end
  165.  
  166.   def dispose_sprites
  167.     for i in @letters
  168.       i.dispose
  169.     end
  170.     if @border
  171.       @border.bitmap.dispose if @border.bitmap
  172.       @border.dispose
  173.     end  
  174.   end
  175.  
  176. end
  177.  
  178. #===============================================================================
  179. # The map                                          
  180. #===============================================================================
  181.  
  182. class Scene_Map < Scene_Base
  183.  
  184.  
  185.   alias smsbstrt start
  186.   alias smsbupdbas update_transfer_player
  187.   alias smsbupdnorm update
  188.   alias smsbterm terminate
  189.  
  190.   def start
  191.     @letters = Spriteset_MapName.new
  192.     smsbstrt
  193. #~     @letters.set_sprites
  194.   end
  195.  
  196.   def update
  197.     @letters.update
  198.     smsbupdnorm
  199.   end
  200.  
  201.   def update_transfer_player
  202.     teleported = true if $game_player.transfer?
  203.     smsbupdbas
  204.     @letters.set_sprites if teleported
  205.   end
  206.  
  207.   def terminate
  208.     @letters.dispose
  209.     smsbterm
  210.   end
  211.  
  212. end