Project1

标题: 请教两个脚本整合一个脚本的方法 [打印本页]

作者: sllery    时间: 2014-1-17 16:41
标题: 请教两个脚本整合一个脚本的方法
第一个脚本:
RUBY 代码复制
  1. #---------------------------------------------------------------------------------
  2. #需要能力值才能装备 改编自到达一定等级才能装备的武器和防具 By凌冰
  3. #用法:在武器、防具的说明里添加LV等级(后面的等级写个数字)STR力量(后面的力量写个数字)
  4. #DEX灵巧(后面的灵巧写个数字)AGI速度(后面的速度写个数字)INT魔力(后面的魔力写个数字)
  5. #可以空缺,空缺项默认为1
  6. #建议和升级加点脚本配合使用
  7. #---------------------------------------------------------------------------------
  8. module RPG
  9.   class Weapon
  10.     def level
  11.      return 1 if @description.split(/LV/)[1] == nil
  12.      return @description.split(/LV/)[1]
  13.    end
  14.    def str
  15.      return 1 if @description.split(/STR/)[1] == nil
  16.      return @description.split(/STR/)[1]
  17.    end
  18.    def dex
  19.      return 1 if @description.split(/DEX/)[1] == nil
  20.      return @description.split(/DEX/)[1]
  21.    end
  22.    def agi
  23.      return 1 if @description.split(/AGI/)[1] == nil
  24.      return @description.split(/AGI/)[1]
  25.    end
  26.    def int
  27.      return 1 if @description.split(/INT/)[1] == nil
  28.      return @description.split(/INT/)[1]
  29.    end
  30. #    def description      
  31. #      return @description.split(/LV/)[0] + "{装备等级" + level + "}"
  32. #    end
  33. end
  34. class Armor
  35.     def level
  36.      return 1 if @description.split(/LV/)[1] == nil
  37.      return @description.split(/LV/)[1]
  38.    end
  39.    def str
  40.      return 1 if @description.split(/STR/)[1] == nil
  41.      return @description.split(/STR/)[1]
  42.    end
  43.    def dex
  44.      return 1 if @description.split(/DEX/)[1] == nil
  45.      return @description.split(/DEX/)[1]
  46.    end
  47.    def agi
  48.      return 1 if @description.split(/AGI/)[1] == nil
  49.      return @description.split(/AGI/)[1]
  50.    end
  51.    def int
  52.      return 1 if @description.split(/INT/)[1] == nil
  53.      return @description.split(/INT/)[1]
  54.    end
  55. #    def description      
  56. #      return @description.split(/LV/)[0] + "{装备等级" + level + "}"
  57. #    end
  58.   end
  59. end
  60.  
  61. class Game_Actor < Game_Battler
  62. #--------------------------------------------------------------------------
  63. # ● 可以装备判定
  64. #     item : 物品
  65. #--------------------------------------------------------------------------
  66. def equipable?(item)
  67.    # 武器的情况
  68.    if item.is_a?(RPG::Weapon)
  69.      # 包含当前的职业可以装备武器的场合
  70.      if $data_classes[@class_id].weapon_set.include?(item.id) and item.level.to_i<=@level
  71.        if item.str.to_i<= str and item.dex.to_i<= dex and item.agi.to_i<= agi and item.int.to_i<= int
  72.        return true
  73.        end
  74.      end
  75.    end
  76.    # 防具的情况
  77.    if item.is_a?(RPG::Armor)
  78.      # 不包含当前的职业可以装备武器的场合
  79.      if $data_classes[@class_id].armor_set.include?(item.id) and item.level.to_i<=@level
  80.        if item.str.to_i<= str and item.dex.to_i<= dex and item.agi.to_i<= agi and item.int.to_i<= int
  81.        return true
  82.        end
  83.      end
  84.    end
  85.    return false
  86. end
  87. end
  88. #==============================================================================
  89. # ■ Window_EquipItem
  90. #------------------------------------------------------------------------------
  91. #  装备画面、显示浏览变更装备的候补物品的窗口。
  92. #==============================================================================
  93.  
  94. class Window_EquipItem < Window_Selectable
  95.   #--------------------------------------------------------------------------
  96.   # ● 刷新
  97.   #--------------------------------------------------------------------------
  98.   def refresh
  99.     if self.contents != nil
  100.       self.contents.dispose
  101.       self.contents = nil
  102.     end
  103.     @data = []
  104.     # 添加可以装备的武器
  105.     if @equip_type == 0
  106.       weapon_set = $data_classes[@actor.class_id].weapon_set
  107.       for i in 1...$data_weapons.size
  108.         if $game_party.weapon_number(i) > 0 and weapon_set.include?(i) and @actor.equipable?($data_weapons[i])
  109.           @data.push($data_weapons[i])
  110.         end
  111.       end
  112.     end
  113.     # 添加可以装备的防具
  114.     if @equip_type != 0
  115.       armor_set = $data_classes[@actor.class_id].armor_set
  116.       for i in 1...$data_armors.size
  117.         if $game_party.armor_number(i) > 0 and armor_set.include?(i) and @actor.equipable?($data_armors[i])
  118.           if $data_armors[i].kind == @equip_type-1
  119.             @data.push($data_armors[i])
  120.           end
  121.         end
  122.       end
  123.     end
  124.     # 添加空白
  125.     @data.push(nil)
  126.     # 生成位图、描绘全部项目
  127.     @item_max = @data.size
  128.     self.contents = Bitmap.new(width - 32, row_max * 32)
  129.     for i in 0...@item_max-1
  130.       draw_item(i)
  131.     end
  132.   end
  133. end


