| 
 
| 赞 | 168 |  
| VIP | 6 |  
| 好人卡 | 208 |  
| 积分 | 225 |  
| 经验 | 137153 |  
| 最后登录 | 2025-4-1 |  
| 在线时间 | 8598 小时 |  
 Lv5.捕梦者 
	梦石0 星屑22499 在线时间8598 小时注册时间2011-12-31帖子3361 | 
| 制御文字拡張 VX Ace By 貪藻矢射妥 使用例
 
   
 #==============================================================================# ■ 制御文字拡張 VX Ace By 貪藻矢射妥←#------------------------------------------------------------------------------#  制御文字を拡張します。#  #  ※draw_text_exを拡張しています。# #  ※ルビ描画にてルビ、もしくは本文に半角スペースを入れないでください。#   正しく表示できません。# #==============================================================================# # VX Ace 標準# \v[n]         : 変数n番の値を表示# \n[n]         : アクターn番目の名前を表示# \p[n]         : パーティーn番目の名前を表示# \g            : ゴールド表示# \c[n]         : n番目の色に変更# \i[n]         : n番目のアイコン表示# \{            : 描画文字サイズを大きく# \}            : 描画文字サイズを小さく# \.            : 1/4 sec wait# \|            : 1sec wait# \!            : 入力待ち# \>            : \< まで瞬間表示# \<            : \> から瞬間表示# \^            : 入力待ちなし# 追加# \nn[n]        : アクターn番目のニックネームを表示# \e[n]         : エネミーn番目の名前を表示# \m[n]         : マップn番目の名前を表示# \md[n]        : マップn番目の表示名を表示# \j[n]         : n番目の職業を表示# \t[n]         : n番目の道具をアイコンつきで表示# \w[n]         : n番目の武器をアイコンつきで表示# \a[n]         : n番目の防具をアイコンつきで表示# \s[n]         : n番目のスキルをアイコンつきで表示# \r[text,ruby] : rubyをふりがなにtextを描画# \rfix[text]   : 定型句が割り振られているルビつき文字を描画# #==============================================================================# 更新っぽいもの# 2012:01:15# ・XP風アイコン描画 VX Aceに対応# ・一度に複数回ルビを振ることが出来なかったバグを修正# # 2012:03:18# ・VX Aceのミスだと思っていた convert_escape_characters の#  $game_variablesが二つあるのを復帰。#  \v[\v[n]]のために必要なんですね・・・# # 2012:10:01# ・Ver.1.01aからData/MapInfos.rvdata2には表示名が存在しないためスクリプト変更# ・アクター名などに制御文字が入っていた場合の制御文字にも対応 #==============================================================================# ■ Window_Base#------------------------------------------------------------------------------#  ゲーム中の全てのウィンドウのスーパークラスです。#============================================================================== class Window_Base < Window  # ルビ定型句セット  FIX_RUBY = {    "赤眉"               => "チーメイ",     "傾奇"               => "かぶき",     "明殺"               => "みょうさつ",     "開封"               => "かいほう",     "綺羅神無"           => "らじんきむ",     "応龍"               => "おうりゅう",     "齎"                 => "もたら",     "麒麟"               => "キリン",     "霊龜"               => "れいき",     "素盞嗚尊"           => "スサノオノミコト",     "燭龍"               => "しょくりゅう",     "月陽歳刑"           => "つきかげさいぎょう",     "歳星黄幡"           => "さいせいおうばん",     "天下太陰"           => "てんげだいおん",     "元屠歳殺"           => "げんとさいさつ" ,     "天蓋流剣鞘"         => "てんがいりゅうけんしょう",     "絳征"               => "こうせい",     "炎一刀"             => "ほむらいっとう",     "虹影"               => "にじかげ",     "誘薙双剣"           => "いざなぎそうけん",     "天狼碎牙"           => "てんろうさいが",     "天狼真牙"           => "てんろうしんが",     "穀蔵院一刀"         => "こくぞういんいっとう",     "愛染"               => "あいぜん",     "舞雅"               => "むげ",     "雅閃"               => "がせん",     "秘雅閃"             => "ひがせん",     "極雅閃"             => "きょくがせん",     "終雅閃"             => "しゅうがせん",     "黎淵夢"             => "くろきふちのゆめ",     "夢刃"               => "むじん",     "示現流瞬槍"         => "じげんりゅうしゅんそう",     "黎杭打刳撃"         => "パイルドライバー",     "逆転黎杭打刳撃"     => "リバース・パイルドライバー",     "回転黎杭打刳撃"     => "スピニング・パイルドライバー",     "跳躍黎杭打刳撃"     => "ジャンピング・パイルドライバー",     "旋抉黎杭打刳撃"     => "スクリュー・パイルドライバー",     "削岩錐穴黎杭打刳撃" => "ドリル・ア・ホール・パイルドライバー",     "被覆鋼弾"           => "フルメタルジャケット",     "撤甲弾"             => "アーマーピアシング",     "炸 裂 弾"         => "エクスプロージョンブリット",     "黒き猛禽の爪"       => "ブラックタロン",     "鵺帛主"             => "ヤヌス",     "王宮一級品"         => "ロイヤルコレクション",     "零道漓"             =>"プルウィウス",     " 真 "             => "チェンジ!!",     "殺形刀"             => "サルヒヨンド",     " S  D "         => "SEED DESTINY",     "天国"               => "あまくに",     "碧聖刃"             => "シアンセイクレド",     "  S   T  "   => "シャイニング・トラペゾヘドロン",     "保護陰盾"           => "プロテクトシェード",     "蘭花"               => "ランファ",     " A T "           => "アナザータイプ",     "夢龍"               => "モンリョン",     "春香"               => "チュンヒャン",     "文秀"               => "ムンス",     "元述"               => "ウォンスル",     "英實"               => "ヨンシル",     "暗行御史"           => "アメンオサ",     "山道"               => "サンド",     "朱羅姫"             => "シュラキ",     "奠夷瑪"             => "ディーヴァ",     "女王禍"             => "ジョーカー",     "茜瑙哭"             => "セドナ",     "爾幽樟"             => "ニュクス",     "刺舞鴉"             => "シヴァ",     "逢喇且雫"           => "アフラ・マズダ",     "槃導邏"             => "パンドラ",     "霹瓏婚枢"           => "ペルクナス",     "炳佩鍍嵩"           => "ヘパイトス",     "宕瓏牙"             => "ドゥルガー",     "微朱主"             => "ヴィシュヌ",     "魔血玉"             => "デモンブラッド",     "呪符"               => "タリズマン",     "閣氏"               => "カクシ",     "歳殺陽天"           => "さいさつようてん",     "歳刑星天"           => "さいぎょうせいてん",     "黄幡暗天"           => "おうばんあんてん",     "太陰邪天"           => "だいおんじゃてん",     "陰轟留牡鴉"         => "アンゴルモア",     "緋々色金"           => "ヒヒイロカネ",     "青生生魂"           => "アボイタカラ",   }  #--------------------------------------------------------------------------  # ● 制御文字の事前変換  #    実際の描画を始める前に、原則として文字列に変わるものだけを置き換える。  #    文字「\」はエスケープ文字(\e)に変換。  #--------------------------------------------------------------------------  def convert_escape_characters(text)    result = text.to_s.clone    # 既存    result.gsub!(/\\/)            { "\e" }    result.gsub!(/\e\e/)          { "\\" }    result.gsub!(/\eV\[(\d+)\]/i) { $game_variables[$1.to_i] }    result.gsub!(/\eV\[(\d+)\]/i) { $game_variables[$1.to_i] }    result.gsub!(/\eN\[(\d+)\]/i) { actor_name($1.to_i) }    result.gsub!(/\eP\[(\d+)\]/i) { party_member_name($1.to_i) }    result.gsub!(/\eG/i)          { Vocab::currency_unit }    # 追加    result.gsub!(/\eNN\[(\d+)\]/i) { actor_nickname($1.to_i) }    result.gsub!(/\eE\[(\d+)\]/i)  { enemy_name($1.to_i) }    result.gsub!(/\eM\[(\d+)\]/i)  { map_name($1.to_i) }    result.gsub!(/\eMD\[(\d+)\]/i) { map_display_name($1.to_i) }    result.gsub!(/\eJ\[(\d+)\]/i)  { job_name($1.to_i) }    result  end  #--------------------------------------------------------------------------  # ● アクター n 番の名前を取得  #--------------------------------------------------------------------------  def actor_name(n)    actor = n >= 1 ? $game_actors[n] : nil    actor ? convert_escape_characters(actor.name) : ""  end  #--------------------------------------------------------------------------  # ● アクター n 番のニックネームを取得  #--------------------------------------------------------------------------  def actor_nickname(n)    actor = n >= 1 ? $game_actors[n] : nil    actor ? convert_escape_characters(actor.nickname) : ""  end  #--------------------------------------------------------------------------  # ● パーティメンバー n 番の名前を取得  #--------------------------------------------------------------------------  def party_member_name(n)    actor = n >= 1 ? $game_party.members[n - 1] : nil    actor ? convert_escape_characters(actor.name) : ""  end  #--------------------------------------------------------------------------  # ● エネミー n 番の名前を取得  #--------------------------------------------------------------------------  def enemy_name(n)    enemy = n >= 1 ? $data_enemies[n] : nil    enemy ? convert_escape_characters(enemy.name) : ""  end  #--------------------------------------------------------------------------  # ● 職業 n 番の名前を取得  #--------------------------------------------------------------------------  def job_name(n)    job = n >= 1 ? $data_classes[n] : nil    job ? convert_escape_characters(job.name) : ""  end  #--------------------------------------------------------------------------  # ● マップ n 番の名前を取得  #--------------------------------------------------------------------------  def map_name(n)    map = load_data(sprintf("Data/MapInfos.rvdata2"))[n]    map ? convert_escape_characters(map.name) : ""  end  #--------------------------------------------------------------------------  # ● マップ n 番の表示名を取得  #--------------------------------------------------------------------------  def map_display_name(n)    map = load_data(sprintf("Data/Map%03d.rvdata2", n))    map ? convert_escape_characters(map.display_name) : ""  end  #--------------------------------------------------------------------------  # ● 制御文字の処理  #     code : 制御文字の本体部分(「\C[1]」なら「C」)  #--------------------------------------------------------------------------  def process_escape_character(code, text, pos)    case code.upcase    # 既存    when 'C'      change_color(text_color(obtain_escape_param(text)))    when 'I'      process_draw_icon(obtain_escape_param(text), pos)    when '{'      make_font_bigger    when '}'      make_font_smaller    # 追加    when 'T'    # 道具      process_draw_item(obtain_escape_param(text), pos)    when 'W'    # 武器      process_draw_weapon(obtain_escape_param(text), pos)    when 'A'    # 防具      process_draw_armor(obtain_escape_param(text), pos)    when 'S'    # スキル      process_draw_skill(obtain_escape_param(text), pos)    when 'R'    # ルビ      process_draw_ruby(obtain_escape_param2(text), pos)    when "RFIX" # 定型句ルビ      process_draw_ruby_fix(obtain_escape_param2(text), pos)    end  end  #--------------------------------------------------------------------------  # ● 制御文字の引数を破壊的に取得 文字列編  #--------------------------------------------------------------------------  def obtain_escape_param2(text)    text.slice!(/^\[(.+?)\]/)[/\S+/] rescue 0  end  #--------------------------------------------------------------------------  # ● 制御文字によるルビ描画の処理  #--------------------------------------------------------------------------  def process_draw_ruby(str, pos)    str.gsub!(/\[(.+?),(.+?)\]/, "")    text = $1    ruby = $2    process_draw_ruby_root(text, ruby, pos)  end  #--------------------------------------------------------------------------  # ● 制御文字によるルビ定型句描画の処理  #--------------------------------------------------------------------------  def process_draw_ruby_fix(str, pos)    str.gsub!(/\[(.+?)\]/, "")    text = $1    ruby = FIX_RUBY[$1]    process_draw_ruby_root(text, ruby, pos)  end  #--------------------------------------------------------------------------  # ● 制御文字によるルビ描画の処理 おおもと  #--------------------------------------------------------------------------  def process_draw_ruby_root(text, ruby, pos)    text_w = text_size(text).width    text_h = text_size(text).height    f_size_back = contents.font.size    ruby_size = [(f_size_back + 66) / 8, f_size_back * 2 / 3].min    contents.font.size = ruby_size    draw_text(pos[:x], pos[:y] + 8 - ruby_size, text_w,     ruby_size, ruby, 1)    contents.font.size = f_size_back    draw_text(pos[:x], pos[:y] + 6,             text_w + 4, text_h,    text)    pos[:x] += text_w  end  #--------------------------------------------------------------------------  # ● 制御文字によるアイテム描画の処理  #--------------------------------------------------------------------------  def process_draw_item(id, pos)    item = id.to_i >= 1 ? $data_items[id.to_i] : nil    process_draw_data(item, pos)  end  #--------------------------------------------------------------------------  # ● 制御文字による武器描画の処理  #--------------------------------------------------------------------------  def process_draw_weapon(id, pos)    weapon = id.to_i >= 1 ? $data_weapons[id.to_i] : nil    process_draw_data(weapon, pos)  end  #--------------------------------------------------------------------------  # ● 制御文字による防具描画の処理  #--------------------------------------------------------------------------  def process_draw_armor(id, pos)    armor = id.to_i >= 1 ? $data_armors[id.to_i] : nil    process_draw_data(armor, pos)  end  #--------------------------------------------------------------------------  # ● 制御文字によるスキル描画の処理  #--------------------------------------------------------------------------  def process_draw_skill(id, pos)    skill = id.to_i >= 1 ? $data_skills[id.to_i] : nil    process_draw_data(skill, pos)  end  #--------------------------------------------------------------------------  # ● 制御文字によるアイテム、武器、防具、スキル描画の処理 おおもと  #--------------------------------------------------------------------------  def process_draw_data(data, pos)    if data != nil      data_name = data.name      data_icon = data.icon_index       if $OuterFlgs["Icon_Extend"]        text = data.note.clone        @icon_name = text =~ /ICON#{DIA_IC::STT}(\S+)#{DIA_IC::FIN}/ ? $1 : nil        if  @icon_name != nil          draw_icon_XP(@icon_name, pos[:x], pos[:y])        else          draw_icon(data_icon, pos[:x], pos[:y])        end      else        draw_icon(data_icon, pos[:x], pos[:y])      end      pos[:x] += 24      text_width = text_size(data_name).width      #draw_text(pos[:x], pos[:y], text_width, pos[:height], data_name)      draw_text_ex(pos[:x], pos[:y], data_name)      pos[:x] += text_width    end  end   #--------------------------------------------------------------------------  # ● 名前の描画  #--------------------------------------------------------------------------  def draw_actor_name(actor, x, y, width = 112)    change_color(hp_color(actor))    draw_text_ex(x, y, actor.name)  end  #--------------------------------------------------------------------------  # ● 職業の描画  #--------------------------------------------------------------------------  def draw_actor_class(actor, x, y, width = 112)    change_color(normal_color)    draw_text_ex(x, y, actor.class.name)  end  #--------------------------------------------------------------------------  # ● 二つ名の描画  #--------------------------------------------------------------------------  def draw_actor_nickname(actor, x, y, width = 180)    change_color(normal_color)    draw_text_ex(x, y, actor.nickname)  endend
