设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 143|回复: 8

[已经解决] 做了一个造成伤害的同时给自己回血的技能

[复制链接]

Lv2.观梦者

梦石
0
星屑
289
在线时间
172 小时
注册时间
2010-12-4
帖子
79
发表于 2020-2-12 02:24:34 | 显示全部楼层 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有帐号?注册会员

x
本帖最后由 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

Lv2.观梦者

梦石
0
星屑
289
在线时间
172 小时
注册时间
2010-12-4
帖子
79
 楼主| 发表于 2020-2-12 12:06:27 | 显示全部楼层

是加在哪里的,user.hp = Integer(user.hp)下面?
回复 支持 反对

使用道具 举报

Lv5.捕梦者

梦石
0
星屑
22392
在线时间
2468 小时
注册时间
2006-11-10
帖子
5857
发表于 2020-2-13 10:17:24 | 显示全部楼层
建议稍微改一下写法
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

就可以了

评分

参与人数 1星屑 +50 收起 理由
RyanBern + 50 认可答案

查看全部评分

祥瑞御免 ,家宅平安
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
289
在线时间
172 小时
注册时间
2010-12-4
帖子
79
 楼主| 发表于 2020-2-13 12:00:21 | 显示全部楼层
请教增加 “.to_i”是什么作用?

点评

化為整數, to_s 化為字串, to_f化為浮点(小數) ,  发表于 2020-2-13 15:19
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
289
在线时间
172 小时
注册时间
2010-12-4
帖子
79
 楼主| 发表于 2020-2-13 12:01:12 | 显示全部楼层
灯笼菜刀王 发表于 2020-2-13 10:17
建议稍微改一下写法
if skill.id == 4  #烈波斩ID:4
  amp = (self.damage / 2).to_i

请教“.to_i”是什么作用?
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
289
在线时间
172 小时
注册时间
2010-12-4
帖子
79
 楼主| 发表于 2020-2-13 14:32:13 | 显示全部楼层
灯笼菜刀王 发表于 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● 的定义添加后,战斗中果然回血跳数字了,不过是伤害的白字,要改成加血的绿字应该怎么写?
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
507
在线时间
31 小时
注册时间
2018-6-29
帖子
12
发表于 2020-2-13 17:23:39 | 显示全部楼层
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

评分

参与人数 1星屑 +50 收起 理由
RyanBern + 50 我很赞同

查看全部评分

回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
289
在线时间
172 小时
注册时间
2010-12-4
帖子
79
 楼主| 发表于 2020-2-13 22:37:32 | 显示全部楼层
1103123301 发表于 2020-2-13 17:23
#--------------------------------------------
      # ● 伊布斯 烈波斩 回血
      #--------- ...

原来如此,受教了,问题已经解决了!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:fux2@moe9th.com|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2020-2-29 02:00

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表