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

Project1

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

[已经过期] 这个脚本这么用,我的新人帮忙下

[复制链接]

Lv1.梦旅人

梦石
0
星屑
50
在线时间
336 小时
注册时间
2010-8-26
帖子
428
跳转到指定楼层
1
发表于 2010-9-9 22:12:30 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
本帖最后由 小幽的马甲 于 2010-9-10 16:09 编辑
  1. #_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
  2. #_/    ◆ 装備品オプション追加 - KGC_AddEquipmentOptions ◆ VX ◆
  3. #_/    ◇ Last update : 2008/04/01 ◇
  4. #_/----------------------------------------------------------------------------
  5. #_/  装備品のオプションを追加します。
  6. #_/============================================================================
  7. #_/  正常に反映されない場合は、導入位置を移動してください。
  8. #_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/

  9. #==============================================================================
  10. # ★ カスタマイズ項目 - Customize ★
  11. #==============================================================================

  12. module KGC
  13. module AddEquipmentOptions
  14.   # ◆ <HP自動回復> で回復量を指定しなかった場合の回復量 [%]
  15.   DEFAULT_RECOVER_HP_RATE = 5
  16.   # ◆ <MP自動回復> で回復量を指定しなかった場合の回復量 [%]
  17.   DEFAULT_RECOVER_MP_RATE = 5

  18.   # ◆ <MP転換> で転換率を指定しなかった場合の転換率 [%]
  19.   DEFAULT_CONVERT_MP_RATE = 1
  20.   # ◆ <MP吸収> で吸収率を指定しなかった場合の吸収率 [%]
  21.   DEFAULT_ABSORB_MP_RATE  = 5
  22. end
  23. end

  24. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

  25. $imported = {} if $imported == nil
  26. $imported["AddEquipmentOptions"] = true

  27. module KGC::AddEquipmentOptions
  28.   # 正規表現
  29.   module Regexp
  30.     # ベースアイテム (武器?防具共用)
  31.     module BaseItem
  32.       # n回攻撃
  33.       MULTI_ATTACK = /<(\d+)\s*(?:TIMES_ATTACK|回攻撃)>/i
  34.       # HP自動回復
  35.       AUTO_HP_RECOVER = /<(?:AUTO_HP_RECOVER|HP自動回復)(\s*(\d+)([%%])?)?>/i
  36.       # MP自動回復
  37.       AUTO_MP_RECOVER = /<(?:AUTO_MP_RECOVER|MP自動回復)(\s*(\d+)([%%])?)?>/i
  38.       # MP転換
  39.       CONVERT_MP = /<(?:CONVERT_MP|MP転換)\s*(\d+)?[%%]?>/i
  40.       # MP吸収
  41.       ABSORB_MP = /<(?:ABSORB_MP|MP吸収)\s*(\d+)?[%%]?>/i

  42.       # 属性耐性
  43.       ELEMENT_RESISTANCE =
  44.         /<(?:ELEMENT_RESISTANCE|属性耐性)\s*(\d+):(\-?\d+)[%%]?>/i
  45.       # 弱点属性
  46.       WEAK_ELEMENT =
  47.         /<(?:WEAK_ELEMENT|弱点属性)\s*(\d+(?:\s*,\s*\d+)*)>/i
  48.       # 半減する属性
  49.       GUARD_ELEMENT =
  50.         /<(?:GUARD_ELEMENT|半減属性)\s*(\d+(?:\s*,\s*\d+)*)>/i
  51.       # 無効化する属性
  52.       INVALID_ELEMENT =
  53.         /<(?:INVALID_ELEMENT|無効属性)\s*(\d+(?:\s*,\s*\d+)*)>/i
  54.       # 吸収する属性
  55.       ABSORB_ELEMENT =
  56.         /<(?:ABSORB_ELEMENT|吸収属性)\s*(\d+(?:\s*,\s*\d+)*)>/i

  57.       # ステート耐性
  58.       STATE_RESISTANCE =
  59.         /<(?:STATE_RESISTANCE|ステート耐性)\s*(\d+):(\d+)[%%]?>/i
  60.     end

  61.     # 武器
  62.     module Weapon
  63.       # クリティカル防止
  64.       PREVENT_CRITICAL = /<(?:PREVENT_CRITICAL|クリティカル防止)>/i
  65.       # 消費MP半分
  66.       HALF_MP_COST = /<(?:HALF_MP_COST|消費MP半分)>/i
  67.       # 取得経験値2倍
  68.       DOUBLE_EXP_GAIN = /<(?:DOUBLE_EXP_GAIN|取得経験値[22]倍)>/i
  69.     end

  70.     # 防具
  71.     module Armor
  72.       # ターン内先制
  73.       FAST_ATTACK = /<(?:FAST_ATTACK|ターン内先制)>/i
  74.       # 連続攻撃
  75.       DUAL_ATTACK = /<(?:DUAL_ATTACK|連続攻撃)>/i
  76.       # クリティカル頻発
  77.       CRITICAL_BONUS = /<(?:CRITICAL_BONUS|クリティカル頻発)>/i
  78.       # 攻撃属性
  79.       ATTACK_ELEMENT =
  80.         /<(?:ATTACK_ELEMENT|攻撃属性)\s*(\d+(?:\s*,\s*\d+)*)>/i
  81.       # 付加ステート
  82.       PLUS_STATE = /<(?:PLUS_STATE|付加ステート)\s*(\d+(?:\s*,\s*\d+)*)>/i
  83.     end
  84.   end
  85. end

  86. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

  87. #==============================================================================
  88. # ■ RPG::BaseItem
  89. #==============================================================================

  90. class RPG::BaseItem
  91.   #--------------------------------------------------------------------------
  92.   # ○ 追加オプションのキャッシュを作成
  93.   #--------------------------------------------------------------------------
  94.   def create_add_equipment_options_cache
  95.     @__multi_attack_count = 1
  96.     @__auto_hp_recover = false
  97.     @__auto_hp_recover_value = 0
  98.     @__auto_hp_recover_rate = 0
  99.     @__auto_mp_recover = false
  100.     @__auto_mp_recover_value = 0
  101.     @__auto_mp_recover_rate = 0
  102.     @__convert_mp_rate = 0
  103.     @__absorb_mp_rate = 0

  104.     self.note.split(/[\r\n]+/).each { |line|
  105.       case line
  106.       when KGC::AddEquipmentOptions::Regexp::BaseItem::MULTI_ATTACK
  107.         # n回攻撃
  108.         @__multi_attack_count = [$1.to_i, 1].max
  109.       when KGC::AddEquipmentOptions::Regexp::BaseItem::AUTO_HP_RECOVER
  110.         # HP自動回復
  111.         @__auto_hp_recover = true
  112.         next if $1 == nil
  113.         if $3 != nil
  114.           @__auto_hp_recover_rate += $2.to_i
  115.         else
  116.           @__auto_hp_recover_value += $2.to_i
  117.         end
  118.       when KGC::AddEquipmentOptions::Regexp::BaseItem::AUTO_MP_RECOVER
  119.         # MP自動回復
  120.         @__auto_mp_recover = true
  121.         next if $1 == nil
  122.         if $3 != nil
  123.           @__auto_mp_recover_rate += $2.to_i
  124.         else
  125.           @__auto_mp_recover_value += $2.to_i
  126.         end
  127.       when KGC::AddEquipmentOptions::Regexp::BaseItem::CONVERT_MP
  128.         # MP転換
  129.         @__convert_mp_rate = ($1 != nil ?
  130.           $1.to_i : KGC::AddEquipmentOptions::DEFAULT_CONVERT_MP_RATE)
  131.       when KGC::AddEquipmentOptions::Regexp::BaseItem::ABSORB_MP
  132.         # MP吸収
  133.         @__absorb_mp_rate = ($1 != nil ?
  134.           $1.to_i : KGC::AddEquipmentOptions::DEFAULT_ABSORB_MP_RATE)
  135.       end
  136.     }

  137.     create_resistance_cache
  138.   end
  139.   #--------------------------------------------------------------------------
  140.   # ○ 耐性のキャッシュ生成
  141.   #--------------------------------------------------------------------------
  142.   def create_resistance_cache
  143.     @__element_resistance = []
  144.     @__weak_element_set = []
  145.     @__guard_element_set = []
  146.     @__invalid_element_set = []
  147.     @__absorb_element_set = []

  148.     @__state_resistance = []

  149.     self.note.split(/[\r\n]+/).each { |line|
  150.       case line
  151.       when KGC::AddEquipmentOptions::Regexp::BaseItem::ELEMENT_RESISTANCE
  152.         # 属性耐性
  153.         element_id = $1.to_i
  154.         value = $2.to_i
  155.         if @__element_resistance[element_id] == nil
  156.           @__element_resistance[element_id] = 100
  157.         end
  158.         @__element_resistance[element_id] -= (100 - value)
  159.       when KGC::AddEquipmentOptions::Regexp::BaseItem::WEAK_ELEMENT
  160.         # 弱点属性
  161.         $1.scan(/\d+/).each { |num|
  162.           @__weak_element_set << num.to_i
  163.         }
  164.       when KGC::AddEquipmentOptions::Regexp::BaseItem::GUARD_ELEMENT
  165.         # 半減属性
  166.         $1.scan(/\d+/).each { |num|
  167.           @__guard_element_set << num.to_i
  168.         }
  169.       when KGC::AddEquipmentOptions::Regexp::BaseItem::INVALID_ELEMENT
  170.         # 無効属性
  171.         $1.scan(/\d+/).each { |num|
  172.           @__invalid_element_set << num.to_i
  173.         }
  174.       when KGC::AddEquipmentOptions::Regexp::BaseItem::ABSORB_ELEMENT
  175.         # 吸収属性
  176.         $1.scan(/\d+/).each { |num|
  177.           @__absorb_element_set << num.to_i
  178.         }
  179.       when KGC::AddEquipmentOptions::Regexp::BaseItem::STATE_RESISTANCE
  180.         # ステート耐性
  181.         state_id = $1.to_i
  182.         value = $2.to_i
  183.         if @__state_resistance[state_id] == nil
  184.           @__state_resistance[state_id] = 100
  185.         end
  186.         @__state_resistance[state_id] -= (100 - value)
  187.       end
  188.     }
  189.   end
  190.   #--------------------------------------------------------------------------
  191.   # ○ 攻撃回数
  192.   #--------------------------------------------------------------------------
  193.   def multi_attack_count
  194.     create_add_equipment_options_cache if @__multi_attack_count == nil
  195.     return @__multi_attack_count
  196.   end
  197.   #--------------------------------------------------------------------------
  198.   # ○ 装備オプション [HP自動回復]
  199.   #--------------------------------------------------------------------------
  200.   def auto_hp_recover
  201.     create_add_equipment_options_cache if @__auto_hp_recover == nil
  202.     return @__auto_hp_recover
  203.   end
  204.   #--------------------------------------------------------------------------
  205.   # ○ 装備オプション [MP自動回復]
  206.   #--------------------------------------------------------------------------
  207.   def auto_mp_recover
  208.     create_add_equipment_options_cache if @__auto_mp_recover == nil
  209.     return @__auto_mp_recover
  210.   end
  211.   #--------------------------------------------------------------------------
  212.   # ○ HP 自動回復量 (即値)
  213.   #--------------------------------------------------------------------------
  214.   def auto_hp_recover_value
  215.     create_add_equipment_options_cache if @__auto_hp_recover_value == nil
  216.     return @__auto_hp_recover_value
  217.   end
  218.   #--------------------------------------------------------------------------
  219.   # ○ HP 自動回復量 (割合)
  220.   #--------------------------------------------------------------------------
  221.   def auto_hp_recover_rate
  222.     create_add_equipment_options_cache if @__auto_hp_recover_rate == nil
  223.     return @__auto_hp_recover_rate
  224.   end
  225.   #--------------------------------------------------------------------------
  226.   # ○ MP 自動回復量 (即値)
  227.   #--------------------------------------------------------------------------
  228.   def auto_mp_recover_value
  229.     create_add_equipment_options_cache if @__auto_mp_recover_value == nil
  230.     return @__auto_mp_recover_value
  231.   end
  232.   #--------------------------------------------------------------------------
  233.   # ○ MP 自動回復量 (割合)
  234.   #--------------------------------------------------------------------------
  235.   def auto_mp_recover_rate
  236.     create_add_equipment_options_cache if @__auto_mp_recover_rate == nil
  237.     return @__auto_mp_recover_rate
  238.   end
  239.   #--------------------------------------------------------------------------
  240.   # ○ MP 転換率
  241.   #--------------------------------------------------------------------------
  242.   def convert_mp_rate
  243.     create_add_equipment_options_cache if @__convert_mp_rate == nil
  244.     return @__convert_mp_rate
  245.   end
  246.   #--------------------------------------------------------------------------
  247.   # ○ MP 吸収率
  248.   #--------------------------------------------------------------------------
  249.   def absorb_mp_rate
  250.     create_add_equipment_options_cache if @__absorb_mp_rate == nil
  251.     return @__absorb_mp_rate
  252.   end
  253.   #--------------------------------------------------------------------------
  254.   # ○ 属性耐性
  255.   #--------------------------------------------------------------------------
  256.   def element_resistance
  257.     create_add_equipment_options_cache if @__element_resistance == nil
  258.     return @__element_resistance
  259.   end
  260.   #--------------------------------------------------------------------------
  261.   # ○ 弱点属性
  262.   #--------------------------------------------------------------------------
  263.   def weak_element_set
  264.     create_add_equipment_options_cache if @__weak_element_set == nil
  265.     return @__weak_element_set
  266.   end
  267.   #--------------------------------------------------------------------------
  268.   # ○ 半減属性
  269.   #--------------------------------------------------------------------------
  270.   def guard_element_set
  271.     create_add_equipment_options_cache if @__guard_element_set == nil
  272.     return @__guard_element_set
  273.   end
  274.   #--------------------------------------------------------------------------
  275.   # ○ 無効属性
  276.   #--------------------------------------------------------------------------
  277.   def invalid_element_set
  278.     create_add_equipment_options_cache if @__invalid_element_set == nil
  279.     return @__invalid_element_set
  280.   end
  281.   #--------------------------------------------------------------------------
  282.   # ○ 吸収属性
  283.   #--------------------------------------------------------------------------
  284.   def absorb_element_set
  285.     create_add_equipment_options_cache if @__absorb_element_set == nil
  286.     return @__absorb_element_set
  287.   end
  288.   #--------------------------------------------------------------------------
  289.   # ○ ステート耐性
  290.   #--------------------------------------------------------------------------
  291.   def state_resistance
  292.     create_add_equipment_options_cache if @__state_resistance == nil
  293.     return @__state_resistance
  294.   end
  295. end

  296. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

  297. #==============================================================================
  298. # ■ RPG::Weapon
  299. #==============================================================================

  300. class RPG::Weapon < RPG::BaseItem
  301.   #--------------------------------------------------------------------------
  302.   # ○ 追加オプションのキャッシュを作成
  303.   #--------------------------------------------------------------------------
  304.   def create_add_equipment_options_cache
  305.     super
  306.     @__prevent_critical = false
  307.     @__half_mp_cost = false
  308.     @__double_exp_gain = false

  309.     self.note.split(/[\r\n]+/).each { |line|
  310.       case line
  311.       when KGC::AddEquipmentOptions::Regexp::Weapon::PREVENT_CRITICAL
  312.         # クリティカル防止
  313.         @__prevent_critical = true
  314.       when KGC::AddEquipmentOptions::Regexp::Weapon::HALF_MP_COST
  315.         # 消費MP半分
  316.         @__half_mp_cost = true
  317.       when KGC::AddEquipmentOptions::Regexp::Weapon::DOUBLE_EXP_GAIN
  318.         # 取得経験値2倍
  319.         @__double_exp_gain = true
  320.       end
  321.     }
  322.   end
  323.   #--------------------------------------------------------------------------
  324.   # ○ 装備オプション [クリティカル防止]
  325.   #--------------------------------------------------------------------------
  326.   def prevent_critical
  327.     create_add_equipment_options_cache if @__prevent_critical == nil
  328.     return @__prevent_critical
  329.   end
  330.   #--------------------------------------------------------------------------
  331.   # ○ 装備オプション [消費MP半分]
  332.   #--------------------------------------------------------------------------
  333.   def half_mp_cost
  334.     create_add_equipment_options_cache if @__half_mp_cost == nil
  335.     return @__half_mp_cost
  336.   end
  337.   #--------------------------------------------------------------------------
  338.   # ○ 装備オプション [取得経験値2倍]
  339.   #--------------------------------------------------------------------------
  340.   def double_exp_gain
  341.     create_add_equipment_options_cache if @__double_exp_gain == nil
  342.     return @__double_exp_gain
  343.   end
  344. end

  345. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

  346. #==============================================================================
  347. # ■ RPG::Armor
  348. #==============================================================================

  349. class RPG::Armor < RPG::BaseItem
  350.   #--------------------------------------------------------------------------
  351.   # ○ 追加オプションのキャッシュを作成
  352.   #--------------------------------------------------------------------------
  353.   def create_add_equipment_options_cache
  354.     super
  355.     @__fast_attack = false
  356.     @__dual_attack = false
  357.     @__critical_bonus = false
  358.     @__attack_element_set = []
  359.     @__plus_state_set = []

  360.     self.note.split(/[\r\n]+/).each { |line|
  361.       case line
  362.       when KGC::AddEquipmentOptions::Regexp::Armor::FAST_ATTACK
  363.         # ターン内先制
  364.         @__fast_attack = true
  365.       when KGC::AddEquipmentOptions::Regexp::Armor::DUAL_ATTACK
  366.         # 連続攻撃
  367.         @__dual_attack = true
  368.       when KGC::AddEquipmentOptions::Regexp::Armor::CRITICAL_BONUS
  369.         # クリティカル頻発
  370.         @__critical_bonus = true
  371.       when KGC::AddEquipmentOptions::Regexp::Armor::ATTACK_ELEMENT
  372.         # 攻撃属性
  373.         $1.scan(/\d+/).each { |num|
  374.           @__attack_element_set << num.to_i
  375.         }
  376.       when KGC::AddEquipmentOptions::Regexp::Armor::PLUS_STATE
  377.         # 付加ステート
  378.         $1.scan(/\d+/).each { |num|
  379.           @__plus_state_set << num.to_i
  380.         }
  381.       end
  382.     }
  383.   end
  384.   #--------------------------------------------------------------------------
  385.   # ○ 装備オプション [ターン内先制]
  386.   #--------------------------------------------------------------------------
  387.   def fast_attack
  388.     create_add_equipment_options_cache if @__fast_attack == nil
  389.     return @__fast_attack
  390.   end
  391.   #--------------------------------------------------------------------------
  392.   # ○ 装備オプション [連続攻撃]
  393.   #--------------------------------------------------------------------------
  394.   def dual_attack
  395.     create_add_equipment_options_cache if @__dual_attack == nil
  396.     return @__dual_attack
  397.   end
  398.   #--------------------------------------------------------------------------
  399.   # ○ 装備オプション [クリティカル頻発]
  400.   #--------------------------------------------------------------------------
  401.   def critical_bonus
  402.     create_add_equipment_options_cache if @__critical_bonus == nil
  403.     return @__critical_bonus
  404.   end
  405.   #--------------------------------------------------------------------------
  406.   # ● 装備オプション [HP自動回復]
  407.   #--------------------------------------------------------------------------
  408.   def auto_hp_recover
  409.     return (@auto_hp_recover || super)
  410.   end
  411.   #--------------------------------------------------------------------------
  412.   # ○ 攻撃属性
  413.   #--------------------------------------------------------------------------
  414.   def attack_element_set
  415.     create_add_equipment_options_cache if @__attack_element_set == nil
  416.     return @__attack_element_set
  417.   end
  418.   #--------------------------------------------------------------------------
  419.   # ○ 付加ステート
  420.   #--------------------------------------------------------------------------
  421.   def plus_state_set
  422.     create_add_equipment_options_cache if @__plus_state_set == nil
  423.     return @__plus_state_set
  424.   end
  425. end

  426. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

  427. #==============================================================================
  428. # ■ Game_Battler
  429. #==============================================================================

  430. class Game_Battler
  431.   #--------------------------------------------------------------------------
  432.   # ○ 攻撃回数の取得
  433.   #--------------------------------------------------------------------------
  434.   def multi_attack_count
  435.     return 1
  436.   end
  437.   #--------------------------------------------------------------------------
  438.   # ● 通常攻撃によるダメージ計算
  439.   #     attacker : 攻撃者
  440.   #    結果は @hp_damage に代入する。
  441.   #--------------------------------------------------------------------------
  442.   alias make_attack_damage_value_KGC_AddEquipmentOptions make_attack_damage_value
  443.   def make_attack_damage_value(attacker)
  444.     make_attack_damage_value_KGC_AddEquipmentOptions(attacker)

  445.     make_convert_mp_value(attacker)
  446.     make_absorb_mp_value(attacker)
  447.   end
  448.   #--------------------------------------------------------------------------
  449.   # ● スキルまたはアイテムによるダメージ計算
  450.   #     user : スキルまたはアイテムの使用者
  451.   #     obj  : スキルまたはアイテム
  452.   #    結果は @hp_damage または @mp_damage に代入する。
  453.   #--------------------------------------------------------------------------
  454.   alias make_obj_damage_value_KGC_AddEquipmentOptions make_obj_damage_value
  455.   def make_obj_damage_value(user, obj)
  456.     make_obj_damage_value_KGC_AddEquipmentOptions(user, obj)

  457.     make_convert_mp_value(user, obj)
  458.     make_absorb_mp_value(user, obj)
  459.   end
  460.   #--------------------------------------------------------------------------
  461.   # ○ MP 転換率の計算
  462.   #--------------------------------------------------------------------------
  463.   def calc_convert_mp_rate
  464.     return 0
  465.   end
  466.   #--------------------------------------------------------------------------
  467.   # ○ MP 吸収率の計算
  468.   #--------------------------------------------------------------------------
  469.   def calc_absorb_mp_rate
  470.     return 0
  471.   end
  472.   #--------------------------------------------------------------------------
  473.   # ○ MP 転換効果の適用
  474.   #     user : 攻撃者
  475.   #     obj  : スキルまたはアイテム (nil なら通常攻撃)
  476.   #    結果は @hp_damage または @mp_damage に代入する。
  477.   #--------------------------------------------------------------------------
  478.   def make_convert_mp_value(user, obj = nil)
  479.     return if @hp_damage <= 0  # 回復する場合は転換しない

  480.     rate = calc_convert_mp_rate
  481.     return if rate == 0        # 転換率が 0 なら転換しない

  482.     @mp_damage -= [@hp_damage * rate / 100, 1].max
  483.   end
  484.   #--------------------------------------------------------------------------
  485.   # ○ MP 吸収効果の適用
  486.   #     user : 攻撃者
  487.   #     obj  : スキルまたはアイテム (nil なら通常攻撃)
  488.   #    結果は @hp_damage または @mp_damage に代入する。
  489.   #--------------------------------------------------------------------------
  490.   def make_absorb_mp_value(user, obj = nil)
  491.     return unless mp_absorb?(user, obj)

  492.     # HP ダメージを MP 回復値に変換
  493.     rate = elements_max_rate( (obj == nil ? user : obj).element_set )
  494.     rate = rate.abs * calc_absorb_mp_rate / 100
  495.     @mp_damage -= [@hp_damage.abs * rate / 100, 1].max
  496.     @hp_damage = 0
  497.   end
  498.   #--------------------------------------------------------------------------
  499.   # ○ MP 吸収判定
  500.   #     user : 攻撃者
  501.   #     obj  : スキルまたはアイテム (nil なら通常攻撃)
  502.   #--------------------------------------------------------------------------
  503.   def mp_absorb?(user, obj = nil)
  504.     if obj.is_a?(RPG::UsableItem)
  505.       return false if obj.base_damage < 0     # 回復なら吸収しない
  506.       if obj.is_a?(RPG::Item)
  507.         # 回復アイテムなら吸収しない
  508.         return false if obj.hp_recovery_rate > 0 || obj.hp_recovery > 0
  509.       end
  510.     end
  511.     return false if calc_absorb_mp_rate == 0  # 吸収率が 0 なら吸収しない
  512.     rate = elements_max_rate( (obj == nil ? user : obj).element_set )
  513.     return false if rate >= 0                 # 有効な属性なら吸収しない

  514.     return true
  515.   end
  516. end

  517. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

  518. #==============================================================================
  519. # ■ Game_BattleAction
  520. #==============================================================================

  521. class Game_BattleAction
  522.   #--------------------------------------------------------------------------
  523.   # ● 通常攻撃のターゲット作成
  524.   #--------------------------------------------------------------------------
  525.   alias make_attack_targets_KGC_AddEquipmentOptions make_attack_targets
  526.   def make_attack_targets
  527.     buf = make_attack_targets_KGC_AddEquipmentOptions
  528.     targets = buf.clone

  529.     # n 回攻撃
  530.     (battler.multi_attack_count - 1).times { targets += buf }
  531.     return targets
  532.   end
  533. end

  534. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

  535. #==============================================================================
  536. # ■ Game_Actor
  537. #==============================================================================

  538. class Game_Actor < Game_Battler
  539.   #--------------------------------------------------------------------------
  540.   # ● 属性修正値の取得
  541.   #     element_id : 属性 ID
  542.   #--------------------------------------------------------------------------
  543.   alias element_rate_KGC_AddEquipmentOptions element_rate
  544.   def element_rate(element_id)
  545.     result = element_rate_KGC_AddEquipmentOptions(element_id)

  546.     # 耐性の適用
  547.     result = result * element_resistance(element_id) / 100

  548.     absorb_flag = (result < 0)
  549.     result = result.abs
  550.     equips.compact.each { |item|
  551.       if item.invalid_element_set.include?(element_id)  # 無効
  552.         result = 0
  553.         break
  554.       end
  555.       if item.guard_element_set.include?(element_id)    # 半減
  556.         result /= 2
  557.       end
  558.       if item.weak_element_set.include?(element_id)     # 弱点
  559.         result = result * 3 / 2
  560.       end
  561.       absorb_flag |= item.absorb_element_set.include?(element_id)  # 吸収フラグ
  562.     }
  563.     result = -result if absorb_flag
  564.     return result
  565.   end
  566.   #--------------------------------------------------------------------------
  567.   # ○ 属性耐性の取得
  568.   #     element_id : 属性 ID
  569.   #--------------------------------------------------------------------------
  570.   def element_resistance(element_id)
  571.     n = 100
  572.     equips.compact.each { |item|
  573.       if item.element_resistance[element_id] != nil
  574.         n += item.element_resistance[element_id] - 100
  575.       end
  576.     }
  577.     return n
  578.   end
  579.   #--------------------------------------------------------------------------
  580.   # ● ステートの付加成功率の取得
  581.   #     state_id : ステート ID
  582.   #--------------------------------------------------------------------------
  583.   alias state_probability_KGC_AddEquipmentOptions state_probability
  584.   def state_probability(state_id)
  585.     result = state_probability_KGC_AddEquipmentOptions(state_id)

  586.     return result * state_resistance(state_id) / 100
  587.   end
  588.   #--------------------------------------------------------------------------
  589.   # ○ ステート耐性の取得
  590.   #     state_id : ステート ID
  591.   #--------------------------------------------------------------------------
  592.   def state_resistance(state_id)
  593.     n = 100
  594.     equips.compact.each { |item|
  595.       if item.state_resistance[state_id] != nil
  596.         n += item.state_resistance[state_id] - 100
  597.       end
  598.     }
  599.     return [n, 0].max
  600.   end
  601.   #--------------------------------------------------------------------------
  602.   # ● 通常攻撃の属性取得
  603.   #--------------------------------------------------------------------------
  604.   alias element_set_KGC_AddEquipmentOptions element_set
  605.   def element_set
  606.     result = element_set_KGC_AddEquipmentOptions

  607.     armors.compact.each { |armor|
  608.       result |= armor.attack_element_set
  609.     }
  610.     return result
  611.   end
  612.   #--------------------------------------------------------------------------
  613.   # ● 通常攻撃の追加効果 (ステート変化) 取得
  614.   #--------------------------------------------------------------------------
  615.   alias plus_state_set_KGC_AddEquipmentOptions plus_state_set
  616.   def plus_state_set
  617.     result = plus_state_set_KGC_AddEquipmentOptions

  618.     armors.compact.each { |armor|
  619.       result |= armor.plus_state_set
  620.     }
  621.     return result
  622.   end
  623.   #--------------------------------------------------------------------------
  624.   # ● クリティカル率の取得
  625.   #--------------------------------------------------------------------------
  626.   alias cri_KGC_AddEquipmentOptions cri
  627.   def cri
  628.     n = cri_KGC_AddEquipmentOptions

  629.     armors.compact.each { |armor|
  630.       n += 4 if armor.critical_bonus
  631.     }
  632.     return n
  633.   end
  634.   #--------------------------------------------------------------------------
  635.   # ○ 攻撃回数の取得
  636.   #--------------------------------------------------------------------------
  637.   def multi_attack_count
  638.     result = [1]
  639.     equips.compact.each { |item|
  640.       result << item.multi_attack_count
  641.     }
  642.     return result.max
  643.   end
  644.   #--------------------------------------------------------------------------
  645.   # ● 武器オプション [ターン内先制] の取得
  646.   #--------------------------------------------------------------------------
  647.   alias fast_attack_KGC_AddEquipmentOptions fast_attack
  648.   def fast_attack
  649.     return true if fast_attack_KGC_AddEquipmentOptions

  650.     armors.compact.each { |armor|
  651.       return true if armor.fast_attack
  652.     }
  653.     return false
  654.   end
  655.   #--------------------------------------------------------------------------
  656.   # ● 武器オプション [連続攻撃] の取得
  657.   #--------------------------------------------------------------------------
  658.   alias dual_attack_KGC_AddEquipmentOptions dual_attack
  659.   def dual_attack
  660.     # 2回攻撃以上なら無視
  661.     return false if multi_attack_count >= 2

  662.     return true if dual_attack_KGC_AddEquipmentOptions

  663.     armors.compact.each { |armor|
  664.       return true if armor.dual_attack
  665.     }
  666.     return false
  667.   end
  668.   #--------------------------------------------------------------------------
  669.   # ● 防具オプション [クリティカル防止] の取得
  670.   #--------------------------------------------------------------------------
  671.   alias prevent_critical_KGC_AddEquipmentOptions prevent_critical
  672.   def prevent_critical
  673.     return true if prevent_critical_KGC_AddEquipmentOptions

  674.     weapons.compact.each { |weapon|
  675.       return true if weapon.prevent_critical
  676.     }
  677.     return false
  678.   end
  679.   #--------------------------------------------------------------------------
  680.   # ● 防具オプション [消費 MP 半分] の取得
  681.   #--------------------------------------------------------------------------
  682.   alias half_mp_cost_KGC_AddEquipmentOptions half_mp_cost
  683.   def half_mp_cost
  684.     return true if half_mp_cost_KGC_AddEquipmentOptions

  685.     weapons.compact.each { |weapon|
  686.       return true if weapon.half_mp_cost
  687.     }
  688.     return false
  689.   end
  690.   #--------------------------------------------------------------------------
  691.   # ● 防具オプション [取得経験値 2 倍] の取得
  692.   #--------------------------------------------------------------------------
  693.   alias double_exp_gain_KGC_AddEquipmentOptions double_exp_gain
  694.   def double_exp_gain
  695.     return true if double_exp_gain_KGC_AddEquipmentOptions

  696.     weapons.compact.each { |weapon|
  697.       return true if weapon.double_exp_gain
  698.     }
  699.     return false
  700.   end
  701.   #--------------------------------------------------------------------------
  702.   # ● 防具オプション [HP 自動回復] の取得
  703.   #--------------------------------------------------------------------------
  704.   alias auto_hp_recover_KGC_AddEquipmentOptions auto_hp_recover
  705.   def auto_hp_recover
  706.     return true if auto_hp_recover_KGC_AddEquipmentOptions

  707.     weapons.compact.each { |weapon|
  708.       return true if weapon.auto_hp_recover
  709.     }
  710.     return false
  711.   end
  712.   #--------------------------------------------------------------------------
  713.   # ● 装備オプション [MP 自動回復] の取得
  714.   #--------------------------------------------------------------------------
  715.   def auto_mp_recover
  716.     equips.compact.each { |item|
  717.       return true if item.auto_mp_recover
  718.     }
  719.     return false
  720.   end
  721.   #--------------------------------------------------------------------------
  722.   # ○ HP 自動回復量の取得
  723.   #--------------------------------------------------------------------------
  724.   def auto_hp_recover_value
  725.     value = 0
  726.     rate = 0
  727.     equips.compact.each { |item|
  728.       value += item.auto_hp_recover_value
  729.       rate  += item.auto_hp_recover_rate
  730.     }
  731.     # 回復量を算出
  732.     if value == 0 && rate == 0
  733.       n = maxhp * KGC::AddEquipmentOptions::DEFAULT_RECOVER_HP_RATE / 100
  734.     else
  735.       n = value + (maxhp * rate / 100)
  736.     end
  737.     return [n, 1].max
  738.   end
  739.   #--------------------------------------------------------------------------
  740.   # ○ MP 自動回復量の取得
  741.   #--------------------------------------------------------------------------
  742.   def auto_mp_recover_value
  743.     value = 0
  744.     rate = 0
  745.     equips.compact.each { |item|
  746.       value += item.auto_mp_recover_value
  747.       rate  += item.auto_mp_recover_rate
  748.     }
  749.     # 回復量を算出
  750.     if value == 0 && rate == 0
  751.       n = maxmp * KGC::AddEquipmentOptions::DEFAULT_RECOVER_MP_RATE / 100
  752.     else
  753.       n = value + (maxmp * rate / 100)
  754.     end
  755.     return [n, 1].max
  756.   end
  757.   #--------------------------------------------------------------------------
  758.   # ● 自動回復の実行 (ターン終了時に呼び出し)
  759.   #--------------------------------------------------------------------------
  760.   def do_auto_recovery
  761.     return if dead?

  762.     self.hp += auto_hp_recover_value if auto_hp_recover
  763.     self.mp += auto_mp_recover_value if auto_mp_recover
  764.   end
  765.   #--------------------------------------------------------------------------
  766.   # ○ MP 転換率の計算
  767.   #--------------------------------------------------------------------------
  768.   def calc_convert_mp_rate
  769.     n = 0
  770.     equips.compact.each { |item| n += item.convert_mp_rate }
  771.     return n
  772.   end
  773.   #--------------------------------------------------------------------------
  774.   # ○ MP 吸収率の計算
  775.   #--------------------------------------------------------------------------
  776.   def calc_absorb_mp_rate
  777.     n = 0
  778.     equips.compact.each { |item| n += item.absorb_mp_rate }
  779.     return n
  780.   end
  781. end

  782. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

  783. #==============================================================================
  784. # ■ Scene_Battle
  785. #==============================================================================

  786. class Scene_Battle < Scene_Base
  787.   #--------------------------------------------------------------------------
  788.   # ● HP ダメージ表示
  789.   #     target : 対象者
  790.   #     obj    : スキルまたはアイテム
  791.   #--------------------------------------------------------------------------
  792.   alias display_hp_damage_KGC_AddEquipmentOptions display_hp_damage
  793.   def display_hp_damage(target, obj = nil)
  794.     if target.hp_damage == 0 && target.mp_damage < 0
  795.       return if target.mp_absorb?(@active_battler, obj)  # MP 吸収
  796.     end

  797.     display_hp_damage_KGC_AddEquipmentOptions(target, obj)
  798.   end
  799. end
复制代码
只有游戏里默认的比如HP回复,2倍经验,消耗MP减半这几个有效,其余的特殊能力都没用,还要加哪个脚本才有效啊,各位教教我这个新人吧

Lv4.逐梦者

醉啸 长风万里

梦石
0
星屑
6167
在线时间
6593 小时
注册时间
2007-12-16
帖子
4501

贵宾

2
发表于 2010-9-10 12:36:31 | 只看该作者
在数据库武器和装备中的 注释 里写入 <連続攻撃> 等等的效果,效果在脚本33行至95行中有定义

还在龟速填坑中
回复 支持 反对

使用道具 举报

Lv1.梦旅人

天空之神

梦石
0
星屑
156
在线时间
173 小时
注册时间
2009-5-3
帖子
612
3
发表于 2010-9-10 16:07:47 | 只看该作者
能不能用【代码】功能发,有些变成符号了……
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
336 小时
注册时间
2010-8-26
帖子
428
4
 楼主| 发表于 2010-9-10 17:05:28 | 只看该作者
[code]我不是不知道这脚本怎么用,呵呵,只是效果没,比如MP转换,几次攻击等效果出不来
人物介绍.rar (242.53 KB, 下载次数: 12)
[
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-23 23:02

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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