Project1

标题: [已解決]这个儲存釋放伤害脚本是不是有BUG? [打印本页]

作者: chanszeman1018    时间: 2020-6-18 14:47
提示: 作者被禁止或删除 内容自动屏蔽
作者: srwjrevenger    时间: 2020-6-19 13:38
不知道你工程和设定等等的相关细节,所以我只是猜一下
1.797号技能会兩倍释放最后兩回合储存了的受到的伤害
①初次使用,a.stored_dmg是0
②没有设置好状态,a.stored_dmg是0
③a角色一直没有受伤,a.stored_dmg是0
然后你又用了最低伤害脚本
所以伤害只会返回1
也有可能是你使用的最低伤害脚本导致伤害只会返回1

2.你的公式涉及的参数有点多
但是却没有考虑过 被除数小于除数等于0 这种情况
稍微调整部分公式以及参数的数值后看看吧

举例
命中类型是必中时,
到 value += 10 为止的结果小于250
没有
value *= user.atk if item.physical?   
value *= user.mat if item.magical?
的加成后
value /= 250  的结果容易等于0,没有去小数点时实际上是0到1之间,包含0不包含1
之后的
value += 2   的结果就容易等于2了,没有去小数点时实际上是2到3之间,包含2不包含3
作者: chanszeman1018    时间: 2020-6-19 15:52
提示: 作者被禁止或删除 内容自动屏蔽
作者: Cupidk爱呗茶    时间: 2020-6-20 01:59
本帖最后由 Cupidk爱呗茶 于 2020-6-20 02:25 编辑

粗略看了一下 感觉问题出在
  1.   def stored_dmg
  2.     0 unless can_store_damage?
  3.     val = @stored_dmg
  4.     @stored_dmg = 0  #执行完一次该方法后储存伤害清零
  5.     remove_storedmg_state # 清除状态时还会在判断一次伤害清零
  6.     val
  7.   end
复制代码

然后主楼贴出的第二个脚本def make_damage_value(user, item) 第16行中在判断技能ID在获取伤害之前 就已经执行过一次公式方法了导致这个伤害被清零
解决思路大概就是 直接吧797号技能的伤害判定放到方法最前端执行 来试试看行不行
  1.   #--------------------------------------------------------------------------
  2.   # ● 計算傷害
  3.   #--------------------------------------------------------------------------
  4.   def make_damage_value(user, item)
  5.     if item.is_a?(RPG::Skill) and item.id == 797
  6.       value = item.damage.eval(user, self, $game_variables)
  7.       return @result.make_damage(value.to_i, item)
  8.     end
  9.     value = 2
  10.     if user.is_a?(Game_Actor)
  11.       value *= user.level
  12.     else
  13.       value *= 5
  14.     end
  15.     value += 10
  16.     value *= user.atk if item.physical?
  17.     value *= user.mat if item.magical?
  18.     value *= item.damage.eval(user, self, $game_variables)
  19.     value /= 250
  20.     value /= self.def if item.physical?
  21.     value /= self.mdf if item.magical?
  22.     value += 2
  23.     value *= item_element_rate(user, item)
  24.     value *= pdr if item.physical?
  25.     value *= mdr if item.magical?
  26.     value *= rec if item.damage.recover?
  27.     value = apply_critical(value) if @result.critical
  28.     value = apply_variance(value, item.damage.variance)
  29.     value = apply_guard(value)
  30.     @result.make_damage(value.to_i, item)
  31.   end
复制代码

作者: chanszeman1018    时间: 2020-6-20 03:01
提示: 作者被禁止或删除 内容自动屏蔽




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