Project1

标题: 做了一个造成伤害的同时给自己回血的技能 [打印本页]

作者: letppigogo    时间: 2020-2-12 02:24
标题: 做了一个造成伤害的同时给自己回血的技能
本帖最后由 letppigogo 于 2020-2-12 02:25 编辑

做了一个造成伤害后给自己回复伤害50%的血量的技能脚本,现在有个问题就是回血时,没有绿色数字跳出。应该是少了一段话,或者是位置错了,研究了一晚上,没找到问题在哪里,求高手解惑。
脚本如下:
●Game_Battler 3●脚本下应用特技效果里

  # 命中的情况下
    if hit_result == true
      # 威力 0 以外的物理攻击的情况下
      if skill.power != 0 and skill.atk_f > 0
        # 状态冲击解除
        remove_states_shock
        # 设置有效标志
        effective = true
      end
     # HP 的伤害减法运算
      last_hp = self.hp
      self.hp -= self.damage
      effective |= self.hp != last_hp
      #--------------------------------------------------------------------------
      # ● 伊布斯 烈波斩 回血
      #--------------------------------------------------------------------------
      if skill.id == 4  #烈波斩ID:4
        amp = user.hp += self.damage / 2
        user.hp = Integer(user.hp)
      end

      # 状态变化
      @state_changed = false
      effective |= states_plus(skill.plus_state_set)
      effective |= states_minus(skill.minus_state_set)
      # 威力为 0 的场合
      if skill.power == 0
        # 伤害设置为空的字串
        self.damage = ""
        # 状态没有变化的情况下
        unless @state_changed
          # 伤害设置为 "Miss"
          self.damage = "MISS"
        end
      end
    # Miss 的情况下
    else
      # 伤害设置为 "Miss"
      self.damage = "MISS"
    end
    # 不在战斗中的情况下
    unless $game_temp.in_battle
      # 伤害设置为 nil
      self.damage = nil
    end
    # 过程结束
    return effective
  end
作者: letppigogo    时间: 2020-2-12 12:06
余爱桂 发表于 2020-2-12 11:02
:victory::funk::curse:

是加在哪里的,user.hp = Integer(user.hp)下面?
作者: 灯笼菜刀王    时间: 2020-2-13 10:17
建议稍微改一下写法
if skill.id == 4  #烈波斩ID:4
  amp = (self.damage / 2).to_i
  user.hp -= amp
  user.damage = amp
end

然后, 找到默认脚本 Scene_Battle 4 里 def update_phase4_step5 这段, 在 @phase4_step = 6 上面加上一句
@active_battler.damage_pop = true if @active_battler.damage != nil

就可以了
作者: letppigogo    时间: 2020-2-13 12:00
请教增加 “.to_i”是什么作用?
作者: letppigogo    时间: 2020-2-13 12:01
灯笼菜刀王 发表于 2020-2-13 10:17
建议稍微改一下写法
if skill.id == 4  #烈波斩ID:4
  amp = (self.damage / 2).to_i

请教“.to_i”是什么作用?
作者: letppigogo    时间: 2020-2-13 14:32
灯笼菜刀王 发表于 2020-2-13 10:17
建议稍微改一下写法
if skill.id == 4  #烈波斩ID:4
  amp = (self.damage / 2).to_i

      #--------------------------------------------
      # ● 伊布斯 烈波斩 回血
      #--------------------------------------------
      if skill.id == 4  #烈波斩ID:4
        amp = (self.damage / 2).to_i
        user.hp += amp
        user.damage = amp
      end
按照你的建议修改后,回血变成掉血了,所以我把-=amp改成了+=amp,问题解决了,

●Scene_Battle 4● 的定义添加后,战斗中果然回血跳数字了,不过是伤害的白字,要改成加血的绿字应该怎么写?
作者: 1103123301    时间: 2020-2-13 17:23
letppigogo 发表于 2020-2-13 14:32
#--------------------------------------------
      # ● 伊布斯 烈波斩 回血
      #--------- ...

      #--------------------------------------------
      # ● 伊布斯 烈波斩 回血
      #--------------------------------------------
      if skill.id == 57  #烈波斩ID:4
        amp = (self.damage / 2).to_i
        user.hp += amp
       user.damage = -amp
      end
作者: letppigogo    时间: 2020-2-13 22:37
1103123301 发表于 2020-2-13 17:23
#--------------------------------------------
      # ● 伊布斯 烈波斩 回血
      #--------- ...

原来如此,受教了,问题已经解决了!




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