Project1

标题: 转义字符加强 [打印本页]

作者: dant    时间: 2012-8-2 11:59
标题: 转义字符加强
本帖最后由 dant 于 2012-8-2 11:59 编辑

就是这样。
在所有使用到draw_text_ex的地方都可以使用。
也可以改成只在某个Window类内部使用
RUBY 代码复制
  1. #==============================================================================
  2. # ** 转义字符加强
  3. #------------------------------------------------------------------------------
  4. #  加强用于显示文章和其它使用draw_text_ex的转义字符。
  5. #    - \V[n],\N[n],\P[n] 支持无限嵌套
  6. #    - 添加以下转义字符
  7. #        + \ITM[n] 替换为n号道具 (带图标)
  8. #        + \WPN[n] 替换为n号武器 (带图标)
  9. #        + \ARM[n] 替换为n号防具 (带图标)
  10. #        + \SKL[n] 替换为n号特技 (带图标)
  11. #==============================================================================
  12.  
  13. class Window_Base < Window
  14.   #--------------------------------------------------------------------------
  15.   # * Preconvert Control Characters
  16.   #    As a rule, replace only what will be changed into text strings before
  17.   #    starting actual drawing. The character "\" is replaced with the escape
  18.   #    character (\e).
  19.   #--------------------------------------------------------------------------
  20.   def convert_escape_characters(text)
  21.     result = text.to_s.clone
  22.     result.gsub!(/\\/)            { "\e" }
  23.     result.gsub!(/\e\e/)          { "\\" }
  24.  
  25.     while true
  26.       done_flag = nil
  27.       done_flag |= result.gsub!(/\eV\[(\d+)\]/i) { $game_variables[$1.to_i] }
  28.       #result.gsub!(/\eV\[(\d+)\]/i) { $game_variables[$1.to_i] }
  29.       done_flag |= result.gsub!(/\eN\[(\d+)\]/i) { actor_name($1.to_i) }
  30.       done_flag |= result.gsub!(/\eP\[(\d+)\]/i) { party_member_name($1.to_i) }
  31.       done_flag |= result.gsub!(/\eITM\[(\d+)\]/i) { item_ctrl_str($data_items[$1.to_i]) }
  32.       done_flag |= result.gsub!(/\eWPN\[(\d+)\]/i) { item_ctrl_str($data_weapons[$1.to_i]) }
  33.       done_flag |= result.gsub!(/\eARM\[(\d+)\]/i) { item_ctrl_str($data_armors[$1.to_i]) }
  34.       done_flag |= result.gsub!(/\eSKL\[(\d+)\]/i) { item_ctrl_str($data_skills[$1.to_i]) }
  35.       break unless done_flag
  36.     end
  37.     result.gsub!(/\eG/i)          { Vocab::currency_unit }
  38.     result
  39.   end
  40.  
  41.   def item_ctrl_str(item)
  42.     "\eI[#{item.icon_index}] #{item.name}"
  43.   end
  44.  
  45. end





欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1