| 
 
| 赞 | 1 |  
| VIP | 0 |  
| 好人卡 | 85 |  
| 积分 | 1 |  
| 经验 | 41098 |  
| 最后登录 | 2015-3-17 |  
| 在线时间 | 1071 小时 |  
 Lv1.梦旅人 
	梦石0 星屑50 在线时间1071 小时注册时间2011-5-12帖子2317 
 | 
| 这脚本如何?像显示文章那样的功能,在武器道具名字前面加入\c[1]就会显示蓝色之类的~复制代码#==============================================================================
# ** [ERZVX] Enhanced Bitmap#draw_text (by ERZENGEL at 27-April-2008 at 19:53)
#------------------------------------------------------------------------------
#  Bitmap#draw_text is able to convert control characters.
#==============================================================================
=begin
###############################################################################
Default control characters:
\V[n]    Replaced by the value of variable n (n = ID of a variable).
\N[n]    Replaced by the name of actor n (n = ID of an actor).
\C[n]    Change the color of the following text(n = 0 til 31).
\G       Replaced by the current gold amount.
\\       Replaced by the '\' character.
Control characters from woratanas NMS (v2.52):
\MAP      Replaced by the current map name.
\NC[n]    Replaced by the class of actor n (n = ID of an actor).
\NP[n]    Replaced by the name of actor n in the party (n = integer between 1 and 4).
\NM[n]    Replaced by the name of enemy n (n = ID of an enemy).
\NT[n]    Replaced by the name of troop n (n = ID of a troop).
\NI[n]    Replaced by the name of item n (n = ID of an item).
\NW[n]    Replaced by the name of weapon n (n = ID of a weapon).
\NA[n]    Replaced by the name of armor n (n = ID of an armor).
\NS[n]    Replaced by the name of skill n (n = ID of a skill).
\PRICE[n] Replaced by the price of the item n (n = ID of an item).
\IC[n]    Replaced by the icon with the index n (n = Index of icon in the Iconset).
\DW[n]    Replaced by the icon and name of weapon n (n = ID of a weapon).
\DI[n]    Replaced by the icon and name of item n (n = ID of an item).
\DA[n]    Replaced by the icon and name of armor n (n = ID of an armor).
\DS[n]    Replaced by the icon and name of skill n (n = ID of a skill).
\FN[str]  Following text is in font str (str = name of a font).
\FS[n]    Following text is in fontsize n (n = integer. Standard is 20).
Other control characters:
\BO       Following text is or isn't bold.
\IT       Following text is or isn't italic.
\SH       Folling text is or isn't shadowed.
\AL[n]    Align text (n = integer between 0 and 2 (0 = left, 1 = center, 2 = right)).
############################################################################### 
=end
#==============================================================================
# ** Bitmap
#==============================================================================
class Bitmap
  #--------------------------------------------------------------------------
  # * Draw text
  #--------------------------------------------------------------------------
  alias :erzvx_draw_text :draw_text unless $@
  def draw_text(*args)
    # Falls erstes Argument ein Rectobjekt ist
    if args[0].is_a?(Rect)
      if args.size > 3 then raise(ArgumentError) end
      x, y, width, height = args[0].x, args[0].y, args[0].width, args[0].height
      str = args[1]
      align = args[2]
    else
      if args.size > 6 then raise(ArgumentError) end
      x, y, width, height, str, align = args[0..5]
    end
    # Links ausrichten, falls Wert von align nil oder gr��er als 2 ist
    align = 0 if align.nil? || align > 2
    # Standardeigenschaften in Variablen speichern
    name, size,   color  = self.font.name, self.font.size,   self.font.color
    bold, italic, shadow = self.font.bold, self.font.italic, self.font.shadow
    # Tempor�re Variablen erstellen
    tstr = (str.is_a?(String) ? str : str.to_s) + "\n";  tc = '';  tx = 0
    begin
      lasttstr = tstr.clone
      tstr = convert_special_characters(tstr)
    end until tstr == lasttstr
    while (!(c = tstr.slice!(/./m)).nil?)
      case c
      when "\x01"  # \C[n]
        tstr.sub!(/\[([0-9]+)\]/, "")
        tcolor = $1.to_i
        self.font.color = text_color(tcolor) if tcolor >= 0 && tcolor <= 31
      when "\x02"  # \C[n]
        tstr.sub!(/\[([0-2]+)\]/, "")
        align = $1.to_i        
      when "\x83"  # \IC[n]
        tstr.sub!(/\[([0-9]+)\]/, "")
        icon_index = $1.to_i
        draw_icon(icon_index, x, y)
        tx += 24
      when "\x84"  # \FN[*]
        tstr.sub!(/\[(.*?)\]/, "")
        self.font.name = $1.to_s
      when "\x85"  # \FS[n]
        tstr.sub!(/\[([0-9]+)\]/, "")
        self.font.size = $1.to_i
      when "\x88"  # \BO
        self.font.bold = !self.font.bold
      when "\x89"  # \IT
        self.font.italic = !self.font.italic
      when "\x93"  # \SH
        self.font.shadow = !self.font.shadow
      when "\n"    # Neue Zeile
        if align == 1     # Zentriert
          tx = width - tx
          tx = tx / 2
          erzvx_draw_text((x + tx), y, (width - tx), height, tc)
        elsif align == 2  # Rechts
          tx = width - tx
          erzvx_draw_text((x + tx), y, (width - tx), height, tc)
        end
        # Tempor�re Variablen zur�cksetzen
        tc = tstr = '';  tx = 0
      else         # Normal text character
        # Ausrichtungsabfrage (Links)
        if align == 0
          erzvx_draw_text((x + tx), y, width, height, c, align)
          tx += text_size(c).width
        else
          tc += c
          tx += text_size(c).width
        end
      end
    end
    # Standardeigenschaften wiederherstellen
    self.font.name, self.font.size,   self.font.color  = name, size,   color
    self.font.bold, self.font.italic, self.font.shadow = bold, italic, shadow
  end
  #--------------------------------------------------------------------------
  # * Convert Special Characters
  #--------------------------------------------------------------------------
  def convert_special_characters(str)
    # Mit Wert einer Variable ersetzen
    str.gsub!(/\\V\[([0-9]+)\]/i) { $game_variables[$1.to_i] }
    # Mit Namen eines Heldens ersetzen
    str.gsub!(/\\N\[([0-9]+)\]/i) { $game_actors[$1.to_i].name }
    # Nachfolgenden Text in anderer Farbe anzeigen
    str.gsub!(/\\C\[([0-9]+)\]/i) { "\x01[#{$1}]" }
    # Mit dem aktuellen Goldbetrag ersetzen
    str.gsub!(/\\G/) { $game_party.gold.to_s }
    # Backslash anzeigen
    str.gsub!(/\\\\/) { "\\" }
    # Ausrichtung �ndern
    str.gsub!(/\\AL\[([0-2]+)\]/i) { "\x02[#{$1}]" }
    # Woratana's :: Map Name
    str.gsub!(/\\MAP/i) { get_map_name }
    # Woratana's :: Actor Class Name
    str.gsub!(/\\NC\[([0-9]+)\]/i) { 
      $data_classes[$data_actors[$1.to_i].class_id].name }
    # Woratana's :: Party Actor Name
    str.gsub!(/\\NP\[([0-9]+)\]/i) { $game_party.members[($1.to_i - 1)].name }
    # Woratana's :: Monster Name
    str.gsub!(/\\NM\[([0-9]+)\]/i) { $data_enemies[$1.to_i].name }
    # Woratana's :: Troop Name
    str.gsub!(/\\NT\[([0-9]+)\]/i) { $data_troops[$1.to_i].name }
    # Woratana's :: Item Name
    str.gsub!(/\\NI\[([0-9]+)\]/i) { $data_items[$1.to_i].name }
    # Woratana's :: Weapon Name
    str.gsub!(/\\NW\[([0-9]+)\]/i) { $data_weapons[$1.to_i].name }
    # Woratana's :: Armor Name
    str.gsub!(/\\NA\[([0-9]+)\]/i) { $data_armors[$1.to_i].name }
    # Woratana's :: Skill Name
    str.gsub!(/\\NS\[([0-9]+)\]/i) { $data_skills[$1.to_i].name }
    # Woratana's :: Item Price
    str.gsub!(/\\PRICE\[([0-9]+)\]/i) { $data_items[$1.to_i].price.to_s }
    # Woratana's :: Draw Icon
    str.gsub!(/\\IC\[([0-9]+)\]/i) { "\x83[#{$1}]" }
    # Woratana's :: Draw Weapon Name + Icon
    str.gsub!(/\\DW\[([0-9]+)\]/i) { 
      "\x83[#{$data_weapons[$1.to_i].icon_index}]\\NW[#{$1.to_i}]" }
    # Woratana's :: Draw Item Name + Icon
    str.gsub!(/\\DI\[([0-9]+)\]/i) { 
      "\x83[#{$data_items[$1.to_i].icon_index}]\\NI[#{$1.to_i}]" }
    # Woratana's :: Draw Armor Name + Icon
    str.gsub!(/\\DA\[([0-9]+)\]/i) { 
      "\x83[#{$data_armors[$1.to_i].icon_index}]\\NA[#{$1.to_i}]" }
    # Woratana's :: Draw Skill Name + Icon
    str.gsub!(/\\DS\[([0-9]+)\]/i) { 
      "\x83[#{$data_skills[$1.to_i].icon_index}]\\ns[#{$1.to_i}]" }
    # Woratana's :: Font Name Change
    str.gsub!(/\\FN\[(.*?)\]/i) { "\x84[#{$1}]" }
    # Woratana's :: Font Size Change
    str.gsub!(/\\FS\[([0-9]+)\]/i) { "\x85[#{$1}]" }
    # Woratana's :: BOLD Text
    str.gsub!(/\\BO/i) { "\x88" }
    # Woratana's :: ITALIC Text
    str.gsub!(/\\IT/i) { "\x89" }
    # Woratana's :: SHADOW Text
    str.gsub!(/\\SH/i) { "\x93" }
    return str
  end
  #--------------------------------------------------------------------------
  # * Get Text Color
  #--------------------------------------------------------------------------
  def text_color(n)
    x = 64 + (n % 8) * 8
    y = 96 + (n / 8) * 8
    windowskin = Cache.system('Window')
    return windowskin.get_pixel(x, y)
  end
  #--------------------------------------------------------------------------
  # * Get Map Name
  #--------------------------------------------------------------------------
  def get_map_name
    $data_mapinfos = load_data('Data/MapInfos.rvdata') if $data_mapinfos.nil?
    map_id = $game_map.map_id
    return $data_mapinfos[map_id].name
  end
  #--------------------------------------------------------------------------
  # * Draw Icon
  #--------------------------------------------------------------------------
  def draw_icon(icon_index, x, y)
    bitmap = Cache.system('Iconset')
    rect = Rect.new(icon_index % 16 * 24, icon_index / 16 * 24, 24, 24)
    self.blt(x, y, bitmap, rect)
  end
end
 可以在事件中调用脚本如:
 之类的来修改数据库资料~复制代码$data_weapons[1].name = "\c[1]" + $data_weapons[1].name
 | 
 |