Project1

标题: 请问如何才能让装备增加新的能力值 [打印本页]

作者: drgdrg    时间: 2008-8-14 18:48
标题: 请问如何才能让装备增加新的能力值
我给人物加了新的能力值:抗性

具体方法是,

1.  在Game_Actor中加了  
      attr_accessor :mdfpl        # mdf per level (抗性/等级 系数)

    并在Game_Actors中为每个职业设置了其初值


2.  但是在Game_Actor中模仿 获取基本攻击力/防御力/精神力/敏捷性 的方法来获取基本抗性(本身等级决定的值 + 装备获得的值),遇到了错误,因为系统默认的装备属性没有增加抗性这一项
   
  #--------------------------------------------------------------------------
  # ● 获取基本抗性
  #--------------------------------------------------------------------------
  def base_mdf
    n = mdfpl * level             #本身抗性=系数×等级
#   for item in equips.compact do n += item.mdf  end       #出错
    return n
  end


如果我在装备的备注栏里写上 [抗性 10] ,

那我要如何用split来提取人物所穿的每件装备的抗性

然后加到基本抗性里面?

[LINE]1,#dddddd[/LINE]版务信息:本贴由楼主自主结贴~
作者: 雪流星    时间: 2008-8-14 18:53
  1. class RPG::Weapon < RPG::BaseItem
  2.   def mdfpl
  3.     self.note.mplit(/[\r\n]+/).each { |line|
  4.       if line =~ /\[抗性 \d+\]/
  5.         a = line.mplit(/ /)[1]
  6.         d = ""
  7.         while ((c = a.slice!(/./m)) != nil)
  8.           d += c if c.is_a?(Integer)
  9.         end
  10.       end
  11.     }
  12.     return d ? d.to_i : nil
  13.   end  
  14. end  
复制代码

之後就能使用 $data_weapons[N].mdfpl来获取该值了
作者: drgdrg    时间: 2008-8-14 19:29
以下引用snstar2006于2008-8-14 10:53:27的发言:

class RPG::Weapon < RPG::BaseItem
  def mdfpl
    self.note.mplit(/[\r\n]+/).each { |line|
      if line =~ /\[抗性 \d+\]/
        a = line.mplit(/ /)[1]
        d = ""
        while ((c = a.slice!(/./m)) != nil)
          d += c if c.is_a?(Integer)
        end
      end
    }
    return d ? d.to_i : nil
  end  
end  

之後就能使用 $data_weapons[N].mdfpl来获取该值了


mplit貌似不对。。。。

改成split以后,  错误: 未定义的 d

为什么啊。。。。










作者: 雪流星    时间: 2008-8-14 19:40
= = 怎麽会变成mplit的????
在试试看吧...
  1. class RPG::Weapon < RPG::BaseItem
  2.   def mdfpl
  3.     self.note.split(/[\r\n]+/).each { |line|
  4.       d = ""
  5.       if line =~ /\[抗性 \d+\]/
  6.         a = line.split(/ /)[1]
  7.         while ((c = a.slice!(/./m)) != nil)
  8.           d += c if c.is_a?(Integer)
  9.         end
  10.       end
  11.     }
  12.     return d ? d.to_i : nil
  13.   end  
  14. end  
复制代码

作者: drgdrg    时间: 2008-8-14 19:56
还是不行。。。。{/ll}



作者: drgdrg    时间: 2008-8-15 19:05
郁闷了,

为什么试了N种办法都不能正常截取到[抗性 X]的 X啊。。。。

谁能救救偶。。。。
作者: 雪流星    时间: 2008-8-16 08:07
  1. class RPG::Weapon < RPG::BaseItem
  2.   def mdfpl
  3.     m = 0
  4.     self.note.split(/[\r\n]+/).each { |line|
  5.       m = $1.to_i if line =~ /\[抗性 (\d+)\]/
  6.     }   
  7.     return m
  8.   end  
  9. end
复制代码
[LINE]1,#dddddd[/LINE]系统信息:本贴由楼主认可为正确答案,66RPG感谢您的热情解答~
作者: drgdrg    时间: 2008-8-16 17:48
以下引用snstar2006于2008-8-16 0:07:55的发言:

class RPG::Weapon < RPG::BaseItem
  def mdfpl
    m = 0
    self.note.split(/[\r\n]+/).each { |line|
      m = $1.to_i if line =~ /\[抗性 (\d+)\]/
    }   
    return m
  end  
end


系统信息:本贴由楼主认可为正确答案,66RPG感谢您的热情解答~


终于可以了,非常感谢!

用这个办法再多加一些别的能力也不成问题吧{/se}{/se}{/se}





欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1