设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 1236|回复: 2
打印 上一主题 下一主题

[已经解决] 用血量做技能的公共事件一问

[复制链接]

Lv1.梦旅人

梦石
0
星屑
50
在线时间
129 小时
注册时间
2011-9-27
帖子
10
跳转到指定楼层
1
发表于 2012-7-16 11:48:32 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
请问怎样可以用公共事件做出,
某角色血量低过或等如25%才会用到某一个技能,
当血量高过时就不能使用?

Lv1.梦旅人

梦石
0
星屑
48
在线时间
2459 小时
注册时间
2011-12-18
帖子
1484
2
发表于 2012-7-16 11:55:26 | 只看该作者
此脚本可以满足你的需求
  1. =begin
  2. ■スキル使用条件 RGSS2 DAIpage■ v1.2

  3. ●機能●
  4. ・メモ欄での設定で使用者などの状況により、スキルの使用を制限します。
  5. ・使用不可な場合、ウインドウのスキル表示は半透明になります。消す事はできません。

  6. ●使用法●
  7. ・以下の二つのタグの中に設定します。
  8. <特殊使用条件>
  9. </特殊使用条件>
  10. <特殊使用条件>で設定開始、</特殊使用条件>で必ず閉じて下さい。
  11. タグの外部に設定しても反映されません。
  12. 一行に複数の項目(タグを含む)を設定しないで下さい。

  13. ●使用法●
  14. ・設定できる条件は以下のとおり。

  15. 最大HP, n     # 最大HPが n 以上で使用可能
  16. 最大MP, n     # 最大MPが n 以上で使用可能
  17. HP, n         # HPが n 以上で使用可能
  18. MP, n         # MPが n 以上で使用可能
  19. HP%以上, n   # HPが n %以上で使用可能
  20. MP%以上, n   # MPが n %以上で使用可能
  21. HP%以下, n   # HPが n %以下で使用可能
  22. MP%以下, n   # MPが n %以下で使用可能
  23. 攻撃力, n     # 攻撃力が n 以上で使用可能
  24. 守備力, n     # 守備力が n 以上で使用可能
  25. 精神力, n     # 精神力が n 以上で使用可能
  26. 敏捷性, n     # 敏捷性が n 以上で使用可能
  27. 状态, n   # 状态 n になっていれば使用可能
  28. 武器, n       # 武器ID n を装備中に使用可能
  29. 防具, n       # 防具ID n を装備中に使用可能
  30. 属性, n       # 通常攻撃の属性IDが n の時に使用可能
  31. 开关, n   # 开关番号 n がオンの時に使用可能

  32. 複数の項目を設定した場合、全ての条件を満たさないと使用できません。
  33. 状态,武器,防具は複数設定可能。その場合は行を別けて下さい。

  34. ●メモ欄記述例●

  35. # 最大HPが100以上で、状态9になっている場合にのみ使用可能。
  36. <特殊使用条件>
  37. 最大HP,100
  38. 状态,9
  39. </特殊使用条件>
  40.  
  41. ●再定義している箇所●
  42.  Game_Battlerをエイリアス

  43.  ※同じ箇所を変更するスクリプトと併用した場合は競合する可能性があります。

  44. ●更新履歴●
  45. 09/03/03:最大MPが0のキャラがいる場合にエラー落ちする不具合を修正。
  46. 09/03/03:%指定の条件が正しく機能していない不具合を修正。
  47. 09/02/21:公開

  48. =end

  49. #============================================================================
  50. # ■ メモ欄ワード用(変更しない事)
  51. #============================================================================
  52. module DAI_Skill_Use_Conditions
  53.   ST = "<特殊使用条件>"
  54.   ED = "</特殊使用条件>"
  55.   R = ["最大HP",
  56.        "最大MP",
  57.         "HP",
  58.         "MP",
  59.         "HP%以上",
  60.         "MP%以上",
  61.         "HP%以下",
  62.         "MP%以下",
  63.         "攻撃力",
  64.         "守備力",
  65.         "精神力",
  66.         "敏捷性",
  67.         "状态",
  68.         "武器",
  69.         "防具",
  70.         "属性",
  71.         "开关"
  72.         ]
  73. end
  74. #==============================================================================
  75. # ■ Skill_Use_Conditions
  76. #------------------------------------------------------------------------------
  77. #    スキルの使用条件を判定するクラスです。
  78. #==============================================================================
  79. class Skill_Use_Conditions
  80.   #--------------------------------------------------------------------------
  81.   # ● オブジェクト初期化
  82.   #--------------------------------------------------------------------------
  83.   def initialize(skill, battler)
  84.     @skill = skill
  85.     @battler = battler
  86.     @result = {"最大HP" => 0,
  87.                "最大MP" => 0,
  88.                "HP" => 0,
  89.                "MP" => 0,
  90.                "HP%以上" => 0,
  91.                "MP%以上" => 0,
  92.                "HP%以下" => 0,
  93.                "MP%以下" => 0,
  94.                "攻撃力" => 0,
  95.                "守備力" => 0,
  96.                "精神力" => 0,
  97.                "敏捷性" => 0,
  98.                "状态" => [],
  99.                "武器" => [],
  100.                "防具" => [],
  101.                "属性" => [],
  102.                "开关" => 0
  103.                }
  104.     @battler_st = [@battler.maxhp,
  105.                    @battler.maxmp,
  106.                    @battler.hp,
  107.                    @battler.mp,
  108.                    @battler.hp * 100 / @battler.maxhp * 100 / 100,
  109.                    @battler.mp * 100 / [@battler.maxmp, 1].max * 100 / 100,
  110.                    @battler.hp * 100 / @battler.maxhp * 100 / 100,
  111.                    @battler.mp * 100 / [@battler.maxmp, 1].max * 100 / 100,
  112.                    @battler.atk,
  113.                    @battler.def,
  114.                    @battler.spi,
  115.                    @battler.agi,
  116.                    ]
  117.   end
  118.   #--------------------------------------------------------------------------
  119.   # ● 使用可能条件判定
  120.   #--------------------------------------------------------------------------
  121.   def use?
  122.     note_get
  123.     r = []
  124.     for i in DAI_Skill_Use_Conditions::R
  125.       r.push @result[i]
  126.     end
  127.     # 最大HP~MP%以上まで
  128.     for i in 0..5
  129.       return false if @battler_st[i] < r[i]
  130.     end
  131.     # %以下
  132.     for i in 6..7
  133.       return false if @battler_st[i] > r[i] && r[i] != 0
  134.     end
  135.     # 攻撃力~敏捷性まで
  136.     for i in 8..11
  137.       return false if @battler_st[i] < r[i]
  138.     end
  139.     # 状态
  140.     for i in r[12]
  141.       return false unless @battler.state?(i)
  142.     end
  143.     # 武器防具
  144.     if @battler.actor?
  145.       for i in r[13]
  146.         return false unless @battler.weapons.include?($data_weapons[i])
  147.       end
  148.       for i in r[14]
  149.         return false unless @battler.armors.include?($data_armors[i])
  150.       end
  151.     end
  152.     # 属性
  153.     for i in r[15]
  154.       return false unless @battler.element_set == i
  155.     end
  156.     # 开关
  157.     if r[16] > 0
  158.       return $game_switches[r[16]]
  159.     end
  160.     return true
  161.   end
  162.   #--------------------------------------------------------------------------
  163.   # ● メモ欄判別
  164.   #--------------------------------------------------------------------------
  165.   def note_get
  166.     return unless @skill.is_a?(RPG::Skill)
  167.     @skill.note.each_line{|line|
  168.       @flg = true if line.include?(DAI_Skill_Use_Conditions::ST)
  169.       @flg = false if line.include?(DAI_Skill_Use_Conditions::ED)
  170.       next if line.include?(DAI_Skill_Use_Conditions::ST)
  171.       next if line.include?(DAI_Skill_Use_Conditions::ED)
  172.       if @flg
  173.         a = line.split(/\s*,\s*/)
  174.         if @result.include?(a[0])
  175.           if @result[a[0]].is_a?(Array)
  176.             @result[a[0]].push a[1].to_i
  177.           else
  178.             @result[a[0]] = a[1].to_i
  179.           end
  180.         end
  181.       end
  182.     }
  183.   end
  184. end

  185. #==============================================================================
  186. # ■ Game_Battler
  187. #==============================================================================
  188. class Game_Battler
  189.   #--------------------------------------------------------------------------
  190.   # ● スキルの使用可能判定
  191.   #--------------------------------------------------------------------------
  192.   alias dai_skill_can_use? skill_can_use?
  193.   def skill_can_use?(skill)
  194.     condition = Skill_Use_Conditions.new(skill, self)
  195.     return false unless condition.use?
  196.     return dai_skill_can_use?(skill)
  197.   end
  198. end
复制代码
这是一个深不见底的坑,这是一个广袤无边的坑,我才刚刚放上了一抔泥土……

《六道·陈国篇》开坑了……↓点我
回复

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
129 小时
注册时间
2011-9-27
帖子
10
3
 楼主| 发表于 2012-7-16 12:03:52 | 只看该作者
真的万分感谢!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-12-24 00:41

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表