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

Project1

 找回密码
 注册会员
搜索
查看: 1642|回复: 8
打印 上一主题 下一主题

[已经过期] 如何做出可叠加的“连续伤害”

[复制链接]

Lv1.梦旅人

梦石
0
星屑
50
在线时间
35 小时
注册时间
2016-1-17
帖子
60
跳转到指定楼层
1
发表于 2016-8-11 23:06:26 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
由于觉得游戏里光有中毒状态太单调了,于是没事找事想增加一个烧伤状态(每回合掉最大生命值2.5%)
结果找了很多脚本全都失败了。。。每回合掉血这种事只能从两个状态中优先选择一个,不能共存。(但如果一个状态掉/回血另一个状态掉/回蓝是可以的)
捣鼓了一晚上没什么结果,所以来请教大家。

Lv1.梦旅人

梦石
0
星屑
50
在线时间
35 小时
注册时间
2016-1-17
帖子
60
2
 楼主| 发表于 2016-8-11 23:10:26 | 只看该作者
目前最有可能能成功的方案:
再网上找到了一个人写的脚本——
#--------------------------------------------------------------------------
  # ● 应用连续伤害效果
  #--------------------------------------------------------------------------
  def slip_damage_effect  
    # 设置伤害

      self.damage = self.maxhp / 10

      # 分散

      if self.damage.abs > 0

        amp = [self.damage.abs * 15 / 100, 1].max

        self.damage += rand(amp+1) + rand(amp+1) - amp

      end

      # HP 的伤害减法运算

      self.hp -= self.damage

修改一下比例就好了,若果要设定回复或者更高伤害,就设定几个新的状态,并在添加判断语句来实现。
比如3号状态为毒,伤害比例每回合最大生命值5%,4号状态为猛毒,伤害比例每回合最大生命值10%就可以这样
#--------------------------------------------------------------------------
  # ● 应用连续伤害效果
  #--------------------------------------------------------------------------
  def slip_damage_effect

    if self.state?(3)
  
    # 设置伤害

      self.damage = self.maxhp / 20

      # 分散

      if self.damage.abs > 0

        amp = [self.damage.abs * 15 / 100, 1].max

        self.damage += rand(amp+1) + rand(amp+1) - amp

      end

      # HP 的伤害减法运算

      self.hp -= self.damage
   
    #猛毒
      
    elsif self.state?(4)
      #设置伤害

      self.damage = self.maxhp / 10

      # 分散

      if self.damage.abs > 0

        amp = [self.damage.abs * 15 / 100, 1].max

        self.damage += rand(amp+1) + rand(amp+1) - amp

      end

      # HP 的伤害减法运算

      self.hp -= self.damage
      
      end
    # 过程结束
    return true
  end
不能扣血叠加,但另一项讯息是——
连续伤害的脚本帖出来看看,如果是if排列,那可以叠加,如果是elsif排列,那只能中一种,看看连续伤害的脚本怎么写的,将elsif全部改为if再补上end就可以实现叠加了。
可惜自己太笨试了半天都没成功。。。
要怎么修改这个脚本?


回复 支持 反对

使用道具 举报

Lv5.捕梦者

梦石
0
星屑
36129
在线时间
10712 小时
注册时间
2009-3-15
帖子
4806
3
发表于 2016-8-12 10:52:19 | 只看该作者
本帖最后由 soulsaga 于 2016-8-12 10:55 编辑

能发一下你改过的脚本上来让大家看看什么问题么..

点评

脚本在发底下,忘记使用回复了。。。  发表于 2016-8-12 11:35
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
35 小时
注册时间
2016-1-17
帖子
60
4
 楼主| 发表于 2016-8-12 11:32:46 | 只看该作者
   1. 在Scene_Battle 4中的修改
    # 连续伤害
    if @active_battler.hp > 0 and @active_battler.slip_damage?
      @active_battler.slip_damage_effect
      @active_battler.damage_pop = true
    end
