查看: 1801|回复: 1

[已经解决] F1 中脚本入门中实践篇 一处看读懂啊

[复制链接]
梦石
0
星屑
75
在线时间
139 小时
注册时间
2014-5-4
回帖
53
发表于 2015-12-5 22:36:03 | 显示全部楼层 |阅读模式

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

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

×
中脚本入门中实践篇
制作消耗物品的技能

判定是否可以支付
Snap5.jpg

其中[pre lang="ruby"]xxx001_skill_cost_payable?(skill) &&
    (!item || $game_party.has_item?(item))[/pre]

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

梦石
1
星屑
23246
在线时间
9564 小时
注册时间
2012-6-19
回帖
7018

开拓者短篇九导演组冠军

发表于 2015-12-5 22:54:33 | 显示全部楼层
本帖最后由 喵呜喵5 于 2015-12-5 23:01 编辑

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

上面那段代码无法理解的话,看这段:
[pre lang="ruby"]class Game_Actor
  alias xxx001_skill_cost_payable? skill_cost_payable?
  def skill_cost_payable?(skill)   
    judge_mp_tp = xxx001_skill_cost_payable?(skill) # 判断MP、TP是否足够
    return false unless judge_mp_tp # MP、TP不够时,技能无法使用      
    # MP、TP充足时      
    item = $data_items[skill.item_cost] # 获取技能消耗的物品
    return true unless item # 当物品不存在时,该技能不需要消耗物品,可以使用
    judge_item = $game_party.has_item?(item) # 判断角色身上是否有技能消耗品
    if judge_item # 当角色身上有对应消耗品时
      return true # 技能可以使用
    else # 当角色身上没有对应消耗品时
      return false # 技能无法使用      
    end
  end
end[/pre]

点评

谢谢 喵大将脚本 翻译成if的形式 (我从发帖是就预感到将是喵大来解决)您写的我似乎是看懂了 但肯定没吃透 我在想想 再练练 喵大睡吧  发表于 2015-12-5 23:17
若不存在,说明技能不需要消耗物品,那技能肯定可以用了,可以用的话就返回真啊  发表于 2015-12-5 23:06
看我刚刚附上的那段代码  发表于 2015-12-5 23:03
喵大我蠢没懂,先说不存在的,若不存在 item 为假, !item是取反,!item返回的就是真了,那整个式子就返回真了,  发表于 2015-12-5 23:01

评分

参与人数 1梦石 +1 收起 理由
VIPArcher + 1 认可答案

查看全部评分

回复

使用道具 举报

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

本版积分规则

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

在本版发帖返回顶部