Project1

标题: 技能使用会心一擊 後的問題 [打印本页]

作者: stanyanyan0    时间: 2012-8-14 23:05
标题: 技能使用会心一擊 後的問題
http://rpg.blue/forum.php?mod=viewthread&tid=176448

我使用了上面連結的方法,成功讓技能也有会心一擊的效果

但是發現 自己使用物品 也會有会心效果的符號

例如我喝了一瓶恢復200HP的藥水

他也給我顯示 熱血痛擊 雖然一樣都恢復200HP 但看了礙眼

有辦法解決嗎 謝謝了!dsu_plus_rewardpost_czw
作者: 怪蜀黍    时间: 2012-8-14 23:26
本帖最后由 protosssonny 于 2012-8-14 23:32 编辑

我知道问题的所在,因为普通攻击评价也调用了make_attack_damage_value
方法:Game_BattleAction类下316行,找到类似的定义变成这样
  1.   #--------------------------------------------------------------------------
  2.   # ● 普通攻击评价(指定目标)
  3.   #     target : 目标战斗者
  4.   #--------------------------------------------------------------------------
  5.   def evaluate_attack_with_target(target)
  6.     target.clear_action_results
  7.     target.make_attack_damage_value(battler,false) #改这里
  8.     return target.hp_damage.to_f / [target.hp, 1].max
  9.   end
复制代码
Game_Battler类下def make_attack_damage_value(attacker)改成def make_attack_damage_value(attacker,value=true)
再把你的@critical = (rand(100) < attacker.cri) 改成 @critical = ((rand(100) < attacker.cri) and value==true)
应该就可以了!
作者: stanyanyan0    时间: 2012-8-14 23:42
本帖最后由 stanyanyan0 于 2012-8-15 00:37 编辑

我改好了,但是還是有出現TAT

應該說 物品不會有会心效果了

但是 技能也跟著沒了���
作者: limaolinghu    时间: 2012-8-15 07:43
你之前肯定是在make_obj_damage_value增加了暴击率的几行代码吧?
把那几行代码用if obj.is_a?(RPG::Skill)括起来,应该就好了。
比如,你增加以下这几行的时候加个if
if obj.is_a?(RPG::Skill)
   @critical = (rand(100) < attacker.cri)        # 会心一击判断
   @critical = false if prevent_critical         # 防止会心一击判断
   damage *= 3 if @critical                      # 会心一击校正
end
作者: 怪蜀黍    时间: 2012-8-15 09:32
4楼说得很对,可以照他的办法。如果你改好了还出现,说明你一定使用了其他脚本并调用了make_attack_damage_value。
作者: stanyanyan0    时间: 2012-8-15 11:11
成功了 感謝兩位~
這最佳解答只能選一個阿




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