#烧伤
if @active_battler.state?(4) and @active_battler.hp >0  #-恢复魔法
      @active_battler.damage=@active_battler.maxhp/40#每回合造成最大生命2.5%的伤害
      @active_battler.damage=@active_battler.damage.to_i
      @active_battler.hp-=@active_battler.damage
      @active_battler.damage_pop = true
end
结果——失败,系统优先烧伤状态



但是,如果换成回血状态
     #自愈
   if @active_battler.state?(4) and @active_battler.hp >0  #-恢复魔法
      @active_battler.damage=-(@active_battler.maxhp-@active_battler.hp)/10#恢复生命百分比,这里设置为10%,也可设置固定值
      @active_battler.damage=@active_battler.damage.to_i
      @active_battler.hp-=@active_battler.damage
      @active_battler.damage_pop = true
    end
每回合回复已损失生命值10%,可以和中毒状态共存(先中毒扣血再自愈回血)
回复 支持 反对

使用道具 举报

Lv5.捕梦者

梦石
0
星屑
36129
在线时间
10712 小时
注册时间
2009-3-15
帖子
4806
5
发表于 2016-8-12 13:03:45 | 只看该作者
本帖最后由 soulsaga 于 2016-8-13 16:18 编辑

RUBY 代码复制
  1. # ● 应用连续伤害效果
  2.   #--------------------------------------------------------------------------
  3.   def slip_damage_effect
  4.  
  5.      if self.state?(3)
  6.  
  7.      # 设置伤害
  8.  
  9.       self.damage = self.maxhp / 20
  10.  
  11.        # 分散
  12.  
  13.       if self.damage.abs > 0
  14.  
  15.          amp = [self.damage.abs * 15 / 100, 1].max
  16.  
  17.          self.damage += rand(amp+1) + rand(amp+1) - amp
  18.  
  19.        # HP 的伤害减法运算
  20.  
  21.       self.hp -= self.damage
  22.       return true
  23.       end
  24.       end
  25.  
  26.      #猛毒
  27.  
  28.      if self.state?(4)
  29.        #设置伤害
  30.  
  31.       self.damage = self.maxhp / 10
  32.  
  33.        # 分散
  34.  
  35.       if self.damage.abs > 0
  36.  
  37.          amp = [self.damage.abs * 15 / 100, 1].max
  38.  
  39.          self.damage += rand(amp+1) + rand(amp+1) - amp
  40.  
  41.        # HP 的伤害减法运算
  42.  
  43.       self.hp -= self.damage
  44.       return true
  45.        end
  46.        end
  47. end
  48.      # 过程结束

漏了DEF对应的END..补上..

评分

参与人数 1星屑 +5 收起 理由
夜狠简单 + 5 触瞎

查看全部评分

回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
35 小时
注册时间
2016-1-17
帖子
60
6
 楼主| 发表于 2016-8-12 13:24:57 | 只看该作者
soulsaga 发表于 2016-8-12 13:03
# ● 应用连续伤害效果
  #------------------------------------------------------------------------- ...

这个脚本不行,
如果直接复制在Game_Battler 3中,在战斗测试中会在攻击的时候回提示
self.damage *= elements_correct(attacker.element_set)     #Game_Battler 3第53行
出错了。

点评

补上一点:叫NoMethoderror  发表于 2016-8-12 13:31
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
35 小时
注册时间
2016-1-17
帖子
60
7
 楼主| 发表于 2016-8-12 14:01:54 | 只看该作者
不好意思,我刚刚仔细看来一下,发现烧伤和中毒两个状态的伤害使用之前的脚本可以叠加!!!
但由于系统只显示烧伤的数字而没有发现
因此问题基本已经解决(是从来没有问题好吧。。。)。
但如果还能锦上添花的那就是让数字显示烧伤和中毒的合计数值或者分别显示。
回复 支持 反对

使用道具 举报

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

本版积分规则

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

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-9-22 06:47

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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