| 
 
| 赞 | 1 |  
| VIP | 16 |  
| 好人卡 | 23 |  
| 积分 | 0 |  
| 经验 | 49509 |  
| 最后登录 | 2016-1-9 |  
| 在线时间 | 2459 小时 |  
 Lv1.梦旅人 
	梦石0 星屑48 在线时间2459 小时注册时间2011-12-18帖子1484 | 
| 将以下代码复制到main上即可 复制代码#==============================================================================
# ■ [VX] 读取rmvx备注栏
#    [VX] ReadNote
#----------------------------------------------------------------------------
# 使用说明:
# 【例】在vx数据库比如1号物品的备注栏里写: 耐久度 = 10
#       读取时使用: p $data_items[1].read_note('耐久度')
# 几点注意:
#       ① 支持汉字,英文忽略大小写
#       ② 等号右边遵循ruby语法格式,例如:
#              test1 = 1              #=> 1
#              test2 = "a"            #=> "a"
#              test3 = true           #=> true
#              test4 = [1,2,3]        #=> [1,2,3]
#              test5 = {"orz"=>1}     #=> {"orz"=>1}
#       ③ 等号忽略空格,以下均正确:
#              test = nil; test= nil; test =nil; test=nil
#----------------------------------------------------------------------------
#    更新作者: 沉影不器
#    许可协议: FSL
#    项目版本: 2.02.1001
#    引用网址: http://rpg.blue/thread-99474-1-1.html
#----------------------------------------------------------------------------
#    - *2.02.1001* (2010-10-01) By 沉影不器
#      *修复引用方法带Binding的错误
#
#    - *2.01.0806* (2010-08-06) By 沉影不器
#      *完全用eval执行文本,进一步简化代码
#
#    - *2.00.0729* (2010-07-29) By 沉影不器
#      *改用eval执行赋值内容,支持浮点.数组.哈希等
#      *强制忽略大小写
#      *简化脚本
#
#    - *1.11.0824* (2008-08-24) By 沉影不器
#      *修正rmvx英文帮助带来的类名错误
#
#    - *1.10.0821* (2008-08-21) By 沉影不器
#      *扩展到支持rmvx数据库内所有带备注栏的选项
#      *改了一下算法,使备注栏的注释也同ruby语法一样忽略空格
#
#    - *1.02.0819* (2008-08-19) By 沉影不器
#      *直接成为RPG::BaseItem内一个函数,简化使用方法
#
#    - *1.00.0818* (2008-08-18) By 沉影不器
#      *初版
#==============================================================================
$fscript = {} if $fscript == nil
$fscript["ReadNote"] = "2.02.1001"
#==============================================================================
# ■ RPG
#==============================================================================
module RPG
  #=============================================================================
  # □ ReadNote
  #=============================================================================
  module ReadNote
    def self.read(str, section, mismatch = nil)
      str.each_line do |line|
        ## 不希望忽略大小写,则删掉下一行最后一个i
        eval("#{line}; return #{section}") if line =~ /^\s*#{section}\s*=/i
      end
      return mismatch
    end
  end
  #=============================================================================
  # ■ BaseItem
  #=============================================================================
  class BaseItem
    #-------------------------------------------------------------------------
    # ○ 读取rmvx备注栏指定字段
    #     section  : 字段名
    #     mismatch : 未匹配时的返回值
    #-------------------------------------------------------------------------
    def read_note(section, mismatch = nil)
      ReadNote.read(self.note, section, mismatch)
    end
  end
  #=============================================================================
  # ■ Enemy
  #=============================================================================
  class Enemy
    def read_note(section, mismatch = nil)
      ReadNote.read(self.note, section, mismatch)
    end
  end
  #=============================================================================
  # ■ State
  #=============================================================================
  class State
    def read_note(section, mismatch = nil)
      ReadNote.read(self.note, section, mismatch)
    end
  end
end
复制代码#==========================================================================
#在武器或防具的备注栏写上:生命 = 1000 表示该装备提供1000点额外的生命值上限
#写上: 魔力 = 1000 表示该装备提供1000点额外的魔力值上限。
#PS:请善用此次提供的读取备注栏信息的脚本,许多问题可以依照解决本问题的方法
#   得以解决。
#==========================================================================
#装备类
===========
module RPG
  class Armor < BaseItem
    attr_accessor :maxhp_plus
    attr_accessor :maxmp_plus
    def initialize
      super
      @maxmp_plus = 0
      @maxhp_plus = 0
    end
    def maxhp_plus
      if self.read_note('生命') != nil
        n = self.read_note('生命')
      else
        n = 0
      end
      return n
    end
    def maxmp_plus
      if self.read_note('魔力') != nil
        n = self.read_note('魔力')
      else
        n = 0
      end
      return n
    end
  end
 class Weapon < BaseItem
    attr_accessor :maxhp_plus
    attr_accessor :maxmp_plus
    def initialize
      super
      @maxmp_plus = 0
      @maxhp_plus = 0
    end
    def maxhp_plus
      if self.read_note('生命') != nil
        n = self.read_note('生命')
      else
        n = 0
      end
      return n
    end
    def maxmp_plus
      if self.read_note('魔力') != nil
        n = self.read_note('魔力')
      else
        n = 0
      end
      return n
    end
  end
end
#========
#角色类
#========
class Game_Actor < Game_Battler
  def base_maxhp
    n = actor.parameters[0, @level]
    for item in equips.compact do
      n += item.maxhp_plus
    end
    return n
  end  
  def base_maxmp
    n = actor.parameters[1, @level]
    for item in equips.compact do
      n += item.maxmp_plus
    end
    return n
  end
end
 | 
 评分
查看全部评分
 |