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

Project1

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

[已经解决] 我弄了那个仓库载重整合神马的东西···然后删掉合成

[复制链接]

Lv4.逐梦者

梦石
0
星屑
9280
在线时间
2504 小时
注册时间
2011-5-20
帖子
15389

开拓者

跳转到指定楼层
1
发表于 2013-6-6 19:11:28 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
  1. #==============================================================================
  2. # 本脚本来自www.66RPG.com,使用和转载请保留此信息
  3. # 欢迎访问www.66RPG.com
  4. # 梦想世界,在你手中
  5. #==============================================================================  
  6. #
  7. # Sample master list for crafting script (物品分类增强版)
  8. # written by Deke
  9. # 增强:叶子
  10. # 增强版编写日期:12-30-2005
  11. #============================================================================================
  12. # 简介:
  13. # 这是一个很不错的合成物品系统,可以通过游戏的过程,不断学习可以合成的
  14. # 物品方法。
  15. # ------
  16. # 增强版补充说明:
  17. # 在这个增强版中,可以对成品进行手动分类。
  18. # 成品增加了一个分类属性。
  19. # 这个分类纯粹是按自己的意愿,没有规定第几类必须是什么。
  20. # 召唤特定分类的界面,就只会看到特定分类的成品。
  21. #
  22. # 例如:
  23. # 使用脚本$scene = Scene_Craft.new(1),
  24. # 出来的界面就只会显示成品分类为1的东西
  25. # 同样道理,使用脚本$scene = Scene_Craft.new(2),
  26. # 出来的界面就只会显示成品分类为2的东西
  27. #
  28. # 如果使用脚本$scene = Scene_Craft.new或$scene = Scene_Craft.new(0)来召唤界面
  29. # 就可以看到所有成品。
  30. #
  31. # 注意:不要弄混淆“成品种类”和“成品分类”
  32. # 成品种类是指成品是普通物品(0),防具(1)或武器(2)
  33. # 成品分类是指此物品的自定义分类
  34. #
  35. #
  36. # 使用方法:
  37. # 1、召唤界面:使用脚本$scene = Scene_Craft.new(分类的数字)
  38. # 例如:使用脚本$scene = Scene_Craft.new(1),出来分类1的界面
  39. #
  40. # 2、学习合成:$game_party.learn_recipe(合成项目)
  41. #
  42. #  2.1、其实这个脚本可以使同一成品有不同配方
  43. #
  44. #    就这样说可能解释得不清楚,先来解释一下脚本学习配方的原理:
  45. #    $game_party.learn_recipe(合成项目)的处理过程并不是直接学习这个配方,
  46. #    而是在配方库中找到和合成项目成品相同的配方。
  47. #
  48. #    如果配方库中有两个配方成品相同的话,配方版本就变得重要。
  49. #    $game_party.learn_recipe(合成项目,配方版本)
  50. #    配方版本为1的话,学到的配方就是@recipe_list[xx]中与合成项目成品相同且数字最小的配方
  51. #    配方版本为2的话,学到的配方就是数字第二小的配方
  52. #    在上面这个脚本语句中,不填配方版本的话就默认为1
  53. #
  54. #  2.2、忘记配方:$game_party.forget_recipe(合成项目)
  55. #   2.21、同样道理,这个语句也可以写配方版本
  56. #    $game_party.forget_recipe(合成项目,配方版本)
  57. #    配方版本定义见2.1
  58. #
  59. #  2.3、配方版本不能乱填!例如游戏中某一个配方的成品是唯一的,与所有其它配方的成品都不相同
  60. #   那么学习的时候就不用填配方版本。
  61. #   如果这时在配方版本填了2的话,就有可能学不到或者忘不了(-_-||)
  62. #   
  63. #
  64. # 3、合成定义:
  65. # 这个合成脚本可以定义两种合成物品。一种是预先定义好了的,就像下面这样,
  66. # 直接写在这里就可以,另一种是在学习之前现场定义。
  67. #
  68. # 4、举例
  69. #  4.1、学会recipe_list[1]定义的合成:$game_party.learn_recipe($game_temp.recipe_list[1])
  70. #       注意,一行如果输入不下,在(的后面或[的后面按回车换行,否则可能出错
  71. #
  72. #  4.2、在游戏中临时定义一种合成,让玩家学会。使用事件中的脚本如下,   
  73. #  脚本:
  74. #    材料 = [$game_variables[1],$game_variables[2]]  #——材料编号是变量1、2的编号
  75. #    材料种类 = [0,0]                                #——材料是物品
  76. #    材料数量 = [$game_variables[3],$game_variables[4]]  #——需要材料数量是变量3、4的编号
  77. #    成品 = $game_variables[5]                       #——获得结果编号是5
  78. #    成品种类 = 1                                    #——成品是防具类
  79. #    成品分类 = 1                                    #——这一项不写的话默认为0
  80. #    $game_party.learn_recipe(Game_Recipe.new(材料,材料种类,材料数量,成品,成品种类,成品分类))
  81. #    上面这条语句的成品分类这一项不写也行,这样它就默认为0了。
  82. #    (也就是此物品没有分类,不会在分类菜单中出现)
  83. #    省略成品分类的脚本语句可以像下面这样写:
  84. #    $game_party.learn_recipe(Game_Recipe.new(材料,材料种类,材料数量,成品,成品种类))
  85. #
  86. #===========================================================================================
  87. $VAR_NUMBER = 14
  88. #================================
  89. # CRAFTING PROGRAM
  90. #----------------------------------------------------------------
  91. #-written by Deke
  92. #-yes_no window code created by Phsylomortis
  93. #----------------------------------------------------------------
  94. #================================

  95. #updates to Game_Party class
  96. =begin

  97.   负重系统v0.1

  98.   作者:秀秀
  99.   
  100.   功能:物品 武器 防具都多了重量属性
  101.          
  102.         增加了背包负重 超过负重最大值 则不能获得
  103.   
  104.   使用方法:在(物品,武器,防具)数据库中设置名称
  105.   
  106.             方式为:名称+n+重量
  107.             
  108.             比如 铜剑n1.5  表示铜剑重量为1.5
  109.                  回复剂n0.5 表示回复剂重量为0.5
  110.            
  111.             设置背包重量:默认为变量1,一定要在游戏开始设置好     
  112.                           搜索 VAR_NUMBER 可以改变存放背包负重的变量
  113.                           当然也可以随时改变这个数值

  114.             获取背包最大负重:
  115.                           $game_variables[VAR_NUMBER]
  116.             获取背包当前负重:
  117.                           $gane_party.weight
  118.             获取物品重量:
  119.                           $data_items[id].weight
  120.             获取武器重量:
  121.                           $data_weapons[id].weight     
  122.             获取防具重量:
  123.                           $data_armors[id].weight

  124. =end                     


  125. module RPG
  126.   class Item
  127.     def name
  128.       return @name.split(/,/)[0] # w 代表重量
  129.     end
  130.     def weight
  131.       return @name.split(/,/)[2].to_i # w 代表重量
  132.     end  
  133.    end

  134.   class Weapon
  135.     def name
  136.       return @name.split(/,/)[0] # w 代表重量
  137.     end
  138.     def weight
  139.       return @name.split(/,/)[2].to_i # w 代表重量
  140.     end  
  141.    end
  142.    
  143.   class Armor
  144.     def name
  145.       return @name.split(/,/)[0] # w 代表重量
  146.     end
  147.     def weight
  148.       return @name.split(/,/)[3].to_i # w 代表重量
  149.     end  
  150.   end
  151. end

  152. class Game_Party
  153.   
  154.   #--------------------------------------------------------------------------
  155.   # ● 定义实例变量
  156.   #--------------------------------------------------------------------------
  157.   attr_accessor :weight
  158.   #--------------------------------------------------------------------------
  159.   # ● 初始化对像
  160.   #--------------------------------------------------------------------------
  161.   alias wt_initialize initialize
  162.   def initialize
  163.     wt_initialize
  164.     @weight = 0
  165.   end
  166.   
  167.   
  168.   #--------------------------------------------------------------------------
  169.   # ● 增加物品 (减少)
  170.   #     item_id : 物品 ID
  171.   #     n       : 个数
  172.   #--------------------------------------------------------------------------
  173.   def gain_item(item_id, n)
  174.     # 更新 hash 的个数数据
  175.     if item_id > 0
  176.       
  177.       temp = @weight + $data_items[item_id].weight * n
  178.       
  179.       return if (n < 0 and @items[item_id] == nil)
  180.       
  181.       if temp > max_weight
  182.         return
  183.       end
  184.       if temp < 0
  185.         a = @weight
  186.         for i in 1..n.abs
  187.           a -= $data_items[item_id].weight
  188.           if a < 0
  189.             return
  190.           else
  191.             # 数量-1
  192.             @items[item_id] = [[item_number(item_id) - i, 0].max, 99].min
  193.             # 负重-1
  194.             @weight -= $data_items[item_id].weight
  195.             # p @weight
  196.           end  
  197.         end
  198.         # p @weight
  199.         return
  200.       end  
  201.       
  202.       if @items[item_id] != nil
  203.         b = @items[item_id] - n.abs
  204.         if b < 0 and n < 0
  205.           c = @items[item_id]
  206.           @items[item_id] = [[item_number(item_id) + n, 0].max, 99].min
  207.           @weight -= $data_items[item_id].weight * c
  208.           # p @weight
  209.           return
  210.         end
  211.       end  
  212.       
  213.       @items[item_id] = [[item_number(item_id) + n, 0].max, 99].min
  214.       @weight = temp
  215.       # p @weight
  216.     end
  217.   end
  218.   #--------------------------------------------------------------------------
  219.   # ● 增加武器 (减少)
  220.   #     weapon_id : 武器 ID
  221.   #     n         : 个数
  222.   #--------------------------------------------------------------------------
  223.   def gain_weapon(weapon_id, n)
  224.     # 更新 hash 的个数数据
  225.     if weapon_id > 0
  226.       temp = @weight + $data_weapons[weapon_id].weight * n
  227.       
  228.       return if (n < 0 and @weapons[weapon_id] == nil)
  229.       
  230.       if temp > max_weight
  231.         return
  232.       end
  233.       if temp < 0
  234.         a = @weight
  235.         for i in 1..n.abs
  236.           a -= $data_weapons[weapon_id].weight
  237.           if a < 0
  238.             return
  239.           else
  240.             # 数量-1
  241.             @weapons[weapon_id] = [[weapon_number(weapon_id) - i, 0].max, 99].min
  242.             # 负重-1
  243.             @weight -= $data_weapons[weapon_id].weight
  244.            # p @weight
  245.           end  
  246.         end
  247.        # p @weight
  248.         return
  249.       end  
  250.       
  251.       if @weapons[weapon_id] != nil
  252.         b = @weapons[weapon_id] - n.abs
  253.         if b < 0 and n < 0
  254.           c = @weapons[weapon_id]
  255.           @weapons[weapon_id] = [[weapon_number(weapon_id) + n, 0].max, 99].min
  256.           @weight -= $data_weapons[weapon_id].weight * c
  257.         #  p @weight
  258.           return
  259.         end
  260.       end
  261.       
  262.       @weapons[weapon_id] = [[weapon_number(weapon_id) + n, 0].max, 99].min
  263.       @weight = temp
  264.      # p @weight
  265.     end
  266.   end
  267.   #--------------------------------------------------------------------------
  268.   # ● 增加防具 (减少)
  269.   #     armor_id : 防具 ID
  270.   #     n        : 个数
  271.   #--------------------------------------------------------------------------
  272.   def gain_armor(armor_id, n)
  273.     # 更新 hash 的个数数据
  274.     if armor_id > 0
  275.       temp = @weight + $data_armors[armor_id].weight * n
  276.       
  277.       return if (n < 0 and @armors[armor_id] == nil)
  278.       
  279.       if temp > max_weight
  280.         return
  281.       end
  282.       if temp < 0
  283.         a = @weight
  284.         for i in 1..n.abs
  285.           a -= $data_armors[armor_id].weight
  286.           if a < 0
  287.             return
  288.           else
  289.             # 数量-1
  290.             @armors[armor_id] = [[armor_number(armor_id) - i, 0].max, 99].min
  291.             # 负重-1
  292.             @weight -= $data_armors[armor_id].weight
  293.             # p @weight
  294.           end  
  295.         end
  296.         # p @weight
  297.         return
  298.       end  
  299.       
  300.       if @armors[armor_id] != nil
  301.         b = @armors[armor_id] - n.abs
  302.         if b < 0 and n < 0
  303.           c = @armors[armor_id]
  304.           @armors[armor_id] = [[armor_number(armor_id) + n, 0].max, 99].min
  305.           @weight -= $data_armors[armor_id].weight * c
  306.           # p @weight
  307.           return
  308.         end
  309.       end
  310.       
  311.       @armors[armor_id] = [[armor_number(armor_id) + n, 0].max, 99].min
  312.       @weight = temp
  313.       # p @weight
  314.     end
  315.   end

  316.   def max_weight
  317.     return $game_variables[$VAR_NUMBER]
  318.   end

  319.   def check_weight
  320.   
  321.   end

  322. end  


  323. #================================================================================

  324. #==============================================================================
  325. # ■ Scene_Item
  326. #------------------------------------------------------------------------------
  327. #  处理物品画面的类。
  328. #==============================================================================

  329. class Scene_Item
  330.   alias ori_main main
  331.   def main
  332.     @weight_window = Window_Weight.new
  333.     @weight_window.x = 0
  334.     @weight_window.y = 416
  335.     @weight_window.z = 9999
  336.     ori_main
  337.     @weight_window.dispose
  338.   end  
  339.   alias ori_update update
  340.   #特殊
  341.   def update
  342.        case @item_window.item
  343.        when RPG::Item
  344.          @weight_window.refresh($data_items[@item_window.item.id].weight)
  345.        when RPG::Weapon
  346.          @weight_window.refresh($data_weapons[@item_window.item.id].weight)
  347.        when RPG::Armor  
  348.          @weight_window.refresh($data_armors[@item_window.item.id].weight)
  349.        end
  350.     ori_update
  351.   end
  352. end

  353. class Window_Item < Window_Selectable
  354.   #--------------------------------------------------------------------------
  355.   # ● 初始化对像
  356.   #--------------------------------------------------------------------------
  357.   def initialize
  358.     super(0, 64, 640, 352)
  359.     @column_max = 2
  360.     refresh
  361.     self.index = 0
  362.     # 战斗中的情况下将窗口移至中央并将其半透明化
  363.     if $game_temp.in_battle
  364.       self.y = 64
  365.       self.height = 256
  366.       self.back_opacity = 160
  367.     end
  368.   end
  369. end  
  370.   
  371. class Window_Weight < Window_Base
  372.   def initialize
  373.     super(0,0,640,64)
  374.     self.opacity = 128
  375.     self.contents = Bitmap.new(width-32,height-32)
  376.     refresh(nil)
  377.   end  
  378.   def refresh(weight)
  379.     self.contents.clear
  380.     if weight != nil
  381.       self.contents.draw_text(0,0,256,32,"物品重量:#{weight}")
  382.     end
  383.     self.contents.draw_text(256,0,320,32,"背包重量:"+$game_party.weight.to_s + "/" + $game_variables[$VAR_NUMBER].to_s , 0)
  384.   end
  385. end  

  386. class Game_Party

  387. attr_accessor       :recipes

  388. alias crafting_party_initialize initialize

  389. def initialize
  390.    crafting_party_initialize
  391.    @recipes=[]
  392. end

  393. #----------------------------------------------------------------------
  394. def know?(recipe, version = 1)
  395.    unless recipe.is_a?(Game_Recipe)
  396.      recipe = get_recipe_from_master_list(recipe, version)
  397.    end
  398.    return $game_party.recipes.include?(recipe)
  399. end

  400. #----------------------------------------------------------------------
  401. def learn_recipe(recipe , version = 1)
  402.    unless recipe.is_a?(Game_Recipe)
  403.      recipe = get_recipe_from_master_list(recipe, version)
  404.    end
  405.    if recipe.is_a?(Game_Recipe)
  406.      unless know?(recipe)
  407.        @recipes.push(recipe)
  408.      end
  409.    end
  410. end

  411. #----------------------------------------------------------------------
  412. def forget_recipe(recipe , version = 1)
  413.    if !recipe.is_a?(Game_Recipe)
  414.      recipe = get_recipe_from_master_list(recipe, version)
  415.    end
  416.    if recipe.is_a?(Game_Recipe)
  417.      for i in [email protected]
  418.        if recipe == @recipes[i]
  419.          index = i
  420.          break
  421.        end
  422.      end
  423.      if index != nil
  424.        @recipes.delete(@recipes[index])
  425.      end
  426.    end
  427. end

  428. #----------------------------------------------------------------------
  429. def get_recipe_from_master_list(item, version)
  430.    index = nil
  431.    for i in 0...$game_temp.recipe_list.size
  432.      #print $game_temp.recipe_list.size
  433.      if item[0] == $game_temp.recipe_list[i].result and item[1] ==$game_temp.recipe_list[i].result_type
  434.        version -= 1
  435.        if version == 0
  436.          index = i
  437.          break
  438.        end
  439.      end
  440.    end
  441.    if index.is_a?(Integer)
  442.      return ($game_temp.recipe_list[index])
  443.    else
  444.      return false
  445.    end
  446. end

  447. end # of Game_Party updates



  448. #==============================================================================
  449. # 本脚本来自www.66RPG.com,使用和转载请保留此信息
  450. # 欢迎访问www.66RPG.com
  451. # 梦想世界,在你手中
  452. #==============================================================================
复制代码
现在这样应该没有任何问题了吧?求检查···
[img]http://service.t.sina.com.cn/widget/qmd/5339802982/c02e16bd/7.png
您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

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

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

GMT+8, 2024-12-27 16:36

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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