Advertisement
LiTTleDRAgo

[RGSS/2/3] Show Event Name v5

Aug 3rd, 2013
961
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Ruby 9.77 KB | None | 0 0
  1. #:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=
  2. # Show Event Name
  3. # Version: 5.02
  4. # Author : LiTTleDRAgo
  5. #:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:
  6. #
  7. # Explanation:
  8. #
  9. #   - This script shows event name in map
  10. #
  11. # Instructions:
  12. #
  13. #   - Setup the few configurations below.  
  14. #   - This script uses comments in the event's pages at any line.
  15. #    
  16. #     Comment : <Show Name>
  17. #               Name: String
  18. #               Fontname: String
  19. #               Fontsize: Integer
  20. #               Bold
  21. #               Italic
  22. #               Color: R,G,B,A
  23. #
  24. #  To show Actors/Items/Weapons/Armors Name, type
  25. #       Name: ActorID
  26. #       Name: ItemID
  27. #       Name: WeaponID
  28. #       Name: ArmorID
  29. #       Name: SkillID
  30. #       Name: EnemyID
  31. #       Name: VarID
  32. #
  33. #  Example =
  34. #     Comment : <Show Name>
  35. #               Name: Actor1
  36. #    
  37. #
  38. #   That's all
  39. #
  40. #  Press Z and C together to turn on the name on / off
  41. #
  42. #:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:
  43.  
  44. module EventName
  45.  
  46.   FONTNAME    = ['Calibri',Font.default_name]
  47.   FONTSIZE    = 18
  48.   BOLD        = true
  49.   ITALIC      = true
  50.   COLOR       = Color.new(255,255,255,240)
  51.  
  52.   SWITCH      = 50               # Switch for Disable Show Event Name
  53.   PRESS_BTN   = [Input::A,       # (Z for XP) (Shift for VX)
  54.                  Input::C]       # (C/Enter for XP) (Z/Enter for VX)
  55.   POSITION    = "A"              # A = Above, B = Below
  56.   OFFSET      = [0,0]            # Offset X and Y
  57.   RANGE       = nil#3                # Range from character to show the name
  58.                                  # Change to nil to disable
  59.   Z_VALUE     = 1000
  60.  
  61.   SHOW_IN_SCENE = [Scene_Map]
  62.  
  63. end
  64.  
  65. ($imported ||= {})[:drg_show_event_name] = 5.02
  66.  
  67. core = "This script needs Drago - Core Engine ver 1.14 or above"
  68. ($imported[:drg_core_engine]||0) >= 1.14 || raise(core)
  69.  
  70. #==============================================================================
  71. # ** Sprite_EventName
  72. #------------------------------------------------------------------------------
  73. #  This sprite is used to display Event Name. It observes a instance of the
  74. # Game_Character class and automatically changes sprite conditions.
  75. #==============================================================================
  76. class Sprite_Character
  77.   #--------------------------------------------------------------------------
  78.   # * Constant
  79.   #--------------------------------------------------------------------------
  80.   DIS_EV_SWITCH = EventName::SWITCH
  81.   PRESS_BTN     = EventName::PRESS_BTN
  82.   POS           = EventName::POSITION
  83.   RANGE         = EventName::RANGE
  84.   SCENE         = EventName::SHOW_IN_SCENE
  85.   #--------------------------------------------------------------------------
  86.   # * Alias Listing
  87.   #--------------------------------------------------------------------------
  88.   alias_sec_method :update_spritename,  :update
  89.   alias_sec_method :dispose_spritename, :dispose
  90.   #--------------------------------------------------------------------------
  91.   # * Update
  92.   #--------------------------------------------------------------------------
  93.   def update
  94.     update_spritename
  95.     update_bitmap_name      
  96.     update_name_visibility
  97.     return if !@name_event.visible
  98.     update_name_position
  99.   end
  100.   #--------------------------------------------------------------------------
  101.   # * Dispose
  102.   #--------------------------------------------------------------------------
  103.   def dispose
  104.     dispose_spritename
  105.     @name_event.dispose
  106.   end
  107.   #--------------------------------------------------------------------------
  108.   # * create_name_sprite
  109.   #--------------------------------------------------------------------------
  110.   def create_name_sprite
  111.     @name_event = Sprite.new
  112.     @name_event.bitmap = Bitmap.new(300,280)
  113.   end
  114.   #--------------------------------------------------------------------------
  115.   # * update_bitmap_name
  116.   #--------------------------------------------------------------------------
  117.   def update_bitmap_name
  118.     create_name_sprite if @name_event.nil?
  119.     refresh_name if @character_showname != name_var
  120.   end
  121.   #--------------------------------------------------------------------------
  122.   # * update_name_position
  123.   #--------------------------------------------------------------------------
  124.   def update_name_position
  125.     @name_event.x = self.x - @name_event.bitmap.width/2
  126.     @name_event.y = self.y - @name_event.bitmap.height/2
  127.     @name_event.y = self.y - @name_event.bitmap.height/2 - self.oy if POS == "A"
  128.     @name_event.x += EventName::OFFSET.at(0)
  129.     @name_event.y += EventName::OFFSET.at(1)
  130.     @name_event.z = self.z + EventName::Z_VALUE
  131.     @name_event.opacity    = self.opacity
  132.     @name_event.blend_type = self.blend_type
  133.     @name_event.bush_depth = self.bush_depth
  134.   end
  135.   #--------------------------------------------------------------------------
  136.   # * Refresh
  137.   #--------------------------------------------------------------------------
  138.   def refresh_name
  139.     @name_event.bitmap.clear
  140.     event_name_check
  141.     draw_name if @char
  142.   end
  143.   #--------------------------------------------------------------------------
  144.   # * event_name_check
  145.   #--------------------------------------------------------------------------
  146.   def event_name_check
  147.     @character_showname = name_var
  148.     @fontname = EventName::FONTNAME.flatten
  149.     @fontsize = EventName::FONTSIZE
  150.     @bold     = EventName::BOLD
  151.     @italic   = EventName::ITALIC
  152.     @color    = EventName::COLOR
  153.     @char     = nil
  154.     @char     = name_var if @character.is_a?(Game_Player)
  155.     @char     = name_var if defined?(Game_Follower) && @character.is_a?(Game_Follower)
  156.     @show_name = false
  157.     if name_var =~ /<(?:SHOW_NAME|show name)>/i
  158.       if true
  159.         name = name_var
  160.         begin
  161.           @char = $1.to_s                       if name =~ /name: [ ]*(.*)/i
  162.           @char = $game_actors[$1.to_i].name    if name =~ /name: actor(\d+)/i
  163.           @char = $game_party.members[$1.to_i].name  if name =~ /name: party(\d+)/i
  164.           @char = $data_items[$1.to_i].name     if name =~ /name: item(\d+)/i
  165.           @char = $data_weapons[$1.to_i].name   if name =~ /name: weapon(\d+)/i
  166.           @char = $data_armors[$1.to_i].name    if name =~ /name: armor(\d+)/i
  167.           @char = $data_skills[$1.to_i].name    if name =~ /name: skill(\d+)/i
  168.           @char = $data_enemies[$1.to_i].name   if name =~ /name: enemy(\d+)/i
  169.           @char = $game_variables[$1.to_i].to_s if name =~ /name: var(\d+)/i
  170.         rescue
  171.           @char = ''
  172.         end
  173.         @fontname = $1.to_s            if name =~ /fontname: [ ]*(.*)/i
  174.         @fontsize = $1.to_i            if name =~ /fontsize: (\d+)/i
  175.         @bold     = true               if name =~ /bold/i
  176.         @italic   = true               if name =~ /italic/i
  177.         @color = Color.new($1.to_i,$2.to_i,$3.to_i) if name =~ /color: (\d+),(\d+),(\d+)/i      
  178.         @color = Color.new($1.to_i,$2.to_i,$3.to_i,$4.to_i) if name =~ /color: (\d+),(\d+),(\d+),(\d+)/i      
  179.       end
  180.     end
  181.   end
  182.   #--------------------------------------------------------------------------
  183.   # * name_var
  184.   #--------------------------------------------------------------------------
  185.   def name_var
  186.     n = nil
  187.     n ||= @character.note if @character.respond_to?(:note) && @character.note != ''
  188.     n ||= @character.name if @character.respond_to?(:name)
  189.     n ||= ''
  190.     return n
  191.   end
  192.   #--------------------------------------------------------------------------
  193.   # * Draw Name
  194.   #--------------------------------------------------------------------------
  195.   def draw_name
  196.     bitmap = @name_event.bitmap
  197.     bitmap.font.name   = @fontname
  198.     bitmap.font.italic = @italic
  199.     bitmap.font.size   = @fontsize
  200.     bitmap.font.bold   = @bold
  201.     bitmap.font.color  = @color
  202.     args = [0, 0, bitmap.width, bitmap.height, @char ,1]
  203.     method = [:draw_edging_text, :draw_text]
  204.     method = method.select {|m| bitmap.respond_to?(m)}.first
  205.     bitmap.send(method, *args)
  206.   end
  207.   #--------------------------------------------------------------------------
  208.   # * Visibility
  209.   #--------------------------------------------------------------------------
  210.   def update_name_visibility
  211.     disable_switch = DIS_EV_SWITCH ? @character.opacity < 50 : false
  212.     disable_switch ||= DIS_EV_SWITCH && $game_switches[DIS_EV_SWITCH]
  213.     disable_switch ||= @character.transparent
  214.     disable_switch ||= SCENE.not.include?(LiTTleDRAgo.scene.class)
  215.     update_name_visibility_press if PRESS_BTN && !disable_switch
  216.     return @name_event.visible = false if disable_switch || $game_self_switches["Hide Event Name"]
  217.     update_name_visibility_range if RANGE && !@pressed
  218.   end
  219.   #--------------------------------------------------------------------------
  220.   # * update_name_visibility_press
  221.   #--------------------------------------------------------------------------
  222.   def update_name_visibility_press
  223.     pressed = Input.press?(PRESS_BTN.at(0)) && Input.trigger?(PRESS_BTN.at(1))
  224.     hide_name = $game_self_switches["Hide Event Name"]
  225.     if !hide_name && pressed
  226.       @name_event.visible = false
  227.       $game_self_switches["Hide Event Name"] = true
  228.     elsif hide_name && pressed
  229.       @name_event.visible = true
  230.       $game_self_switches["Hide Event Name"] = false
  231.     end
  232.   end  
  233.   #--------------------------------------------------------------------------
  234.   # * update_name_visibility_range
  235.   #--------------------------------------------------------------------------
  236.   def update_name_visibility_range
  237.     @name_event.visible = ($game_player.distance_from(@character) <= RANGE)
  238.   end
  239. end
  240. #--------------------------------------------------------------------------
  241. # END OF SCRIPT
  242. #--------------------------------------------------------------------------
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement