设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 1650|回复: 1
打印 上一主题 下一主题

Window_Help多行显示

 关闭 [复制链接]

Lv2.观梦者 (管理员)

八云紫的式神

梦石
0
星屑
614
在线时间
1243 小时
注册时间
2008-1-1
帖子
4282

烫烫烫

跳转到指定楼层
1
发表于 2008-7-17 21:36:16 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有帐号?注册会员

x
我把Window_Help改成窄高型的,但是只能显示1行字,怎么解决
版务信息:本贴由楼主自主结贴~
rm for linux(wine)制作中,期待夏娜SAMA能实现到webrm上

Lv1.梦旅人

梦石
0
星屑
50
在线时间
0 小时
注册时间
2008-6-16
帖子
113
2
发表于 2008-7-17 21:40:35 | 只看该作者
你要的脚本:


  1. #_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
  2. #_/    ◆ 文字分段◆ VX ◆
  3. #_/    ◇ Last update : 2007/12/19 ◇
  4. #_/----------------------------------------------------------------------------
  5. #_/  
  6. #_/============================================================================
  7. #_/  VX必须用≪書式指定文字描画[DrawFormatText]≫
  8. #_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/

  9. #==============================================================================
  10. # ★ カスタマイズ項目 ★
  11. #==============================================================================

  12. module KGC
  13. module HelpExtension
  14.   # ◆最大行数
  15.   ROW_MAX = 4

  16.   # ◆画面状态時使用
  17.   SHOP_STATUS_SCROLL_BUTTON = Input::A
  18. end
  19. end

  20. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

  21. $imported = {} if $imported == nil
  22. $imported["HelpExtension"] = true

  23. #==============================================================================
  24. # ■ Window_Help
  25. #==============================================================================

  26. class Window_Help < Window_Base
  27.   attr_reader :row_max
  28.   #--------------------------------------------------------------------------
  29.   # ● 初期化
  30.   #--------------------------------------------------------------------------
  31.   alias initialize_KGC_HelpExtension initialize
  32.   def initialize
  33.     @row_max = 1

  34.     initialize_KGC_HelpExtension
  35.   end
  36.   #--------------------------------------------------------------------------
  37.   # ● 行数設定
  38.   #--------------------------------------------------------------------------
  39.   def row_max=(value)
  40.     @row_max = [value, 1].max
  41.     self.height = WLH * @row_max + 32
  42.     create_contents

  43.     # 内容修復
  44.     text = @text
  45.     align = @align
  46.     @text = @align = nil
  47.     set_text(text, align)
  48.   end
  49.   #--------------------------------------------------------------------------
  50.   # ● 排版設定
  51.   #     text  : 表示文字列
  52.   #     align :  (0..左、1..中央、2..右)
  53.   #--------------------------------------------------------------------------
  54.   def set_text(text, align = 0)
  55.     if text != @text or align != @align
  56.       self.contents.clear
  57.       self.contents.font.color = normal_color
  58.       font_buf = self.contents.font.clone
  59.       # \N[x] 改行可见的变换
  60.       buf = text.gsub(/\\N(\[\d+\])/i) { "\\__#{$1}" }
  61.       lines = buf.split(/(?:[|]|\\n)/i)
  62.       lines.each_with_index { |l, i|
  63.         # 变换\N[x] 颜色
  64.         l.gsub!(/\\__(\[\d+\])/i) { "\\N#{$1}" }
  65.         self.contents.draw_format_text(4, i * WLH, self.width - 40, WLH, l, align)
  66.       }
  67.       self.contents.font = font_buf
  68.       @text = text
  69.       @align = align
  70.     end
  71.   end
  72. end

  73. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

  74. #==============================================================================
  75. # ■ Scene_Item
  76. #==============================================================================
  77. class Scene_Item < Scene_Base
  78.   #--------------------------------------------------------------------------
  79.   # ● 開始処理
  80.   #--------------------------------------------------------------------------
  81.   alias start_KGC_HelpExtension start
  82.   def start
  83.     start_KGC_HelpExtension

  84.     adjust_window_size
  85.   end
  86.   #--------------------------------------------------------------------------
  87.   # ● 調整
  88.   #--------------------------------------------------------------------------
  89.   def adjust_window_size
  90.     @help_window.row_max = KGC::HelpExtension::ROW_MAX
  91.     @item_window.y = @help_window.height
  92.     @item_window.height = Graphics.height - @help_window.height
  93.     @item_window.refresh
  94.   end
  95. end

  96. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

  97. #==============================================================================
  98. # ■ Scene_Skill
  99. #==============================================================================

  100. class Scene_Skill < Scene_Base
  101.   #--------------------------------------------------------------------------
  102.   # ● 開始处理
  103.   #--------------------------------------------------------------------------
  104.   alias start_KGC_HelpExtension start
  105.   def start
  106.     start_KGC_HelpExtension

  107.     adjust_window_size
  108.   end
  109.   #--------------------------------------------------------------------------
  110.   # ● 調整
  111.   #--------------------------------------------------------------------------
  112.   def adjust_window_size
  113.     @help_window.row_max = KGC::HelpExtension::ROW_MAX
  114.     @status_window.y = @help_window.height
  115.     dy = @help_window.height + @status_window.height
  116.     @skill_window.y = dy
  117.     @skill_window.height = Graphics.height - dy
  118.     @skill_window.refresh
  119.   end
  120. end

  121. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

  122. #==============================================================================
  123. # ■ Scene_Equip
  124. #==============================================================================

  125. class Scene_Equip < Scene_Base
  126.   #--------------------------------------------------------------------------
  127.   # ● 開始处理
  128.   #--------------------------------------------------------------------------
  129.   alias start_KGC_HelpExtension start
  130.   def start
  131.     start_KGC_HelpExtension

  132.     adjust_window_size
  133.   end
  134.   #--------------------------------------------------------------------------
  135.   # ●調整
  136.   #--------------------------------------------------------------------------
  137.   def adjust_window_size
  138.     @help_window.row_max = KGC::HelpExtension::ROW_MAX
  139.     @equip_window.y = @help_window.height
  140.     @status_window.y = @help_window.height
  141.     resize_item_windows
  142.   end
  143.   #--------------------------------------------------------------------------
  144.   # ● 変更
  145.   #--------------------------------------------------------------------------
  146.   def resize_item_windows
  147.     @item_windows.each { |w|
  148.       dy = @help_window.height + @equip_window.height
  149.       w.y = dy
  150.       w.height = Graphics.height - dy
  151.       w.refresh
  152.     }
  153.   end
  154. end

  155. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

  156. #==============================================================================
  157. # ■ Scene_Shop
  158. #==============================================================================

  159. class Scene_Shop < Scene_Base
  160.   #--------------------------------------------------------------------------
  161.   # ● 開始处理
  162.   #--------------------------------------------------------------------------
  163.   alias start_KGC_HelpExtension start
  164.   def start
  165.     start_KGC_HelpExtension

  166.     adjust_window_size
  167.   end
  168.   #--------------------------------------------------------------------------
  169.   # ● 調整
  170.   #--------------------------------------------------------------------------
  171.   def adjust_window_size
  172.     @help_window.row_max = KGC::HelpExtension::ROW_MAX
  173.     @command_window.y = @help_window.height
  174.     @gold_window.y = @help_window.height
  175.     dy = @help_window.height + @command_window.height
  176.     @dummy_window.y = @buy_window.y = @sell_window.y =
  177.       @number_window.y = @status_window.y = dy
  178.     @dummy_window.height = @buy_window.height =
  179.       @sell_window.height = @number_window.height =
  180.       @status_window.height = Graphics.height - dy
  181.     @dummy_window.create_contents
  182.     @number_window.create_contents
  183.   end
  184.   #--------------------------------------------------------------------------
  185.   # ● 更新
  186.   #--------------------------------------------------------------------------
  187.   alias udpate_KGC_HelpExtension update
  188.   def update
  189.     if !@command_window.active &&
  190.         Input.press?(KGC::HelpExtension::SHOP_STATUS_SCROLL_BUTTON)
  191.       super
  192.       update_menu_background
  193.       update_scroll_status
  194.       return
  195.     else
  196.       @status_window.cursor_rect.empty
  197.     end

  198.     udpate_KGC_HelpExtension
  199.   end
  200.   #--------------------------------------------------------------------------
  201.   # ● 更新处理
  202.   #--------------------------------------------------------------------------
  203.   def update_scroll_status
  204.     @status_window.cursor_rect.width = @status_window.contents.width
  205.     @status_window.cursor_rect.height = @status_window.height - 32
  206.     @status_window.update
  207.     if Input.press?(Input::UP)
  208.       @status_window.oy = [@status_window.oy - 4, 0].max
  209.     elsif Input.press?(Input::DOWN)
  210.       max_pos = [@status_window.contents.height -
  211.         (@status_window.height - 32), 0].max
  212.       @status_window.oy = [@status_window.oy + 4, max_pos].min
  213.     end
  214.   end
  215. end

  216. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

  217. #==============================================================================
  218. # ■ Scene_Battle
  219. #==============================================================================

  220. class Scene_Battle < Scene_Base
  221.   #--------------------------------------------------------------------------
  222.   # ● 初始化開始
  223.   #--------------------------------------------------------------------------
  224.   alias start_skill_selection_KGC_HelpExtension start_skill_selection
  225.   def start_skill_selection
  226.     start_skill_selection_KGC_HelpExtension

  227.     adjust_skill_window_size
  228.   end
  229.   #--------------------------------------------------------------------------
  230.   # ● 調整
  231.   #--------------------------------------------------------------------------
  232.   def adjust_skill_window_size
  233.     @help_window.row_max = KGC::HelpExtension::ROW_MAX
  234.     @skill_window.y = @help_window.height
  235.     @skill_window.height = Graphics.height -
  236.       (@help_window.height + @status_window.height)
  237.     @skill_window.refresh
  238.   end
  239.   #--------------------------------------------------------------------------
  240.   # ● 開始
  241.   #--------------------------------------------------------------------------
  242.   alias start_item_selection_KGC_HelpExtension start_item_selection
  243.   def start_item_selection
  244.     start_item_selection_KGC_HelpExtension

  245.     adjust_item_window_size
  246.   end
  247.   #--------------------------------------------------------------------------
  248.   # ● 調整
  249.   #--------------------------------------------------------------------------
  250.   def adjust_item_window_size
  251.     @help_window.row_max = KGC::HelpExtension::ROW_MAX
  252.     @item_window.y = @help_window.height
  253.     @item_window.height = Graphics.height -
  254.       (@help_window.height + @status_window.height)
  255.     @item_window.refresh
  256.   end
  257. end

