Project1

标题: 关于选项指令窗口描边、去框、文字色 [打印本页]

作者: 冰舞蝶恋    时间: 2010-11-2 20:07
标题: 关于选项指令窗口描边、去框、文字色
http://rpg.blue/forum.php?mod=vi ... 6&fromuid=85979
这是原帖,非常感谢水镜!不过希望的是,游戏中所有界面的选项窗口(包括文章啥的)都去框并描边,最好能更改选中文字色或字号啥的……谢谢,知道对于各位大大来讲,1个V实在不算什么,就当作一点小小心意献给各位大大吧!谢谢了。
作者: 迷路子    时间: 2010-11-2 20:07
回复 冰舞蝶恋 的帖子

去掉对话框的部份了
应该其他部份没啥问题了~
  1. #==============================================================================
  2. # ■ Window_Selectable
  3. #------------------------------------------------------------------------------
  4. #  拥有光标的移动以及滚动功能的窗口类。
  5. #==============================================================================

  6. class Window_Selectable < Window_Base
  7.   #--------------------------------------------------------------------------
  8.   # ● 更新光标
  9.   #--------------------------------------------------------------------------
  10.   def update_cursor
  11.     self.cursor_rect.empty  
  12.     if @index < 0                   # 当光标位置小于0
  13.       self.cursor_rect.empty        # 隐藏光标
  14.     else                            # 当光标位置为0或大于
  15.       row = @index / @column_max    # 获取当前行
  16.       if row < top_row              # 若先于首行
  17.         self.top_row = row          # 向上滚动
  18.       end
  19.       if row > bottom_row           # 若後于末行
  20.         self.bottom_row = row       # 向下滚动
  21.       end
  22.       rect = item_rect(@index)      # 获取所选项目矩形
  23.       rect.y -= self.oy             # 设矩形为滚动位置
  24.       self.cursor_rect = rect       # 更新光标矩形
  25.       self.cursor_rect.empty
  26.     end
  27.   end
  28.   
  29. end


  30. class Window_Base < Window
  31.   
  32.   #--------------------------------------------------------------------------
  33.   # ○ 描边字
  34.   #--------------------------------------------------------------------------
  35.   def draw_stroke_text(rect, str, enabled = true, align = 0, color = nil)
  36.     x = rect.x
  37.     y = rect.y
  38.     width = rect.width
  39.     height = rect.height

  40.     # 准备字体
  41.     font_backup = self.contents.font.clone
  42.     if color
  43.       self.contents.font.color.red   = color.red
  44.       self.contents.font.color.green = color.green
  45.       self.contents.font.color.blue  = color.blue
  46.     end

  47.     # 关闭默认阴影
  48.     self.contents.font.shadow = false

  49.     # 描绘边缘
  50.     self.contents.font.color.alpha = enabled ? 255 : 128
  51.     self.contents.draw_text(x-1, y-1, width, height, str, align)
  52.     self.contents.draw_text(x-1, y+1, width, height, str, align)
  53.     self.contents.draw_text(x+1, y-1, width, height, str, align)
  54.     self.contents.draw_text(x+1, y+1, width, height, str, align)
  55.     self.contents.draw_text(x, y-1, width, height, str, align)
  56.     self.contents.draw_text(x, y+1, width, height, str, align)
  57.     self.contents.draw_text(x-1, y, width, height, str, align)
  58.     self.contents.draw_text(x+1, y, width, height, str, align)

  59.     # 描绘主文字
  60.     self.contents.font.color = font_backup.color
  61.     self.contents.font.color.alpha = enabled ? 255 : 128
  62.     self.contents.draw_text(x, y, width, height, str, align)
  63.    
  64.     # 还原默认字体
  65.     self.contents.font = font_backup

  66.   end
  67. end

  68. #==============================================================================
  69. # ■ Window_Command   捣鼓 by 水镜风生 (描边字部分出自沉影不器)
  70. #------------------------------------------------------------------------------
  71. #  一般的命令选择行窗口。
  72. #==============================================================================
  73. FONT_COLOR_ID = 1   # 描边颜色ID,请参考[显示文章]中\C[n]的颜色

  74. class Window_Command < Window_Selectable
  75.   #--------------------------------------------------------------------------
  76.   # ● 初始化对象 追加定义
  77.   #--------------------------------------------------------------------------
  78.   alias Mro_initialize initialize  
  79.   def initialize(width, commands, column_max = 1, row_max = 0, spacing = 32)
  80.     @enabled_list = []
  81.     Mro_initialize(width, commands, column_max, row_max, spacing)
  82.   end
  83.   #--------------------------------------------------------------------------
  84.   # ● 描绘项目  追加定义
  85.   #--------------------------------------------------------------------------
  86.   alias Mro_draw_item draw_item
  87.   def draw_item(index, enabled = true)
  88.     @enabled_list[index] = enabled
  89.     Mro_draw_item(index, @enabled_list[index])
  90.   end
  91.   #--------------------------------------------------------------------------
  92.   # ● 更新
  93.   #--------------------------------------------------------------------------
  94.   def update
  95.     super
  96.     if @last_index != self.index
  97.       @last_index = self.index
  98.       for i in 0...@item_max
  99.         rect = item_rect(i)
  100.         self.contents.clear_rect(rect)
  101.         next if i == @old_index
  102.         draw_item(i, @enabled_list[i])
  103.       end
  104.        rect = item_rect(self.index)
  105.        self.contents.clear_rect(rect)
  106.       color = text_color(FONT_COLOR_ID)
  107.       draw_stroke_text(rect, @commands[@index], @enabled_list[@index], 0, color)
  108.     end
  109.   end
  110. end

  111. #==============================================================================
  112. # ■ Window_Item
  113. #------------------------------------------------------------------------------
  114. #  物品画面、战斗画面、显示浏览物品的窗口。
  115. #==============================================================================

  116. class Window_Item < Window_Selectable
  117.   alias Mro_initialize0 initialize
  118.   def initialize(x, y, width, height)
  119.     @enabled_list = []
  120.     Mro_initialize0(x, y, width, height)
  121.   end
  122.   
  123.   #--------------------------------------------------------------------------
  124.   # ● 刷新
  125.   #--------------------------------------------------------------------------  
  126.   def refresh
  127.     @data = []
  128.     for item in $game_party.items
  129.       next unless include?(item)
  130.       @data.push(item)
  131.       if item.is_a?(RPG::Item) and item.id == $game_party.last_item_id
  132.         self.index = @data.size - 1
  133.       end
  134.     end
  135.     @data.push(nil) if include?(nil)
  136.     @item_max = @data.size
  137.     create_contents
  138.     for i in 0...@item_max
  139.       draw_item(i)
  140.     end
  141.   end
  142.   
  143.   def update
  144.     super
  145.     @item_max = @data.size
  146.     create_contents
  147.     for i in 0...@item_max
  148.       rect = item_rect(i)
  149.       self.contents.clear_rect(rect)
  150.       next if i == @old_index
  151.       draw_item(i)
  152.     end
  153.     rect = item_rect(self.index)
  154.     rect.width -= 60
  155.     rect.x += 24
  156.     self.contents.clear_rect(rect)
  157.     color = text_color(FONT_COLOR_ID)
  158.     if @data[@index] != nil
  159.       draw_stroke_text(rect, @data[@index].name, @enabled_list[index], 0, color)
  160.     else
  161.       draw_stroke_text(rect, "无", true, 0, color)
  162.     end
  163.   end
  164.   
  165.   #--------------------------------------------------------------------------
  166.   # ● 描绘项目
  167.   #     index : 项目编号
  168.   #--------------------------------------------------------------------------
  169.   def draw_item(index)
  170.     rect = item_rect(index)
  171.     self.contents.clear_rect(rect)
  172.     item = @data[index]
  173.     if item != nil
  174.       number = $game_party.item_number(item)
  175.       enabled = enable?(item)
  176.       rect.width -= 4
  177.       draw_item_name(item, rect.x, rect.y, enabled)
  178.       self.contents.draw_text(rect, sprintf(":%2d", number), 2)
  179.     else
  180.       rect.x += 24
  181.       self.contents.draw_text(rect,"无")
  182.     end
  183.     @enabled_list[index] = enabled
  184.   end
  185. end

  186. class Window_Equip < Window_Selectable
  187.   alias Mro_initialize4 initialize
  188.   def initialize(x, y, actor)
  189.     Mro_initialize4(x, y, actor)
  190.   end
  191.   
  192.   def update
  193.     super
  194.     @item_max = @data.size
  195.     create_contents
  196.     for i in 0...@item_max
  197.       rect = item_rect(i)
  198.       self.contents.clear_rect(rect)
  199.       next if i == @old_index
  200.       draw_item_name(@data[i],92,WLH*i)
  201.     end
  202.     rect = item_rect(self.index)
  203.     rect.x += 115
  204.     self.contents.clear_rect(rect)
  205.     color = text_color(FONT_COLOR_ID)
  206.     if @data[@index] != nil
  207.       draw_stroke_text(rect, @data[@index].name, true, 0, color)
  208.     else
  209.       draw_stroke_text(rect, "无", true, 0, color)
  210.     end
  211.     self.contents.font.color = system_color
  212.     if @actor.two_swords_style
  213.       self.contents.draw_text(4, WLH * 0, 92, WLH, Vocab::weapon1)
  214.       self.contents.draw_text(4, WLH * 1, 92, WLH, Vocab::weapon2)
  215.     else
  216.       self.contents.draw_text(4, WLH * 0, 92, WLH, Vocab::weapon)
  217.       self.contents.draw_text(4, WLH * 1, 92, WLH, Vocab::armor1)
  218.     end
  219.     self.contents.draw_text(4, WLH * 2, 92, WLH, Vocab::armor2)
  220.     self.contents.draw_text(4, WLH * 3, 92, WLH, Vocab::armor3)
  221.     self.contents.draw_text(4, WLH * 4, 92, WLH, Vocab::armor4)
  222.     self.contents.font.color = Color.new(255,255,255)
  223.     if @data[0] == nil
  224.       self.contents.draw_text(116, 0,92,WLH,"无")
  225.     end
  226.     if @data[1] == nil
  227.       self.contents.draw_text(116, WLH,92,WLH,"无")
  228.     end
  229.     if @data[2] == nil
  230.       self.contents.draw_text(116, WLH*2,92,WLH,"无")
  231.     end
  232.     if @data[3] == nil
  233.       self.contents.draw_text(116, WLH*3,92,WLH,"无")
  234.     end
  235.     if @data[4] == nil
  236.       self.contents.draw_text(116, WLH*4,92,WLH,"无")
  237.     end
  238.   end
  239. end


  240. class Window_Skill < Window_Selectable  
  241.   alias Mro_initialize3 initialize
  242.   def initialize(x, y, width, height, actor)
  243.     @enabled_list = []
  244.     Mro_initialize3(x, y, width, height,actor)
  245.   end
  246.   
  247.   #--------------------------------------------------------------------------
  248.   # ● 描绘项目
  249.   #     index : 项目编号
  250.   #--------------------------------------------------------------------------
  251.   def draw_item(index)
  252.     rect = item_rect(index)
  253.     self.contents.clear_rect(rect)
  254.     skill = @data[index]
  255.     if skill != nil
  256.       rect.width -= 4
  257.       enabled = @actor.skill_can_use?(skill)
  258.       draw_item_name(skill, rect.x, rect.y, enabled)
  259.       self.contents.draw_text(rect, @actor.calc_mp_cost(skill), 2)
  260.     end
  261.     @enabled_list[index] = enabled
  262.   end
  263.   
  264.   def update
  265.     super
  266.     @item_max = @data.size
  267.     create_contents
  268.     for i in 0...@item_max
  269.       rect = item_rect(i)
  270.       self.contents.clear_rect(rect)
  271.       next if i == @old_index
  272.       draw_item(i)
  273.     end
  274.     rect = item_rect(self.index)
  275.     rect.width -= 60
  276.     rect.x += 24
  277.     self.contents.clear_rect(rect)
  278.     color = text_color(FONT_COLOR_ID)
  279.     if @data[@index] != nil
  280.       draw_stroke_text(rect, @data[@index].name, @enabled_list[index], 0, color)
  281.     else
  282.       draw_stroke_text(rect, "无", false, 0, color)
  283.     end
  284.   end
  285. end

  286. class Window_ShopBuy < Window_Selectable
  287.   alias Mro_initialize5 initialize
  288.   def initialize(x, y)
  289.     @enabled_list = []
  290.     Mro_initialize5(x,y)
  291.   end
  292.   
  293.   def draw_item(index)
  294.     item = @data[index]
  295.     number = $game_party.item_number(item)
  296.     enabled = (item.price <= $game_party.gold and number < 99)
  297.     rect = item_rect(index)
  298.     self.contents.clear_rect(rect)
  299.     draw_item_name(item, rect.x, rect.y, enabled)
  300.     rect.width -= 4
  301.     self.contents.draw_text(rect, item.price, 2)
  302.     @enabled_list[index] = enabled
  303.   end
  304.   
  305.   def update
  306.     super
  307.     @item_max = @data.size
  308.     create_contents
  309.     for i in 0...@item_max
  310.       rect = item_rect(i)
  311.       self.contents.clear_rect(rect)
  312.       next if i == @old_index
  313.       draw_item(i)
  314.     end
  315.     rect = item_rect(self.index)
  316.     rect.width -= 60
  317.     rect.x += 24
  318.     self.contents.clear_rect(rect)
  319.     color = text_color(FONT_COLOR_ID)
  320.     draw_stroke_text(rect, @data[@index].name, @enabled_list[index], 0, color)
  321.   end
  322. end
