Project1

标题: 自己改的一个技能消耗HP脚本,顺便请高手帮我完善下。 [打印本页]

作者: daiboy12    时间: 2010-8-24 21:59
标题: 自己改的一个技能消耗HP脚本,顺便请高手帮我完善下。
本帖最后由 daiboy12 于 2010-8-24 22:11 编辑

首先在Game_Battler中定义如下
  1. class Game_Battler
  2.   def skill_cost_hp?(skill_id)
  3.     if skill_id == 1 or
  4.       skill_id == 2
  5.       return true
  6.     end
  7.   end
  8. end
复制代码
也就是说1号技能和2号技能视为消耗HP的技能。

接下来在下面一点的地方改一下def skill_can_use?(skill_id)这块
  1. if skill_cost_hp?(skill_id)
  2.   if $data_skills[skill_id].sp_cost > self.hp - 1
  3.     return false
  4.   end
  5. else
  6.   if $data_skills[skill_id].sp_cost > self.sp
  7.     return false
  8.   end
  9. end
复制代码
消耗HP的技能如果HP不足消耗量的话就视为不能使用。这样在下面可以少改很多窗口的地方。
-1是为了防止玩家使用技能造成死亡。

然后在Scene_Skill中
有个使用特技的情况下
大概在124行有这个
  1. if @actor.skill_cost_hp?(@skill.id)
  2.   @actor.hp -= @skill.sp_cost
  3. else
  4.   @actor.sp -= @skill.sp_cost
  5. end
复制代码
把消耗SP改为消耗HP

接下来在战斗中还要再修改一次消耗HP。我用的是RTAB战斗脚本,所以就只能在这个脚本上改了。
大概在1789行中的
  1. battler.sp -= @skill.sp_cost
复制代码
修改成
  1. if battler.skill_cost_hp?(@skill.id)
  2.   battler.hp -= @skill.sp_cost
  3. else
  4.    battler.sp -= @skill.sp_cost
  5. end
复制代码
之后就大功告成啦!

请高手帮我看看有没有问题吧!至少我现在测试起来是OK了。

还有一个问题,就是在Game_Battler中的定义我好像做的太复杂了。如果有很多个技能就要打很多个 skill_id == XX 有什么办法可以简化吗?看很多其他人写的脚本中间都是隔着一个逗号就能行的。
作者: 六祈    时间: 2010-8-24 22:23
回复 daiboy12 的帖子

用[1 , 3 , 5 , 7].include?(skill_id)的写法即可

另外楼主这样写的话,自己用可以,可移植性不高
   
作者: ML4455739    时间: 2010-8-24 22:26
个人觉得连续伤害状态够用了




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