Project1

标题: 脚本新手的提问, Undefined method ‘[]’ [打印本页]

作者: andyho777    时间: 2014-1-17 18:08
标题: 脚本新手的提问, Undefined method ‘[]’
本帖最后由 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」,
请问即是要重新定义「[]」吗?
这问题应如何解决?

作者: 恐惧剑刃    时间: 2014-1-17 18:17
本帖最后由 恋′挂机 于 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
复制代码

作者: andyho777    时间: 2014-1-17 18:42
我把内容修改成这样后就解决了… =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





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