Project1

标题: 如何使角色在临死时自动附加状态? [打印本页]

作者: stevenrock    时间: 2011-6-28 22:30
标题: 如何使角色在临死时自动附加状态?
本帖最后由 stevenrock 于 2011-6-29 20:23 编辑

我注意到了,当角色生命值低到一定程度时候,生命值的数字会变成黄色。(我用的是原版战斗系统)
能否让角色在生命垂危的时候自动附加某个状态?然后当生命脱离危险后,状态也随之自动消除?

我搜索时,发现了一个样板,也许用这个可以制作出来这样的效果……
好心的人,帮帮忙?dsu_plus_rewardpost_czw

slick_HPSP人性化设定_114379486.rar

1.52 MB, 下载次数: 51


作者: Wind2010    时间: 2011-6-29 07:58
  1.   #--------------------------------------------------------------------------
  2.   # ● 更改 HP
  3.   #     hp : 新的 HP
  4.   #--------------------------------------------------------------------------
  5.   def hp=(hp)
  6.     @hp = [[hp, maxhp].min, 0].max
  7.     # 解除附加的战斗不能状态
  8.     for i in 1...$data_states.size
  9.       if $data_states[i].zero_hp
  10.         if self.dead?
  11.           add_state(i)
  12.         else
  13.           remove_state(i)
  14.         end
  15.       end
  16.     end
  17.   end
复制代码
这是在默认系统里Game_Battle的一个定义,每次更改HP都会使用
可以根据HP改变后的数值来确定是否增加某个状态
  1.   if self.is_a?(Game_Actor)
复制代码
判断self是否角色(Game_Actor类)
作者: 天空坠落    时间: 2011-6-29 08:57
提示: 作者被禁止或删除 内容自动屏蔽
作者: qazsdwexc    时间: 2011-6-29 10:00
本帖最后由 qazsdwexc 于 2011-6-29 10:32 编辑

Project2.rar (186.52 KB, 下载次数: 16) 这个方法普通战斗就可行,先建立你要的状态
然后在你要发动此状态的队伍做一下设置
之后在战斗时就会出现 经测试可行- -嗯.....还有你如果不想刚发动状态还没行动就被打死,在队伍设置事件发动条件那里距离必须要是回合
作者: Wind2010    时间: 2011-6-29 19:35
Wind2010 发表于 2011-6-29 07:58
这是在默认系统里Game_Battle的一个定义,每次更改HP都会使用
可以根据HP改变后的数值来确定是否增加某个状 ...

第6行确定了新的HP值,然后可以通过@hp*100/maxhp(HP百分比)来确定是否附加状态
作者: stevenrock    时间: 2011-6-29 20:22
Wind2010 发表于 2011-6-29 19:35
第6行确定了新的HP值,然后可以通过@hp*100/maxhp(HP百分比)来确定是否附加状态 ...

我完成一小半了,帮忙修改一下吧……谢谢你了……等会我追加悬赏给你。
呵呵。

Project3.rar

186.6 KB, 下载次数: 15


作者: Wind2010    时间: 2011-6-29 20:39
stevenrock 发表于 2011-6-29 20:22
我完成一小半了,帮忙修改一下吧……谢谢你了……等会我追加悬赏给你。
呵呵。 ...
  1.   #--------------------------------------------------------------------------
  2.   # ● 更改 HP
  3.   #     hp : 新的 HP
  4.   #--------------------------------------------------------------------------
  5.   def hp=(hp)
  6.     @hp = [[hp, maxhp].min, 0].max
  7.     # 解除附加的战斗不能状态
  8.     for i in 1...$data_states.size
  9.       if $data_states[i].zero_hp
  10.         if self.dead?
  11.           add_state(i)
  12.         else
  13.           remove_state(i)
  14.         end
  15.       end
  16.       #####
  17.       return unless self.is_a?(Game_Actor)
  18.       # ↑如果不是Game_Actor类的话则跳过下面
  19.       if @hp*100/maxhp <= 30 #如果HP百分比低于30的话
  20.         add_state(17)
  21.       else        
  22.         remove_state(17)
  23.       end
  24.       #####
  25.     end
  26.   end
复制代码





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