复制代码


  1. #_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
  2. #_/    ◆ 書式指定文字描画 - KGC_DrawFormatText ◆ VX ◆
  3. #_/    ◇ Last update : 2007/12/19 ◇
  4. #_/----------------------------------------------------------------------------
  5. #_/  書式指定文字描画機能を追加します。
  6. #_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/

  7. $imported = {} if $imported == nil
  8. $imported["DrawFormatText"] = true

  9. class Bitmap
  10.   @@__dummy_window = Window_Base.new(-64, -64, 64, 64)
  11.   @@__dummy_window.visible = false
  12.   #--------------------------------------------------------------------------
  13.   # ● 書式指定文字描画
  14.   #--------------------------------------------------------------------------
  15.   def draw_format_text(x, y, width, height, text, align = 0)
  16.     str = convert_special_characters(text)
  17.     dx = 0
  18.     buf = Bitmap.new(Graphics.width * 2, Window_Base::WLH)
  19.     buf.font = self.font.clone
  20.     loop {
  21.       c = str.slice!(/./m)              # 次の文字を取得
  22.       case c
  23.       when nil                          # 描画すべき文字がない
  24.         break
  25.       when "\x01"                       # \C[n]  (文字色変更)
  26.         str.sub!(/\[([0-9]+)\]/, "")
  27.         buf.font.color = @@__dummy_window.text_color($1.to_i)
  28.         next
  29.       else                              # 普通の文字
  30.         buf.draw_text(dx, 0, 40, Window_Base::WLH, c)
  31.         c_width = buf.text_size(c).width
  32.         dx += c_width
  33.       end
  34.     }
  35.     self.font = buf.font.clone
  36.     # バッファをウィンドウ内に転送
  37.     dest = Rect.new(x, y, [width, dx].min, height)
  38.     src = Rect.new(0, 0, dx, Window_Base::WLH)
  39.     offset = width - dx
  40.     case align
  41.     when 1  # 中央揃え
  42.       dest.x += offset / 2
  43.     when 2  # 右揃え
  44.       dest.x += offset
  45.     end
  46.     stretch_blt(dest, buf, src)
  47.     buf.dispose
  48.   end
  49.   #--------------------------------------------------------------------------
  50.   # ● 特殊文字の変換
  51.   #--------------------------------------------------------------------------
  52.   def convert_special_characters(str)
  53.     text = str.dup
  54.     text.gsub!(/\\V\[([0-9]+)\]/i) { $game_variables[$1.to_i] }
  55.     text.gsub!(/\\N\[([0-9]+)\]/i) { $game_actors[$1.to_i].name }
  56.     text.gsub!(/\\C\[([0-9]+)\]/i) { "\x01[#{$1}]" }
  57.     text.gsub!(/\\G/)              { $game_party.gold }
  58.     text.gsub!(/\\\\/)             { "\\" }
  59.     return text
  60.   end
  61. end

复制代码


注意 使用方法: 在物品等描述中 用 | 换行!!
系统信息:本贴由楼主认可为正确答案,66RPG感谢您的热情解答~
流浪猎人 最新进展: 人物设定:11% 场景界面:3% 剧情构思:11% 物品装备技能:21% 怪物设定:15% 下载地址: http://www.tq27.cn/game/流浪猎人0251.exe 发布游戏:0.251版本
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-12-27 11:17

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表