Project1

标题: 关于血量影响防御的问题 [打印本页]

作者: letppigogo    时间: 2017-2-22 17:26
标题: 关于血量影响防御的问题
本帖最后由 letppigogo 于 2017-2-22 22:18 编辑

这是我自己做的脚本,目的是当目标的力量大于等于300时,血量小于最高血量的25% 受到的伤害会降低50%,但单进入测试会出错。请哪位高手帮我看下是哪里有问题。
     if self.str >=300 and self.hp < self.maxhp / 4
        a = 0.5
      end  
      atk = [a * (attacker.atk - self.pdef / 2), 0].max
      self.damage = atk * (20 + attacker.str) / 20
作者: guoxiaomi    时间: 2017-2-22 21:38
虽然不知道你改了哪里,也不知道报的什么错。

但是,是不是应该把乘号后面的部分用小括号括起来:

  1. atk = [a * (attacker.atk - self.pdef / 2), 0].max
复制代码

作者: letppigogo    时间: 2017-2-22 22:17
guoxiaomi 发表于 2017-2-22 21:38
虽然不知道你改了哪里,也不知道报的什么错。

但是,是不是应该把乘号后面的部分用小括号括起来:

这个代码是我手打的,忘了吧括号加进去了
作者: letppigogo    时间: 2017-2-23 08:32
letppigogo 发表于 2017-2-22 22:17
这个代码是我手打的,忘了吧括号加进去了

这是原代码:
  #--------------------------------------------------------------------------
  # ● 应用通常攻击效果
  #     attacker : 攻击者 (battler)
  #--------------------------------------------------------------------------
  def attack_effect(attacker)
    # 清除会心一击标志
    self.critical = false
    # 第一命中判定
    hit_result = (rand(100) < attacker.hit)
    # 命中的情况下
    if hit_result == true
      # 计算基本伤害
      atk = [attacker.atk - self.pdef / 2, 0].max
      self.damage = atk * (20 + attacker.str) / 20
      # 属性修正
      self.damage *= elements_correct(attacker.element_set)
      self.damage /= 100

这是修改后的代码:
  #--------------------------------------------------------------------------
  # ● 应用通常攻击效果
  #     attacker : 攻击者 (battler)
  #--------------------------------------------------------------------------
  def attack_effect(attacker)
    # 清除会心一击标志
    self.critical = false
    # 第一命中判定
    hit_result = (rand(100) < attacker.hit)
    # 命中的情况下
    if hit_result == true
      # 计算基本伤害
      if self.hp < self.maxhp / 4
        a = 0.1
      end  
      atk = [a * (attacker.atk - self.pdef / 2), 0].max
      self.damage = atk * (20 + attacker.str) / 20
      # 属性修正
      self.damage *= elements_correct(attacker.element_set)
      self.damage /= 100   

修改后进入正常进入战斗,选择目标后,开始攻击时弹框出错
attachimg]323164[/attachimg]

感觉是不是 if self.hp < self.maxhp / 4这句话的语法有问题,但是不知道错在哪

小Q截图-20170223082844.png (8.8 KB, 下载次数: 26)

小Q截图-20170223082844.png

作者: RyanBern    时间: 2017-2-23 08:44
RUBY 代码复制
  1. if self.str >=300 and self.hp < self.maxhp / 4
  2.   a = 0.5
  3. end  
  4. atk = [a * (attacker.atk - self.pdef / 2), 0].max
  5. self.damage = atk * (20 + attacker.str) / 20

如果目标不满足第一行的条件,导致第二行不执行,此时变量 a 无定义。如果再执行第四行就会报找不到 a 的错误。
作者: letppigogo    时间: 2017-2-23 09:01
RyanBern 发表于 2017-2-23 08:44
if self.str >=300 and self.hp < self.maxhp / 4
  a = 0.5
end  

不亏是版主,一句话就让我茅塞顿开。




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