复制代码

作者: Rion幻音    时间: 2010-11-2 20:13
本帖最后由 Rion幻音 于 2010-11-2 20:15 编辑

是指无视掉窗口素材吗?直接把窗口的素材给弄透明吧~
作者: Rion幻音    时间: 2010-11-2 20:16
是指无视掉窗口选项框吗?直接把它的素材给弄透明吧~
作者: 冰舞蝶恋    时间: 2010-11-2 20:17
回复 Rion幻音 的帖子

可是水镜的描边选项只限于系统的喵!
作者: 迷路子    时间: 2010-11-2 20:19
本帖最后由 迷路子 于 2010-11-2 20:19 编辑

应该是指去掉选择时的透明框
然後直接用文字描边方式绘制目前选项吧
把描绘外框的函数替换掉不知能行不

或是直接用图片做选项应该也能行
作者: 冰舞蝶恋    时间: 2010-11-2 20:21
回复 迷路子 的帖子

我想描边嘛!
作者: Rion幻音    时间: 2010-11-2 20:21
回复 冰舞蝶恋 的帖子

那就把def update_cursor下所有的东西都写成
self.cursor_rect.empty
吧!(PIA飞~)
作者: 狠、陌生    时间: 2010-11-2 20:26
提示: 作者被禁止或删除 内容自动屏蔽
作者: 狠、陌生    时间: 2010-11-2 20:28
提示: 作者被禁止或删除 内容自动屏蔽
作者: Rion幻音    时间: 2010-11-2 20:30
绝对不是!只是个拜金主义者……
作者: 狠、陌生    时间: 2010-11-2 20:31
提示: 作者被禁止或删除 内容自动屏蔽
作者: 冰舞蝶恋    时间: 2010-11-2 20:34
哎呀呀。。脚本白痴听不懂的啦,求脚本或范例!!
作者: Rion幻音    时间: 2010-11-2 20:39
本帖最后由 Rion幻音 于 2010-11-2 20:42 编辑

搞定……请必定要和水镜的脚本一起使用……
  1. #==============================================================================
  2. # ■ Window_Selectable
  3. #------------------------------------------------------------------------------
  4. #  拥有光标的移动以及滚动功能的窗口类。
  5. #==============================================================================

  6. class Window_Selectable < Window_Base
  7. #--------------------------------------------------------------------------
  8. # ● 更新光标
  9. #--------------------------------------------------------------------------
  10.   def update_cursor
  11.     self.cursor_rect.empty
  12.   end
复制代码

作者: 冰舞蝶恋    时间: 2010-11-2 20:48
本帖最后由 冰舞蝶恋 于 2010-11-2 20:49 编辑

回复 Rion幻音 的帖子

你这个让游戏窗口无法滚动了吧!而且。。还是就只有系统文字描边的说!
作者: 迷路子    时间: 2010-11-2 21:06
把所有有draw_item这函数的脚本都比照水镜的脚本复制试试?

作者: 冰舞蝶恋    时间: 2010-11-2 21:11
回复 迷路子 的帖子

都说了呐,我是脚本白痴呐,最好有发范例和脚本啦!
作者: Rion幻音    时间: 2010-11-2 21:20
是要全字体都描边吗?
作者: 冰舞蝶恋    时间: 2010-11-2 21:36
回复 Rion幻音 的帖子

不是,是所有选框中的文字。
作者: Rion幻音    时间: 2010-11-2 21:46

水镜的不就行了吗?
作者: 冰舞蝶恋    时间: 2010-11-2 21:51
回复 Rion幻音 的帖子

水镜的只有系统选框才这样,就连装备啥的选项也没有文字描边啊!我还想要文章选项描边>.<!
作者: 水镜风生    时间: 2010-11-2 22:03


红圈部分删掉就去框了,至于全选项描边,先放几天看看有没有好人出现吧。
作者: 冰舞蝶恋    时间: 2010-11-2 22:22
回复 水镜风生 的帖子

苍天啊!大地啊!你一直在潜水么……= =
作者: 水镜风生    时间: 2010-11-2 22:35
回复 冰舞蝶恋 的帖子

Of course,作为一个资深的潜水党,我浮上水面换氧气的时间不多,好好珍惜吧……
作者: yuxuan    时间: 2010-11-2 22:36
提示: 作者被禁止或删除 内容自动屏蔽
作者: 迷路子    时间: 2010-11-2 23:10
本帖最后由 迷路子 于 2010-11-2 23:11 编辑