第二个脚本
RUBY 代码复制
  1. module RPG
  2.   #--------------------------------------------------------------------------
  3.   # ● Cache追加
  4.   #--------------------------------------------------------------------------  
  5.   module Cache
  6.     def self.faces(filename)
  7.       self.load_bitmap("Graphics/Faces/", filename)
  8.     end
  9.     def self.menu(filename)
  10.       self.load_bitmap("Graphics/Menu/", filename)
  11.     end
  12.     def self.images(filename)
  13.       self.load_bitmap("Graphics/Images/", filename)
  14.     end
  15.     def self.menu(filename)
  16.       self.load_bitmap("Graphics/Menu/", filename)
  17.     end
  18.     def self.menu_icon(filename)
  19.       self.load_bitmap("Graphics/Menu_Icons/", filename)
  20.     end
  21.     def self.crystal(filename)
  22.       self.load_bitmap("Graphics/Crystal/", filename)
  23.     end
  24.     def self.members(filename)
  25.       self.load_bitmap("Graphics/Members/", filename)
  26.     end
  27.     def self.mission(filename)
  28.       self.load_bitmap("Graphics/Mission/", filename)
  29.     end
  30.     def self.cook(filename)
  31.       self.load_bitmap("Graphics/Cook/", filename)
  32.     end
  33.   end
  34.   #--------------------------------------------------------------------------
  35.   # ● 结晶回路用全局变量
  36.   #--------------------------------------------------------------------------
  37.   # 结晶石防具数据库起始ID,此为第一件结晶石的ID,其后不得再含有普通的防具。
  38.   ARMOR_BEGIN = 201
  39.   # 结晶石技能数据库起始ID,此为第一个结晶石技能的ID,其后不得再含有普通的技能。
  40.   SKILL_BEGIN = 201
  41.   #--------------------------------------------------------------------------
  42.   # ● 结晶回路的各个属性定义
  43.   #--------------------------------------------------------------------------
  44.   class Armor
  45.     # 防具数据库,结晶石是通过防具数据库进行设置的。
  46.     # 设置方法:
  47.     # 在属性防御上勾选此结晶所包含的属性,之后在名称栏中通过半角逗号分隔,将具
  48.     # 体属性值写于其中。如范例中:“火神的愤怒,25@5”,同时勾选了炎和雷属性,根
  49.     # 据从上到下的先后次序,炎属性为25,雷属性为5。
  50.     # 结晶石本身的属性以及本身的等级,通过描述一栏后追加分隔符的方法来给定。
  51.     # 具体可参考范例。
  52.  
  53.     if self.id >= ARMOR_BEGIN
  54.     #--------------------------------------------------------------------------
  55.     # ● 重新定义名字
  56.     #--------------------------------------------------------------------------  
  57.       def name
  58.         return @name.split(/,/)[0]
  59.       end
  60.     #--------------------------------------------------------------------------
  61.     # ● 定义结晶回路包含的属性值
  62.     #--------------------------------------------------------------------------  
  63.       def crystal_element
  64.         return Array.new(CRYSTAL::ELE_NUMBER, 0) if @name.split(/,/).size == 1
  65.         data = @name.split(/,/)[1].split(/@/)
  66.         final = []
  67.         for i in 0...CRYSTAL::ELE_NUMBER
  68.           if self.guard_element_set.include?(i + 1)
  69.             if data.empty?
  70.               raise ("#{@id}号结晶石的属性未设置")
  71.             end
  72.             final[i] = data.shift.to_i
  73.           else
  74.             final[i] = 0
  75.           end
  76.         end
  77.         return final
  78.       end
  79.     #--------------------------------------------------------------------------
  80.     # ● 重新定义结晶回路的描述
  81.     #--------------------------------------------------------------------------  
  82.       def description
  83.         return @description.split(/,/)[0]
  84.       end
  85.     #--------------------------------------------------------------------------
  86.     # ● 定义结晶回路的主要属性
  87.     #--------------------------------------------------------------------------  
  88.       def element
  89.         return @description.split(/,/)[1].to_i
  90.       end
  91.     #--------------------------------------------------------------------------
  92.     # ● 定义结晶回路的等级
  93.     #--------------------------------------------------------------------------  
  94.       def level
  95.         return @description.split(/,/)[2].to_i
  96.       end
  97.     #--------------------------------------------------------------------------
  98.     # ● 定义结晶回路的价格 也就是耗费的各个耀晶片数量
  99.     #--------------------------------------------------------------------------   
  100.       def cost_sepich
  101.         @data = $data_armors[self.id+1].description.split(/#/)
  102.         final = []
  103.         for i in 0...CRYSTAL::ELE_NUMBER
  104.           if $data_armors[self.id+1].guard_element_set.include?(i+1)
  105.             if @data.empty?
  106.               break
  107.             end
  108.             final[i] = @data.shift.to_i
  109.           else
  110.             final[i] = 0
  111.           end
  112.         end
  113.         return final
  114.       end
  115.     #--------------------------------------------------------------------------
  116.     # ● 定义结晶回路的种类 为了让同样的回路不能装备多个用
  117.     #--------------------------------------------------------------------------   
  118.       def cry_type
  119.         return $data_armors[self.id+1].name.to_i
  120.       end
  121.  
  122.     end
  123.   end
  124.   class Skill
  125.     # 技能数据库,用来设置根据结晶属性值的多少学会的技能。
  126.     # 设置方法与防具数据库类似,勾选属性一栏的对应属性,然后通过名称给予需要的
  127.     # 结晶属性值。
  128.     if self.id >= SKILL_BEGIN
  129.       def name
  130.         return @name.split(/,/)[0]
  131.       end
  132.       def require_element
  133.         data = @name.split(/,/)[1].split(/@/)
  134.         final = []
  135.         for i in 0...CRYSTAL::ELE_NUMBER
  136.           if self.element_set.include?(i + 1)
  137.             if data.empty?
  138.               raise ("#{@id}号技能的属性未设置")
  139.             end
  140.             final[i] = data.shift.to_i
  141.           else
  142.             final[i] = 0
  143.           end
  144.         end
  145.         return final
  146.       end
  147.       def description
  148.         return @description.split(/,/)[0]
  149.       end
  150.       def element
  151.         return @description.split(/,/)[1].to_i
  152.       end
  153.     end
  154.   end
  155. end


我想在不变更第二个脚本的功能情况下融合第一个的内容,请问如何实现?
作者: eve592370698    时间: 2014-2-7 00:51
标题: 其实就是把一些定义方法合并一下就可以了。
RUBY 代码复制
  1. =begin ---------------------------------------------------------------------------------
  2. #需要能力值才能装备 改编自到达一定等级才能装备的武器和防具 By凌冰
  3. #用法:在武器、防具的说明里添加LV等级(后面的等级写个数字)STR力量(后面的力量写个数字)
  4. #DEX灵巧(后面的灵巧写个数字)AGI速度(后面的速度写个数字)INT魔力(后面的魔力写个数字)
  5. #可以空缺,空缺项默认为1
  6. #建议和升级加点脚本配合使用
  7. =end #---------------------------------------------------------------------------------
  8. module RPG
  9.   #--------------------------------------------------------------------------
  10.   # ● Cache追加
  11.   #--------------------------------------------------------------------------  
  12.   module Cache
  13.     def self.faces(filename)
  14.       self.load_bitmap("Graphics/Faces/", filename)
  15.     end
  16.     def self.menu(filename)
  17.       self.load_bitmap("Graphics/Menu/", filename)
  18.     end
  19.     def self.images(filename)
  20.       self.load_bitmap("Graphics/Images/", filename)
  21.     end
  22.     def self.menu(filename)
  23.       self.load_bitmap("Graphics/Menu/", filename)
  24.     end
  25.     def self.menu_icon(filename)
  26.       self.load_bitmap("Graphics/Menu_Icons/", filename)
  27.     end
  28.     def self.crystal(filename)
  29.       self.load_bitmap("Graphics/Crystal/", filename)
  30.     end
  31.     def self.members(filename)
  32.       self.load_bitmap("Graphics/Members/", filename)
  33.     end
  34.     def self.mission(filename)
  35.       self.load_bitmap("Graphics/Mission/", filename)
  36.     end
  37.     def self.cook(filename)
  38.       self.load_bitmap("Graphics/Cook/", filename)
  39.     end
  40.   end
  41.   #--------------------------------------------------------------------------
  42.   # ● 结晶回路用全局变量
  43.   #--------------------------------------------------------------------------
  44.   # 结晶石防具数据库起始ID,此为第一件结晶石的ID,其后不得再含有普通的防具。
  45.   ARMOR_BEGIN = 201
  46.   # 结晶石技能数据库起始ID,此为第一个结晶石技能的ID,其后不得再含有普通的技能。
  47.   SKILL_BEGIN = 201
  48.  
  49.   class Skill
  50.     # 技能数据库,用来设置根据结晶属性值的多少学会的技能。
  51.     # 设置方法与防具数据库类似,勾选属性一栏的对应属性,然后通过名称给予需要的
  52.     # 结晶属性值。
  53.     if self.id >= SKILL_BEGIN
  54.       def name
  55.         return @name.split(/,/)[0]
  56.       end
  57.       def require_element
  58.         data = @name.split(/,/)[1].split(/@/)
  59.         final = []
  60.         for i in 0...CRYSTAL::ELE_NUMBER
  61.           if self.element_set.include?(i + 1)
  62.             if data.empty?
  63.               raise ("#{@id}号技能的属性未设置")
  64.             end
  65.             final[i] = data.shift.to_i
  66.           else
  67.             final[i] = 0
  68.           end
  69.         end
  70.         return final
  71.       end
  72.       def description
  73.         return @description.split(/,/)[0]
  74.       end
  75.       def element
  76.         return @description.split(/,/)[1].to_i
  77.       end
  78.     end
  79.   end
  80.  
  81.   class Weapon
  82.     def level
  83.      return 1 if @description.split(/LV/)[1] == nil
  84.      return @description.split(/LV/)[1]
  85.    end
  86.    def str
  87.      return 1 if @description.split(/STR/)[1] == nil
  88.      return @description.split(/STR/)[1]
  89.    end
  90.    def dex
  91.      return 1 if @description.split(/DEX/)[1] == nil
  92.      return @description.split(/DEX/)[1]
  93.    end
  94.    def agi
  95.      return 1 if @description.split(/AGI/)[1] == nil
  96.      return @description.split(/AGI/)[1]
  97.    end
  98.    def int
  99.      return 1 if @description.split(/INT/)[1] == nil
  100.      return @description.split(/INT/)[1]
  101.    end
  102. #    def description      
  103. #      return @description.split(/LV/)[0] + "{装备等级" + level + "}"
  104. #    end
  105.   end
  106.   #--------------------------------------------------------------------------
  107.   # ● 结晶回路的各个属性定义
  108.   #--------------------------------------------------------------------------
  109.   class Armor
  110.     # 防具数据库,结晶石是通过防具数据库进行设置的。
  111.     # 设置方法:
  112.     # 在属性防御上勾选此结晶所包含的属性,之后在名称栏中通过半角逗号分隔,将具
  113.     # 体属性值写于其中。如范例中:“火神的愤怒,25@5”,同时勾选了炎和雷属性,根
  114.     # 据从上到下的先后次序,炎属性为25,雷属性为5。
  115.     # 结晶石本身的属性以及本身的等级,通过描述一栏后追加分隔符的方法来给定。
  116.     # 具体可参考范例。
  117.  
  118.     if self.id >= ARMOR_BEGIN
  119.     #--------------------------------------------------------------------------
  120.     # ● 重新定义名字
  121.     #--------------------------------------------------------------------------  
  122.       def name
  123.         return @name.split(/,/)[0]
  124.       end
  125.     #--------------------------------------------------------------------------
  126.     # ● 定义结晶回路包含的属性值
  127.     #--------------------------------------------------------------------------  
  128.       def crystal_element
  129.         return Array.new(CRYSTAL::ELE_NUMBER, 0) if @name.split(/,/).size == 1
  130.         data = @name.split(/,/)[1].split(/@/)
  131.         final = []
  132.         for i in 0...CRYSTAL::ELE_NUMBER
  133.           if self.guard_element_set.include?(i + 1)
  134.             if data.empty?
  135.               raise ("#{@id}号结晶石的属性未设置")
  136.             end
  137.             final[i] = data.shift.to_i
  138.           else
  139.             final[i] = 0
  140.           end
  141.         end
  142.         return final
  143.       end
  144.     #--------------------------------------------------------------------------
  145.     # ● 重新定义结晶回路的描述
  146.     #--------------------------------------------------------------------------  
  147.       def description
  148.         return @description.split(/,/)[0]
  149.       end
  150.     #--------------------------------------------------------------------------
  151.     # ● 定义结晶回路的主要属性
  152.     #--------------------------------------------------------------------------  
  153.       def element
  154.         return @description.split(/,/)[1].to_i
  155.       end
  156.     #--------------------------------------------------------------------------
  157.     # ● 定义结晶回路的等级
  158.     #--------------------------------------------------------------------------  
  159.  
  160.     #--------------------------------------------------------------------------
  161.     # ● 定义结晶回路的价格 也就是耗费的各个耀晶片数量
  162.     #--------------------------------------------------------------------------   
  163.       def cost_sepich
  164.         @data = $data_armors[self.id+1].description.split(/#/)
  165.         final = []
  166.         for i in 0...CRYSTAL::ELE_NUMBER
  167.           if $data_armors[self.id+1].guard_element_set.include?(i+1)
  168.             if @data.empty?
  169.               break
  170.             end
  171.             final[i] = @data.shift.to_i
  172.           else
  173.             final[i] = 0
  174.           end
  175.         end
  176.         return final
  177.       end
  178.     #--------------------------------------------------------------------------
  179.     # ● 定义结晶回路的种类 为了让同样的回路不能装备多个用
  180.     #--------------------------------------------------------------------------   
  181.       def cry_type
  182.         return $data_armors[self.id+1].name.to_i
  183.       end
  184.  
  185.     end
  186.  
  187.  
  188.     def level
  189.       if self.id >= ARMOR_BEGIN
  190.         return @description.split(/,/)[2].to_i
  191.       else
  192.         return 1 if @description.split(/LV/)[1] == nil
  193.         return @description.split(/LV/)[1]
  194.       end
  195.     end
  196.     def str
  197.       return 1 if @description.split(/STR/)[1] == nil
  198.       return @description.split(/STR/)[1]
  199.     end
  200.     def dex
  201.       return 1 if @description.split(/DEX/)[1] == nil
  202.       return @description.split(/DEX/)[1]
  203.     end
  204.     def agi
  205.       return 1 if @description.split(/AGI/)[1] == nil
  206.       return @description.split(/AGI/)[1]
  207.     end
  208.     def int
  209.       return 1 if @description.split(/INT/)[1] == nil
  210.       return @description.split(/INT/)[1]
  211.     end
  212. #    def description      
  213. #      return @description.split(/LV/)[0] + "{装备等级" + level + "}"
  214. #    end
  215.   end
  216. end
  217.  
  218. class Game_Actor < Game_Battler
  219. #--------------------------------------------------------------------------
  220. # ● 可以装备判定
  221. #     item : 物品
  222. #--------------------------------------------------------------------------
  223. def equipable?(item)
  224.    # 武器的情况
  225.    if item.is_a?(RPG::Weapon)
  226.      # 包含当前的职业可以装备武器的场合
  227.      if $data_classes[@class_id].weapon_set.include?(item.id) and item.level.to_i<=@level
  228.        if item.str.to_i<= str and item.dex.to_i<= dex and item.agi.to_i<= agi and item.int.to_i<= int
  229.        return true
  230.        end
  231.      end
  232.    end
  233.    # 防具的情况
  234.    if item.is_a?(RPG::Armor)
  235.      # 不包含当前的职业可以装备武器的场合
  236.      if $data_classes[@class_id].armor_set.include?(item.id) and item.level.to_i<=@level
  237.        if item.str.to_i<= str and item.dex.to_i<= dex and item.agi.to_i<= agi and item.int.to_i<= int
  238.        return true
  239.        end
  240.      end
  241.    end
  242.    return false
  243. end
  244. end
  245. #==============================================================================
  246. # ■ Window_EquipItem
  247. #------------------------------------------------------------------------------
  248. #  装备画面、显示浏览变更装备的候补物品的窗口。
  249. #==============================================================================
  250.  
  251. class Window_EquipItem < Window_Selectable
  252.   #--------------------------------------------------------------------------
  253.   # ● 刷新
  254.   #--------------------------------------------------------------------------
  255.   def refresh
  256.     if self.contents != nil
  257.       self.contents.dispose
  258.       self.contents = nil
  259.     end
  260.     @data = []
  261.     # 添加可以装备的武器
  262.     if @equip_type == 0
  263.       weapon_set = $data_classes[@actor.class_id].weapon_set
  264.       for i in 1...$data_weapons.size
  265.         if $game_party.weapon_number(i) > 0 and weapon_set.include?(i) and @actor.equipable?($data_weapons[i])
  266.           @data.push($data_weapons[i])
  267.         end
  268.       end
  269.     end
  270.     # 添加可以装备的防具
  271.     if @equip_type != 0
  272.       armor_set = $data_classes[@actor.class_id].armor_set
  273.       for i in 1...$data_armors.size
  274.         if $game_party.armor_number(i) > 0 and armor_set.include?(i) and @actor.equipable?($data_armors[i])
  275.           if $data_armors[i].kind == @equip_type-1
  276.             @data.push($data_armors[i])
  277.           end
  278.         end
  279.       end
  280.     end
  281.     # 添加空白
  282.     @data.push(nil)
  283.     # 生成位图、描绘全部项目
  284.     @item_max = @data.size
  285.     self.contents = Bitmap.new(width - 32, row_max * 32)
  286.     for i in 0...@item_max-1
  287.       draw_item(i)
  288.     end
  289.   end
  290. end





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