本帖最后由 guoxiaomi 于 2017-5-9 00:03 编辑
我看了一下图书馆里的空手攻防脚本,请先看在39-41行的定义
ARM_ELEMENT[1] = [1] ARM_ELE_PLUS[1] = [] ARM_ELE_MINUS[1] = []
ARM_ELEMENT[1] = [1]
ARM_ELE_PLUS[1] = []
ARM_ELE_MINUS[1] = []
这里定义了空手时候的属性变化情况,因为武器是携带属性的,这个空手攻防脚本会根据不同的角色,决定其空手时携带何种属性和自动状态。
这里的意思是,1号角色空手时,攻击附带1号属性,无自动状态附加。
如果有更多的角色,就要定义相应的ARM_ELEMENT[n]、ARM_ELE_PLUS[n] 和ARM_ELE_MINUS[n] ,如果不想修改属性和自动状态,要设置这些为空矩阵([]),否则就会报错。
报错的原因在这里,请看空手攻防的84-90行:
alias plus_state_set_arm plus_state_set def plus_state_set if @weapon_id == 0 and ARM_ELE_PLUS[@actor_id] != [] return ARM_ELE_PLUS[@actor_id] end return plus_state_set_arm end
alias plus_state_set_arm plus_state_set
def plus_state_set
if @weapon_id == 0 and ARM_ELE_PLUS[@actor_id] != []
return ARM_ELE_PLUS[@actor_id]
end
return plus_state_set_arm
end
这个方法,在没有定义2号角色的空手属性和自动状态,然后2号角色空手的情况下,会返回 nil 而不是空矩阵([]),所以在后面的脚本里报错了。
如此,只需要在可能返回 nil 的时候,返回空矩阵就行了~
在第78/87/97行的后面添加 || [],如此可以使得不定义的角色默认无属性和无自动状态附加。
像这样:
return ARM_ELEMENT[@actor_id] || [] return ARM_ELE_PLUS[@actor_id] || [] return ARM_ELE_MINUS[@actor_id] || []
return ARM_ELEMENT[@actor_id] || []
return ARM_ELE_PLUS[@actor_id] || []
return ARM_ELE_MINUS[@actor_id] || []
你测试一下,看看有没有问题? |