用用看吧
除了存档没做处理外     其他都是去光标   目前选择项描边
不过描边很卡…
移动选项时会lag一下
  1. #==============================================================================
  2. # ■ Window_Selectable
  3. #------------------------------------------------------------------------------
  4. #  拥有光标的移动以及滚动功能的窗口类。
  5. #==============================================================================

  6. class Window_Selectable < Window_Base
  7.   #--------------------------------------------------------------------------
  8.   # ● 更新光标
  9.   #--------------------------------------------------------------------------
  10.   def update_cursor
  11.     self.cursor_rect.empty  
  12.     if @index < 0                   # 当光标位置小于0
  13.       self.cursor_rect.empty        # 隐藏光标
  14.     else                            # 当光标位置为0或大于
  15.       row = @index / @column_max    # 获取当前行
  16.       if row < top_row              # 若先于首行
  17.         self.top_row = row          # 向上滚动
  18.       end
  19.       if row > bottom_row           # 若後于末行
  20.         self.bottom_row = row       # 向下滚动
  21.       end
  22.       rect = item_rect(@index)      # 获取所选项目矩形
  23.       rect.y -= self.oy             # 设矩形为滚动位置
  24.       self.cursor_rect = rect       # 更新光标矩形
  25.       self.cursor_rect.empty
  26.     end
  27.   end
  28.   
  29. end


  30. class Window_Base < Window
  31.   
  32.   #--------------------------------------------------------------------------
  33.   # ○ 描边字
  34.   #--------------------------------------------------------------------------
  35.   def draw_stroke_text(rect, str, enabled = true, align = 0, color = nil)
  36.     x = rect.x
  37.     y = rect.y
  38.     width = rect.width
  39.     height = rect.height

  40.     # 准备字体
  41.     font_backup = self.contents.font.clone
  42.     if color
  43.       self.contents.font.color.red   = color.red
  44.       self.contents.font.color.green = color.green
  45.       self.contents.font.color.blue  = color.blue
  46.     end

  47.     # 关闭默认阴影
  48.     self.contents.font.shadow = false

  49.     # 描绘边缘
  50.     self.contents.font.color.alpha = enabled ? 255 : 128
  51.     self.contents.draw_text(x-1, y-1, width, height, str, align)
  52.     self.contents.draw_text(x-1, y+1, width, height, str, align)
  53.     self.contents.draw_text(x+1, y-1, width, height, str, align)
  54.     self.contents.draw_text(x+1, y+1, width, height, str, align)
  55.     self.contents.draw_text(x, y-1, width, height, str, align)
  56.     self.contents.draw_text(x, y+1, width, height, str, align)
  57.     self.contents.draw_text(x-1, y, width, height, str, align)
  58.     self.contents.draw_text(x+1, y, width, height, str, align)

  59.     # 描绘主文字
  60.     self.contents.font.color = font_backup.color
  61.     self.contents.font.color.alpha = enabled ? 255 : 128
  62.     self.contents.draw_text(x, y, width, height, str, align)
  63.    
  64.     # 还原默认字体
  65.     self.contents.font = font_backup

  66.   end
  67. end

  68. #==============================================================================
  69. # ■ Window_Command   捣鼓 by 水镜风生 (描边字部分出自沉影不器)
  70. #------------------------------------------------------------------------------
  71. #  一般的命令选择行窗口。
  72. #==============================================================================
  73. FONT_COLOR_ID = 1   # 描边颜色ID,请参考[显示文章]中\C[n]的颜色

  74. class Window_Command < Window_Selectable
  75.   #--------------------------------------------------------------------------
  76.   # ● 初始化对象 追加定义
  77.   #--------------------------------------------------------------------------
  78.   alias Mro_initialize initialize  
  79.   def initialize(width, commands, column_max = 1, row_max = 0, spacing = 32)
  80.     @enabled_list = []
  81.     Mro_initialize(width, commands, column_max, row_max, spacing)
  82.   end
  83.   #--------------------------------------------------------------------------
  84.   # ● 描绘项目  追加定义
  85.   #--------------------------------------------------------------------------
  86.   alias Mro_draw_item draw_item
  87.   def draw_item(index, enabled = true)
  88.     @enabled_list[index] = enabled
  89.     Mro_draw_item(index, @enabled_list[index])
  90.   end
  91.   #--------------------------------------------------------------------------
  92.   # ● 更新
  93.   #--------------------------------------------------------------------------
  94.   def update
  95.     super
  96.     if @last_index != self.index
  97.       @last_index = self.index
  98.       for i in 0...@item_max
  99.         rect = item_rect(i)
  100.         self.contents.clear_rect(rect)
  101.         next if i == @old_index
  102.         draw_item(i, @enabled_list[i])
  103.       end
  104.        rect = item_rect(self.index)
  105.        self.contents.clear_rect(rect)
  106.       color = text_color(FONT_COLOR_ID)
  107.       draw_stroke_text(rect, @commands[@index], @enabled_list[@index], 0, color)
  108.     end
  109.   end
  110. end

  111. #==============================================================================
  112. # ■ Window_Item
  113. #------------------------------------------------------------------------------
  114. #  物品画面、战斗画面、显示浏览物品的窗口。
  115. #==============================================================================

  116. class Window_Item < Window_Selectable
  117.   alias Mro_initialize0 initialize
  118.   def initialize(x, y, width, height)
  119.     @enabled_list = []
  120.     Mro_initialize0(x, y, width, height)
  121.   end
  122.   
  123.   #--------------------------------------------------------------------------
  124.   # ● 刷新
  125.   #--------------------------------------------------------------------------  
  126.   def refresh
  127.     @data = []
  128.     for item in $game_party.items
  129.       next unless include?(item)
  130.       @data.push(item)
  131.       if item.is_a?(RPG::Item) and item.id == $game_party.last_item_id
  132.         self.index = @data.size - 1
  133.       end
  134.     end
  135.     @data.push(nil) if include?(nil)
  136.     @item_max = @data.size
  137.     create_contents
  138.     for i in 0...@item_max
  139.       draw_item(i)
  140.     end
  141.   end
  142.   
  143.   def update
  144.     super
  145.     @item_max = @data.size
  146.     create_contents
  147.     for i in 0...@item_max
  148.       rect = item_rect(i)
  149.       self.contents.clear_rect(rect)
  150.       next if i == @old_index
  151.       draw_item(i)
  152.     end
  153.     rect = item_rect(self.index)
  154.     rect.width -= 60
  155.     rect.x += 24
  156.     self.contents.clear_rect(rect)
  157.     color = text_color(FONT_COLOR_ID)
  158.     if @index >= 0 && @index < @item_max-1
  159.       draw_stroke_text(rect, @data[@index].name, @enabled_list[index], 0, color)
  160.     end
  161.   end
  162.   
  163.   #--------------------------------------------------------------------------
  164.   # ● 描绘项目
  165.   #     index : 项目编号
  166.   #--------------------------------------------------------------------------
  167.   def draw_item(index)
  168.     rect = item_rect(index)
  169.     self.contents.clear_rect(rect)
  170.     item = @data[index]
  171.     if item != nil
  172.       number = $game_party.item_number(item)
  173.       enabled = enable?(item)
  174.       rect.width -= 4
  175.       draw_item_name(item, rect.x, rect.y, enabled)
  176.       self.contents.draw_text(rect, sprintf(":%2d", number), 2)
  177.     end
  178.     @enabled_list[index] = enabled
  179.   end
  180. end

  181. class Window_Equip < Window_Selectable
  182.   alias Mro_initialize4 initialize
  183.   def initialize(x, y, actor)
  184.     Mro_initialize4(x, y, actor)
  185.   end
  186.   
  187.   
  188.   def update
  189.     super
  190.     @item_max = @data.size
  191.     create_contents
  192.     for i in 0...@item_max
  193.       rect = item_rect(i)
  194.       self.contents.clear_rect(rect)
  195.       next if i == @old_index
  196.       draw_item_name(@data[i],92,WLH*i)
  197.     end
  198.     rect = item_rect(self.index)
  199.     rect.x += 115
  200.     self.contents.clear_rect(rect)
  201.     color = text_color(FONT_COLOR_ID)
  202.     draw_stroke_text(rect, @data[@index].name, true, 0, color)
  203.     self.contents.font.color = system_color
  204.     if @actor.two_swords_style
  205.       self.contents.draw_text(4, WLH * 0, 92, WLH, Vocab::weapon1)
  206.       self.contents.draw_text(4, WLH * 1, 92, WLH, Vocab::weapon2)
  207.     else
  208.       self.contents.draw_text(4, WLH * 0, 92, WLH, Vocab::weapon)
  209.       self.contents.draw_text(4, WLH * 1, 92, WLH, Vocab::armor1)
  210.     end
  211.     self.contents.draw_text(4, WLH * 2, 92, WLH, Vocab::armor2)
  212.     self.contents.draw_text(4, WLH * 3, 92, WLH, Vocab::armor3)
  213.     self.contents.draw_text(4, WLH * 4, 92, WLH, Vocab::armor4)
  214.   end
  215. end


  216. class Window_Skill < Window_Selectable  
  217.   alias Mro_initialize3 initialize
  218.   def initialize(x, y, width, height, actor)
  219.     @enabled_list = []
  220.     Mro_initialize3(x, y, width, height,actor)
  221.   end
  222.   
  223.   #--------------------------------------------------------------------------
  224.   # ● 描绘项目
  225.   #     index : 项目编号
  226.   #--------------------------------------------------------------------------
  227.   def draw_item(index)
  228.     rect = item_rect(index)
  229.     self.contents.clear_rect(rect)
  230.     skill = @data[index]
  231.     if skill != nil
  232.       rect.width -= 4
  233.       enabled = @actor.skill_can_use?(skill)
  234.       draw_item_name(skill, rect.x, rect.y, enabled)
  235.       self.contents.draw_text(rect, @actor.calc_mp_cost(skill), 2)
  236.     end
  237.     @enabled_list[index] = enabled
  238.   end
  239.   
  240.   def update
  241.     super
  242.     @item_max = @data.size
  243.     create_contents
  244.     for i in 0...@item_max
  245.       rect = item_rect(i)
  246.       self.contents.clear_rect(rect)
  247.       next if i == @old_index
  248.       draw_item(i)
  249.     end
  250.     rect = item_rect(self.index)
  251.     rect.width -= 60
  252.     rect.x += 24
  253.     self.contents.clear_rect(rect)
  254.     color = text_color(FONT_COLOR_ID)
  255.     draw_stroke_text(rect, @data[@index].name, @enabled_list[index], 0, color)
  256.   end
  257. end
复制代码

作者: Rion幻音    时间: 2010-11-2 23:12
本帖最后由 Rion幻音 于 2010-11-3 00:24 编辑

回复 冰舞蝶恋 的帖子


像这样的效果吗?文字描边~
作者: summer92    时间: 2010-11-3 12:18
本帖最后由 summer92 于 2010-11-3 12:22 编辑

晕,有大神回答了,我就不献丑了,祝早日完工,另建议可用 photoshop
作者: 冰舞蝶恋    时间: 2010-11-3 12:33
回复 Rion幻音 的帖子

不是所有文字描边,是所有选中界面的文字描边。。
作者: 冰舞蝶恋    时间: 2010-11-3 12:36
本帖最后由 冰舞蝶恋 于 2010-11-3 12:42 编辑

回复 迷路子 的帖子

非常感谢,不过,为何选择物品或是特技、装备,就脚本出错了呢?(当没有该类事物的时候)另,文章选项窗口还是不能描边啊。。谢谢!
作者: 迷路子    时间: 2010-11-3 12:46
本帖最后由 迷路子 于 2010-11-3 12:49 编辑

我战斗测试是正常呢    应该是和其他脚本冲突了
写时没考虑冲突…(汗)
猜测是有用了其他的脚本有动到draw_item等等函数
另战斗时物品使用的人物选择我没做描边(真忘了……)
文章选项窗口不能描边是指?

这是只套用我的脚本的画面




作者: 冰舞蝶恋    时间: 2010-11-3 12:52
回复 迷路子 的帖子

我是说,当没有物品的时候打开物品就会出错;没有技能的话,打开技能就出错;没有装备也是。。呃,谢谢
作者: 迷路子    时间: 2010-11-3 13:03
回复 冰舞蝶恋 的帖子

