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

Project1

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

[已经解决] 打开菜单时的错误

 关闭 [复制链接]

Lv3.寻梦者

梦石
0
星屑
1556
在线时间
626 小时
注册时间
2010-8-5
帖子
451
跳转到指定楼层
1
发表于 2011-7-30 14:31:38 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
在地图上按X系统提示脚本错误



下面是脚本
  1. #==============================================================================
  2. # 本脚本来自www.66RPG.com,使用和转载请保留此信息
  3. #==============================================================================


  4. #==============================================================================
  5. # ■ Window_Command
  6. #
  7. #     与Window_Command功能一致,不同点就是可以自己给定行、列的值,使菜单像轩辕剑
  8. # 系列的排列……
  9. #
  10. # 举例:                            行  列               -命令列表-
  11. #      Window_Command.new(160, ["攻击","法术","物品","绝技","防御","逃跑"],2)
  12. #==============================================================================

  13. #==============================================================================
  14. # ■ Window_Command
  15. #------------------------------------------------------------------------------
  16. #  一般的命令选择行窗口。
  17. #==============================================================================

  18. class Window_Command < Window_Selectable
  19. #--------------------------------------------------------------------------
  20. # ● 初始化对像
  21. #     width    : 每格的的宽
  22. #     row      : 行数   自己根据命令数算好行列的值,否则^^b
  23. #     column   : 列数
  24. #     commands : 命令字符串序列
  25. #--------------------------------------------------------------------------
  26. def initialize(width, commands, column=1,height = 32,jiange = 32)
  27.    row = commands.size / column
  28.    # 由命令的个数计算出窗口的宽和高
  29.    super(0, 0, width, row * 32 + 32)
  30.    @item_max = commands.size
  31.    @commands = commands
  32.    @row = row
  33.    @height = height
  34.    @jiange = jiange
  35.    @width_txt = (width-32)/column
  36.    @column_max = column
  37.    self.contents = Bitmap.new(width-32, @row * 32)
  38.    refresh
  39.    @item = []
  40.    self.index = 0
  41.    refresh
  42.    @oldindex = 0
  43. end
  44.   #--------------------------------------------------------------------------
  45.   # ● 刷新
  46.   #--------------------------------------------------------------------------
  47.   def refresh
  48.     self.contents.clear
  49.     for i in 0...@item_max
  50.       if i != self.index
  51.         draw_item_dis(i)
  52.       else
  53.         draw_item_active(i,@item[i])
  54.       end
  55.     end
  56.   end
  57. #--------------------------------------------------------------------------
  58. # ● 描绘项目
  59. #     index : 项目编号
  60. #     color : 文字色
  61. #--------------------------------------------------------------------------
  62. def draw_item(index, color)
  63.    self.contents.font.color = color
  64.    # 计算得出当前index所对应的内容所在的行
  65.    row_index = index / @column_max
  66.    for y in 0...@column_max
  67.      if index % @column_max == y
  68.        rect = Rect.new(y * @width_txt, 32 * row_index , @width_txt, 32)
  69.        self.contents.fill_rect(rect, Color.new(0, 0, 0, 0))
  70.        self.contents.draw_text(rect, @commands[index],1)
  71.        break
  72.      end
  73.    end
  74. end
  75. #--------------------------------------------------------------------------
  76. # ● 项目无效化
  77. #     index : 项目编号
  78. #--------------------------------------------------------------------------
  79. def disable_item(index)
  80.    draw_item(index, disabled_color)
  81. end
  82.   #--------------------------------------------------------------------------
  83.   # ● 描绘项目
  84.   # index : 项目编号
  85.   # color : 文字色
  86.   #--------------------------------------------------------------------------
  87.   def draw_item_dis(index)
  88.     self.contents.font.size -= 6
  89.     self.contents.font.color = disabled_color
  90.     row_index = index / @column_max
  91.      for y in 0...@column_max
  92.        if index % @column_max == y
  93.          rect = Rect.new(y * @width_txt, 32 * row_index , @width_txt, 32)
  94.          self.contents.fill_rect(rect, Color.new(0, 0, 0, 0))
  95.          self.contents.draw_text(rect, @commands[index],1)
  96.          break
  97.        end
  98.      end
  99.     self.contents.font.size += 6
  100.   end
  101.   def draw_item_active(index, type)
  102.     self.contents.font.color = Color.new(255,156,27,255)
  103.     row_index = index / @column_max
  104.    for y in 0...@column_max
  105.      if index % @column_max == y
  106.       self.contents.font.color = Color.new(255,156,27,255)
  107.        rect = Rect.new(y * @width_txt+1, 32 * row_index+1 , @width_txt, 32)
  108.        self.contents.fill_rect(rect, Color.new(0, 0, 0, 0))
  109.        self.contents.draw_text(rect, @commands[index],1)      
  110.        rect = Rect.new(y * @width_txt, 32 * row_index , @width_txt, 32)
  111.         if type==1
  112.           self.contents.font.color = disabled_color
  113.         else
  114.           self.contents.font.color = Color.new(255,241,97,255)
  115.         end        
  116.        self.contents.draw_text(rect, @commands[index],1)
  117.        break
  118.      end
  119.    end
  120.   end
  121.   #--------------------------------------------------------------------------
  122.   # ● 项目无效化
  123.   # index : 项目编号
  124.   #--------------------------------------------------------------------------
  125.   def disable_item(index)
  126.     @item[index] = 1
  127.   end  
  128. #--------------------------------------------------------------------------
  129. # ● 项目有效化
  130. #     index : 项目编号
  131. #--------------------------------------------------------------------------
  132. def able_item(index)
  133.    draw_item(index, normal_color)
  134. end
  135.   #--------------------------------------------------------------------------
  136.   # ● 更新光标举行
  137.   #--------------------------------------------------------------------------
  138.   def update_cursor_rect
  139.     # 光标位置不满 0 的情况下
  140.     if @index < 0
  141.       self.cursor_rect.empty
  142.       return
  143.     end
  144.     # 获取当前的行
  145.     row = @index / @column_max
  146.     # 当前行被显示开头行前面的情况下
  147.     if row < self.top_row
  148.       # 从当前行向开头行滚动
  149.       self.top_row = row
  150.     end
  151.     # 当前行被显示末尾行之后的情况下
  152.     if row > self.top_row + (self.page_row_max - 1)
  153.       # 从当前行向末尾滚动
  154.       self.top_row = row - (self.page_row_max - 1)
  155.     end
  156.     # 计算光标的宽
  157.     cursor_width = @width_txt
  158.     # 计算光标坐标
  159.     x = @index % @column_max * cursor_width
  160.     y = @index / @column_max * @jiange - self.oy
  161.     # 更新国标矩形
  162.     self.cursor_rect.set(x, y, @width_txt, @height)
  163.   end
  164.     #--------------------------------------------------------------------------
  165.   # ● 刷新方法更新
  166.   #--------------------------------------------------------------------------
  167.   def update
  168.     super
  169.     #——这里使用的刷新方法比直接refresh节约很多内存
  170.     if self.index != @oldindex
  171.       @oldindex = self.index
  172.       refresh
  173.     end
  174.   end
  175.   
  176.   def update_help
  177.     case @index
  178.     when 0
  179.     @help_window.set_text("【提升8点气血上限】")
  180.     when 1
  181.     @help_window.set_text("【提升1点灵力】【提升5点魔法上限】")
  182.     when 2
  183.     @help_window.set_text("【提高1点物理伤害力】")
  184.     when 3
  185.     @help_window.set_text("【提升1.5点防御】【提升必杀概率】【提升物理攻击命中】。")
  186.     when 4
  187.     @help_window.set_text("【提升1点速度】【提高躲避】【减少受到必杀几率】")
  188.     end
  189.   end
  190.   
  191. end

  192. #==============================================================================
  193. # 本脚本来自www.66RPG.com,使用和转载请保留此信息
  194. #==============================================================================