#============================================================================== 
# ■ 制御文字拡張 VX Ace By 貪藻矢射妥← 
#------------------------------------------------------------------------------ 
#  制御文字を拡張します。 
#   
#  ※draw_text_exを拡張しています。 
#  
#  ※ルビ描画にてルビ、もしくは本文に半角スペースを入れないでください。 
#   正しく表示できません。 
#  
#============================================================================== 
#  
# VX Ace 標準 
# \v[n]         : 変数n番の値を表示 
# \n[n]         : アクターn番目の名前を表示 
# \p[n]         : パーティーn番目の名前を表示 
# \g            : ゴールド表示 
# \c[n]         : n番目の色に変更 
# \i[n]         : n番目のアイコン表示 
# \{            : 描画文字サイズを大きく 
# \}            : 描画文字サイズを小さく 
# \.            : 1/4 sec wait 
# \|            : 1sec wait 
# \!            : 入力待ち 
# \>            : \< まで瞬間表示 
# \<            : \> から瞬間表示 
# \^            : 入力待ちなし 
# 追加 
# \nn[n]        : アクターn番目のニックネームを表示 
# \e[n]         : エネミーn番目の名前を表示 
# \m[n]         : マップn番目の名前を表示 
# \md[n]        : マップn番目の表示名を表示 
# \j[n]         : n番目の職業を表示 
# \t[n]         : n番目の道具をアイコンつきで表示 
# \w[n]         : n番目の武器をアイコンつきで表示 
# \a[n]         : n番目の防具をアイコンつきで表示 
# \s[n]         : n番目のスキルをアイコンつきで表示 
# \r[text,ruby] : rubyをふりがなにtextを描画 
# \rfix[text]   : 定型句が割り振られているルビつき文字を描画 
#  
#============================================================================== 
# 更新っぽいもの 
# 2012:01:15 
# ・XP風アイコン描画 VX Aceに対応 
# ・一度に複数回ルビを振ることが出来なかったバグを修正 
#  
# 2012:03:18 
# ・VX Aceのミスだと思っていた convert_escape_characters の 
#  $game_variablesが二つあるのを復帰。 
#  \v[\v[n]]のために必要なんですね・・・ 
#  
# 2012:10:01 
# ・Ver.1.01aからData/MapInfos.rvdata2には表示名が存在しないためスクリプト変更 
# ・アクター名などに制御文字が入っていた場合の制御文字にも対応 
  
