Project1

标题: 制作新的持续伤害异常状态 [打印本页]

作者: 闲逛的    时间: 2007-8-3 23:09
提示: 作者被禁止或删除 内容自动屏蔽
作者: 闲逛的    时间: 2007-8-3 23:09
提示: 作者被禁止或删除 内容自动屏蔽
作者: cftx    时间: 2007-8-3 23:36
我只知道需要改脚本的做法,主站上有详细教学

状态共存在数据库里就可以设置
作者: 闲逛的    时间: 2007-8-3 23:47
提示: 作者被禁止或删除 内容自动屏蔽
作者: cftx    时间: 2007-8-4 03:25
我知道,没什么问题,我的游戏里就有3个不同的持续伤害,还有持续恢复...........

唉。。。算了,详细给你说一下吧
持续伤害的处理位于Game_Party(平时行走时造成伤害)和Game_Battler 3,分别修改这两处即可
以game_party为例,搜索slip_damage找到以下内容
  #--------------------------------------------------------------------------
  # ● 检查连续伤害 (地图用)
  #--------------------------------------------------------------------------
  def check_map_slip_damage
    for actor in @actors
      if actor.hp > 0 and actor.slip_damage?
        actor.hp -= [actor.maxhp / 100, 1].max
        if actor.hp == 0
          $game_system.se_play($data_system.actor_collapse_se)
        end
        $game_screen.start_flash(Color.new(255,0,0,128), 4)
        $game_temp.gameover = $game_party.all_dead?
      end
    end
  end
作者: ?????    时间: 2007-8-4 03:37
以下引用cftx于2007-8-3 19:25:11的发言:

我知道,没什么问题,我的游戏里就有3个不同的持续伤害,还有持续恢复...........

唉。。。算了,详细给你说一下吧
持续伤害的处理位于Game_Party(平时行走时造成伤害)和Game_Battler 3,分别修改这两处即可
以game_party为例,搜索slip_damage找到以下内容
#--------------------------------------------------------------------------
# ● 检查连续伤害 (地图用)
#--------------------------------------------------------------------------
def check_map_slip_damage
   for actor in @actors
     if actor.hp > 0 and actor.slip_damage?
       actor.hp -= [actor.maxhp / 100, 1].max
       if actor.hp == 0
         $game_system.se_play($data_system.actor_collapse_se)
       end
       $game_screen.start_flash(Color.new(255,0,0,128), 4)
       $game_temp.gameover = $game_party.all_dead?
     end
   end
end


[本贴由作者于 2007-8-3 19:28:46 最后编辑]


很好,很强大,很尽责的解释。
顺便说一下,通过这个可以改掉血时的效果。
作者: cftx    时间: 2007-8-4 03:38
详细说明。。。。。
  #--------------------------------------------------------------------------
  # ● 检查连续伤害 (地图用)
  #--------------------------------------------------------------------------
  def check_map_slip_damage
    for actor in @actors
      if actor.hp > 0 and actor.slip_damage?
从这里开始,就是对连续伤害的处理了,我们可以通过添加各种判断达到多重连续伤害的效果
        actor.hp -= [actor.maxhp / 100, 1].max这是对角色的伤害
        if actor.hp == 0  这下面是人物对死亡的判断,对于持续恢复可以不要这些
          $game_system.se_play($data_system.actor_collapse_se)
        end
        $game_screen.start_flash(Color.new(255,0,0,128), 4)
        $game_temp.gameover = $game_party.all_dead?
到此结束

      end
    end
  end

试将以上彩色部分修改成如下内容:
if actor.state?(3)      #当人物有3号状态时
        actor.hp -= 20  #每次减20血
elsif actor.state?(4)      #当人物有4号状态时
       actor.hp -= 10  #每次减10血
        actor.sp -= 20  #每次减20魔
elsif actor.state?(5)  #当人物有5号状态时
      actor.hp -= actor.hp/10   #每次减当前血量的10%
end
        if actor.hp == 0  #这下面是人物对死亡的判断,对于持续恢复可以不要这些
          $game_system.se_play($data_system.actor_collapse_se)
        end
        $game_screen.start_flash(Color.new(255,0,0,128), 4)
        $game_temp.gameover = $game_party.all_dead?

这样,你就拥有了3号、4号、5号这三个不同的连续伤害状态,在game_battler也做修改就可以让它们在战斗时也发挥作用(需要注意战斗时用self而不是actor),用类似
用类似的修改可以达到任何想要的效果 [LINE]1,#dddddd[/LINE]系统信息:本贴由楼主认可为正确答案,66RPG感谢您的热情解答~




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