赞 | 1 |
VIP | 16 |
好人卡 | 23 |
积分 | 0 |
经验 | 49509 |
最后登录 | 2016-1-9 |
在线时间 | 2459 小时 |
Lv1.梦旅人
- 梦石
- 0
- 星屑
- 48
- 在线时间
- 2459 小时
- 注册时间
- 2011-12-18
- 帖子
- 1484
|
此脚本可以满足你的需求- =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
复制代码 |
|