| 赞 | 0  | 
 
| VIP | 0 | 
 
| 好人卡 | 0 | 
 
| 积分 | 5 | 
 
| 经验 | 920 | 
 
| 最后登录 | 2024-2-8 | 
 
| 在线时间 | 50 小时 | 
 
 
 
 
 
Lv2.观梦者 
	- 梦石
 - 0 
 
        - 星屑
 - 511 
 
        - 在线时间
 - 50 小时
 
        - 注册时间
 - 2009-7-1
 
        - 帖子
 - 87
 
 
 
 | 
	
加入我们,或者,欢迎回来。
您需要 登录 才可以下载或查看,没有帐号?注册会员  
 
x
 
 本帖最后由 daiboy12 于 2010-8-24 22:11 编辑  
 
首先在Game_Battler中定义如下- class Game_Battler
 
 -   def skill_cost_hp?(skill_id)
 
 -     if skill_id == 1 or
 
 -       skill_id == 2
 
 -       return true
 
 -     end
 
 -   end
 
 - end
 
  复制代码 也就是说1号技能和2号技能视为消耗HP的技能。 
 
接下来在下面一点的地方改一下def skill_can_use?(skill_id)这块- if skill_cost_hp?(skill_id)
 
 -   if $data_skills[skill_id].sp_cost > self.hp - 1
 
 -     return false
 
 -   end
 
 - else
 
 -   if $data_skills[skill_id].sp_cost > self.sp
 
 -     return false
 
 -   end
 
 - end
 
  复制代码 消耗HP的技能如果HP不足消耗量的话就视为不能使用。这样在下面可以少改很多窗口的地方。 
-1是为了防止玩家使用技能造成死亡。 
 
然后在Scene_Skill中 
有个使用特技的情况下 
大概在124行有这个- if @actor.skill_cost_hp?(@skill.id)
 
 -   @actor.hp -= @skill.sp_cost
 
 - else
 
 -   @actor.sp -= @skill.sp_cost
 
 - end
 
  复制代码 把消耗SP改为消耗HP 
 
接下来在战斗中还要再修改一次消耗HP。我用的是RTAB战斗脚本,所以就只能在这个脚本上改了。 
大概在1789行中的- battler.sp -= @skill.sp_cost
 
 
  复制代码 修改成- if battler.skill_cost_hp?(@skill.id)
 
 -   battler.hp -= @skill.sp_cost
 
 - else
 
 -    battler.sp -= @skill.sp_cost
 
 - end
 
  复制代码 之后就大功告成啦! 
 
请高手帮我看看有没有问题吧!至少我现在测试起来是OK了。 
 
还有一个问题,就是在Game_Battler中的定义我好像做的太复杂了。如果有很多个技能就要打很多个 skill_id == XX 有什么办法可以简化吗?看很多其他人写的脚本中间都是隔着一个逗号就能行的。 |   
 
 
 
 |