改了下    看这样行不?
  1. #==============================================================================
  2. # ■ Window_Selectable
  3. #------------------------------------------------------------------------------
  4. #  拥有光标的移动以及滚动功能的窗口类。
  5. #==============================================================================

  6. class Window_Selectable < Window_Base
  7.   #--------------------------------------------------------------------------
  8.   # ● 更新光标
  9.   #--------------------------------------------------------------------------
  10.   def update_cursor
  11.     self.cursor_rect.empty  
  12.     if @index < 0                   # 当光标位置小于0
  13.       self.cursor_rect.empty        # 隐藏光标
  14.     else                            # 当光标位置为0或大于
  15.       row = @index / @column_max    # 获取当前行
  16.       if row < top_row              # 若先于首行
  17.         self.top_row = row          # 向上滚动
  18.       end
  19.       if row > bottom_row           # 若後于末行
  20.         self.bottom_row = row       # 向下滚动
  21.       end
  22.       rect = item_rect(@index)      # 获取所选项目矩形
  23.       rect.y -= self.oy             # 设矩形为滚动位置
  24.       self.cursor_rect = rect       # 更新光标矩形
  25.       self.cursor_rect.empty
  26.     end
  27.   end
  28.   
  29. end


  30. class Window_Base < Window
  31.   
  32.   #--------------------------------------------------------------------------
  33.   # ○ 描边字
  34.   #--------------------------------------------------------------------------
  35.   def draw_stroke_text(rect, str, enabled = true, align = 0, color = nil)
  36.     x = rect.x
  37.     y = rect.y
  38.     width = rect.width
  39.     height = rect.height

  40.     # 准备字体
  41.     font_backup = self.contents.font.clone
  42.     if color
  43.       self.contents.font.color.red   = color.red
  44.       self.contents.font.color.green = color.green
  45.       self.contents.font.color.blue  = color.blue
  46.     end

  47.     # 关闭默认阴影
  48.     self.contents.font.shadow = false

  49.     # 描绘边缘
  50.     self.contents.font.color.alpha = enabled ? 255 : 128
  51.     self.contents.draw_text(x-1, y-1, width, height, str, align)
  52.     self.contents.draw_text(x-1, y+1, width, height, str, align)
  53.     self.contents.draw_text(x+1, y-1, width, height, str, align)
  54.     self.contents.draw_text(x+1, y+1, width, height, str, align)
  55.     self.contents.draw_text(x, y-1, width, height, str, align)
  56.     self.contents.draw_text(x, y+1, width, height, str, align)
  57.     self.contents.draw_text(x-1, y, width, height, str, align)
  58.     self.contents.draw_text(x+1, y, width, height, str, align)

  59.     # 描绘主文字
  60.     self.contents.font.color = font_backup.color
  61.     self.contents.font.color.alpha = enabled ? 255 : 128
  62.     self.contents.draw_text(x, y, width, height, str, align)
  63.    
  64.     # 还原默认字体
  65.     self.contents.font = font_backup

  66.   end
  67. end

  68. #==============================================================================
  69. # ■ Window_Command   捣鼓 by 水镜风生 (描边字部分出自沉影不器)
  70. #------------------------------------------------------------------------------
  71. #  一般的命令选择行窗口。
  72. #==============================================================================
  73. FONT_COLOR_ID = 1   # 描边颜色ID,请参考[显示文章]中\C[n]的颜色

  74. class Window_Command < Window_Selectable
  75.   #--------------------------------------------------------------------------
  76.   # ● 初始化对象 追加定义
  77.   #--------------------------------------------------------------------------
  78.   alias Mro_initialize initialize  
  79.   def initialize(width, commands, column_max = 1, row_max = 0, spacing = 32)
  80.     @enabled_list = []
  81.     Mro_initialize(width, commands, column_max, row_max, spacing)
  82.   end
  83.   #--------------------------------------------------------------------------
  84.   # ● 描绘项目  追加定义
  85.   #--------------------------------------------------------------------------
  86.   alias Mro_draw_item draw_item
  87.   def draw_item(index, enabled = true)
  88.     @enabled_list[index] = enabled
  89.     Mro_draw_item(index, @enabled_list[index])
  90.   end
  91.   #--------------------------------------------------------------------------
  92.   # ● 更新
  93.   #--------------------------------------------------------------------------
  94.   def update
  95.     super
  96.     if @last_index != self.index
  97.       @last_index = self.index
  98.       for i in 0...@item_max
  99.         rect = item_rect(i)
  100.         self.contents.clear_rect(rect)
  101.         next if i == @old_index
  102.         draw_item(i, @enabled_list[i])
  103.       end
  104.        rect = item_rect(self.index)
  105.        self.contents.clear_rect(rect)
  106.       color = text_color(FONT_COLOR_ID)
  107.       draw_stroke_text(rect, @commands[@index], @enabled_list[@index], 0, color)
  108.     end
  109.   end
  110. end

  111. #==============================================================================
  112. # ■ Window_Item
  113. #------------------------------------------------------------------------------
  114. #  物品画面、战斗画面、显示浏览物品的窗口。
  115. #==============================================================================

  116. class Window_Item < Window_Selectable
  117.   alias Mro_initialize0 initialize
  118.   def initialize(x, y, width, height)
  119.     @enabled_list = []
  120.     Mro_initialize0(x, y, width, height)
  121.   end
  122.   
  123.   #--------------------------------------------------------------------------
  124.   # ● 刷新
  125.   #--------------------------------------------------------------------------  
  126.   def refresh
  127.     @data = []
  128.     for item in $game_party.items
  129.       next unless include?(item)
  130.       @data.push(item)
  131.       if item.is_a?(RPG::Item) and item.id == $game_party.last_item_id
  132.         self.index = @data.size - 1
  133.       end
  134.     end
  135.     @data.push(nil) if include?(nil)
  136.     @item_max = @data.size
  137.     create_contents
  138.     for i in 0...@item_max
  139.       draw_item(i)
  140.     end
  141.   end
  142.   
  143.   def update
  144.     super
  145.     @item_max = @data.size
  146.     create_contents
  147.     for i in 0...@item_max
  148.       rect = item_rect(i)
  149.       self.contents.clear_rect(rect)
  150.       next if i == @old_index
  151.       draw_item(i)
  152.     end
  153.     rect = item_rect(self.index)
  154.     rect.width -= 60
  155.     rect.x += 24
  156.     self.contents.clear_rect(rect)
  157.     color = text_color(FONT_COLOR_ID)
  158.     if @index >= 0 && @index < @item_max-1
  159.       draw_stroke_text(rect, @data[@index].name, @enabled_list[index], 0, color)
  160.     else
  161.       draw_stroke_text(rect, "无", true, 0, color)
  162.     end
  163.   end
  164.   
  165.   #--------------------------------------------------------------------------
  166.   # ● 描绘项目
  167.   #     index : 项目编号
  168.   #--------------------------------------------------------------------------
  169.   def draw_item(index)
  170.     rect = item_rect(index)
  171.     self.contents.clear_rect(rect)
  172.     item = @data[index]
  173.     if item != nil
  174.       number = $game_party.item_number(item)
  175.       enabled = enable?(item)
  176.       rect.width -= 4
  177.       draw_item_name(item, rect.x, rect.y, enabled)
  178.       self.contents.draw_text(rect, sprintf(":%2d", number), 2)
  179.     else
  180.       rect.x += 24
  181.       self.contents.draw_text(rect,"无")
  182.     end
  183.     @enabled_list[index] = enabled
  184.   end
  185. end

  186. class Window_Equip < Window_Selectable
  187.   alias Mro_initialize4 initialize
  188.   def initialize(x, y, actor)
  189.     Mro_initialize4(x, y, actor)
  190.   end
  191.   
  192.   
  193.   def update
  194.     super
  195.     @item_max = @data.size
  196.     create_contents
  197.     for i in 0...@item_max
  198.       rect = item_rect(i)
  199.       self.contents.clear_rect(rect)
  200.       next if i == @old_index
  201.       draw_item_name(@data[i],92,WLH*i)
  202.     end
  203.     rect = item_rect(self.index)
  204.     rect.x += 115
  205.     self.contents.clear_rect(rect)
  206.     color = text_color(FONT_COLOR_ID)
  207.     draw_stroke_text(rect, @data[@index].name, true, 0, color)
  208.     self.contents.font.color = system_color
  209.     if @actor.two_swords_style
  210.       self.contents.draw_text(4, WLH * 0, 92, WLH, Vocab::weapon1)
  211.       self.contents.draw_text(4, WLH * 1, 92, WLH, Vocab::weapon2)
  212.     else
  213.       self.contents.draw_text(4, WLH * 0, 92, WLH, Vocab::weapon)
  214.       self.contents.draw_text(4, WLH * 1, 92, WLH, Vocab::armor1)
  215.     end
  216.     self.contents.draw_text(4, WLH * 2, 92, WLH, Vocab::armor2)
  217.     self.contents.draw_text(4, WLH * 3, 92, WLH, Vocab::armor3)
  218.     self.contents.draw_text(4, WLH * 4, 92, WLH, Vocab::armor4)
  219.   end
  220. end


  221. class Window_Skill < Window_Selectable  
  222.   alias Mro_initialize3 initialize
  223.   def initialize(x, y, width, height, actor)
  224.     @enabled_list = []
  225.     Mro_initialize3(x, y, width, height,actor)
  226.   end
  227.   
  228.   #--------------------------------------------------------------------------
  229.   # ● 描绘项目
  230.   #     index : 项目编号
  231.   #--------------------------------------------------------------------------
  232.   def draw_item(index)
  233.     rect = item_rect(index)
  234.     self.contents.clear_rect(rect)
  235.     skill = @data[index]
  236.     if skill != nil
  237.       rect.width -= 4
  238.       enabled = @actor.skill_can_use?(skill)
  239.       draw_item_name(skill, rect.x, rect.y, enabled)
  240.       self.contents.draw_text(rect, @actor.calc_mp_cost(skill), 2)
  241.     end
  242.     @enabled_list[index] = enabled
  243.   end
  244.   
  245.   def update
  246.     super
  247.     @item_max = @data.size
  248.     create_contents
  249.     for i in 0...@item_max
  250.       rect = item_rect(i)
  251.       self.contents.clear_rect(rect)
  252.       next if i == @old_index
  253.       draw_item(i)
  254.     end
  255.     rect = item_rect(self.index)
  256.     rect.width -= 60
  257.     rect.x += 24
  258.     self.contents.clear_rect(rect)
  259.     color = text_color(FONT_COLOR_ID)
  260.     if @index>=0 && @index<@item_max-1
  261.       draw_stroke_text(rect, @data[@index].name, @enabled_list[index], 0, color)
  262.     else
  263.       draw_stroke_text(rect, "无", false, 0, color)
  264.     end
  265.   end
  266. end
复制代码

作者: 冰舞蝶恋    时间: 2010-11-3 13:05
本帖最后由 冰舞蝶恋 于 2010-11-3 13:08 编辑

回复 迷路子 的帖子

感谢,继续提出BUG:装备栏空的时候移动光标还会出错喵!另外,商店界面的文字和文章选项窗口的文字喵!~~迷路大大的脚本真是太有爱了~~>_<
作者: 迷路子    时间: 2010-11-3 13:16
回复 冰舞蝶恋 的帖子

