Project1

标题: F1 中脚本入门中实践篇 一处看读懂啊 [打印本页]

作者: invirgin    时间: 2015-12-5 22:36
标题: F1 中脚本入门中实践篇 一处看读懂啊
中脚本入门中实践篇
制作消耗物品的技能

判定是否可以支付


其中
RUBY 代码复制
  1. xxx001_skill_cost_payable?(skill) &&
  2.     (!item || $game_party.has_item?(item))


这一处百思不得其姐,括号中的!item解释说 是用来判断 item 是真是伪的语句(是 nil 的话就会判定为伪)。
但我认为若item为nil,也就是伪,那!item就表示是真了,括号后没停住判断,括号内判定为真,整个语句判定为真。这显然是错的啊。


作者: 喵呜喵5    时间: 2015-12-5 22:54
本帖最后由 喵呜喵5 于 2015-12-5 23:01 编辑

(!item || $game_party.has_item?(item)):判断技能消耗的物品是否存在,如果存在,返回真(允许使用技能),否则返回假(不允许使用技能)
若item为nil,说明该技能不需要消耗物品,不管身上的物品时怎么样的都必定允许使用技能,故直接返回真

上面那段代码无法理解的话,看这段:
RUBY 代码复制
  1. class Game_Actor
  2.   alias xxx001_skill_cost_payable? skill_cost_payable?
  3.   def skill_cost_payable?(skill)   
  4.     judge_mp_tp = xxx001_skill_cost_payable?(skill) # 判断MP、TP是否足够
  5.     return false unless judge_mp_tp # MP、TP不够时,技能无法使用      
  6.     # MP、TP充足时      
  7.     item = $data_items[skill.item_cost] # 获取技能消耗的物品
  8.     return true unless item # 当物品不存在时,该技能不需要消耗物品,可以使用
  9.     judge_item = $game_party.has_item?(item) # 判断角色身上是否有技能消耗品
  10.     if judge_item # 当角色身上有对应消耗品时
  11.       return true # 技能可以使用
  12.     else # 当角色身上没有对应消耗品时
  13.       return false # 技能无法使用      
  14.     end
  15.   end
  16. end





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