Project1

标题: 会心一击机率 [打印本页]

作者: 破碎记忆    时间: 2017-4-6 16:22
标题: 会心一击机率
我想做一个增加会心一击率的功能,当1号开关打开时会心一击几率怎加一倍,脚本里该怎么改。
作者: guoxiaomi    时间: 2017-4-6 20:14
本帖最后由 guoxiaomi 于 2017-4-6 20:37 编辑

Game_Battler 3 第 55-66 行:
RUBY 代码复制
  1. # 伤害符号正确的情况下
  2.       if self.damage > 0
  3.         # 会心一击修正
  4.         if rand(100) < 4 * attacker.dex / self.agi
  5.           self.damage *= 2
  6.           self.critical = true
  7.         end
  8.         # 防御修正
  9.         if self.guarding?
  10.           self.damage /= 2
  11.         end
  12.       end

知道改哪里了吧~

RUBY 代码复制
  1. if rand(100) < 4 * attacker.dex / self.agi * (($game_switches[1])? 2 : 1)

作者: 破碎记忆    时间: 2017-4-6 20:32
guoxiaomi 发表于 2017-4-6 20:14
Game_Battler 3 第 55-66 行:
      # 伤害符号正确的情况下
      if self.damage > 0

这我知道了但是该怎么改
作者: 破碎记忆    时间: 2017-4-6 22:06
guoxiaomi 发表于 2017-4-6 20:14
Game_Battler 3 第 55-66 行:
      # 伤害符号正确的情况下
      if self.damage > 0

看见了,刚没注意,谢了
作者: 破碎记忆    时间: 2017-4-7 20:47
guoxiaomi 发表于 2017-4-6 20:14
Game_Battler 3 第 55-66 行:
      # 伤害符号正确的情况下
      if self.damage > 0

如果是直接乘上变量的数值该怎么写,并且是两个变量,变量1或变量2中间用or连接吗
作者: 破碎记忆    时间: 2017-4-8 20:11
guoxiaomi 发表于 2017-4-6 20:14
Game_Battler 3 第 55-66 行:
      # 伤害符号正确的情况下
      if self.damage > 0

那个问题我已经知道了,但这样写的话,敌人的会心一击率也会增加,只要自己和队员会心一击率增加该怎么写
作者: 破碎记忆    时间: 2017-4-8 20:24
guoxiaomi 发表于 2017-4-6 20:14
Game_Battler 3 第 55-66 行:
      # 伤害符号正确的情况下
      if self.damage > 0

嗯,知道了谢了
作者: 破碎记忆    时间: 2017-4-8 22:34
破碎记忆 发表于 2017-4-8 20:11
那个问题我已经知道了,但这样写的话,敌人的会心一击率也会增加,只要自己和队员会心一击率增加该怎么写 ...


这样写会出错
作者: 破碎记忆    时间: 2017-4-8 22:37
guoxiaomi 发表于 2017-4-6 20:14
Game_Battler 3 第 55-66 行:
      # 伤害符号正确的情况下
      if self.damage > 0

   if rand(100) < (4 * attacker.dex / self.agi) * (($game_variables[8]&& attacker.is_a?(Game_Actor)) or($game_variables[7]))
我这样写会出错?
作者: guoxiaomi    时间: 2017-4-9 00:35
破碎记忆 发表于 2017-4-8 22:37
if rand(100) < (4 * attacker.dex / self.agi) * (($game_variables[8]&& attacker.is_a?(Game_Actor ...

报错是不是 ‘true can't be coerced into Fixnum’

我发现如果是 (123 && true) or (456) ,会返回 true……然后 true 和前面的乘法一算就报错了

建议你再看看 ruby 的基本语法……这复杂难懂的写法,是很不好的
作者: 破碎记忆    时间: 2017-4-22 22:45
guoxiaomi 发表于 2017-4-9 00:35
报错是不是 ‘true can't be coerced into Fixnum’

我发现如果是 (123 && true) or (456) ,会返回 tr ...

      if rand(100) < (4 * attacker.dex / self.agi) * ($game_variables[7] && attacker.is_a?(Game_Actor))
这样写也会错?
作者: QQ蚊子湯    时间: 2017-4-23 01:40
真假值不能直接拿來進行計算,所以不可和算式括在一起
if rand(100) < ( (4 * attacker.dex / self.agi) * $game_variables[7] ) && attacker.is_a?(Game_Actor)

因為是邏輯問題所以可以客串一下
作者: 破碎记忆    时间: 2017-4-23 15:03
guoxiaomi 发表于 2017-4-9 00:35
报错是不是 ‘true can't be coerced into Fixnum’

我发现如果是 (123 && true) or (456) ,会返回 tr ...

不过这样写好像会增大Mass几率,有解决的办法吗?
作者: 破碎记忆    时间: 2017-4-23 15:04
QQ蚊子湯 发表于 2017-4-23 01:40
真假值不能直接拿來進行計算,所以不可和算式括在一起
if rand(100) < ( (4 * attacker.dex / self.agi) * ...

不过这样写好像会增大Mass几率,有解决的办法吗?




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