修正完成
再试下吧~
  1. #==============================================================================
  2. # ■ Window_Selectable
  3. #------------------------------------------------------------------------------
  4. #  拥有光标的移动以及滚动功能的窗口类。
  5. #==============================================================================

  6. class Window_Selectable < Window_Base
  7.   #--------------------------------------------------------------------------
  8.   # ● 更新光标
  9.   #--------------------------------------------------------------------------
  10.   def update_cursor
  11.     self.cursor_rect.empty  
  12.     if @index < 0                   # 当光标位置小于0
  13.       self.cursor_rect.empty        # 隐藏光标
  14.     else                            # 当光标位置为0或大于
  15.       row = @index / @column_max    # 获取当前行
  16.       if row < top_row              # 若先于首行
  17.         self.top_row = row          # 向上滚动
  18.       end
  19.       if row > bottom_row           # 若後于末行
  20.         self.bottom_row = row       # 向下滚动
  21.       end
  22.       rect = item_rect(@index)      # 获取所选项目矩形
  23.       rect.y -= self.oy             # 设矩形为滚动位置
  24.       self.cursor_rect = rect       # 更新光标矩形
  25.       self.cursor_rect.empty
  26.     end
  27.   end
  28.   
  29. end


  30. class Window_Base < Window
  31.   
  32.   #--------------------------------------------------------------------------
  33.   # ○ 描边字
  34.   #--------------------------------------------------------------------------
  35.   def draw_stroke_text(rect, str, enabled = true, align = 0, color = nil)
  36.     x = rect.x
  37.     y = rect.y
  38.     width = rect.width
  39.     height = rect.height

  40.     # 准备字体
  41.     font_backup = self.contents.font.clone
  42.     if color
  43.       self.contents.font.color.red   = color.red
  44.       self.contents.font.color.green = color.green
  45.       self.contents.font.color.blue  = color.blue
  46.     end

  47.     # 关闭默认阴影
  48.     self.contents.font.shadow = false

  49.     # 描绘边缘
  50.     self.contents.font.color.alpha = enabled ? 255 : 128
  51.     self.contents.draw_text(x-1, y-1, width, height, str, align)
  52.     self.contents.draw_text(x-1, y+1, width, height, str, align)
  53.     self.contents.draw_text(x+1, y-1, width, height, str, align)
  54.     self.contents.draw_text(x+1, y+1, width, height, str, align)
  55.     self.contents.draw_text(x, y-1, width, height, str, align)
  56.     self.contents.draw_text(x, y+1, width, height, str, align)
  57.     self.contents.draw_text(x-1, y, width, height, str, align)
  58.     self.contents.draw_text(x+1, y, width, height, str, align)

  59.     # 描绘主文字
  60.     self.contents.font.color = font_backup.color
  61.     self.contents.font.color.alpha = enabled ? 255 : 128
  62.     self.contents.draw_text(x, y, width, height, str, align)
  63.    
  64.     # 还原默认字体
  65.     self.contents.font = font_backup

  66.   end
  67. end

  68. #==============================================================================
  69. # ■ Window_Command   捣鼓 by 水镜风生 (描边字部分出自沉影不器)
  70. #------------------------------------------------------------------------------
  71. #  一般的命令选择行窗口。
  72. #==============================================================================
  73. FONT_COLOR_ID = 1   # 描边颜色ID,请参考[显示文章]中\C[n]的颜色

  74. class Window_Command < Window_Selectable
  75.   #--------------------------------------------------------------------------
  76.   # ● 初始化对象 追加定义
  77.   #--------------------------------------------------------------------------
  78.   alias Mro_initialize initialize  
  79.   def initialize(width, commands, column_max = 1, row_max = 0, spacing = 32)
  80.     @enabled_list = []
  81.     Mro_initialize(width, commands, column_max, row_max, spacing)
  82.   end
  83.   #--------------------------------------------------------------------------
  84.   # ● 描绘项目  追加定义
  85.   #--------------------------------------------------------------------------
  86.   alias Mro_draw_item draw_item
  87.   def draw_item(index, enabled = true)
  88.     @enabled_list[index] = enabled
  89.     Mro_draw_item(index, @enabled_list[index])
  90.   end
  91.   #--------------------------------------------------------------------------
  92.   # ● 更新
  93.   #--------------------------------------------------------------------------
  94.   def update
  95.     super
  96.     if @last_index != self.index
  97.       @last_index = self.index
  98.       for i in 0...@item_max
  99.         rect = item_rect(i)
  100.         self.contents.clear_rect(rect)
  101.         next if i == @old_index
  102.         draw_item(i, @enabled_list[i])
  103.       end
  104.        rect = item_rect(self.index)
  105.        self.contents.clear_rect(rect)
  106.       color = text_color(FONT_COLOR_ID)
  107.       draw_stroke_text(rect, @commands[@index], @enabled_list[@index], 0, color)
  108.     end
  109.   end
  110. end

  111. #==============================================================================
  112. # ■ Window_Item
  113. #------------------------------------------------------------------------------
  114. #  物品画面、战斗画面、显示浏览物品的窗口。
  115. #==============================================================================

  116. class Window_Item < Window_Selectable
  117.   alias Mro_initialize0 initialize
  118.   def initialize(x, y, width, height)
  119.     @enabled_list = []
  120.     Mro_initialize0(x, y, width, height)
  121.   end
  122.   
  123.   #--------------------------------------------------------------------------
  124.   # ● 刷新
  125.   #--------------------------------------------------------------------------  
  126.   def refresh
  127.     @data = []
  128.     for item in $game_party.items
  129.       next unless include?(item)
  130.       @data.push(item)
  131.       if item.is_a?(RPG::Item) and item.id == $game_party.last_item_id
  132.         self.index = @data.size - 1
  133.       end
  134.     end
  135.     @data.push(nil) if include?(nil)
  136.     @item_max = @data.size
  137.     create_contents
  138.     for i in 0...@item_max
  139.       draw_item(i)
  140.     end
  141.   end
  142.   
  143.   def update
  144.     super
  145.     @item_max = @data.size
  146.     create_contents
  147.     for i in 0...@item_max
  148.       rect = item_rect(i)
  149.       self.contents.clear_rect(rect)
  150.       next if i == @old_index
  151.       draw_item(i)
  152.     end
  153.     rect = item_rect(self.index)
  154.     rect.width -= 60
  155.     rect.x += 24
  156.     self.contents.clear_rect(rect)
  157.     color = text_color(FONT_COLOR_ID)
  158.     if @index >= 0 && @index < @item_max-1
  159.       draw_stroke_text(rect, @data[@index].name, @enabled_list[index], 0, color)
  160.     else
  161.       draw_stroke_text(rect, "无", true, 0, color)
  162.     end
  163.   end
  164.   
  165.   #--------------------------------------------------------------------------
  166.   # ● 描绘项目
  167.   #     index : 项目编号
  168.   #--------------------------------------------------------------------------
  169.   def draw_item(index)
  170.     rect = item_rect(index)
  171.     self.contents.clear_rect(rect)
  172.     item = @data[index]
  173.     if item != nil
  174.       number = $game_party.item_number(item)
  175.       enabled = enable?(item)
  176.       rect.width -= 4
  177.       draw_item_name(item, rect.x, rect.y, enabled)
  178.       self.contents.draw_text(rect, sprintf(":%2d", number), 2)
  179.     else
  180.       rect.x += 24
  181.       self.contents.draw_text(rect,"无")
  182.     end
  183.     @enabled_list[index] = enabled
  184.   end
  185. end

  186. class Window_Equip < Window_Selectable
  187.   alias Mro_initialize4 initialize
  188.   def initialize(x, y, actor)
  189.     Mro_initialize4(x, y, actor)
  190.   end
  191.   
  192.   def update
  193.     super
  194.     @item_max = @data.size
  195.     create_contents
  196.     for i in 0...@item_max
  197.       rect = item_rect(i)
  198.       self.contents.clear_rect(rect)
  199.       next if i == @old_index
  200.       draw_item_name(@data[i],92,WLH*i)
  201.     end
  202.     rect = item_rect(self.index)
  203.     rect.x += 115
  204.     self.contents.clear_rect(rect)
  205.     color = text_color(FONT_COLOR_ID)
  206.     if @data[@index] != nil
  207.       draw_stroke_text(rect, @data[@index].name, true, 0, color)
  208.     else
  209.       draw_stroke_text(rect, "无", true, 0, color)
  210.     end
  211.     self.contents.font.color = system_color
  212.     if @actor.two_swords_style
  213.       self.contents.draw_text(4, WLH * 0, 92, WLH, Vocab::weapon1)
  214.       self.contents.draw_text(4, WLH * 1, 92, WLH, Vocab::weapon2)
  215.     else
  216.       self.contents.draw_text(4, WLH * 0, 92, WLH, Vocab::weapon)
  217.       self.contents.draw_text(4, WLH * 1, 92, WLH, Vocab::armor1)
  218.     end
  219.     self.contents.draw_text(4, WLH * 2, 92, WLH, Vocab::armor2)
  220.     self.contents.draw_text(4, WLH * 3, 92, WLH, Vocab::armor3)
  221.     self.contents.draw_text(4, WLH * 4, 92, WLH, Vocab::armor4)
  222.     self.contents.font.color = Color.new(255,255,255)
  223.     if @data[0] == nil
  224.       self.contents.draw_text(116, 0,92,WLH,"无")
  225.     end
  226.     if @data[1] == nil
  227.       self.contents.draw_text(116, WLH,92,WLH,"无")
  228.     end
  229.     if @data[2] == nil
  230.       self.contents.draw_text(116, WLH*2,92,WLH,"无")
  231.     end
  232.     if @data[3] == nil
  233.       self.contents.draw_text(116, WLH*3,92,WLH,"无")
  234.     end
  235.     if @data[4] == nil
  236.       self.contents.draw_text(116, WLH*4,92,WLH,"无")
  237.     end
  238.   end
  239. end


  240. class Window_Skill < Window_Selectable  
  241.   alias Mro_initialize3 initialize
  242.   def initialize(x, y, width, height, actor)
  243.     @enabled_list = []
  244.     Mro_initialize3(x, y, width, height,actor)
  245.   end
  246.   
  247.   #--------------------------------------------------------------------------
  248.   # ● 描绘项目
  249.   #     index : 项目编号
  250.   #--------------------------------------------------------------------------
  251.   def draw_item(index)
  252.     rect = item_rect(index)
  253.     self.contents.clear_rect(rect)
  254.     skill = @data[index]
  255.     if skill != nil
  256.       rect.width -= 4
  257.       enabled = @actor.skill_can_use?(skill)
  258.       draw_item_name(skill, rect.x, rect.y, enabled)
  259.       self.contents.draw_text(rect, @actor.calc_mp_cost(skill), 2)
  260.     end
  261.     @enabled_list[index] = enabled
  262.   end
  263.   
  264.   def update
  265.     super
  266.     @item_max = @data.size
  267.     create_contents
  268.     for i in 0...@item_max
  269.       rect = item_rect(i)
  270.       self.contents.clear_rect(rect)
  271.       next if i == @old_index
  272.       draw_item(i)
  273.     end
  274.     rect = item_rect(self.index)
  275.     rect.width -= 60
  276.     rect.x += 24
  277.     self.contents.clear_rect(rect)
  278.     color = text_color(FONT_COLOR_ID)
  279.     if @index>=0 && @index<@item_max-1
  280.       draw_stroke_text(rect, @data[@index].name, @enabled_list[index], 0, color)
  281.     else
  282.       draw_stroke_text(rect, "无", false, 0, color)
  283.     end
  284.   end
  285. end
复制代码

作者: 冰舞蝶恋    时间: 2010-11-3 13:21
回复 迷路子 的帖子

