| 
首先今天参考了tomoaky的复数属性写法,在伤害公式中插入了这段实现了技能可以拥有多个属性修正的效果
x
加入我们,或者,欢迎回来。您需要 登录 才可以下载或查看,没有帐号?注册会员  
 #==============================================================================# ★ RGSS3_複数属性スキル Ver1.0#===============================================================================begin 作者:tomoakywebサイト:ひきも記 ([url]http://hikimoki.sakura.ne.jp/[/url]) メモ欄にタグを書き込むことで複数の属性をもつスキルを作成できます。  <追加属性 3, 4, 5>  === 注意点 ===  ダメージ計算に適用される属性は最も有効なもののみです  2011.12.18 Ver1.0  公開 =end #==============================================================================# ■ Game_Battler#==============================================================================class Game_Battler  #--------------------------------------------------------------------------  # ● スキル/アイテムの属性修正値を取得  #--------------------------------------------------------------------------  alias tmmelement_game_battler_item_element_rate item_element_rate  def item_element_rate(user, item)    result = [tmmelement_game_battler_item_element_rate(user, item)]    if /<追加属性\s+(\d+(?:\s*\,\s*\d+)*)\s*>/ =~ item.note      $1.scan(/\d+/).each do |id|        result.push(self.element_rate(id.to_i))      end    end    result.max  endend
#============================================================================== 
# ★ RGSS3_複数属性スキル Ver1.0 
#============================================================================== 
=begin 
  
作者:tomoaky 
webサイト:ひきも記 ([url]http://hikimoki.sakura.ne.jp/[/url]) 
  
メモ欄にタグを書き込むことで複数の属性をもつスキルを作成できます。 
  <追加属性 3, 4, 5> 
   
=== 注意点 === 
  ダメージ計算に適用される属性は最も有効なもののみです 
  
  
2011.12.18 Ver1.0 
  公開 
  
=end 
  
#============================================================================== 
# ■ Game_Battler 
#============================================================================== 
class Game_Battler 
  #-------------------------------------------------------------------------- 
  # ● スキル/アイテムの属性修正値を取得 
  #-------------------------------------------------------------------------- 
  alias tmmelement_game_battler_item_element_rate item_element_rate 
  def item_element_rate(user, item) 
    result = [tmmelement_game_battler_item_element_rate(user, item)] 
    if /<追加属性\s+(\d+(?:\s*\,\s*\d+)*)\s*>/ =~ item.note 
      $1.scan(/\d+/).each do |id| 
        result.push(self.element_rate(id.to_i)) 
      end 
    end 
    result.max 
  end 
end 
 value *= item_element_rate(user, item)    if /<追加属性\s+(\d+(?:\s*\,\s*\d+)*)\s*>/ =~ item.note      $1.scan(/\d+/).each do |id|      value *= self.element_rate(id.to_i)      end    end
value *= item_element_rate(user, item) 
    if /<追加属性\s+(\d+(?:\s*\,\s*\d+)*)\s*>/ =~ item.note 
      $1.scan(/\d+/).each do |id| 
      value *= self.element_rate(id.to_i) 
      end 
    end 
但是并没有高兴的太早,很快发现Taroxd的属性强化修正脚本的问题,只对主属性(也就是数据库的属性)生效伤害加成,额外属性并没有任何变化,试图用老办法(也就是效仿tomoaky的写法)居然提示报错属性修正不能变成浮点型(?),就在想有没有什么办法让技能用<追加属性 id>或者直接在脚本里定义来给技能写入多个属性id,这样有没有办法对多个属性生效?
   
 # @taroxd metadata 1.0# @display 属性修正的扩展# @require taroxd_core# @id element_effect# @help #             表示该角色/该职业/习得技能后/装上装备后/该敌人/获得状态后,#             战斗者使用第 id 号属性的技能时,效果乘以 rate# <ELEMENT 12 1.2>表示第12号属性效果乘以1.2 Taroxd::ElementEffect = true class RPG::BaseItem  # 属性效果构成的 hash,属性ID => 效果  def element_effect    @element_effect ||= @note.scan(/<ELEMENT\s+(\d+)\s+(\d+(?:\.\d+)?)>/i)      .each_with_object(Hash.new(1.0)) { |(id, rate), hash|        hash[id.to_i] *= rate.to_f }  endend class Game_Battler < Game_BattlerBase  def element_effect    note_objects.each_with_object(Hash.new(1.0)) do |e, h|      h.merge!(e.element_effect) { |_, r1, r2| r1 * r2 }    end  end   calc_new_rate = lambda do |old, user, item|    if item.damage.element_id < 0      user.atk_elements.pi(old) { |id| user.element_effect[id] }    else      old * user.element_effect[item.damage.element_id]    end  end  def_with :item_element_rate, calc_new_rateend
# @taroxd metadata 1.0 
# @display 属性修正的扩展 
# @require taroxd_core 
# @id element_effect 
# @help  
#             表示该角色/该职业/习得技能后/装上装备后/该敌人/获得状态后, 
#             战斗者使用第 id 号属性的技能时,效果乘以 rate 
# <ELEMENT 12 1.2>表示第12号属性效果乘以1.2 
  
Taroxd::ElementEffect = true 
  
class RPG::BaseItem 
  # 属性效果构成的 hash,属性ID => 效果 
  def element_effect 
    @element_effect ||= @note.scan(/<ELEMENT\s+(\d+)\s+(\d+(?:\.\d+)?)>/i) 
      .each_with_object(Hash.new(1.0)) { |(id, rate), hash| 
        hash[id.to_i] *= rate.to_f } 
  end 
end 
  
class Game_Battler < Game_BattlerBase 
  def element_effect 
    note_objects.each_with_object(Hash.new(1.0)) do |e, h| 
      h.merge!(e.element_effect) { |_, r1, r2| r1 * r2 } 
    end 
  end 
  
  calc_new_rate = lambda do |old, user, item| 
    if item.damage.element_id < 0 
      user.atk_elements.pi(old) { |id| user.element_effect[id] } 
    else 
      old * user.element_effect[item.damage.element_id] 
    end 
  end 
  def_with :item_element_rate, calc_new_rate 
end 
 |