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

Project1

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

[已经过期] 求被动技能脚本使用方法

[复制链接]

Lv1.梦旅人

梦石
0
星屑
55
在线时间
76 小时
注册时间
2009-10-24
帖子
172
跳转到指定楼层
1
发表于 2010-12-28 16:35:09 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有帐号?注册会员

x
  1. #_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
  2. #_/    ◆ パッシブスキル - KGC_PassiveSkill ◆ VX ◆
  3. #_/    ◇ Last update : 2009/11/01 ◇
  4. #_/----------------------------------------------------------------------------
  5. #_/  習得するだけで能力値上昇効果を発揮するスキルを作成します。
  6. #_/============================================================================
  7. #_/ 【基本機能】≪200x/XP 機能再現≫ より下に導入してください。
  8. #_/ 【装備】≪装備品オプション追加≫ より下に導入してください。
  9. #_/ 【装備】≪装備拡張≫ より下に導入してください。
  10. #_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/

  11. $imported = {} if $imported == nil
  12. $imported["PassiveSkill"] = true

  13. module KGC
  14. module PassiveSkill
  15.   # パッシブスキル用条件リスト
  16.   CONDITIONS = {
  17.     :weapon    => "WEAPON|武器",
  18.     :armor     => "ARMOR|防具",
  19.     :armor_set => "ARMOR_SET|防具セット",
  20.     :state     => "STATE|ステート",
  21.   }

  22.   # パッシブスキル用パラメータリスト
  23.   PARAMS = {
  24.     :maxhp => "MAXHP|最大HP",
  25.     :maxmp => "MAXMP|最大MP",
  26.     :atk   => "ATK|攻撃力",
  27.     :def   => "DEF|防御力",
  28.     :spi   => "SPI|精神力",
  29.     :agi   => "AGI|敏捷性",
  30.     :hit   => "HIT|命中率",
  31.     :eva   => "EVA|回避率",
  32.     :cri   => "CRI|クリティカル率",
  33.     :odds  => "ODDS|狙われやすさ",
  34.   }

  35.   # パッシブスキル用属性・ステートリスト
  36.   ARRAYS = {
  37.     :attack_element => "ATTACK_ELEMENT|攻撃属性",
  38.     :plus_state     => "PLUS_STATE|付加ステート",
  39.     :invalid_state  => "INVALID_STATE|無効化ステート",
  40.     :auto_state     => "AUTO_STATE|オートステート",
  41.   }

  42.   # パッシブスキル用耐性リスト
  43.   RESISTANCES = {
  44.     # ≪装備品オプション追加≫
  45.     :element => "ELEMENT_RESISTANCE|属性耐性",
  46.     :state   => "STATE_RESISTANCE|ステート耐性",
  47.   }

  48.   # パッシブスキル用特殊効果リスト
  49.   EFFECTS = {
  50.     # デフォ
  51.     :two_swords_style => "TWO_SWORDS_STYLE|二刀流",
  52.     :auto_battle      => "AUTO_BATTLE|自動戦闘",
  53.     :super_guard      => "SUPER_GUARD|強力防御",
  54.     :pharmacology     => "PHARMACOLOGY|薬の知識",
  55.     :fast_attack      => "FAST_ATTACK|ターン内先制",
  56.     :dual_attack      => "DUAL_ATTACK|連続攻撃",
  57.     :critical_bonus   => "CRITICAL_BONUS|クリティカル頻発",
  58.     :prevent_critical => "PREVENT_CRITICAL|クリティカル防止",
  59.     :half_mp_cost     => "HALF_MP_COST|消費MP半分",
  60.     :double_exp_gain  => "DOUBLE_EXP_GAIN|取得経験値[22]倍",
  61.     # ≪200x/XP 機能再現≫
  62.     :whole_attack => "WHOLE_ATTACK|全体攻撃",
  63.     :ignore_eva   => "IGNORE_EVA|回避率?無視",
  64.     # ≪装備品オプション追加≫
  65.     :multi_attack_count => '(\d+)\s*(?:TIMES_ATTACK|回攻撃)',
  66.   }

  67.   module Regexp
  68.     module Skill
  69.       # パッシブスキル開始
  70.       BEGIN_PASSIVE = /<(?:PASSIVE_SKILL|パッシブスキル)>/i
  71.       # パッシブスキル終了
  72.       END_PASSIVE = /<\/(?:PASSIVE_SKILL|パッシブスキル)>/i

  73.       # 発動条件
  74.       PASSIVE_CONDITIONS =
  75.         /^\s*条件\s*([^:\+\-\d\s]+)\s*([\-\d]+(?:\s*,\s*[\-\d]+)*)\s*$/i
  76.       # パラメータ修正
  77.       #  MAXHP +20  など
  78.       PASSIVE_PARAMS = /^\s*([^:\+\-\d\s]+)\s*([\+\-]\d+)([%%])?\s*$/i
  79.       # 属性・ステートリスト
  80.       #  攻撃属性 1,2,3  など
  81.       PASSIVE_ARRAYS = /^\s*([^:\+\-\d\s]+)\s*(\d+(?:\s*,\s*\d+)*)\s*$/i
  82.       # 耐性
  83.       PASSIVE_RESISTANCES = /^\s*([^:\+\-\d\s]+)\s(\d+):(\-?\d+)[%%]?\s*$/i
  84.       # 特殊効果
  85.       PASSIVE_EFFECTS = /^\s*([^:\+\-\d\s]+)/i
  86.     end
  87.   end
  88. end
  89. end

  90. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

  91. #==============================================================================
  92. # □ KGC::Commands
  93. #==============================================================================

  94. module KGC
  95. module Commands
  96.   module_function
  97.   #--------------------------------------------------------------------------
  98.   # ○ パッシブスキルの修正値を再設定
  99.   #--------------------------------------------------------------------------
  100.   def restore_passive_rev
  101.     (1...$data_actors.size).each { |i|
  102.       actor = $game_actors[i]
  103.       actor.restore_passive_rev
  104.     }
  105.   end
  106. end
  107. end

  108. class Game_Interpreter
  109.   include KGC::Commands
  110. end

  111. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

  112. #==============================================================================
  113. # ■ RPG::Skill
  114. #==============================================================================

  115. class RPG::Skill < RPG::UsableItem
  116.   #--------------------------------------------------------------------------
  117.   # ○ パッシブスキルのキャッシュを生成
  118.   #--------------------------------------------------------------------------
  119.   def create_passive_skill_cache
  120.     @__passive = false
  121.     @__passive_conditions  = {}
  122.     @__passive_params      = {}
  123.     @__passive_params_rate = {}
  124.     @__passive_arrays      = {}
  125.     @__passive_resistances = {}
  126.     @__passive_effects     = { :multi_attack_count => 1 }

  127.     KGC::PassiveSkill::CONDITIONS.each_key { |k|
  128.       @__passive_conditions[k] = []
  129.     }

  130.     passive_flag = false
  131.     self.note.each_line { |line|
  132.       case line
  133.       when KGC::PassiveSkill::Regexp::Skill::BEGIN_PASSIVE
  134.         # パッシブスキル定義開始
  135.         passive_flag = true
  136.         @__passive = true
  137.       when KGC::PassiveSkill::Regexp::Skill::END_PASSIVE
  138.         # パッシブスキル定義終了
  139.         passive_flag = false
  140.       when KGC::PassiveSkill::Regexp::Skill::PASSIVE_CONDITIONS
  141.         # 発動条件
  142.         if passive_flag
  143.           apply_passive_conditions($1, $2)
  144.         end
  145.       when KGC::PassiveSkill::Regexp::Skill::PASSIVE_PARAMS
  146.         # 能力値修正
  147.         if passive_flag
  148.           apply_passive_params($1, $2.to_i, $3 != nil)
  149.         end
  150.       when KGC::PassiveSkill::Regexp::Skill::PASSIVE_ARRAYS
  151.         # 属性・ステート
  152.         if passive_flag
  153.           apply_passive_arrays($1, $2.scan(/\d+/))
  154.         end
  155.       when KGC::PassiveSkill::Regexp::Skill::PASSIVE_RESISTANCES
  156.         # 耐性
  157.         if passive_flag
  158.           apply_passive_resistances($1, $2.to_i, $3.to_i)
  159.         end
  160.       else
  161.         # 特殊効果
  162.         if passive_flag
  163.           apply_passive_effects(line)
  164.         end
  165.       end
  166.     }
  167.   end
  168.   #--------------------------------------------------------------------------
  169.   # ○ パッシブスキルの発動条件を適用
  170.   #     cond   : 条件
  171.   #     values : 条件値
  172.   #--------------------------------------------------------------------------
  173.   def apply_passive_conditions(cond, values)
  174.     KGC::PassiveSkill::CONDITIONS.each { |k, v|
  175.       if cond =~ /(?:#{v})/i
  176.         cond = k
  177.         break
  178.       end
  179.     }
  180.     return unless cond.is_a?(Symbol)

  181.     @__passive_conditions[cond] = [] if @__passive_conditions[cond] == nil

  182.     values.scan(/[\-\d]+/).each { |v|
  183.       case v
  184.       when /^(\d+)\-(\d+)$/  # 範囲
  185.         @__passive_conditions[cond] += ( ($1.to_i)..($2.to_i) ).to_a
  186.       when /^\d+$/           # 単一
  187.         @__passive_conditions[cond] << v.to_i
  188.       end
  189.     }
  190.     @__passive_conditions[cond].uniq!
  191.   end
  192.   #--------------------------------------------------------------------------
  193.   # ○ パッシブスキルの能力値修正を適用
  194.   #     param : 対象パラメータ
  195.   #     value : 修正値
  196.   #     rate  : true なら % 指定
  197.   #--------------------------------------------------------------------------
  198.   def apply_passive_params(param, value, rate)
  199.     KGC::PassiveSkill::PARAMS.each { |k, v|
  200.       if param =~ /(?:#{v})/i
  201.         if rate
  202.           @__passive_params_rate[k] = 0 if @__passive_params_rate[k] == nil
  203.           @__passive_params_rate[k] += value
  204.         else
  205.           @__passive_params[k] = 0 if @__passive_params[k] == nil
  206.           @__passive_params[k] += value
  207.         end
  208.         break
  209.       end
  210.     }
  211.   end
  212.   #--------------------------------------------------------------------------
  213.   # ○ パッシブスキルの追加属性・ステートを適用
  214.   #     param : 対象パラメータ
  215.   #     list  : 属性・ステート一覧
  216.   #--------------------------------------------------------------------------
  217.   def apply_passive_arrays(param, list)
  218.     KGC::PassiveSkill::ARRAYS.each { |k, v|
  219.       if param =~ /(?:#{v})/i
  220.         values = []
  221.         list.each { |num| values << num.to_i }
  222.         @__passive_arrays[k] = [] if @__passive_arrays[k] == nil
  223.         @__passive_arrays[k] |= values
  224.         break
  225.       end
  226.     }
  227.   end
  228.   #--------------------------------------------------------------------------
  229.   # ○ パッシブスキルの耐性を適用
  230.   #     param : 対象パラメータ
  231.   #     id    : 属性・ステート ID
  232.   #     rate  : 変動率
  233.   #--------------------------------------------------------------------------
  234.   def apply_passive_resistances(param, id, rate)
  235.     KGC::PassiveSkill::RESISTANCES.each { |k, v|
  236.       if param =~ /(?:#{v})/i
  237.         if @__passive_resistances[k] == nil
  238.           @__passive_resistances[k] = []
  239.         end
  240.         n = @__passive_resistances[k][id]
  241.         n = 100 if n == nil
  242.         @__passive_resistances[k][id] = n + rate - 100
  243.         break
  244.       end
  245.     }
  246.   end
  247.   #--------------------------------------------------------------------------
  248.   # ○ パッシブスキルの特殊効果を適用
  249.   #     effect : 対象効果
  250.   #--------------------------------------------------------------------------
  251.   def apply_passive_effects(effect)
  252.     KGC::PassiveSkill::EFFECTS.each { |k, v|
  253.       if effect =~ /^\s*(#{v})/i
  254.         case k
  255.         when :multi_attack_count
  256.           # 攻撃回数
  257.           $1 =~ /#{v}/i
  258.           @__passive_effects[k] = [ $1.to_i, @__passive_effects[k] ].max
  259.         else
  260.           @__passive_effects[k] = true
  261.         end
  262.         break
  263.       end
  264.     }
  265.   end
  266.   #--------------------------------------------------------------------------
  267.   # ○ パッシブスキルであるか
  268.   #--------------------------------------------------------------------------
  269.   def passive
  270.     create_passive_skill_cache if @__passive == nil
  271.     return @__passive
  272.   end
  273.   alias passive? passive
  274.   #--------------------------------------------------------------------------
  275.   # ○ パッシブスキルの発動条件
  276.   #--------------------------------------------------------------------------
  277.   def passive_conditions
  278.     create_passive_skill_cache if @__passive_conditions == nil
  279.     return @__passive_conditions
  280.   end
  281.   #--------------------------------------------------------------------------
  282.   # ○ パッシブスキルの能力値修正 (即値)
  283.   #--------------------------------------------------------------------------
  284.   def passive_params
  285.     create_passive_skill_cache if @__passive_params == nil
  286.     return @__passive_params
  287.   end
  288.   #--------------------------------------------------------------------------
  289.   # ○ パッシブスキルの能力値修正 (割合)
  290.   #--------------------------------------------------------------------------
  291.   def passive_params_rate
  292.     create_passive_skill_cache if @__passive_params_rate == nil
  293.     return @__passive_params_rate
  294.   end
  295.   #--------------------------------------------------------------------------
  296.   # ○ パッシブスキルの属性・ステートリスト
  297.   #--------------------------------------------------------------------------
  298.   def passive_arrays
  299.     create_passive_skill_cache if @__passive_arrays == nil
  300.     return @__passive_arrays
  301.   end
  302.   #--------------------------------------------------------------------------
  303.   # ○ パッシブスキルの耐性リスト
  304.   #--------------------------------------------------------------------------
  305.   def passive_resistances
  306.     create_passive_skill_cache if @__passive_resistances == nil
  307.     return @__passive_resistances
  308.   end
  309.   #--------------------------------------------------------------------------
  310.   # ○ パッシブスキルの特殊効果リスト
  311.   #--------------------------------------------------------------------------
  312.   def passive_effects
  313.     create_passive_skill_cache if @__passive_effects == nil
  314.     return @__passive_effects
  315.   end
  316. end

  317. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

  318. #==============================================================================
  319. # ■ Game_Actor
  320. #==============================================================================

  321. class Game_Actor < Game_Battler
  322.   #--------------------------------------------------------------------------
  323.   # ○ クラス変数
  324.   #--------------------------------------------------------------------------
  325.   @@passive_equip_test = false  # パッシブスキル用装備テストフラグ
  326.   #--------------------------------------------------------------------------
  327.   # ○ 公開インスタンス変数
  328.   #--------------------------------------------------------------------------
  329.   attr_accessor :passive_dummy_flag  # パッシブスキル発動条件無効化
  330.   #--------------------------------------------------------------------------
  331.   # ● セットアップ
  332.   #     actor_id : アクター ID
  333.   #--------------------------------------------------------------------------
  334.   alias setup_KGC_PassiveSkill setup
  335.   def setup(actor_id)
  336.     reset_passive_rev
  337.     @__passive_rev_restoring = true

  338.     setup_KGC_PassiveSkill(actor_id)

  339.     @__passive_rev_restoring = nil
  340.     restore_passive_rev
  341.   end
  342.   #--------------------------------------------------------------------------
  343.   # ○ パッシブスキルの修正値を初期化
  344.   #--------------------------------------------------------------------------
  345.   def reset_passive_rev
  346.     @passive_params      = {}
  347.     @passive_params_rate = {}
  348.     @passive_arrays      = {}
  349.     @passive_resistances = {}
  350.     @passive_effects     = {}
  351.     KGC::PassiveSkill::PARAMS.each_key { |k|
  352.       @passive_params[k]      =   0
  353.       @passive_params_rate[k] = 100
  354.     }
  355.     KGC::PassiveSkill::ARRAYS.each_key { |k|
  356.       @passive_arrays[k] = []
  357.     }
  358.     KGC::PassiveSkill::RESISTANCES.each_key { |k|
  359.       @passive_resistances[k] = []
  360.     }
  361.     KGC::PassiveSkill::EFFECTS.each_key { |k|
  362.       @passive_effects[k] = false
  363.     }
  364.     @passive_effects[:multi_attack_count] = 1
  365.   end
  366.   #--------------------------------------------------------------------------
  367.   # ○ パッシブスキルの修正値を再設定
  368.   #--------------------------------------------------------------------------
  369.   def restore_passive_rev
  370.     return if @__passive_rev_restoring

  371.     # ダミー生成
  372.     unless @passive_dummy_flag
  373.       dummy = Marshal.load(Marshal.dump(self))
  374.       dummy.passive_dummy_flag = true
  375.       dummy.restore_passive_rev
  376.     end

  377.     # 修正前の値を保持
  378.     last_effects = @passive_effects.clone if @passive_effects != nil

  379.     reset_passive_rev

  380.     # ≪スキルCP制≫ の併用を考慮し、戦闘中フラグを一時的にオン
  381.     last_in_battle = $game_temp.in_battle
  382.     $game_temp.in_battle = true
  383.     # 修正値を取得
  384.     self.skills.each { |skill|
  385.       next unless passive_skill_valid?(skill, dummy)

  386.       skill.passive_params.each      { |k, v| @passive_params[k] += v }
  387.       skill.passive_params_rate.each { |k, v| @passive_params_rate[k] += v }
  388.       skill.passive_arrays.each      { |k, v| @passive_arrays[k] |= v }
  389.       skill.passive_resistances.each { |k, v|
  390.         v.each_with_index { |n, i|
  391.           next if n == nil
  392.           @passive_resistances[k][i] = 100 if @passive_resistances[k][i] == nil
  393.           @passive_resistances[k][i] += n - 100
  394.         }
  395.       }
  396.       skill.passive_effects.each { |k, v|
  397.         case k
  398.         when :multi_attack_count
  399.           @passive_effects[k] = [ v, @passive_effects[k] ].max
  400.         else
  401.           @passive_effects[k] |= v
  402.         end
  403.       }
  404.     }
  405.     $game_temp.in_battle = last_in_battle

  406.     @__passive_rev_restoring = true
  407.     # HP/MP を修正
  408.     self.hp = self.hp
  409.     self.mp = self.mp

  410.     # 二刀流違反を修正
  411.     if !two_swords_style_KGC_PassiveSkill &&
  412.         last_effects[:two_swords_style] != nil &&
  413.         last_effects[:two_swords_style] != two_swords_style
  414.       @__one_time_two_swords_style = last_effects[:two_swords_style]
  415.       change_equip(1, nil, @@passive_equip_test)
  416.       @__one_time_two_swords_style = nil
  417.     end
  418.     @__passive_rev_restoring = nil
  419.     dummy = nil
  420.     Graphics.frame_reset
  421.   end
  422.   #--------------------------------------------------------------------------
  423.   # ○ パッシブスキル有効判定
  424.   #--------------------------------------------------------------------------
  425.   def passive_skill_valid?(skill, dummy)
  426.     return false unless skill.passive
  427.     return true  if @passive_dummy_flag

  428.     # 発動条件
  429.     skill.passive_conditions.each { |k, v|
  430.       next if v.empty?

  431.       ids = []
  432.       case k
  433.       when :weapon
  434.         dummy.weapons.compact.each { |w| ids << w.id }
  435.         return false if (v & ids).empty?          # 必要武器を未装備
  436.       when :armor
  437.         dummy.armors.compact.each { |a| ids << a.id }
  438.         return false if (v & ids).empty?          # 必要防具を未装備
  439.       when :state
  440.         dummy.states.compact.each { |s| ids << s.id }
  441.         return false if (v & ids).empty?          # 必要ステートでない
  442.       end
  443.     }

  444.     return true
  445.   end
  446.   #--------------------------------------------------------------------------
  447.   # ○ パッシブスキル発動条件
  448.   #--------------------------------------------------------------------------
  449.   def passive_conditions
  450.     restore_passive_rev if @passive_conditions == nil
  451.     return @passive_conditions
  452.   end
  453.   #--------------------------------------------------------------------------
  454.   # ○ パッシブスキルによるパラメータ修正値 (即値)
  455.   #--------------------------------------------------------------------------
  456.   def passive_params
  457.     restore_passive_rev if @passive_params == nil
  458.     return @passive_params
  459.   end
  460.   #--------------------------------------------------------------------------
  461.   # ○ パッシブスキルによるパラメータ修正値 (割合)
  462.   #--------------------------------------------------------------------------
  463.   def passive_params_rate
  464.     restore_passive_rev if @passive_params_rate == nil
  465.     return @passive_params_rate
  466.   end
  467.   #--------------------------------------------------------------------------
  468.   # ○ パッシブスキルによる追加属性・ステート
  469.   #--------------------------------------------------------------------------
  470.   def passive_arrays
  471.     restore_passive_rev if @passive_arrays == nil
  472.     return @passive_arrays
  473.   end
  474.   #--------------------------------------------------------------------------
  475.   # ○ パッシブスキルによる耐性
  476.   #--------------------------------------------------------------------------
  477.   def passive_resistances
  478.     restore_passive_rev if @passive_resistances == nil
  479.     return @passive_resistances
  480.   end
  481.   #--------------------------------------------------------------------------
  482.   # ○ パッシブスキルによる特殊効果
  483.   #--------------------------------------------------------------------------
  484.   def passive_effects
  485.     restore_passive_rev if @passive_effects == nil
  486.     return @passive_effects
  487.   end
  488.   #--------------------------------------------------------------------------
  489.   # ● ステートの付加
  490.   #     state_id : ステート ID
  491.   #--------------------------------------------------------------------------
  492.   unless method_defined?(:add_state_KGC_PassiveSkill)
  493.     alias add_state_KGC_PassiveSkill add_state
  494.   end
  495.   def add_state(state_id)
  496.     add_state_KGC_PassiveSkill(state_id)

  497.     restore_passive_rev
  498.   end
  499.   #--------------------------------------------------------------------------
  500.   # ● ステートの解除
  501.   #     state_id : ステート ID
  502.   #--------------------------------------------------------------------------
  503.   unless method_defined?(:remove_state_KGC_PassiveSkill)
  504.     alias remove_state_KGC_PassiveSkill remove_state
  505.   end
  506.   def remove_state(state_id)
  507.     remove_state_KGC_PassiveSkill(state_id)

  508.     restore_passive_rev
  509.   end
  510.   #--------------------------------------------------------------------------
  511.   # ● 装備の変更 (オブジェクトで指定)
  512.   #     equip_type : 装備部位 (0..4)
  513.   #     item       : 武器 or 防具 (nil なら装備解除)
  514.   #     test       : テストフラグ (戦闘テスト、または装備画面での一時装備)
  515.   #--------------------------------------------------------------------------
  516.   alias change_equip_KGC_PassiveSkill change_equip
  517.   def change_equip(equip_type, item, test = false)
  518.     @@passive_equip_test = test

  519.     change_equip_KGC_PassiveSkill(equip_type, item, test)

  520.     restore_passive_rev
  521.     @@passive_equip_test = false
  522.   end
  523.   #--------------------------------------------------------------------------
  524.   # ● 装備の破棄
  525.   #     item : 破棄する武器 or 防具
  526.   #    武器/防具の増減で「装備品も含める」のとき使用する。
  527.   #--------------------------------------------------------------------------
  528.   alias discard_equip_KGC_PassiveSkill discard_equip
  529.   def discard_equip(item)
  530.     discard_equip_KGC_PassiveSkill(item)

  531.     restore_passive_rev
  532.   end
  533.   #--------------------------------------------------------------------------
  534.   # ● 経験値の変更
  535.   #     exp  : 新しい経験値
  536.   #     show : レベルアップ表示フラグ
  537.   #--------------------------------------------------------------------------
  538.   alias change_exp_KGC_PassiveSkill change_exp
  539.   def change_exp(exp, show)
  540.     @__passive_rev_restoring = true

  541.     change_exp_KGC_PassiveSkill(exp, show)

  542.     @__passive_rev_restoring = nil
  543.     restore_passive_rev
  544.   end

  545.   if $imported["AddEquipmentOptions"]
  546.   #--------------------------------------------------------------------------
  547.   # ○ 属性耐性の取得
  548.   #     element_id : 属性 ID
  549.   #--------------------------------------------------------------------------
  550.   alias element_resistance_KGC_PassiveSkill element_resistance
  551.   def element_resistance(element_id)
  552.     n = element_resistance_KGC_PassiveSkill(element_id)
  553.     rate = passive_resistances[:element][element_id]
  554.     n += (rate == nil ? 100 : rate) - 100
  555.     return n
  556.   end
  557.   #--------------------------------------------------------------------------
  558.   # ○ ステート耐性の取得
  559.   #     state_id : ステート ID
  560.   #--------------------------------------------------------------------------
  561.   alias state_resistance_KGC_PassiveSkill state_resistance
  562.   def state_resistance(state_id)
  563.     n = state_resistance_KGC_PassiveSkill(state_id)
  564.     rate = passive_resistances[:state][state_id]
  565.     n += (rate == nil ? 100 : rate) - 100
  566.     return [n, 0].max
  567.   end
  568.   end  # <-- if $imported["AddEquipmentOptions"]

  569.   #--------------------------------------------------------------------------
  570.   # ● ステート無効化判定
  571.   #     state_id : ステート ID
  572.   #--------------------------------------------------------------------------
  573.   alias state_resist_KGC_PassiveSkill? state_resist?
  574.   def state_resist?(state_id)
  575.     return true if passive_arrays[:invalid_state].include?(state_id)

  576.     return state_resist_KGC_PassiveSkill?(state_id)
  577.   end
  578.   #--------------------------------------------------------------------------
  579.   # ● 通常攻撃の属性取得
  580.   #--------------------------------------------------------------------------
  581.   alias element_set_KGC_PassiveSkill element_set
  582.   def element_set
  583.     return (element_set_KGC_PassiveSkill | passive_arrays[:attack_element])
  584.   end
  585.   #--------------------------------------------------------------------------
  586.   # ● 通常攻撃の追加効果 (ステート変化) 取得
  587.   #--------------------------------------------------------------------------
  588.   alias plus_state_set_KGC_PassiveSkill plus_state_set
  589.   def plus_state_set
  590.     return (plus_state_set_KGC_PassiveSkill | passive_arrays[:plus_state])
  591.   end
  592.   #--------------------------------------------------------------------------
  593.   # ● 基本 MaxHP の取得
  594.   #--------------------------------------------------------------------------
  595.   alias base_maxhp_KGC_PassiveSkill base_maxhp
  596.   def base_maxhp
  597.     n = base_maxhp_KGC_PassiveSkill + passive_params[:maxhp]
  598.     n = n * passive_params_rate[:maxhp] / 100
  599.     return n
  600.   end
  601.   #--------------------------------------------------------------------------
  602.   # ● 基本 MaxMP の取得
  603.   #--------------------------------------------------------------------------
  604.   alias base_maxmp_KGC_PassiveSkill base_maxmp
  605.   def base_maxmp
  606.     n = base_maxmp_KGC_PassiveSkill + passive_params[:maxmp]
  607.     n = n * passive_params_rate[:maxmp] / 100
  608.     return n
  609.   end
  610.   #--------------------------------------------------------------------------
  611.   # ● 基本攻撃力の取得
  612.   #--------------------------------------------------------------------------
  613.   alias base_atk_KGC_PassiveSkill base_atk
  614.   def base_atk
  615.     n = base_atk_KGC_PassiveSkill + passive_params[:atk]
  616.     n = n * passive_params_rate[:atk] / 100
  617.     return n
  618.   end
  619.   #--------------------------------------------------------------------------
  620.   # ● 基本防御力の取得
  621.   #--------------------------------------------------------------------------
  622.   alias base_def_KGC_PassiveSkill base_def
  623.   def base_def
  624.     n = base_def_KGC_PassiveSkill + passive_params[:def]
  625.     n = n * passive_params_rate[:def] / 100
  626.     return n
  627.   end
  628.   #--------------------------------------------------------------------------
  629.   # ● 基本精神力の取得
  630.   #--------------------------------------------------------------------------
  631.   alias base_spi_KGC_PassiveSkill base_spi
  632.   def base_spi
  633.     n = base_spi_KGC_PassiveSkill + passive_params[:spi]
  634.     n = n * passive_params_rate[:spi] / 100
  635.     return n
  636.   end
  637.   #--------------------------------------------------------------------------
  638.   # ● 基本敏捷性の取得
  639.   #--------------------------------------------------------------------------
  640.   alias base_agi_KGC_PassiveSkill base_agi
  641.   def base_agi
  642.     n = base_agi_KGC_PassiveSkill + passive_params[:agi]
  643.     n = n * passive_params_rate[:agi] / 100
  644.     return n
  645.   end
  646.   #--------------------------------------------------------------------------
  647.   # ● 命中率の取得
  648.   #--------------------------------------------------------------------------
  649.   alias hit_KGC_PassiveSkill hit
  650.   def hit
  651.     n = hit_KGC_PassiveSkill + passive_params[:hit]
  652.     n = n * passive_params_rate[:hit] / 100
  653.     return n
  654.   end
  655.   #--------------------------------------------------------------------------
  656.   # ● 回避率の取得
  657.   #--------------------------------------------------------------------------
  658.   alias eva_KGC_PassiveSkill eva
  659.   def eva
  660.     n = eva_KGC_PassiveSkill + passive_params[:eva]
  661.     n = n * passive_params_rate[:eva] / 100
  662.     return n
  663.   end
  664.   #--------------------------------------------------------------------------
  665.   # ● クリティカル率の取得
  666.   #--------------------------------------------------------------------------
  667.   alias cri_KGC_PassiveSkill cri
  668.   def cri
  669.     n = cri_KGC_PassiveSkill + passive_params[:cri]
  670.     n = n * passive_params_rate[:cri] / 100
  671.     n += 4 if passive_effects[:critical_bonus]
  672.     return n
  673.   end
  674.   #--------------------------------------------------------------------------
  675.   # ● 狙われやすさの取得
  676.   #--------------------------------------------------------------------------
  677.   alias odds_KGC_PassiveSkill odds
  678.   def odds
  679.     n = odds_KGC_PassiveSkill + passive_params[:odds]
  680.     n = n * passive_params_rate[:odds] / 100
  681.     return n
  682.   end
  683.   #--------------------------------------------------------------------------
  684.   # ● オプション [二刀流] の取得
  685.   #--------------------------------------------------------------------------
  686.   alias two_swords_style_KGC_PassiveSkill two_swords_style
  687.   def two_swords_style
  688.     return @__one_time_two_swords_style if @__one_time_two_swords_style != nil

  689.     return (two_swords_style_KGC_PassiveSkill ||
  690.       passive_effects[:two_swords_style])
  691.   end
  692.   #--------------------------------------------------------------------------
  693.   # ● オプション [自動戦闘] の取得
  694.   #--------------------------------------------------------------------------
  695.   alias auto_battle_KGC_PassiveSkill auto_battle
  696.   def auto_battle
  697.     return (auto_battle_KGC_PassiveSkill || passive_effects[:auto_battle])
  698.   end
  699.   #--------------------------------------------------------------------------
  700.   # ● オプション [強力防御] の取得
  701.   #--------------------------------------------------------------------------
  702.   alias super_guard_KGC_PassiveSkill super_guard
  703.   def super_guard
  704.     return (super_guard_KGC_PassiveSkill || passive_effects[:super_guard])
  705.   end
  706.   #--------------------------------------------------------------------------
  707.   # ● オプション [薬の知識] の取得
  708.   #--------------------------------------------------------------------------
  709.   alias pharmacology_KGC_PassiveSkill pharmacology
  710.   def pharmacology
  711.     return (pharmacology_KGC_PassiveSkill || passive_effects[:pharmacology])
  712.   end
  713.   #--------------------------------------------------------------------------
  714.   # ● 武器オプション [ターン内先制] の取得
  715.   #--------------------------------------------------------------------------
  716.   alias fast_attack_KGC_PassiveSkill fast_attack
  717.   def fast_attack
  718.     return (fast_attack_KGC_PassiveSkill || passive_effects[:fast_attack])
  719.   end
  720.   #--------------------------------------------------------------------------
  721.   # ● 武器オプション [連続攻撃] の取得
  722.   #--------------------------------------------------------------------------
  723.   alias dual_attack_KGC_PassiveSkill dual_attack
  724.   def dual_attack
  725.     if $imported["AddEquipmentOptions"]
  726.       # 2回攻撃以上なら無視
  727.       return false if passive_effects[:multi_attack_count] >= 2
  728.     end

  729.     return (dual_attack_KGC_PassiveSkill || passive_effects[:dual_attack])
  730.   end
  731.   #--------------------------------------------------------------------------
  732.   # ● 防具オプション [クリティカル防止] の取得
  733.   #--------------------------------------------------------------------------
  734.   alias prevent_critical_KGC_PassiveSkill prevent_critical
  735.   def prevent_critical
  736.     return (prevent_critical_KGC_PassiveSkill ||
  737.       passive_effects[:prevent_critical])
  738.   end
  739.   #--------------------------------------------------------------------------
  740.   # ● 防具オプション [消費 MP 半分] の取得
  741.   #--------------------------------------------------------------------------
  742.   alias half_mp_cost_KGC_KGC_PassiveSkill half_mp_cost
  743.   def half_mp_cost
  744.     return (half_mp_cost_KGC_KGC_PassiveSkill ||
  745.       passive_effects[:half_mp_cost])
  746.   end
  747.   #--------------------------------------------------------------------------
  748.   # ● 防具オプション [取得経験値 2 倍] の取得
  749.   #--------------------------------------------------------------------------
  750.   alias double_exp_gain_KGC_PassiveSkill double_exp_gain
  751.   def double_exp_gain
  752.     return (double_exp_gain_KGC_PassiveSkill ||
  753.       passive_effects[:double_exp_gain])
  754.   end
  755.   #--------------------------------------------------------------------------
  756.   # ● スキルを覚える
  757.   #     skill_id : スキル ID
  758.   #--------------------------------------------------------------------------
  759.   alias learn_skill_KGC_PassiveSkill learn_skill
  760.   def learn_skill(skill_id)
  761.     learn_skill_KGC_PassiveSkill(skill_id)

  762.     restore_passive_rev
  763.   end
  764.   #--------------------------------------------------------------------------
  765.   # ● スキルを忘れる
  766.   #     skill_id : スキル ID
  767.   #--------------------------------------------------------------------------
  768.   alias forget_skill_KGC_PassiveSkill forget_skill
  769.   def forget_skill(skill_id)
  770.     forget_skill_KGC_PassiveSkill(skill_id)

  771.     restore_passive_rev
  772.   end

  773. if $imported["ReproduceFunctions"]

  774.   #--------------------------------------------------------------------------
  775.   # ○ オートステートの配列を取得
  776.   #     id_only : ID のみを取得
  777.   #--------------------------------------------------------------------------
  778.   alias auto_states_KGC_PassiveSkill auto_states
  779.   def auto_states(id_only = false)
  780.     result = auto_states_KGC_PassiveSkill(id_only)

  781.     passive_arrays[:auto_state].each { |i|
  782.       result << (id_only ? i : $data_states[i])
  783.     }
  784.     result.uniq!
  785.     return result
  786.   end
  787.   #--------------------------------------------------------------------------
  788.   # ○ 装備オプション [全体攻撃] の取得
  789.   #--------------------------------------------------------------------------
  790.   alias whole_attack_KGC_PassiveSkill whole_attack
  791.   def whole_attack
  792.     return (whole_attack_KGC_PassiveSkill || passive_effects[:whole_attack])
  793.   end
  794.   #--------------------------------------------------------------------------
  795.   # ○ 装備オプション [回避無視] の取得
  796.   #--------------------------------------------------------------------------
  797.   alias ignore_eva_KGC_PassiveSkill ignore_eva
  798.   def ignore_eva
  799.     return (ignore_eva_KGC_PassiveSkill || passive_effects[:ignore_eva])
  800.   end

  801. end  # <-- if $imported["ReproduceFunctions"]

  802. if $imported["AddEquipmentOptions"]

  803.   #--------------------------------------------------------------------------
  804.   # ○ 攻撃回数の取得
  805.   #--------------------------------------------------------------------------
  806.   alias multi_attack_count_KGC_PassiveSkill multi_attack_count
  807.   def multi_attack_count
  808.     n = multi_attack_count_KGC_PassiveSkill
  809.     return [ n, passive_effects[:multi_attack_count] ].max
  810.   end

  811. end  # <-- if $imported["AddEquipmentOptions"]

  812. end  # <-- class

  813. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

  814. #==============================================================================
  815. # ■ Window_EquipItem
  816. #==============================================================================

  817. class Window_EquipItem < Window_Item
  818.   #--------------------------------------------------------------------------
  819.   # ● オブジェクト初期化
  820.   #     x          : ウィンドウの X 座標
  821.   #     y          : ウィンドウの Y 座標
  822.   #     width      : ウィンドウの幅
  823.   #     height     : ウィンドウの高さ
  824.   #     actor      : アクター
  825.   #     equip_type : 装備部位 (0~4)
  826.   #--------------------------------------------------------------------------
  827.   unless private_method_defined?(:initialize_KGC_PassiveSkill)
  828.     alias initialize_KGC_PassiveSkill initialize
  829.   end
  830.   def initialize(x, y, width, height, actor, equip_type)
  831.     @original_equip_type = equip_type

  832.     initialize_KGC_PassiveSkill(x, y, width, height, actor, equip_type)
  833.   end
  834.   #--------------------------------------------------------------------------
  835.   # ● リフレッシュ
  836.   #--------------------------------------------------------------------------
  837.   unless method_defined?(:refresh_KGC_PassiveSkill)
  838.     alias refresh_KGC_PassiveSkill refresh
  839.   end
  840.   def refresh
  841.     if @original_equip_type == 1
  842.       @equip_type = (@actor.two_swords_style ? 0 : 1)
  843.     end

  844.     refresh_KGC_PassiveSkill
  845.   end
  846. end

  847. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

  848. #==============================================================================
  849. # ■ Scene_File
  850. #==============================================================================

  851. class Scene_File < Scene_Base
  852.   #--------------------------------------------------------------------------
  853.   # ● セーブデータの読み込み
  854.   #     file : 読み込み用ファイルオブジェクト (オープン済み)
  855.   #--------------------------------------------------------------------------
  856.   alias read_save_data_KGC_PassiveSkill read_save_data
  857.   def read_save_data(file)
  858.     read_save_data_KGC_PassiveSkill(file)

  859.     KGC::Commands.restore_passive_rev
  860.     Graphics.frame_reset
  861.   end
  862. end
复制代码
就是这个脚本我只知道怎么用技能增加属性值但是其他的怎么用有什么用呢???
求人告下

点评

如果认为问题已经解决,请编辑主楼标签为“已经解决”,谢谢~  发表于 2010-12-31 22:02

Lv1.梦旅人

梦石
0
星屑
55
在线时间
90 小时
注册时间
2009-5-25
帖子
73
2
发表于 2010-12-29 08:22:20 | 只看该作者
首先这个脚本要和以下三个脚本一起使用
# #_/ 【基本機能】≪200x/XP 機能再現≫ より下に導入してください。
# #_/ 【装備】≪装備品オプション追加≫ より下に導入してください。
# #_/ 【装備】≪装備拡張≫ より下に導入してください。

以下这些都是脚本的设置
# module PassiveSkill
#   # パッシブスキル用条件リスト
#   CONDITIONS = {
#     :weapon    => "WEAPON|武器",
#     :armor     => "ARMOR|防具",
#     :armor_set => "ARMOR_SET|防具セット",
#     :state     => "STATE|ステート",
#   }
#

#   # パッシブスキル用パラメータリスト
#   PARAMS = {
#     :maxhp => "MAXHP|最大HP",
#     :maxmp => "MAXMP|最大MP",
#     :atk   => "ATK|攻撃力",
#     :def   => "DEF|防御力",
#     :spi   => "SPI|精神力",
#     :agi   => "AGI|敏捷性",
#     :hit   => "HIT|命中率",
#     :eva   => "EVA|回避率",
#     :cri   => "CRI|クリティカル率",
#     :odds  => "ODDS|狙われやすさ",
#   }
#

#   # パッシブスキル用属性・ステートリスト
#   ARRAYS = {
#     :attack_element => "ATTACK_ELEMENT|攻撃属性",
#     :plus_state     => "PLUS_STATE|付加ステート",
#     :invalid_state  => "INVALID_STATE|無効化ステート",
#     :auto_state     => "AUTO_STATE|オートステート",
#   }
#

#   # パッシブスキル用耐性リスト
#   RESISTANCES = {
#     # ≪装備品オプション追加≫
#     :element => "ELEMENT_RESISTANCE|属性耐性",
#     :state   => "STATE_RESISTANCE|ステート耐性",
#   }
#

#   # パッシブスキル用特殊効果リスト
#   EFFECTS = {
#     # デフォ
#     :two_swords_style => "TWO_SWORDS_STYLE|二刀流",
#     :auto_battle      => "AUTO_BATTLE|自動戦闘",
#     :super_guard      => "SUPER_GUARD|強力防御",
#     :pharmacology     => "PHARMACOLOGY|薬の知識",
#     :fast_attack      => "FAST_ATTACK|ターン内先制",
#     :dual_attack      => "DUAL_ATTACK|連続攻撃",
#     :critical_bonus   => "CRITICAL_BONUS|クリティカル頻発",
#     :prevent_critical => "PREVENT_CRITICAL|クリティカル防止",
#     :half_mp_cost     => "HALF_MP_COST|消費MP半分",
#     :double_exp_gain  => "DOUBLE_EXP_GAIN|取得経験値[22]倍",
#     # ≪200x/XP 機能再現≫
#     :whole_attack => "WHOLE_ATTACK|全体攻撃",
#     :ignore_eva   => "IGNORE_EVA|回避率?無視",
#     # ≪装備品オプション追加≫
#     :multi_attack_count => '(\d+)\s*(?:TIMES_ATTACK|回攻撃)',

因为这个脚本是读取了技能的备注栏,所以每次属性更改或者特殊效果需要在技能的备注栏里添加

</パッシブスキル>
这一条是表示引用备注栏,表示这个技能设置为被动技能
<パッシブスキル>
这一条下面添加属性更改,大家懂得....

评分

参与人数 1星屑 +800 收起 理由
夕阳武士 + 800 认真的回答~

查看全部评分

回复 支持 反对

使用道具 举报

Lv2.观梦者

天仙

梦石
0
星屑
620
在线时间
184 小时
注册时间
2008-4-15
帖子
5023

贵宾

3
发表于 2010-12-29 09:35:47 | 只看该作者
這個記得有過翻譯版
VA脚本开工中...
偷窃脚本1.0 - 已完成
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-12-24 04:05

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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