Project1

标题: 如何让恢复血或者魔的技能或物品起到这样的效果? [打印本页]

作者: LOVE丶莫颜    时间: 2012-6-22 16:55
标题: 如何让恢复血或者魔的技能或物品起到这样的效果?
打个比方说:
1:
A对B使用了XXX技能(回血类的)

B的血量不是马上恢复,而是缓慢恢复。

2:
A使用了XXX物品(回血类的)


A的血量不是马上恢复,而是缓慢恢复。

3:

A挂机,随着时间的流逝,

血量和魔力缓慢恢复。

如何做到以上这样子的效果呢?

dsu_plus_rewardpost_czw
作者: 54酱    时间: 2012-6-22 17:29
1、2使用状态恢复
3.请参考小瞬的挂机系统
作者: jelin    时间: 2012-6-22 21:55
厲害.樓上的.
作者: 符文    时间: 2012-6-22 22:54
可以用公共事件附加。
具体的楼主应该很容易摸索的。
其实很多事情就是这么简单。
作者: 腐琴琴    时间: 2012-6-23 09:26
同2楼
第一第二个就是用了物品或者技能后给角色一个状态。这个状态勾选“连续伤害”
然后找到“● 应用连续伤害效果”进行修改
def slip_damage_effect
    # 设置伤害
    self.damage = self.maxhp * 3 / 100 #这个是加血扣血的比例
    # 分散
    if self.damage.abs > 0
      amp = [self.damage.abs * 15 / 100, 1].max
      self.damage += rand(amp+1) + rand(amp+1) - amp
    end
    # HP 的伤害减法运算
    if self.state?(11)  #状态11就加血
      self.hp += self.damage
    end
    if self.state?(12)
      self.hp -= self.damage #状态12就中毒
    end
    # 过程结束
    return true
  end

===================================================
挂机回复是不是站着不动的时候回复血啊……
可以写个公共事件,并行处理
条件分歧,脚本:$game_player.moving?
除此以外的场合回复血。
分歧结束
等待XXX帧
作者: chd114    时间: 2012-6-23 15:01
很简单,使用某个物品的时候X开关打开,在公共事件里面放一个并行处理的事件,出现条件设置为X号开关打开,在那个事件里面这样写:

(如果是1分钟里每秒恢复X的话,重复我指出来的步骤60次即可)

等待20真(1秒)
HP+10

等待20真
HP+10
作者: chd114    时间: 2012-6-23 15:20
难道你要脚本?
作者: kangxi0109    时间: 2012-6-23 18:05
关于持续回血、回魔的状态,需要修改两个部分的脚本,分别是作为战斗效果部分的Game_Battler 3以及地图效果部分的Game_Party,两个部分可分开使用,比如想做战斗中恢复,但战斗以外的情况下伤害,又或者是相反的情况。下面以100号回血,200号回魔的状态为例:
1.Game_Battler 3的部分:

  1.   #--------------------------------------------------------------------------
  2.   # ● 应用连续伤害效果
  3.   #--------------------------------------------------------------------------
  4.   def slip_damage_effect
  5.     # 设置伤害
  6. #--------------------------------------------------修改部分↓
  7. if self.state?(200)#增加一个判定用来分开回血回魔
  8.   if self.state?(200)#
  9.        self.damage = -self.maxsp / 10
  10.    end
  11.     # 分散
  12.     if self.damage.abs > 0
  13.       amp = [self.damage.abs * 15 / 100, 1].max
  14.       self.damage += rand(amp+1) + rand(amp+1) - amp
  15.     end
  16.     # HP 的伤害减法运算
  17.     self.sp -= self.damage #魔力减法运算
  18. else
  19. if self.state?(100) #
  20.   self.damage = -self.maxhp / 10 #改为增加10%血量
  21. else
  22.     self.damage = self.maxhp / 10
  23. end
  24. #--------------------------------------------------
  25.     # 分散
  26.     if self.damage.abs > 0
  27.       amp = [self.damage.abs * 15 / 100, 1].max
  28.       self.damage += rand(amp+1) + rand(amp+1) - amp
  29.     end
  30.     # HP 的伤害减法运算
  31.     self.hp -= self.damage
  32. end #判定回血回魔的end
  33.     # 过程结束
  34.     return true
  35.   end
复制代码
2.Game_Party的部分:

  1.   #--------------------------------------------------------------------------
  2.   # ● 检查连续伤害 (地图用)
  3.   #--------------------------------------------------------------------------
  4.   def check_map_slip_damage
  5.     for actor in @actors
  6. #---------------------------------------------------------------------修改部分↓
  7.      if actor.state?(100) #
  8.        actor.hp += [actor.maxhp / 100, 1].max #持续恢复1%血量
  9.      end
  10.      if actor.state?(200) #
  11.        actor.sp += [actor.maxsp / 100, 1].max #持续恢复1%魔力
  12.      end
  13.     if actor.state?(100) or actor.state?(200) #增加这个判定是为了在回血状态下屏蔽掉红屏的效果
  14.    elsif actor.hp > 0 and actor.slip_damage?
  15. #-----------------------------------------------------------------------
  16.         actor.hp -= [actor.maxhp / 100, 1].max
  17.         if actor.hp == 0
  18.           $game_system.se_play($data_system.actor_collapse_se)
  19.         end
  20.         $game_screen.start_flash(Color.new(255,0,0,128), 4)
  21.         $game_temp.gameover = $game_party.all_dead?
  22.       end
  23.     end
  24.   end
复制代码
大体就是这样,其实回血就是将伤血状态造成的伤害改为负数,回魔则是将hp改为sp罢了。用这个方法还可以做出持续伤害魔力的状态。




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