Project1

标题: 关于脚本中如何判定生命值低于百分比后才能使用的问题 [打印本页]

作者: 一代明君    时间: 2019-11-1 20:35
标题: 关于脚本中如何判定生命值低于百分比后才能使用的问题
在下是一名刚入脚本改造的菜鸡
很多地方都还搞不懂,单看帮助文档的解释依然没法理解(可能是我蠢吧┭┮﹏┭┮)
如题,我想要实现当使用者生命值低于百分之十五之后才能使用某个技能,但是一直想不到怎么去写,虽然模仿了帮助文档里的写法,但是还是不会,有很多问题。

作者: gqxastg    时间: 2019-11-1 21:02
本帖最后由 gqxastg 于 2019-11-2 08:35 编辑

举个例子 敌我通用 单独插入一页
RUBY 代码复制
  1. class Game_BattlerBase
  2.   #--------------------------------------------------------------------------
  3.   # ● 检查技能的使用条件
  4.   #--------------------------------------------------------------------------
  5.   alias old_hp_limit_skill_conditions_met? skill_conditions_met?
  6.   def skill_conditions_met?(skill)
  7.     old_hp_limit_skill_conditions_met?(skill) &&
  8.     (skill.id == 10000 ? hp_rate <= 0.15 : true)
  9.   end
  10. end

作者: KB.Driver    时间: 2019-11-1 22:31

范例见工程,测试技能为130号。
Project1.zip (1.43 MB, 下载次数: 89)

RUBY 代码复制
  1. #==============================================================================
  2. # ■ 自定义物品/技能使用条件 by Calendar99
  3. #------------------------------------------------------------------------------
  4. #  使用方法
  5. #  物品/技能备注中写<condition>xxx</condition> xxx为条件,支持多行
  6. #  condition也可以换成使用条件或者条件
  7. #  用user代表使用者,s[n]和v[n]分别代表n号开关和变量
  8. #
  9. #  例 <condition>user.level > 9</condition>   # 使用者等级大于9才能用
  10. #     <使用条件>s[1] && v[1] > 5</使用条件>    # 1号开关开启且1号变量大于5才能用
  11. #     <条件>s[1] && v[1] > 5</条件>    # 1号开关开启且1号变量大于5才能用
  12. #     其他用法参考伤害公式
  13. #==============================================================================
  14. class RPG::UsableItem
  15.   TAG_CONDITION = "(?:condition|(?:使用)?条件)"
  16.   REG_CONDITION = /<#{TAG_CONDITION}>((?:.\s?)+)<\/#{TAG_CONDITION}>/mi
  17.   #--------------------------------------------------------------------------
  18.   # ● [追加]自定义条件是否满足
  19.   #--------------------------------------------------------------------------
  20.   def condition_ok?(user)
  21.     s = $game_switches
  22.     v = $game_variables
  23.     self.note =~ REG_CONDITION ? eval($1) : true
  24.   end
  25. end
  26.  
  27. class Game_Actor
  28.   #--------------------------------------------------------------------------
  29.   # ● [别名修改]技能/物品的应用测试
  30.   #--------------------------------------------------------------------------
  31.   alias item_test_for_eval_condition item_test
  32.   def item_test(user, item)
  33.     return false unless item.condition_ok?(self) # self为使用者
  34.     item_test_for_eval_condition(user, item)
  35.   end
  36.   #--------------------------------------------------------------------------
  37.   # ● [别名修改]判定技能/使用物品是否可用
  38.   #--------------------------------------------------------------------------
  39.   alias usable_for_eval_condition usable?
  40.   def usable?(item)
  41.     return false unless extra_condition_met?(item)
  42.     usable_for_eval_condition(item)
  43.   end
  44.   #--------------------------------------------------------------------------
  45.   # ● [追加]判定技能/使用物品是否可用的额外条件
  46.   #--------------------------------------------------------------------------
  47.   def extra_condition_met?(item)
  48.     item.is_a?(RPG::UsableItem) && item.condition_ok?(self) # self为使用者
  49.   end
  50. end
  51.  
  52. class Window_BattleItem < Window_ItemList
  53.   #--------------------------------------------------------------------------
  54.   # ● [别名修改]查询使用列表中是否含有此物品
  55.   #--------------------------------------------------------------------------
  56.   alias include_for_eval_condition include?
  57.   def include?(item)
  58.     original_usable = BattleManager.actor.usable_for_eval_condition(item)
  59.     include_for_eval_condition(item) || original_usable
  60.   end
  61.   #--------------------------------------------------------------------------
  62.   # ● [子类覆盖]查询此物品是否可用
  63.   #--------------------------------------------------------------------------
  64.   def enable?(item)
  65.     BattleManager.actor.usable?(item)
  66.   end
  67. end

作者: 一代明君    时间: 2019-11-2 07:55
gqxastg 发表于 2019-11-1 21:02
举个例子 敌我通用 单独插入一页
class Game_BattlerBase
  #------------------------------------------- ...

感谢大佬啊
作者: 一代明君    时间: 2019-11-2 07:56
KB.Driver 发表于 2019-11-1 22:31
范例见工程,测试技能为130号。

感谢大佬啊




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