Project1
标题: 求,一状态在HP低于X%解除 [打印本页]
作者: 是猪别乱叫 时间: 2016-10-9 10:21
标题: 求,一状态在HP低于X%解除 求新增状态解除条件,回合结束时如果HP低于x%时自动解除
作者: 七重 时间: 2016-10-10 20:04
本帖最后由 七重 于 2016-10-10 21:01 编辑
class Game_BattlerBase
def refresh
state_resist_set.each { |state_id| erase_state( state_id) }
@hp = [ [ @hp, mhp] .min , 0 ] .max
@mp = [ [ @mp, mmp] .min , 0 ] .max
@hp == 0 ? add_state( death_state_id) : remove_state( death_state_id)
if hp_rate <= 0.3 #生命值的百分比。
remove_state( 4 ) #狀態的編號。
end
end
end
class Game_BattlerBase
def refresh
state_resist_set.each { |state_id| erase_state( state_id) }
@hp = [ [ @hp, mhp] .min , 0 ] .max
@mp = [ [ @mp, mmp] .min , 0 ] .max
@hp == 0 ? add_state( death_state_id) : remove_state( death_state_id)
if hp_rate <= 0.3 #生命值的百分比。
remove_state( 4 ) #狀態的編號。
end
end
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 编辑
module Krst7e
LimitedHp_Rate = 0.3 #设置生命值比率
Limited_State = 4 #设置状态的编号
Limited_Class = 1 #设置能够享受这个效果的职业的编号
end
################################################
class Game_BattlerBase
def refresh
state_resist_set.each { |state_id| erase_state( state_id) }
@hp = [ [ @hp, mhp] .min , 0 ] .max
@mp = [ [ @mp, mmp] .min , 0 ] .max
@hp == 0 ? add_state( death_state_id) : remove_state( death_state_id)
if hp_rate <= Krst7e::LimitedHp_Rate
add_state( Krst7e::Limited_State ) # if @class_id == Krst7e::Limited_Class
end
if hp_rate > Krst7e::LimitedHp_Rate
remove_state( Krst7e::Limited_State )
end
end
end
module Krst7e
LimitedHp_Rate = 0.3 #设置生命值比率
Limited_State = 4 #设置状态的编号
Limited_Class = 1 #设置能够享受这个效果的职业的编号
end
################################################
class Game_BattlerBase
def refresh
state_resist_set.each { |state_id| erase_state( state_id) }
@hp = [ [ @hp, mhp] .min , 0 ] .max
@mp = [ [ @mp, mmp] .min , 0 ] .max
@hp == 0 ? add_state( death_state_id) : remove_state( death_state_id)
if hp_rate <= Krst7e::LimitedHp_Rate
add_state( Krst7e::Limited_State ) # if @class_id == Krst7e::Limited_Class
end
if hp_rate > Krst7e::LimitedHp_Rate
remove_state( Krst7e::Limited_State )
end
end
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 编辑
module Krst7e
LimitedHp_Rate = 0.3 #设置生命值比率
Limited_State = 4 #设置状态的编号
Limited_Class = 1 #设置能够享受这个效果的职业的编号
end
################################################
class Game_BattlerBase
alias Krst7e_refresh refresh
def refresh
Krst7e_refresh
hp_rate <= Krst7e::LimitedHp_Rate ? ( add_state( Krst7e::Limited_State ) if
@class_id == Krst7e::Limited_Class ) : remove_state( Krst7e::Limited_State )
end
end
module Krst7e
LimitedHp_Rate = 0.3 #设置生命值比率
Limited_State = 4 #设置状态的编号
Limited_Class = 1 #设置能够享受这个效果的职业的编号
end
################################################
class Game_BattlerBase
alias Krst7e_refresh refresh
def refresh
Krst7e_refresh
hp_rate <= Krst7e::LimitedHp_Rate ? ( add_state( Krst7e::Limited_State ) if
@class_id == Krst7e::Limited_Class ) : remove_state( Krst7e::Limited_State )
end
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