Project1
标题:
这个脚本该如何使用?
[打印本页]
作者:
火烧兔子的马甲
时间:
2013-12-16 19:07
标题:
这个脚本该如何使用?
这是一个限制技能条件的脚本,在数据库-技能的备注里填下:
<特殊使用条件>
武器,9
</特殊使用条件>
此时,这个技能只有在装备了9号武器之后才能使用
现在我想这样子:
<特殊使用条件>
属性,9
</特殊使用条件>
我的本意是,在属性上增添“剑”/“弓箭”等属性,然后某些技能如“散射”只能在装备弓箭的情况下使用,属性的作用是判断武器类型,但是这样却没效果?
=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)
[url=home.php?mod=space&uid=260100]@skill[/url] = skill
[url=home.php?mod=space&uid=133701]@battler[/url] = 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
复制代码
作者:
yangjunyin2002
时间:
2013-12-16 19:12
他是指普通攻击时的属性?就是额。。。翻译脚本34行的日语,他和武器无关,因为那是技能特殊使用条件,我也用这个脚本的,只是我只用来让某武器装备才能发技能。
作者:
火烧兔子的马甲
时间:
2013-12-17 23:17
yangjunyin2002 发表于 2013-12-16 19:12
他是指普通攻击时的属性?就是额。。。翻译脚本34行的日语,他和武器无关,因为那是技能特殊使用条件,我也 ...
呃……找别人问清楚了 已经解决了
欢迎光临 Project1 (https://rpg.blue/)
Powered by Discuz! X3.1