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

Project1

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

[已经解决] 自制脚本错误求助...

 关闭 [复制链接]

Lv1.梦旅人

Mr.Gandum

梦石
0
星屑
226
在线时间
2070 小时
注册时间
2007-1-31
帖子
3039

贵宾

跳转到指定楼层
1
发表于 2011-8-11 10:01:51 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
好吧,又是我。
  1. #=begin
  2. module StockItem
  3.   STOCK =[]     
  4.   # 在这里制作初始箱内daoju
  5.   # 格式:
  6.   # STOCK[n] = [kind, id, number]
  7.   # n 是在箱子里的第几个
  8.   # kind 是种类
  9.   # id 是物品的ID
  10.   # number 是数量
  11.   STOCK[1] = [2, 1, 5]      # 在箱子里的第一格放5个恢复剂
  12.   
  13.   
  14.   # 箱子的大小。实际大小会在这上头+1
  15.   STOCKMAX = 40
  16.   
  17.   # 决定箱子大小的变量。注意,只能增加不能减少
  18.   STOCK_VARIABLE = 27
  19.   
  20.   # 空格显示的字符
  21.   NON_STOCK_WORD = " - EMPTY - "
  22.   
  23.   module_function
  24.    
  25.   def clear_stock
  26.     for i in @stock
  27.       if i[2] == 0
  28.         i[0] = 0
  29.       end
  30.     end
  31.   end
  32.   
  33.   def initialize_stock
  34.     for i in 0...@stock_max
  35.       if @stock[i] == nil
  36.       @stock.push([0, 0, 0])
  37.       end
  38.     end
  39.   end
  40.   
  41.   def make_stock
  42.     @stock = []
  43.     @stock = STOCK
  44.     @stock_max = STOCKMAX
  45.     initialize_stock
  46.   end
  47.   
  48.   make_stock
  49. end


  50. class Window_StockItem < Window_Selectable
  51.   def initialize
  52.     x = 0
  53.     y = 0
  54.     width = 544 / 2
  55.     height = 416
  56.     super(x, y, width, height)
  57.     @stock_max = StockItem::STOCKMAX
  58.     initialize_stock
  59.     refresh
  60.   end
  61.   
  62.   def refresh
  63.     @item_data =[]
  64.     for i in 1...40
  65.       if @stock[i][1] != 0
  66.         case @stock[i][0]
  67.         when 0 # 武器
  68.           @item_data.push($data_weapons[@stock[i][1]])
  69.         when 1 # 防具
  70.           @item_data.push($data_armors[@stock[i][1]])
  71.         when 2 # 道具
  72.           @item_data.push($data_items[@stock[i][1]])
  73.         end
  74.       elsif @stock[i][1] = 0
  75.           @item_data.push(nil)
  76.       end
  77.     end
  78.     @item_max = @item_data.size
  79.     create_contents
  80.     for i in 0...@item_max
  81.       draw_item(i)
  82.     end
  83.   end
  84.   
  85.   def draw_item(index)
  86.     rect = item_rect(index)
  87.     self.contents.clear_rect(rect)
  88.     item = @item_data[index]
  89.     if item != nil
  90.       for i in 0...@item_max
  91.       if item.is_a?(RPG::Weapon)
  92.         if item.id == @stock[i][1] and @stock[i][0] == 0
  93.           @number = @stock[i][2]
  94.         end
  95.       elsif item.is_a?(RPG::Armor)
  96.         if item.id == @stock[i][1] and @stock[i][0] == 1
  97.           @number = @stock[i][2]
  98.         end
  99.       else
  100.         if item.id == @stock[i][1] and @stock[i][0] == 2
  101.           @number = @stock[i][2]
  102.         end
  103.       end
  104.       end
  105.       enabled = true
  106.       rect.width -= 4
  107.       draw_item_name(item, rect.x, rect.y, enabled)
  108.       self.contents.draw_text(rect, sprintf(":%2d", @number), 2)
  109.       elsif item = nil
  110.       number = ""
  111.       enabled = true
  112.       draw_empty_name(rect.x, rect.y)
  113.     end
  114.   end
  115.    
  116.   def draw_empty_name(x, y)
  117.       self.contents.font.color = normal_color
  118.       self.contents.draw_text(x + 24, y, 172, WLH, NON_STOCK_WORD)
  119.   end
  120.   
  121.   def initialize_stock
  122.     @stock =[]
  123.     @stock = StockItem::STOCK
  124.     for i in 0...@stock_max
  125.       if @stock[i] == nil
  126.       @stock.push([0, 0, 0])
  127.       end
  128.     end
  129.   end  
  130. end


  131. class Scene_StockItem < Scene_Base
  132.   
  133.   def initialize(menu_index = 0)
  134.     @menu_index = menu_index
  135.   end
  136.   
  137.   def start
  138.     super
  139.     @stock_item = Window_StockItem.new
  140.   end
  141.   
  142.   def terminate
  143.     @stock_item.dispose
  144.   end
  145.   
  146.   def update
  147.     @stock_item.update
  148.     if Input.trigger?(Input::B) # 取消键按下时
  149.       Sound.play_cancel    # 播放取消音效
  150.       $scene = Scene_Map.new    # 回到菜单画面
  151.     end
  152.   end
  153.   
  154. end

  155. #=end
复制代码
这个。
老是出现Undefined Method "[]" 在102行。

请多指教...

Lv5.捕梦者 (管理员)

老黄鸡

梦石
0
星屑
42875
在线时间
7625 小时
注册时间
2009-7-6
帖子
13506

开拓者贵宾

2
发表于 2011-8-11 10:06:34 | 只看该作者
在这句话之前插入一句
  1. p @stock
  2. p @stock[i] if @stock
复制代码
请反馈结果,如果是nil就不用解释了吧?
RGDirect - DirectX驱动的RGSS,点我了解.
RM全系列成套系统定制请联系QQ1213237796
不接受对其他插件维护的委托
回复

使用道具 举报

Lv1.梦旅人

Mr.Gandum

梦石
0
星屑
226
在线时间
2070 小时
注册时间
2007-1-31
帖子
3039

贵宾

3
 楼主| 发表于 2011-8-11 10:12:46 | 只看该作者
fux2 发表于 2011-8-11 10:06
在这句话之前插入一句请反馈结果,如果是nil就不用解释了吧?

默拜大神!!!!

点评

><哪有  发表于 2011-8-11 10:13
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2025-1-10 18:06

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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