嗯,是的,感谢~~
作者: 迷路子    时间: 2010-11-3 17:24
回复 冰舞蝶恋 的帖子

商店选择和对话框选项描边完成
没考虑冲突问题
如果用其他脚本可能会有冲突
座标等等可能也要修改才行
  1. #==============================================================================
  2. # ■ Window_Selectable
  3. #------------------------------------------------------------------------------
  4. #  拥有光标的移动以及滚动功能的窗口类。
  5. #==============================================================================

  6. class Window_Selectable < Window_Base
  7.   #--------------------------------------------------------------------------
  8.   # ● 更新光标
  9.   #--------------------------------------------------------------------------
  10.   def update_cursor
  11.     self.cursor_rect.empty  
  12.     if @index < 0                   # 当光标位置小于0
  13.       self.cursor_rect.empty        # 隐藏光标
  14.     else                            # 当光标位置为0或大于
  15.       row = @index / @column_max    # 获取当前行
  16.       if row < top_row              # 若先于首行
  17.         self.top_row = row          # 向上滚动
  18.       end
  19.       if row > bottom_row           # 若後于末行
  20.         self.bottom_row = row       # 向下滚动
  21.       end
  22.       rect = item_rect(@index)      # 获取所选项目矩形
  23.       rect.y -= self.oy             # 设矩形为滚动位置
  24.       self.cursor_rect = rect       # 更新光标矩形
  25.       self.cursor_rect.empty
  26.     end
  27.   end
  28.   
  29. end


  30. class Window_Base < Window
  31.   
  32.   #--------------------------------------------------------------------------
  33.   # ○ 描边字
  34.   #--------------------------------------------------------------------------
  35.   def draw_stroke_text(rect, str, enabled = true, align = 0, color = nil)
  36.     x = rect.x
  37.     y = rect.y
  38.     width = rect.width
  39.     height = rect.height

  40.     # 准备字体
  41.     font_backup = self.contents.font.clone
  42.     if color
  43.       self.contents.font.color.red   = color.red
  44.       self.contents.font.color.green = color.green
  45.       self.contents.font.color.blue  = color.blue
  46.     end

  47.     # 关闭默认阴影
  48.     self.contents.font.shadow = false

  49.     # 描绘边缘
  50.     self.contents.font.color.alpha = enabled ? 255 : 128
  51.     self.contents.draw_text(x-1, y-1, width, height, str, align)
  52.     self.contents.draw_text(x-1, y+1, width, height, str, align)
  53.     self.contents.draw_text(x+1, y-1, width, height, str, align)
  54.     self.contents.draw_text(x+1, y+1, width, height, str, align)
  55.     self.contents.draw_text(x, y-1, width, height, str, align)
  56.     self.contents.draw_text(x, y+1, width, height, str, align)
  57.     self.contents.draw_text(x-1, y, width, height, str, align)
  58.     self.contents.draw_text(x+1, y, width, height, str, align)

  59.     # 描绘主文字
  60.     self.contents.font.color = font_backup.color
  61.     self.contents.font.color.alpha = enabled ? 255 : 128
  62.     self.contents.draw_text(x, y, width, height, str, align)
  63.    
  64.     # 还原默认字体
  65.     self.contents.font = font_backup

  66.   end
  67. end

  68. #==============================================================================
  69. # ■ Window_Command   捣鼓 by 水镜风生 (描边字部分出自沉影不器)
  70. #------------------------------------------------------------------------------
  71. #  一般的命令选择行窗口。
  72. #==============================================================================
  73. FONT_COLOR_ID = 1   # 描边颜色ID,请参考[显示文章]中\C[n]的颜色

  74. class Window_Command < Window_Selectable
  75.   #--------------------------------------------------------------------------
  76.   # ● 初始化对象 追加定义
  77.   #--------------------------------------------------------------------------
  78.   alias Mro_initialize initialize  
  79.   def initialize(width, commands, column_max = 1, row_max = 0, spacing = 32)
  80.     @enabled_list = []
  81.     Mro_initialize(width, commands, column_max, row_max, spacing)
  82.   end
  83.   #--------------------------------------------------------------------------
  84.   # ● 描绘项目  追加定义
  85.   #--------------------------------------------------------------------------
  86.   alias Mro_draw_item draw_item
  87.   def draw_item(index, enabled = true)
  88.     @enabled_list[index] = enabled
  89.     Mro_draw_item(index, @enabled_list[index])
  90.   end
  91.   #--------------------------------------------------------------------------
  92.   # ● 更新
  93.   #--------------------------------------------------------------------------
  94.   def update
  95.     super
  96.     if @last_index != self.index
  97.       @last_index = self.index
  98.       for i in 0...@item_max
  99.         rect = item_rect(i)
  100.         self.contents.clear_rect(rect)
  101.         next if i == @old_index
  102.         draw_item(i, @enabled_list[i])
  103.       end
  104.        rect = item_rect(self.index)
  105.        self.contents.clear_rect(rect)
  106.       color = text_color(FONT_COLOR_ID)
  107.       draw_stroke_text(rect, @commands[@index], @enabled_list[@index], 0, color)
  108.     end
  109.   end
  110. end

  111. #==============================================================================
  112. # ■ Window_Item
  113. #------------------------------------------------------------------------------
  114. #  物品画面、战斗画面、显示浏览物品的窗口。
  115. #==============================================================================

  116. class Window_Item < Window_Selectable
  117.   alias Mro_initialize0 initialize
  118.   def initialize(x, y, width, height)
  119.     @enabled_list = []
  120.     Mro_initialize0(x, y, width, height)
  121.   end
  122.   
  123.   #--------------------------------------------------------------------------
  124.   # ● 刷新
  125.   #--------------------------------------------------------------------------  
  126.   def refresh
  127.     @data = []
  128.     for item in $game_party.items
  129.       next unless include?(item)
  130.       @data.push(item)
  131.       if item.is_a?(RPG::Item) and item.id == $game_party.last_item_id
  132.         self.index = @data.size - 1
  133.       end
  134.     end
  135.     @data.push(nil) if include?(nil)
  136.     @item_max = @data.size
  137.     create_contents
  138.     for i in 0...@item_max
  139.       draw_item(i)
  140.     end
  141.   end
  142.   
  143.   def update
  144.     super
  145.     @item_max = @data.size
  146.     create_contents
  147.     for i in 0...@item_max
  148.       rect = item_rect(i)
  149.       self.contents.clear_rect(rect)
  150.       next if i == @old_index
  151.       draw_item(i)
  152.     end
  153.     rect = item_rect(self.index)
  154.     rect.width -= 60
  155.     rect.x += 24
  156.     self.contents.clear_rect(rect)
  157.     color = text_color(FONT_COLOR_ID)
  158.     if @index >= 0 && @index < @item_max-1
  159.       draw_stroke_text(rect, @data[@index].name, @enabled_list[index], 0, color)
  160.     else
  161.       draw_stroke_text(rect, "无", true, 0, color)
  162.     end
  163.   end
  164.   
  165.   #--------------------------------------------------------------------------
  166.   # ● 描绘项目
  167.   #     index : 项目编号
  168.   #--------------------------------------------------------------------------
  169.   def draw_item(index)
  170.     rect = item_rect(index)
  171.     self.contents.clear_rect(rect)
  172.     item = @data[index]
  173.     if item != nil
  174.       number = $game_party.item_number(item)
  175.       enabled = enable?(item)
  176.       rect.width -= 4
  177.       draw_item_name(item, rect.x, rect.y, enabled)
  178.       self.contents.draw_text(rect, sprintf(":%2d", number), 2)
  179.     else
  180.       rect.x += 24
  181.       self.contents.draw_text(rect,"无")
  182.     end
  183.     @enabled_list[index] = enabled
  184.   end
  185. end

  186. class Window_Equip < Window_Selectable
  187.   alias Mro_initialize4 initialize
  188.   def initialize(x, y, actor)
  189.     Mro_initialize4(x, y, actor)
  190.   end
  191.   
  192.   def update
  193.     super
  194.     @item_max = @data.size
  195.     create_contents
  196.     for i in 0...@item_max
  197.       rect = item_rect(i)
  198.       self.contents.clear_rect(rect)
  199.       next if i == @old_index
  200.       draw_item_name(@data[i],92,WLH*i)
  201.     end
  202.     rect = item_rect(self.index)
  203.     rect.x += 115
  204.     self.contents.clear_rect(rect)
  205.     color = text_color(FONT_COLOR_ID)
  206.     if @data[@index] != nil
  207.       draw_stroke_text(rect, @data[@index].name, true, 0, color)
  208.     else
  209.       draw_stroke_text(rect, "无", true, 0, color)
  210.     end
  211.     self.contents.font.color = system_color
  212.     if @actor.two_swords_style
  213.       self.contents.draw_text(4, WLH * 0, 92, WLH, Vocab::weapon1)
  214.       self.contents.draw_text(4, WLH * 1, 92, WLH, Vocab::weapon2)
  215.     else
  216.       self.contents.draw_text(4, WLH * 0, 92, WLH, Vocab::weapon)
  217.       self.contents.draw_text(4, WLH * 1, 92, WLH, Vocab::armor1)
  218.     end
  219.     self.contents.draw_text(4, WLH * 2, 92, WLH, Vocab::armor2)
  220.     self.contents.draw_text(4, WLH * 3, 92, WLH, Vocab::armor3)
  221.     self.contents.draw_text(4, WLH * 4, 92, WLH, Vocab::armor4)
  222.     self.contents.font.color = Color.new(255,255,255)
  223.     if @data[0] == nil
  224.       self.contents.draw_text(116, 0,92,WLH,"无")
  225.     end
  226.     if @data[1] == nil
  227.       self.contents.draw_text(116, WLH,92,WLH,"无")
  228.     end
  229.     if @data[2] == nil
  230.       self.contents.draw_text(116, WLH*2,92,WLH,"无")
  231.     end
  232.     if @data[3] == nil
  233.       self.contents.draw_text(116, WLH*3,92,WLH,"无")
  234.     end
  235.     if @data[4] == nil
  236.       self.contents.draw_text(116, WLH*4,92,WLH,"无")
  237.     end
  238.   end
  239. end


  240. class Window_Skill < Window_Selectable  
  241.   alias Mro_initialize3 initialize
  242.   def initialize(x, y, width, height, actor)
  243.     @enabled_list = []
  244.     Mro_initialize3(x, y, width, height,actor)
  245.   end
  246.   
  247.   #--------------------------------------------------------------------------
  248.   # ● 描绘项目
  249.   #     index : 项目编号
  250.   #--------------------------------------------------------------------------
  251.   def draw_item(index)
  252.     rect = item_rect(index)
  253.     self.contents.clear_rect(rect)
  254.     skill = @data[index]
  255.     if skill != nil
  256.       rect.width -= 4
  257.       enabled = @actor.skill_can_use?(skill)
  258.       draw_item_name(skill, rect.x, rect.y, enabled)
  259.       self.contents.draw_text(rect, @actor.calc_mp_cost(skill), 2)
  260.     end
  261.     @enabled_list[index] = enabled
  262.   end
  263.   
  264.   def update
  265.     super
  266.     @item_max = @data.size
  267.     create_contents
  268.     for i in 0...@item_max
  269.       rect = item_rect(i)
  270.       self.contents.clear_rect(rect)
  271.       next if i == @old_index
  272.       draw_item(i)
  273.     end
  274.     rect = item_rect(self.index)
  275.     rect.width -= 60
  276.     rect.x += 24
  277.     self.contents.clear_rect(rect)
  278.     color = text_color(FONT_COLOR_ID)
  279.     if @index>=0 && @index<@item_max-1
  280.       draw_stroke_text(rect, @data[@index].name, @enabled_list[index], 0, color)
  281.     else
  282.       draw_stroke_text(rect, "无", false, 0, color)
  283.     end
  284.   end
  285. end

  286. class Window_ShopBuy < Window_Selectable
  287.   alias Mro_initialize5 initialize
  288.   def initialize(x, y)
  289.     @enabled_list = []
  290.     Mro_initialize5(x,y)
  291.   end
  292.   
  293.   def draw_item(index)
  294.     item = @data[index]
  295.     number = $game_party.item_number(item)
  296.     enabled = (item.price <= $game_party.gold and number < 99)
  297.     rect = item_rect(index)
  298.     self.contents.clear_rect(rect)
  299.     draw_item_name(item, rect.x, rect.y, enabled)
  300.     rect.width -= 4
  301.     self.contents.draw_text(rect, item.price, 2)
  302.     @enabled_list[index] = enabled
  303.   end
  304.   
  305.   def update
  306.     super
  307.     @item_max = @data.size
  308.     create_contents
  309.     for i in 0...@item_max
  310.       rect = item_rect(i)
  311.       self.contents.clear_rect(rect)
  312.       next if i == @old_index
  313.       draw_item(i)
  314.     end
  315.     rect = item_rect(self.index)
  316.     rect.width -= 60
  317.     rect.x += 24
  318.     self.contents.clear_rect(rect)
  319.     color = text_color(FONT_COLOR_ID)
  320.     draw_stroke_text(rect, @data[@index].name, @enabled_list[index], 0, color)
  321.   end
  322. end

  323. class Window_Message < Window_Selectable
  324.   def update
  325.     super
  326.     update_gold_window
  327.     update_number_input_window
  328.     update_back_sprite
  329.     update_show_fast
  330.     unless @opening or @closing             # 窗口非正在打开或正在关闭中
  331.       if @wait_count > 0                    # 文间等待
  332.         @wait_count -= 1
  333.       elsif self.pause                      # 等待输入的情况下
  334.         input_pause
  335.       elsif self.active                     # 输入选择的情况下
  336.         input_choice
  337.       elsif @number_input_window.visible    # 输入数值的情况下
  338.         input_number
  339.       elsif @text != nil                    # 有等待显示的文字的情况下
  340.         update_message                        # 更新文章
  341.       elsif continue?                       # 继续的情况下
  342.         start_message                         # 开始文章
  343.         open                                  # 打开窗口
  344.         $game_message.visible = true
  345.       else                                  # 否则
  346.         close                                 # 关闭窗口
  347.         $game_message.visible = @closing
  348.       end
  349.     end
  350.     if $game_message.choice_proc != nil
  351.       @item_max = $game_message.texts.size
  352.       create_contents
  353.       for i in 0...@item_max
  354.         rect = item_rect(i)
  355.         self.contents.clear_rect(rect)
  356.         next if i == @old_index
  357.         self.contents.draw_text(rect.x+24,rect.y,contents.width,WLH,$game_message.texts[i])
  358.       end
  359.       rect = item_rect(self.index)
  360.       rect.x += 24
  361.       self.contents.clear_rect(rect)
  362.       color = text_color(FONT_COLOR_ID)
  363.       draw_stroke_text(rect, $game_message.texts[@index] , true, 0, color)
  364.     end
  365.   end
  366. end
