查看: 1958|回复: 2

[已经解决] 脚本新手的提问, Undefined method ‘[]’

[复制链接]
梦石
0
星屑
109
在线时间
42 小时
注册时间
2007-7-4
回帖
84
发表于 2014-1-17 18:08:16 | 显示全部楼层 |阅读模式

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

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

×
本帖最后由 andyho777 于 2014-1-17 18:40 编辑

话说小弟尝试制作当 $game_variables[51] == 2时,角色的攻击力会上升30。
于是我就到Game_Actor 修改 def base_atk:

  #--------------------------------------------------------------------------
  # ● 获取基本攻击力
  #--------------------------------------------------------------------------
  def base_atk
    atk1 = 0
    atk1 = 30 if $game_variables[51] == 2
    weapon = $data_weapons[@weapon_id]
    return weapon != nil ? weapon.atk : 0
    return weapon + atk1
  end

而测时则时发生了错误「Undefined method ‘[]’ for nil:NilClass」,
请问即是要重新定义「[]」吗?
这问题应如何解决?
-==Hovey The Thief==- 制作进度 地图:■■■■■■□□□□ 50% 剧情:■■■■■■■■□□ 80% 任务:■■■□□□□□□□ 30% 素材:■■■■□□□□□□ 40% 系统:■■■■□□□□□□ 40% 不懂得用PS上色……

薄凉看客

梦石
0
星屑
50
在线时间
1269 小时
注册时间
2010-6-20
回帖
1223
发表于 2014-1-17 18:17:12 | 显示全部楼层
本帖最后由 恋′挂机 于 2014-1-17 18:38 编辑

把 return weapon + atk1
改为 return weapon.atk + atk1

你 p 一下 $game_variables 看看是不是nil (不会是nil吧。。。)
你 p 一下 $data_weapons 看看是不是nil (不会是nil吧。。。)

想问,你是怎样用的才报错(比如你点了战斗测试然后报错)
  1. #--------------------------------------------------------------------------
  2.   # ● 获取基本攻击力
  3.   #--------------------------------------------------------------------------
  4.   def base_atk
  5.     weapon = $data_weapons[@weapon_id]
  6.     return weapon != nil ? weapon.atk : 0 if $game_variables[51] != 2
  7.     return weapon != nil ? weapon.atk + 30 : 0
  8.   end
复制代码

点评

是在Scene_Equip更換裝備昤報錯的  发表于 2014-1-17 18:34
刚试了但问题仍然存在@@, 仍然是Undefined method ‘[]’, 看来问题是来自$game_variables[51]?  发表于 2014-1-17 18:20
回复

使用道具 举报

梦石
0
星屑
109
在线时间
42 小时
注册时间
2007-7-4
回帖
84
 楼主| 发表于 2014-1-17 18:42:39 | 显示全部楼层
我把内容修改成这样后就解决了… =0=
虽然不知甚么原因, 但还是谢谢大大的帮忙

  #--------------------------------------------------------------------------
  # ● 获取基本攻击力
  #--------------------------------------------------------------------------
  def base_atk
    #=====================================^口^
    weapon = $data_weapons[@weapon_id]
    atk0 = weapon != nil ? weapon.atk : 0#
    atk1 = 0
    atk1 = 30 if $game_variables[53] == 2
    #return weapon != nil ? weapon.atk : 0
    return atk0 + atk1#
  end

点评

他 return weapon + atk1 和 他 return weapon.atk + atk1 是不一样的,错误原因是这里  发表于 2014-1-17 18:43
-==Hovey The Thief==- 制作进度 地图:■■■■■■□□□□ 50% 剧情:■■■■■■■■□□ 80% 任务:■■■□□□□□□□ 30% 素材:■■■■□□□□□□ 40% 系统:■■■■□□□□□□ 40% 不懂得用PS上色……
回复

使用道具 举报

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

本版积分规则

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部