Project1
标题:
用血量做技能的公共事件一问
[打印本页]
作者:
cheukhei96302
时间:
2012-7-16 11:48
标题:
用血量做技能的公共事件一问
请问怎样可以用公共事件做出,
某角色血量低过或等如25%才会用到某一个技能,
当血量高过时就不能使用? dsu_plus_rewardpost_czw
作者:
a364774426
时间:
2012-7-16 11:55
此脚本可以满足你的需求
=begin
■スキル使用条件 RGSS2 DAIpage■ v1.2
●機能●
・メモ欄での設定で使用者などの状況により、スキルの使用を制限します。
・使用不可な場合、ウインドウのスキル表示は半透明になります。消す事はできません。
●使用法●
・以下の二つのタグの中に設定します。
<特殊使用条件>
</特殊使用条件>
<特殊使用条件>で設定開始、</特殊使用条件>で必ず閉じて下さい。
タグの外部に設定しても反映されません。
一行に複数の項目(タグを含む)を設定しないで下さい。
●使用法●
・設定できる条件は以下のとおり。
最大HP, n # 最大HPが n 以上で使用可能
最大MP, n # 最大MPが n 以上で使用可能
HP, n # HPが n 以上で使用可能
MP, n # MPが n 以上で使用可能
HP%以上, n # HPが n %以上で使用可能
MP%以上, n # MPが n %以上で使用可能
HP%以下, n # HPが n %以下で使用可能
MP%以下, n # MPが n %以下で使用可能
攻撃力, n # 攻撃力が n 以上で使用可能
守備力, n # 守備力が n 以上で使用可能
精神力, n # 精神力が n 以上で使用可能
敏捷性, n # 敏捷性が n 以上で使用可能
状态, n # 状态 n になっていれば使用可能
武器, n # 武器ID n を装備中に使用可能
防具, n # 防具ID n を装備中に使用可能
属性, n # 通常攻撃の属性IDが n の時に使用可能
开关, n # 开关番号 n がオンの時に使用可能
複数の項目を設定した場合、全ての条件を満たさないと使用できません。
状态,武器,防具は複数設定可能。その場合は行を別けて下さい。
●メモ欄記述例●
# 最大HPが100以上で、状态9になっている場合にのみ使用可能。
<特殊使用条件>
最大HP,100
状态,9
</特殊使用条件>
●再定義している箇所●
Game_Battlerをエイリアス
※同じ箇所を変更するスクリプトと併用した場合は競合する可能性があります。
●更新履歴●
09/03/03:最大MPが0のキャラがいる場合にエラー落ちする不具合を修正。
09/03/03:%指定の条件が正しく機能していない不具合を修正。
09/02/21:公開
=end
#============================================================================
# ■ メモ欄ワード用(変更しない事)
#============================================================================
module DAI_Skill_Use_Conditions
ST = "<特殊使用条件>"
ED = "</特殊使用条件>"
R = ["最大HP",
"最大MP",
"HP",
"MP",
"HP%以上",
"MP%以上",
"HP%以下",
"MP%以下",
"攻撃力",
"守備力",
"精神力",
"敏捷性",
"状态",
"武器",
"防具",
"属性",
"开关"
]
end
#==============================================================================
# ■ Skill_Use_Conditions
#------------------------------------------------------------------------------
# スキルの使用条件を判定するクラスです。
#==============================================================================
class Skill_Use_Conditions
#--------------------------------------------------------------------------
# ● オブジェクト初期化
#--------------------------------------------------------------------------
def initialize(skill, battler)
@skill = skill
@battler = battler
@result = {"最大HP" => 0,
"最大MP" => 0,
"HP" => 0,
"MP" => 0,
"HP%以上" => 0,
"MP%以上" => 0,
"HP%以下" => 0,
"MP%以下" => 0,
"攻撃力" => 0,
"守備力" => 0,
"精神力" => 0,
"敏捷性" => 0,
"状态" => [],
"武器" => [],
"防具" => [],
"属性" => [],
"开关" => 0
}
@battler_st = [@battler.maxhp,
@battler.maxmp,
@battler.hp,
@battler.mp,
@battler.hp * 100 / @battler.maxhp * 100 / 100,
@battler.mp * 100 / [@battler.maxmp, 1].max * 100 / 100,
@battler.hp * 100 / @battler.maxhp * 100 / 100,
@battler.mp * 100 / [@battler.maxmp, 1].max * 100 / 100,
@battler.atk,
@battler.def,
@battler.spi,
@battler.agi,
]
end
#--------------------------------------------------------------------------
# ● 使用可能条件判定
#--------------------------------------------------------------------------
def use?
note_get
r = []
for i in DAI_Skill_Use_Conditions::R
r.push @result[i]
end
# 最大HP~MP%以上まで
for i in 0..5
return false if @battler_st[i] < r[i]
end
# %以下
for i in 6..7
return false if @battler_st[i] > r[i] && r[i] != 0
end
# 攻撃力~敏捷性まで
for i in 8..11
return false if @battler_st[i] < r[i]
end
# 状态
for i in r[12]
return false unless @battler.state?(i)
end
# 武器防具
if @battler.actor?
for i in r[13]
return false unless @battler.weapons.include?($data_weapons[i])
end
for i in r[14]
return false unless @battler.armors.include?($data_armors[i])
end
end
# 属性
for i in r[15]
return false unless @battler.element_set == i
end
# 开关
if r[16] > 0
return $game_switches[r[16]]
end
return true
end
#--------------------------------------------------------------------------
# ● メモ欄判別
#--------------------------------------------------------------------------
def note_get
return unless @skill.is_a?(RPG::Skill)
@skill.note.each_line{|line|
@flg = true if line.include?(DAI_Skill_Use_Conditions::ST)
@flg = false if line.include?(DAI_Skill_Use_Conditions::ED)
next if line.include?(DAI_Skill_Use_Conditions::ST)
next if line.include?(DAI_Skill_Use_Conditions::ED)
if @flg
a = line.split(/\s*,\s*/)
if @result.include?(a[0])
if @result[a[0]].is_a?(Array)
@result[a[0]].push a[1].to_i
else
@result[a[0]] = a[1].to_i
end
end
end
}
end
end
#==============================================================================
# ■ Game_Battler
#==============================================================================
class Game_Battler
#--------------------------------------------------------------------------
# ● スキルの使用可能判定
#--------------------------------------------------------------------------
alias dai_skill_can_use? skill_can_use?
def skill_can_use?(skill)
condition = Skill_Use_Conditions.new(skill, self)
return false unless condition.use?
return dai_skill_can_use?(skill)
end
end
复制代码
作者:
cheukhei96302
时间:
2012-7-16 12:03
真的万分感谢!
欢迎光临 Project1 (https://rpg.blue/)
Powered by Discuz! X3.1