复制代码

未命名.jpg (9.33 KB, 下载次数: 0)

未命名.jpg

Lv1.梦旅人

虱子

梦石
0
星屑
121
在线时间
1782 小时
注册时间
2010-6-19
帖子
3597
2
发表于 2011-7-30 16:07:00 | 只看该作者
index某项为nil,请检查菜单

http://rpg.blue/thread-175056-1-2.html
PVZ型塔防物一个
http://rpg.blue/thread-155199-1-2.html
RMXP技术讨论区手动认可帖,得到答案请认可
回复

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1556
在线时间
626 小时
注册时间
2010-8-5
帖子
451
3
 楼主| 发表于 2011-7-31 11:17:21 | 只看该作者
Wind2010 发表于 2011-7-30 16:07
index某项为nil,请检查菜单

能帮我修改下脚本,在弄上来么,谢谢
回复

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
84 小时
注册时间
2010-10-10
帖子
62
4
发表于 2011-8-3 10:56:48 | 只看该作者
没有遇到BUG,估计和其他脚本冲突有关~
  1. class Window_Command
  2. def draw_item(index, color)
  3.    self.contents.font.color = color
  4.    # 计算得出当前index所对应的内容所在的行
  5.    row_index = index / @column_max
  6.    for y in 0...@column_max
  7.      if index % @column_max == y
  8.        rect = Rect.new(y * @width_txt, 32 * row_index , @width_txt, 32)
  9.        self.contents.fill_rect(rect, Color.new(0, 0, 0, 0))
  10.        self.contents.draw_text(rect, @commands[index],1) if @commands[index] != nil
  11.        break
  12.      end
  13.    end
  14. end
  15. end
复制代码
加上这个可能可以解决~
因为另一个我,所以,要抛弃过去了。
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-26 17:34

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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