Project1

标题: 求,一状态在HP低于X%解除 [打印本页]

作者: 是猪别乱叫    时间: 2016-10-9 10:21
标题: 求,一状态在HP低于X%解除
求新增状态解除条件,回合结束时如果HP低于x%时自动解除
作者: 七重    时间: 2016-10-10 20:04
本帖最后由 七重 于 2016-10-10 21:01 编辑

RUBY 代码复制
  1. class Game_BattlerBase
  2.   def refresh
  3.     state_resist_set.each {|state_id| erase_state(state_id) }
  4.     @hp = [[@hp, mhp].min, 0].max
  5.     @mp = [[@mp, mmp].min, 0].max
  6.     @hp == 0 ? add_state(death_state_id) : remove_state(death_state_id)
  7.     if hp_rate <= 0.3 #生命值的百分比。
  8.       remove_state(4)#狀態的編號。
  9.     end
  10.   end
  11. end


在標記的地方設置狀態的編號,比如默認是4號,沉默。
生命值的百分比,寫成小數形式,比如百分之30以下解除就是0.3.
==
class Game_Battler < Game_BattlerBase
  alias krst161010_update_state_turns update_state_turns
  def update_state_turns
    states.each do |state|
      if state.note.include?("<limited>")
        if $game_party.battle_members[0].hp_rate <= 0.3
          remove_state(state.id)
        end
      else
      @state_turns[state.id] -= 1 if @state_turns[state.id] > 0
      end
    end
  end
end

写了个不成熟的。。。
  这个脚本的效果是:
“备注标记有“<limited>”的状态”,会在队伍的第一个角色生命值少于百分之三十的时候解除。

不知道楼主能不能用得上,我不知道这里怎么写成判断状态使用者的血量。。等人来补充吧。。_(:X_L

作者: sq333333    时间: 2016-10-15 10:17
七重 发表于 2016-10-10 20:04
class Game_BattlerBase
  def refresh
    state_resist_set.each {|state_id| erase_state(state_id) }

请问如果是HP低于X%自动附加一个状态的 怎么写
作者: 七重    时间: 2016-10-15 11:23
本帖最后由 七重 于 2016-10-15 11:45 编辑
sq333333 发表于 2016-10-15 10:17
请问如果是HP低于X%自动附加一个状态的 怎么写


RUBY 代码复制
  1. module Krst7e
  2.  
  3.   LimitedHp_Rate = 0.3 #设置生命值比率
  4.  
  5.   Limited_State = 4 #设置状态的编号
  6.  
  7.   Limited_Class = 1 #设置能够享受这个效果的职业的编号
  8.  
  9. end
  10.  
  11. ################################################
  12.  
  13. class Game_BattlerBase
  14.   def refresh
  15.     state_resist_set.each {|state_id| erase_state(state_id) }
  16.     @hp = [[@hp, mhp].min, 0].max
  17.     @mp = [[@mp, mmp].min, 0].max
  18.     @hp == 0 ? add_state(death_state_id) : remove_state(death_state_id)
  19.     if hp_rate <= Krst7e::LimitedHp_Rate
  20.       add_state(Krst7e::Limited_State) # if @class_id == Krst7e::Limited_Class
  21.     end
  22.     if hp_rate > Krst7e::LimitedHp_Rate
  23.        remove_state(Krst7e::Limited_State)
  24.     end
  25.   end
  26. end


在最上面设置。
当生命值高于设置的比率时,这个状态又会消失掉。

嘛 想必需要这个功能的时候,应该也是限度个别的职业才能使用的。
有这个需求的话,就将下面的#号去掉

作者: sq333333    时间: 2016-10-15 12:14
七重 发表于 2016-10-15 11:23
module Krst7e
  
  LimitedHp_Rate = 0.3 #设置生命值比率

感谢大神,回去试试
作者: 夜狠简单    时间: 2016-10-16 19:49
本帖最后由 夜狠简单 于 2016-10-17 12:55 编辑
七重 发表于 2016-10-15 11:23
module Krst7e
  
  LimitedHp_Rate = 0.3 #设置生命值比率


RUBY 代码复制
  1. module Krst7e
  2.  
  3.   LimitedHp_Rate = 0.3 #设置生命值比率
  4.  
  5.   Limited_State = 4 #设置状态的编号
  6.  
  7.   Limited_Class = 1 #设置能够享受这个效果的职业的编号
  8.  
  9. end
  10.  
  11. ################################################
  12.  
  13. class Game_BattlerBase
  14. alias Krst7e_refresh refresh
  15.   def refresh
  16.     Krst7e_refresh
  17.     hp_rate <= Krst7e::LimitedHp_Rate ?  (add_state(Krst7e::Limited_State) if
  18.     @class_id == Krst7e::Limited_Class) : remove_state(Krst7e::Limited_State)
  19.   end
  20. end


那一段可以在如下部分换行
hp_rate <=
Krst7e::LimitedHp_Rate ?
(add_state(Krst7e::Limited_State)  if
@class_id ==
Krst7e::Limited_Class) :
remove_state(Krst7e::Limited_State)




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