Project1

标题: 第二命中率怎么改成100%必中? [打印本页]

作者: MeowSnow    时间: 2013-11-30 11:54
标题: 第二命中率怎么改成100%必中?
唔……搜索过了……找到脚本编辑器里在哪了……但是完全看不懂原理什么的……好了求大触告诉我怎么改~
作者: batfjtn    时间: 2013-11-30 13:32
在Game_Battler 3

普通攻击第二命中72行左右

原代码 eva = 8 * self.agi / attacker.dex + self.eva

改成: eva = 0

技能攻击第二命中157行左右

原代码 eva = 8 * self.agi / user.dex + self.eva

改成: eva = 0

这个回避率的算法~~!!

你可以测试下

可以在原来的代码上加个#号~!!


作者: fux2    时间: 2013-11-30 17:21
batfjtn 发表于 2013-11-30 13:32
在Game_Battler 3

普通攻击第二命中72行左右

直接把
  1. if hit_result == true
复制代码
这个判定去掉不是更好
作者: batfjtn    时间: 2013-11-30 17:44
本帖最后由 batfjtn 于 2013-11-30 17:46 编辑
fux2 发表于 2013-11-30 17:21
直接把这个判定去掉不是更好


新手孩子只能跟着脚本改~!!

还没有那么厉害一次性看完~~!!

PS:多谢你的评语~~!!!

2更:

看了之后我又去查看了下

你说的方法木有错~!!

反正也没有MISS情况了直接注释了就OK了~~!!
作者: MeowSnow    时间: 2013-11-30 19:43
batfjtn 发表于 2013-11-30 17:44
新手孩子只能跟着脚本改~!!

还没有那么厉害一次性看完~~!!

话说……虽然想要的效果达到了……但是测试了一下……设置为第一命中率为50也能必中……第一命中率设定为30又必不中……这是属性决定的么?
作者: batfjtn    时间: 2013-11-30 20:58
本帖最后由 batfjtn 于 2013-11-30 21:12 编辑
835494264 发表于 2013-11-30 19:43
话说……虽然想要的效果达到了……但是测试了一下……设置为第一命中率为50也能必中……第一命 ...


和属性有关吧~!

我也不确定~!!

现在还分不清楚~!!

每个数值测试下~!!

2更:

测试了下~!!

没有存在二次判断..

你可以自己写一个~!!

是翻译错误吧~!!

那个写的二次命中判断是说闪避率获取.....

纠结你的标题没有自己查看下代码了~~!!

自己自己看下就明白了

首先是获取所有的击中效果
RUBY 代码复制
  1. # 第一命中判定
  2.     hit_result = (rand(100) < attacker.hit)
  3.     # 命中的情况下
  4.     if hit_result == true
  5.       # 计算基本伤害
  6.       atk = [attacker.atk - self.pdef / 2, 0].max
  7.       self.damage = atk * (20 + attacker.str) / 20
  8.       # 属性修正
  9.       self.damage *= elements_correct(attacker.element_set)
  10.       self.damage /= 100
  11.       # 伤害符号正确的情况下
  12.       if self.damage > 0
  13.         # 会心一击修正
  14.         if rand(100) < 4 * attacker.dex / self.agi
  15.           self.damage *= 2
  16.           self.critical = true
  17.         end
  18.         # 防御修正
  19.         if self.guarding?
  20.           self.damage /= 2
  21.         end
  22.       end
  23.       # 分散
  24.       if self.damage.abs > 0
  25.         amp = [self.damage.abs * 15 / 100, 1].max
  26.         self.damage += rand(amp+1) + rand(amp+1) - amp
  27.       end
  28.       # 第二命中判定 应该说是 回避率修正
  29.       eva = 8 * self.agi / attacker.dex + self.eva
  30.       hit = self.damage < 0 ? 100 : 100 - eva
  31.       hit = self.cant_evade? ? 100 : hit
  32.       hit_result = (rand(100) < hit)
  33.     end


接着就是命中之后的处理方式:
RUBY 代码复制
  1. # 命中的情况下
  2.     if hit_result == true
  3.       # 状态冲击解除
  4.       remove_states_shock
  5.       # HP 的伤害计算
  6.       self.hp -= self.damage
  7.       # 状态变化
  8.       @state_changed = false
  9.       states_plus(attacker.plus_state_set)
  10.       states_minus(attacker.minus_state_set)
  11.     # Miss 的情况下
  12.     else
  13.       # 伤害设置为 "Miss"
  14.       self.damage = "Miss"
  15.       # 清除会心一击标志
  16.       self.critical = false
  17.     end



作者: MeowSnow    时间: 2013-11-30 21:41
本帖最后由 835494264 于 2013-11-30 21:51 编辑
batfjtn 发表于 2013-11-30 20:58
和属性有关吧~!

我也不确定~!!


哦…嘛…虽然……题目问简单了……现在追加细点如何……比如怎么让命中率就是技能设定里的命中率?
嘛……这个麻烦的话倒是无所谓了……




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