#============================================================================== 
# ■ Window_Base 
#------------------------------------------------------------------------------ 
#  ゲーム中の全てのウィンドウのスーパークラスです。 
#============================================================================== 
  
class Window_Base < Window 
  # ルビ定型句セット 
  FIX_RUBY = { 
    "赤眉"               => "チーメイ",  
    "傾奇"               => "かぶき",  
    "明殺"               => "みょうさつ",  
    "開封"               => "かいほう",  
    "綺羅神無"           => "らじんきむ",  
    "応龍"               => "おうりゅう",  
    "齎"                 => "もたら",  
    "麒麟"               => "キリン",  
    "霊龜"               => "れいき",  
    "素盞嗚尊"           => "スサノオノミコト",  
    "燭龍"               => "しょくりゅう",  
    "月陽歳刑"           => "つきかげさいぎょう",  
    "歳星黄幡"           => "さいせいおうばん",  
    "天下太陰"           => "てんげだいおん",  
    "元屠歳殺"           => "げんとさいさつ" ,  
    "天蓋流剣鞘"         => "てんがいりゅうけんしょう",  
    "絳征"               => "こうせい",  
    "炎一刀"             => "ほむらいっとう",  
    "虹影"               => "にじかげ",  
    "誘薙双剣"           => "いざなぎそうけん",  
    "天狼碎牙"           => "てんろうさいが",  
    "天狼真牙"           => "てんろうしんが",  
    "穀蔵院一刀"         => "こくぞういんいっとう",  
    "愛染"               => "あいぜん",  
    "舞雅"               => "むげ",  
    "雅閃"               => "がせん",  
    "秘雅閃"             => "ひがせん",  
    "極雅閃"             => "きょくがせん",  
    "終雅閃"             => "しゅうがせん",  
    "黎淵夢"             => "くろきふちのゆめ",  
    "夢刃"               => "むじん",  
    "示現流瞬槍"         => "じげんりゅうしゅんそう",  
    "黎杭打刳撃"         => "パイルドライバー",  
    "逆転黎杭打刳撃"     => "リバース・パイルドライバー",  
    "回転黎杭打刳撃"     => "スピニング・パイルドライバー",  
    "跳躍黎杭打刳撃"     => "ジャンピング・パイルドライバー",  
    "旋抉黎杭打刳撃"     => "スクリュー・パイルドライバー",  
    "削岩錐穴黎杭打刳撃" => "ドリル・ア・ホール・パイルドライバー",  
    "被覆鋼弾"           => "フルメタルジャケット",  
    "撤甲弾"             => "アーマーピアシング",  
    "炸 裂 弾"         => "エクスプロージョンブリット",  
    "黒き猛禽の爪"       => "ブラックタロン",  
    "鵺帛主"             => "ヤヌス",  
    "王宮一級品"         => "ロイヤルコレクション",  
    "零道漓"             =>"プルウィウス",  
    " 真 "             => "チェンジ!!",  
    "殺形刀"             => "サルヒヨンド",  
    " S  D "         => "SEED DESTINY",  
    "天国"               => "あまくに",  
    "碧聖刃"             => "シアンセイクレド",  
    "  S   T  "   => "シャイニング・トラペゾヘドロン",  
    "保護陰盾"           => "プロテクトシェード",  
    "蘭花"               => "ランファ",  
    " A T "           => "アナザータイプ",  
    "夢龍"               => "モンリョン",  
    "春香"               => "チュンヒャン",  
    "文秀"               => "ムンス",  
    "元述"               => "ウォンスル",  
    "英實"               => "ヨンシル",  
    "暗行御史"           => "アメンオサ",  
    "山道"               => "サンド",  
    "朱羅姫"             => "シュラキ",  
    "奠夷瑪"             => "ディーヴァ",  
    "女王禍"             => "ジョーカー",  
    "茜瑙哭"             => "セドナ",  
    "爾幽樟"             => "ニュクス",  
    "刺舞鴉"             => "シヴァ",  
    "逢喇且雫"           => "アフラ・マズダ",  
    "槃導邏"             => "パンドラ",  
    "霹瓏婚枢"           => "ペルクナス",  
    "炳佩鍍嵩"           => "ヘパイトス",  
    "宕瓏牙"             => "ドゥルガー",  
    "微朱主"             => "ヴィシュヌ",  
    "魔血玉"             => "デモンブラッド",  
    "呪符"               => "タリズマン",  
    "閣氏"               => "カクシ",  
    "歳殺陽天"           => "さいさつようてん",  
    "歳刑星天"           => "さいぎょうせいてん",  
    "黄幡暗天"           => "おうばんあんてん",  
    "太陰邪天"           => "だいおんじゃてん",  
    "陰轟留牡鴉"         => "アンゴルモア",  
    "緋々色金"           => "ヒヒイロカネ",  
    "青生生魂"           => "アボイタカラ",  
  } 
  #-------------------------------------------------------------------------- 
  # ● 制御文字の事前変換 
  #    実際の描画を始める前に、原則として文字列に変わるものだけを置き換える。 
  #    文字「\」はエスケープ文字(\e)に変換。 
  #-------------------------------------------------------------------------- 
  def convert_escape_characters(text) 
    result = text.to_s.clone 
    # 既存 
    result.gsub!(/\\/)            { "\e" } 
    result.gsub!(/\e\e/)          { "\\" } 
    result.gsub!(/\eV\[(\d+)\]/i) { $game_variables[$1.to_i] } 
    result.gsub!(/\eV\[(\d+)\]/i) { $game_variables[$1.to_i] } 
    result.gsub!(/\eN\[(\d+)\]/i) { actor_name($1.to_i) } 
    result.gsub!(/\eP\[(\d+)\]/i) { party_member_name($1.to_i) } 
    result.gsub!(/\eG/i)          { Vocab::currency_unit } 
    # 追加 
    result.gsub!(/\eNN\[(\d+)\]/i) { actor_nickname($1.to_i) } 
    result.gsub!(/\eE\[(\d+)\]/i)  { enemy_name($1.to_i) } 
    result.gsub!(/\eM\[(\d+)\]/i)  { map_name($1.to_i) } 
    result.gsub!(/\eMD\[(\d+)\]/i) { map_display_name($1.to_i) } 
    result.gsub!(/\eJ\[(\d+)\]/i)  { job_name($1.to_i) } 
    result 
  end 
  #-------------------------------------------------------------------------- 
  # ● アクター n 番の名前を取得 
  #-------------------------------------------------------------------------- 
  def actor_name(n) 
    actor = n >= 1 ? $game_actors[n] : nil 
    actor ? convert_escape_characters(actor.name) : "" 
  end 
  #-------------------------------------------------------------------------- 
  # ● アクター n 番のニックネームを取得 
  #-------------------------------------------------------------------------- 
  def actor_nickname(n) 
    actor = n >= 1 ? $game_actors[n] : nil 
    actor ? convert_escape_characters(actor.nickname) : "" 
  end 
  #-------------------------------------------------------------------------- 
  # ● パーティメンバー n 番の名前を取得 
  #-------------------------------------------------------------------------- 
  def party_member_name(n) 
    actor = n >= 1 ? $game_party.members[n - 1] : nil 
    actor ? convert_escape_characters(actor.name) : "" 
  end 
  #-------------------------------------------------------------------------- 
  # ● エネミー n 番の名前を取得 
  #-------------------------------------------------------------------------- 
  def enemy_name(n) 
    enemy = n >= 1 ? $data_enemies[n] : nil 
    enemy ? convert_escape_characters(enemy.name) : "" 
  end 
  #-------------------------------------------------------------------------- 
  # ● 職業 n 番の名前を取得 
  #-------------------------------------------------------------------------- 
  def job_name(n) 
    job = n >= 1 ? $data_classes[n] : nil 
    job ? convert_escape_characters(job.name) : "" 
  end 
  #-------------------------------------------------------------------------- 
  # ● マップ n 番の名前を取得 
  #-------------------------------------------------------------------------- 
  def map_name(n) 
    map = load_data(sprintf("Data/MapInfos.rvdata2"))[n] 
    map ? convert_escape_characters(map.name) : "" 
  end 
  #-------------------------------------------------------------------------- 
  # ● マップ n 番の表示名を取得 
  #-------------------------------------------------------------------------- 
  def map_display_name(n) 
    map = load_data(sprintf("Data/Map%03d.rvdata2", n)) 
    map ? convert_escape_characters(map.display_name) : "" 
  end 
  #-------------------------------------------------------------------------- 
  # ● 制御文字の処理 
  #     code : 制御文字の本体部分(「\C[1]」なら「C」) 
  #-------------------------------------------------------------------------- 
  def process_escape_character(code, text, pos) 
    case code.upcase 
    # 既存 
    when 'C' 
      change_color(text_color(obtain_escape_param(text))) 
    when 'I' 
      process_draw_icon(obtain_escape_param(text), pos) 
    when '{' 
      make_font_bigger 
    when '}' 
      make_font_smaller 
    # 追加 
    when 'T'    # 道具 
      process_draw_item(obtain_escape_param(text), pos) 
    when 'W'    # 武器 
      process_draw_weapon(obtain_escape_param(text), pos) 
    when 'A'    # 防具 
      process_draw_armor(obtain_escape_param(text), pos) 
    when 'S'    # スキル 
      process_draw_skill(obtain_escape_param(text), pos) 
    when 'R'    # ルビ 
      process_draw_ruby(obtain_escape_param2(text), pos) 
    when "RFIX" # 定型句ルビ 
      process_draw_ruby_fix(obtain_escape_param2(text), pos) 
    end 
  end 
  #-------------------------------------------------------------------------- 
  # ● 制御文字の引数を破壊的に取得 文字列編 
  #-------------------------------------------------------------------------- 
  def obtain_escape_param2(text) 
    text.slice!(/^\[(.+?)\]/)[/\S+/] rescue 0 
  end 
  #-------------------------------------------------------------------------- 
  # ● 制御文字によるルビ描画の処理 
  #-------------------------------------------------------------------------- 
  def process_draw_ruby(str, pos) 
    str.gsub!(/\[(.+?),(.+?)\]/, "") 
    text = $1 
    ruby = $2 
    process_draw_ruby_root(text, ruby, pos) 
  end 
  #-------------------------------------------------------------------------- 
  # ● 制御文字によるルビ定型句描画の処理 
  #-------------------------------------------------------------------------- 
  def process_draw_ruby_fix(str, pos) 
    str.gsub!(/\[(.+?)\]/, "") 
    text = $1 
    ruby = FIX_RUBY[$1] 
    process_draw_ruby_root(text, ruby, pos) 
  end 
  #-------------------------------------------------------------------------- 
  # ● 制御文字によるルビ描画の処理 おおもと 
  #-------------------------------------------------------------------------- 
  def process_draw_ruby_root(text, ruby, pos) 
    text_w = text_size(text).width 
    text_h = text_size(text).height 
    f_size_back = contents.font.size 
    ruby_size = [(f_size_back + 66) / 8, f_size_back * 2 / 3].min 
    contents.font.size = ruby_size 
    draw_text(pos[:x], pos[:y] + 8 - ruby_size, text_w,     ruby_size, ruby, 1) 
    contents.font.size = f_size_back 
    draw_text(pos[:x], pos[:y] + 6,             text_w + 4, text_h,    text) 
    pos[:x] += text_w 
  end 
  #-------------------------------------------------------------------------- 
  # ● 制御文字によるアイテム描画の処理 
  #-------------------------------------------------------------------------- 
  def process_draw_item(id, pos) 
    item = id.to_i >= 1 ? $data_items[id.to_i] : nil 
    process_draw_data(item, pos) 
  end 
  #-------------------------------------------------------------------------- 
  # ● 制御文字による武器描画の処理 
  #-------------------------------------------------------------------------- 
  def process_draw_weapon(id, pos) 
    weapon = id.to_i >= 1 ? $data_weapons[id.to_i] : nil 
    process_draw_data(weapon, pos) 
  end 
  #-------------------------------------------------------------------------- 
  # ● 制御文字による防具描画の処理 
  #-------------------------------------------------------------------------- 
  def process_draw_armor(id, pos) 
    armor = id.to_i >= 1 ? $data_armors[id.to_i] : nil 
    process_draw_data(armor, pos) 
  end 
  #-------------------------------------------------------------------------- 
  # ● 制御文字によるスキル描画の処理 
  #-------------------------------------------------------------------------- 
  def process_draw_skill(id, pos) 
    skill = id.to_i >= 1 ? $data_skills[id.to_i] : nil 
    process_draw_data(skill, pos) 
  end 
  #-------------------------------------------------------------------------- 
  # ● 制御文字によるアイテム、武器、防具、スキル描画の処理 おおもと 
  #-------------------------------------------------------------------------- 
  def process_draw_data(data, pos) 
    if data != nil 
      data_name = data.name 
      data_icon = data.icon_index 
  
      if $OuterFlgs["Icon_Extend"] 
        text = data.note.clone 
        @icon_name = text =~ /ICON#{DIA_IC::STT}(\S+)#{DIA_IC::FIN}/ ? $1 : nil 
        if  @icon_name != nil 
          draw_icon_XP(@icon_name, pos[:x], pos[:y]) 
        else 
          draw_icon(data_icon, pos[:x], pos[:y]) 
        end 
      else 
        draw_icon(data_icon, pos[:x], pos[:y]) 
      end 
      pos[:x] += 24 
      text_width = text_size(data_name).width 
      #draw_text(pos[:x], pos[:y], text_width, pos[:height], data_name) 
      draw_text_ex(pos[:x], pos[:y], data_name) 
      pos[:x] += text_width 
    end 
  end 
  
  #-------------------------------------------------------------------------- 
  # ● 名前の描画 
  #-------------------------------------------------------------------------- 
  def draw_actor_name(actor, x, y, width = 112) 
    change_color(hp_color(actor)) 
    draw_text_ex(x, y, actor.name) 
  end 
  #-------------------------------------------------------------------------- 
  # ● 職業の描画 
  #-------------------------------------------------------------------------- 
  def draw_actor_class(actor, x, y, width = 112) 
    change_color(normal_color) 
    draw_text_ex(x, y, actor.class.name) 
  end 
  #-------------------------------------------------------------------------- 
  # ● 二つ名の描画 
  #-------------------------------------------------------------------------- 
  def draw_actor_nickname(actor, x, y, width = 180) 
    change_color(normal_color) 
    draw_text_ex(x, y, actor.nickname) 
  end 
end 
 | 
 评分
查看全部评分
 |