复制代码

作者: 冰舞蝶恋    时间: 2010-11-3 20:47
本帖最后由 冰舞蝶恋 于 2010-11-3 21:16 编辑

回复 迷路子 的帖子

谢谢,不过
而且,当光标选到最后一个技能/物品的时候:

而且显示文章会不断的重复,无法进入下一个内容。
作者: 冰舞蝶恋    时间: 2010-11-4 12:35
哇哇哇哇,自顶一次
作者: 迷路子    时间: 2010-11-4 13:11
回复 冰舞蝶恋 的帖子

对话选项的光标问题我修正好了
不过不太懂文章会一直重覆的意思
  1. #==============================================================================
  2. # ■ Window_Selectable
  3. #------------------------------------------------------------------------------
  4. #  拥有光标的移动以及滚动功能的窗口类。
  5. #==============================================================================

  6. class Window_Selectable < Window_Base
  7.   #--------------------------------------------------------------------------
  8.   # ● 更新光标
  9.   #--------------------------------------------------------------------------
  10.   def update_cursor
  11.     self.cursor_rect.empty  
  12.     if @index < 0                   # 当光标位置小于0
  13.       self.cursor_rect.empty        # 隐藏光标
  14.     else                            # 当光标位置为0或大于
  15.       row = @index / @column_max    # 获取当前行
  16.       if row < top_row              # 若先于首行
  17.         self.top_row = row          # 向上滚动
  18.       end
  19.       if row > bottom_row           # 若後于末行
  20.         self.bottom_row = row       # 向下滚动
  21.       end
  22.       rect = item_rect(@index)      # 获取所选项目矩形
  23.       rect.y -= self.oy             # 设矩形为滚动位置
  24.       self.cursor_rect = rect       # 更新光标矩形
  25.       self.cursor_rect.empty
  26.     end
  27.   end
  28.   
  29. end


  30. class Window_Base < Window
  31.   
  32.   #--------------------------------------------------------------------------
  33.   # ○ 描边字
  34.   #--------------------------------------------------------------------------
  35.   def draw_stroke_text(rect, str, enabled = true, align = 0, color = nil)
  36.     x = rect.x
  37.     y = rect.y
  38.     width = rect.width
  39.     height = rect.height

  40.     # 准备字体
  41.     font_backup = self.contents.font.clone
  42.     if color
  43.       self.contents.font.color.red   = color.red
  44.       self.contents.font.color.green = color.green
  45.       self.contents.font.color.blue  = color.blue
  46.     end

  47.     # 关闭默认阴影
  48.     self.contents.font.shadow = false

  49.     # 描绘边缘
  50.     self.contents.font.color.alpha = enabled ? 255 : 128
  51.     self.contents.draw_text(x-1, y-1, width, height, str, align)
  52.     self.contents.draw_text(x-1, y+1, width, height, str, align)
  53.     self.contents.draw_text(x+1, y-1, width, height, str, align)
  54.     self.contents.draw_text(x+1, y+1, width, height, str, align)
  55.     self.contents.draw_text(x, y-1, width, height, str, align)
  56.     self.contents.draw_text(x, y+1, width, height, str, align)
  57.     self.contents.draw_text(x-1, y, width, height, str, align)
  58.     self.contents.draw_text(x+1, y, width, height, str, align)

  59.     # 描绘主文字
  60.     self.contents.font.color = font_backup.color
  61.     self.contents.font.color.alpha = enabled ? 255 : 128
  62.     self.contents.draw_text(x, y, width, height, str, align)
  63.    
  64.     # 还原默认字体
  65.     self.contents.font = font_backup

  66.   end
  67. end

  68. #==============================================================================
  69. # ■ Window_Command   捣鼓 by 水镜风生 (描边字部分出自沉影不器)
  70. #------------------------------------------------------------------------------
  71. #  一般的命令选择行窗口。
  72. #==============================================================================
  73. FONT_COLOR_ID = 1   # 描边颜色ID,请参考[显示文章]中\C[n]的颜色

  74. class Window_Command < Window_Selectable
  75.   #--------------------------------------------------------------------------
  76.   # ● 初始化对象 追加定义
  77.   #--------------------------------------------------------------------------
  78.   alias Mro_initialize initialize  
  79.   def initialize(width, commands, column_max = 1, row_max = 0, spacing = 32)
  80.     @enabled_list = []
  81.     Mro_initialize(width, commands, column_max, row_max, spacing)
  82.   end
  83.   #--------------------------------------------------------------------------
  84.   # ● 描绘项目  追加定义
  85.   #--------------------------------------------------------------------------
  86.   alias Mro_draw_item draw_item
  87.   def draw_item(index, enabled = true)
  88.     @enabled_list[index] = enabled
  89.     Mro_draw_item(index, @enabled_list[index])
  90.   end
  91.   #--------------------------------------------------------------------------
  92.   # ● 更新
  93.   #--------------------------------------------------------------------------
  94.   def update
  95.     super
  96.     if @last_index != self.index
  97.       @last_index = self.index
  98.       for i in 0...@item_max
  99.         rect = item_rect(i)
  100.         self.contents.clear_rect(rect)
  101.         next if i == @old_index
  102.         draw_item(i, @enabled_list[i])
  103.       end
  104.        rect = item_rect(self.index)
  105.        self.contents.clear_rect(rect)
  106.       color = text_color(FONT_COLOR_ID)
  107.       draw_stroke_text(rect, @commands[@index], @enabled_list[@index], 0, color)
  108.     end
  109.   end
  110. end

  111. #==============================================================================
  112. # ■ Window_Item
  113. #------------------------------------------------------------------------------
  114. #  物品画面、战斗画面、显示浏览物品的窗口。
  115. #==============================================================================

  116. class Window_Item < Window_Selectable
  117.   alias Mro_initialize0 initialize
  118.   def initialize(x, y, width, height)
  119.     @enabled_list = []
  120.     Mro_initialize0(x, y, width, height)
  121.   end
  122.   
  123.   #--------------------------------------------------------------------------
  124.   # ● 刷新
  125.   #--------------------------------------------------------------------------  
  126.   def refresh
  127.     @data = []
  128.     for item in $game_party.items
  129.       next unless include?(item)
  130.       @data.push(item)
  131.       if item.is_a?(RPG::Item) and item.id == $game_party.last_item_id
  132.         self.index = @data.size - 1
  133.       end
  134.     end
  135.     @data.push(nil) if include?(nil)
  136.     @item_max = @data.size
  137.     create_contents
  138.     for i in 0...@item_max
  139.       draw_item(i)
  140.     end
  141.   end
  142.   
  143.   def update
  144.     super
  145.     @item_max = @data.size
  146.     create_contents
  147.     for i in 0...@item_max
  148.       rect = item_rect(i)
  149.       self.contents.clear_rect(rect)
  150.       next if i == @old_index
  151.       draw_item(i)
  152.     end
  153.     rect = item_rect(self.index)
  154.     rect.width -= 60
  155.     rect.x += 24
  156.     self.contents.clear_rect(rect)
  157.     color = text_color(FONT_COLOR_ID)
  158.     if @data[@index] != nil
  159.       draw_stroke_text(rect, @data[@index].name, @enabled_list[index], 0, color)
  160.     else
  161.       draw_stroke_text(rect, "无", true, 0, color)
  162.     end
  163.   end
  164.   
  165.   #--------------------------------------------------------------------------
  166.   # ● 描绘项目
  167.   #     index : 项目编号
  168.   #--------------------------------------------------------------------------
  169.   def draw_item(index)
  170.     rect = item_rect(index)
  171.     self.contents.clear_rect(rect)
  172.     item = @data[index]
  173.     if item != nil
  174.       number = $game_party.item_number(item)
  175.       enabled = enable?(item)
  176.       rect.width -= 4
  177.       draw_item_name(item, rect.x, rect.y, enabled)
  178.       self.contents.draw_text(rect, sprintf(":%2d", number), 2)
  179.     else
  180.       rect.x += 24
  181.       self.contents.draw_text(rect,"无")
  182.     end
  183.     @enabled_list[index] = enabled
  184.   end
  185. end

  186. class Window_Equip < Window_Selectable
  187.   alias Mro_initialize4 initialize
  188.   def initialize(x, y, actor)
  189.     Mro_initialize4(x, y, actor)
  190.   end
  191.   
  192.   def update
  193.     super
  194.     @item_max = @data.size
  195.     create_contents
  196.     for i in 0...@item_max
  197.       rect = item_rect(i)
  198.       self.contents.clear_rect(rect)
  199.       next if i == @old_index
  200.       draw_item_name(@data[i],92,WLH*i)
  201.     end
  202.     rect = item_rect(self.index)
  203.     rect.x += 115
  204.     self.contents.clear_rect(rect)
  205.     color = text_color(FONT_COLOR_ID)
  206.     if @data[@index] != nil
  207.       draw_stroke_text(rect, @data[@index].name, true, 0, color)
  208.     else
  209.       draw_stroke_text(rect, "无", true, 0, color)
  210.     end
  211.     self.contents.font.color = system_color
  212.     if @actor.two_swords_style
  213.       self.contents.draw_text(4, WLH * 0, 92, WLH, Vocab::weapon1)
  214.       self.contents.draw_text(4, WLH * 1, 92, WLH, Vocab::weapon2)
  215.     else
  216.       self.contents.draw_text(4, WLH * 0, 92, WLH, Vocab::weapon)
  217.       self.contents.draw_text(4, WLH * 1, 92, WLH, Vocab::armor1)
  218.     end
  219.     self.contents.draw_text(4, WLH * 2, 92, WLH, Vocab::armor2)
  220.     self.contents.draw_text(4, WLH * 3, 92, WLH, Vocab::armor3)
  221.     self.contents.draw_text(4, WLH * 4, 92, WLH, Vocab::armor4)
  222.     self.contents.font.color = Color.new(255,255,255)
  223.     if @data[0] == nil
  224.       self.contents.draw_text(116, 0,92,WLH,"无")
  225.     end
  226.     if @data[1] == nil
  227.       self.contents.draw_text(116, WLH,92,WLH,"无")
  228.     end
  229.     if @data[2] == nil
  230.       self.contents.draw_text(116, WLH*2,92,WLH,"无")
  231.     end
  232.     if @data[3] == nil
  233.       self.contents.draw_text(116, WLH*3,92,WLH,"无")
  234.     end
  235.     if @data[4] == nil
  236.       self.contents.draw_text(116, WLH*4,92,WLH,"无")
  237.     end
  238.   end
  239. end


  240. class Window_Skill < Window_Selectable  
  241.   alias Mro_initialize3 initialize
  242.   def initialize(x, y, width, height, actor)
  243.     @enabled_list = []
  244.     Mro_initialize3(x, y, width, height,actor)
  245.   end
  246.   
  247.   #--------------------------------------------------------------------------
  248.   # ● 描绘项目
  249.   #     index : 项目编号
  250.   #--------------------------------------------------------------------------
  251.   def draw_item(index)
  252.     rect = item_rect(index)
  253.     self.contents.clear_rect(rect)
  254.     skill = @data[index]
  255.     if skill != nil
  256.       rect.width -= 4
  257.       enabled = @actor.skill_can_use?(skill)
  258.       draw_item_name(skill, rect.x, rect.y, enabled)
  259.       self.contents.draw_text(rect, @actor.calc_mp_cost(skill), 2)
  260.     end
  261.     @enabled_list[index] = enabled
  262.   end
  263.   
  264.   def update
  265.     super
  266.     @item_max = @data.size
  267.     create_contents
  268.     for i in 0...@item_max
  269.       rect = item_rect(i)
  270.       self.contents.clear_rect(rect)
  271.       next if i == @old_index
  272.       draw_item(i)
  273.     end
  274.     rect = item_rect(self.index)
  275.     rect.width -= 60
  276.     rect.x += 24
  277.     self.contents.clear_rect(rect)
  278.     color = text_color(FONT_COLOR_ID)
  279.     if @data[@index] != nil
  280.       draw_stroke_text(rect, @data[@index].name, @enabled_list[index], 0, color)
  281.     else
  282.       draw_stroke_text(rect, "无", false, 0, color)
  283.     end
  284.   end
  285. end

  286. class Window_ShopBuy < Window_Selectable
  287.   alias Mro_initialize5 initialize
  288.   def initialize(x, y)
  289.     @enabled_list = []
  290.     Mro_initialize5(x,y)
  291.   end
  292.   
  293.   def draw_item(index)
  294.     item = @data[index]
  295.     number = $game_party.item_number(item)
  296.     enabled = (item.price <= $game_party.gold and number < 99)
  297.     rect = item_rect(index)
  298.     self.contents.clear_rect(rect)
  299.     draw_item_name(item, rect.x, rect.y, enabled)
  300.     rect.width -= 4
  301.     self.contents.draw_text(rect, item.price, 2)
  302.     @enabled_list[index] = enabled
  303.   end
  304.   
  305.   def update
  306.     super
  307.     @item_max = @data.size
  308.     create_contents
  309.     for i in 0...@item_max
  310.       rect = item_rect(i)
  311.       self.contents.clear_rect(rect)
  312.       next if i == @old_index
  313.       draw_item(i)
  314.     end
  315.     rect = item_rect(self.index)
  316.     rect.width -= 60
  317.     rect.x += 24
  318.     self.contents.clear_rect(rect)
  319.     color = text_color(FONT_COLOR_ID)
  320.     draw_stroke_text(rect, @data[@index].name, @enabled_list[index], 0, color)
  321.   end
  322. end

  323. class Window_Message < Window_Selectable
  324.   
  325.   def update_cursor
  326.     if @index >= 0
  327.       x = $game_message.face_name.empty? ? 0 : 112
  328.       y = ($game_message.choice_start + @index) * WLH
  329.       self.cursor_rect.set(x, y, contents.width - x, WLH)
  330.       self.cursor_rect.empty
  331.     else
  332.       self.cursor_rect.empty
  333.     end
  334.   end
  335.   
  336.   def update
  337.     super
  338.     update_gold_window
  339.     update_number_input_window
  340.     update_back_sprite
  341.     update_show_fast
  342.     unless @opening or @closing             # 窗口非正在打开或正在关闭中
  343.       if @wait_count > 0                    # 文间等待
  344.         @wait_count -= 1
  345.       elsif self.pause                      # 等待输入的情况下
  346.         input_pause
  347.       elsif self.active                     # 输入选择的情况下
  348.         input_choice
  349.       elsif @number_input_window.visible    # 输入数值的情况下
  350.         input_number
  351.       elsif @text != nil                    # 有等待显示的文字的情况下
  352.         update_message                        # 更新文章
  353.       elsif continue?                       # 继续的情况下
  354.         start_message                         # 开始文章
  355.         open                                  # 打开窗口
  356.         $game_message.visible = true
  357.       else                                  # 否则
  358.         close                                 # 关闭窗口
  359.         $game_message.visible = @closing
  360.       end
  361.     end
  362.     if $game_message.choice_proc != nil
  363.       @item_max1 = $game_message.texts.size
  364.       @item_max2 = $game_message.choice_max
  365.       create_contents
  366.       for i in 0...@item_max1
  367.         rect = item_rect(i)
  368.         self.contents.clear_rect(rect)
  369.         next if i == @old_index
  370.         self.contents.draw_text(rect.x+24,rect.y,contents.width,WLH,$game_message.texts[i])
  371.       end
  372.       if @item_max1 != @item_max2
  373.         @item_max = @item_max1-@item_max2
  374.       else
  375.         @item_max = @item_max2
  376.       end
  377.       if @item_max1 != @item_max2
  378.         @index_temp = self.index + @item_max
  379.         if self.index >= 0
  380.           rect = item_rect(@index_temp)
  381.           rect.x += 24
  382.           self.contents.clear_rect(rect)
  383.           color = text_color(FONT_COLOR_ID)
  384.           draw_stroke_text(rect, $game_message.texts[@index_temp] , true, 0, color)
  385.         end
  386.       elsif @item_max1 == @item_max2
  387.         rect = item_rect(self.index)
  388.         rect.x += 24
  389.         self.contents.clear_rect(rect)
  390.         color = text_color(FONT_COLOR_ID)
  391.         draw_stroke_text(rect, $game_message.texts[@index] , true, 0, color)
  392.       end
  393.     end
  394.   end
  395. end
复制代码

作者: 冰舞蝶恋    时间: 2010-11-4 13:17
回复 迷路子 的帖子

谢谢,不过这样貌似文章选框反而移动不了了?另外,我说的重复对话内容就是输入的话会不停的重复,对话内容显示完了以后,就自动重新开始显示,按也按不掉。。用了沉影前辈的对话框加强脚本- -
作者: 沉影不器    时间: 2010-11-4 20:34
提示: 作者被禁止或删除 内容自动屏蔽
作者: 冰舞蝶恋    时间: 2010-11-4 20:46
回复 沉影不器 的帖子

谢谢前辈啊,不过貌似暴动冲锋前辈也有过一个全区字描边的?




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