酆城浪子 发表于 2010-6-17 19:25:51

腿神帮忙,状态问题。。。菜

研究中毒状态,怎么在持续伤害那段脚本加上并列的其他状态?
中文意思大概是这样:

如果是状态【3】 #中毒
计算HP持续伤害
处理伤害

如果是状态【4】 #魔力流失
计算SP持续伤害
处理伤害

如果是状态【5】 #生命恢复
计算HP持续伤害(加血)
处理伤害

如果是状态【6】 #魔法恢复
计算SP持续伤害
处理伤害

完毕

谢了腿神,完美解决问题。。。

liqunsz 发表于 2010-6-17 21:31:16

用绿发Eclair的脚本改了一下,终于看懂了,但这种傻到不行的脚本我还是懂滴,不过不是腿神大人答也可以吧
位于Game_Battler 3中


#--------------------------------------------------------------------------
# ● 应用连续伤害效果
#--------------------------------------------------------------------------
def slip_damage_effect
    # 设置伤害
############################################################
    #在“中毒”的状态下,每回合HP减去十六分之一。
    if self.states.include?(3)
      self.damage = self.maxhp / 16
    ############################################################
    #在“魔力流失”的状态下,每回合SP减去十六分之一。
    if self.states.include?(4)
      self.damage = self.maxsp / 16
    ############################################################
    #在“生命恢复”的状态下,每回合HP回复十分之一
    elsif self.states.include?(5)
       self.damage = -self.maxhp / 10
    else
    self.damage = self.maxhp / 10
end
    ############################################################
    #在“魔法恢复”的状态下,每回合SP回复十分之一
    elsif self.states.include?(6)
       self.damage = -self.maxsp / 10
    else
    self.damage = self.maxsp / 10
end
    ############################################################

    # 分散
    if self.damage.abs > 0
      amp = .max
      self.damage += rand(amp+1) + rand(amp+1) - amp
    end
    # HP 的伤害减法运算
    self.hp -= self.damage
    # 过程结束
    return true
end

secondsen 发表于 2010-6-17 21:54:17

差不多应该就是这个样子了。。。做做实验看吧。。。就是脚本的格式太“难看”,也太难“看”了

酆城浪子 发表于 2010-6-18 06:40:19

表示无语,应用不能。。。设置状态后不勾连续伤害,状态变化之后SP不动,勾上连续伤害的话减HP。SP依旧不动。。。生命 / 魔法恢复同样不能。。。谁能给一个实现这个目的的范例或详尽教程?
中毒后持续减HP,中魔法消失持续减SP,中恢复持续加HP,中魔法恢复持续加SP。
能无视战斗中和战斗外最好,只能在战斗中实现也行

secondsen 发表于 2010-6-18 08:53:11

如果是状态【4】 #魔力流失
计算SP持续伤害
处理伤害


我还以为是 按照 SP的百分比长 HP。。orz

secondsen 发表于 2010-6-18 09:12:48

替换 game_battler3 的def slip_damage_effect

def damage_amp(damage)
    # 分散
    if damage.abs > 0
      amp = .max
      damage = rand(amp+1) + rand(amp+1) - amp
    end
    return damage
end
#--------------------------------------------------------------------------
# ● 应用连续伤害效果
#--------------------------------------------------------------------------
def slip_damage_effect
    if @states.include?(3)
      # 设置伤害
      self.damage = self.maxhp / 10
      self.damage += damage_amp(self.damage)
      # HP 的伤害减法运算
      self.hp -= self.damage
    end
    if @states.include?(4)
      # 设置削魔
      self.damage = self.maxsp / 10
      self.damage += damage_amp(self.damage)
      # SP 的伤害减法运算
      self.sp -= self.damage
    end
    if @states.include?(5)
      # 设置加血
      self.damage = self.maxhp / 10
      self.damage += damage_amp(self.damage)
      # HP 的伤害减法运算
      self.hp += self.damage
    end
    if @states.include?(6)
      # 设置加魔
      self.damage = self.maxsp / 10
      self.damage += damage_amp(self.damage)
      # SP 的伤害减法运算
      self.sp += self.damage
    end
    # 过程结束
    return true
end

secondsen 发表于 2010-6-18 19:20:02

这个用了之后别的状态可就不能用了啊。。。

比如 你第三个状态是毒7号状态也是毒。。。7号的就不能用了。。。

想用的话

   if @states.include?(3) or @states.include?(7)

这样就可以了、、、、如果太多毒状态的话。。。再说,也很简单。。。不过估计也不能有那么多

酆城浪子 发表于 2010-6-18 22:14:10

被你说中了。。。我的状态都设定了三级,因为人物进阶职业两个,所以一共三个技能。。。
状态同样也是三级了,就拿毒来说,猛毒(3回合正常伤),剧毒(三回合重伤),咒毒(五回合重伤)。。。其次,流血,烧伤等等持续伤害的状态都有三个等级。。。
我正考虑在那个脚本里面继续添加同等级状态。。。
基本上是继续罩着你前面的往下写,不过还没有实验。理论上可行。。。我对那段脚本的理解基本等于事件处理的并列的条件分歧。。。应该没错得太离谱哈。。。明天去欢乐谷玩,等后天回来再实验吧。其实我用公共事件也做了跟这个差不多的效果,但是实在太笨拙了。

secondsen 发表于 2010-6-18 22:53:11

如果效果不同就需要多做几个判断了。。。你把效果说清楚点。。我看看

酆城浪子 发表于 2010-6-21 21:11:47

回 8楼(secondsen) 的帖子

自己弄了。。。其实效果就是加血加蓝减血减兰为基础,其他的RM默认的那些选项组合起来已经足够用了。 而且我已经不想再增加我的美工工程了,地图,战斗图和动画就够我画到死了
页: [1] 2
查看完整版本: 腿神帮忙,状态问题。。。菜