Project1

标题: 这个脚本该如何使用? [打印本页]

作者: 火烧兔子的马甲    时间: 2013-12-16 19:07
标题: 这个脚本该如何使用?
这是一个限制技能条件的脚本,在数据库-技能的备注里填下:
<特殊使用条件>
武器,9
</特殊使用条件>
此时,这个技能只有在装备了9号武器之后才能使用
现在我想这样子:
<特殊使用条件>
属性,9
</特殊使用条件>
我的本意是,在属性上增添“剑”/“弓箭”等属性,然后某些技能如“散射”只能在装备弓箭的情况下使用,属性的作用是判断武器类型,但是这样却没效果?
  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.     [url=home.php?mod=space&uid=260100]@skill[/url] = skill
  85.     [url=home.php?mod=space&uid=133701]@battler[/url] = 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

复制代码

作者: 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