Project1

标题: 为什么物品合成脚本545行出错 [打印本页]

作者: 欧买歌    时间: 2016-3-6 20:45
标题: 为什么物品合成脚本545行出错
RUBY 代码复制
  1. #==============================================================================
  2. # 本脚本来自[url]www.66RPG.com[/url],使用和转载请保留此信息
  3. #==============================================================================  
  4.  
  5. # Sample master list for crafting script
  6. # written by Deke
  7. #============================================================================================
  8. # 简介:
  9. # 这是一个很不错的合成物品系统,可以通过游戏的过程,不断学习可以合成的
  10. # 物品方法。
  11. #
  12. # 使用方法:
  13. # 1、召唤界面:使用脚本$scene = Scene_Craft.new
  14. #
  15. # 2、学习合成:$game_party.learn_recipe(合成项目)
  16. #
  17. # 3、合成定义:
  18. # 这个合成脚本可以定义两种合成物品。一种是预先定义好了的,就像下面这样,
  19. # 直接写在这里就可以,另一种是在学习之前现场定义。
  20. #
  21. # 4、举例
  22. #  4.1、学会recipe_list[1]定义的合成:$game_party.learn_recipe($game_temp.recipe_list[1])
  23. #       注意,一行如果输入不下,在(的后面或[的后面按回车换行,否则可能出错
  24. #
  25. #  4.2、在游戏中临时定义一种合成,让玩家学会。使用事件中的脚本如下,   
  26. #  脚本:
  27. #    材料 = [$game_variables[1],$game_variables[2]]  #——材料编号是变量1、2的编号
  28. #    材料种类 = [0,0]                                #——材料是物品
  29. #    材料数量 = [$game_variables[3],$game_variables[4]]  #——需要材料数量是变量3、4的编号
  30. #    成品 = $game_variables[5]                       #——获得结果编号是5
  31. #    成品种类 = 1                                    #——成品是防具类
  32. #    $game_party.learn_recipe(Game_Recipe.new(材料,材料种类, 材料数量,成品,成品种类))
  33. #===========================================================================================
  34. class Game_Temp
  35. attr_reader :recipe_list  
  36. alias crafting_temp_initialize initialize
  37. def initialize
  38.    crafting_temp_initialize
  39.    @recipe_list=[]
  40.    get_recipe_list
  41. end  
  42. def get_recipe_list
  43.    ##########################################################################
  44.    ####1号物品合成设定    速度粉末*10+玻璃瓶*1=暂时加速剂              
  45.    ##########################################################################
  46.    材料 = [49,50]        # 需要材料的数据库编号
  47.    材料种类 = [0,0]      # 需要材料的种类,0是普通物品,1是防具,2是武器
  48.    材料数量 = [10,1]     # 需要材料的数量
  49.    成品 = 34             # 获得物品编号
  50.    成品种类 = 0          # 获得物品种类,0是普通物品,1是防具,2是武器
  51.    @recipe_list[1] = Game_Recipe.new(材料,材料种类, 材料数量,成品,成品种类)
  52.  
  53.    ##########################################################################
  54.    ####2号物品合成设定    复活水晶*1+速度粉末*8+玻璃瓶*1=精神药水                     
  55.    ##########################################################################
  56.    材料 = [35,49,50]     # 需要材料的数据库编号
  57.    材料种类 = [0,0,0]    # 需要材料的种类,0是普通物品,1是防具,2是武器
  58.    材料数量 = [1,8,1]    # 需要材料的数量
  59.    成品 = 51             # 获得物品编号
  60.    成品种类 = 0          # 获得物品种类,0是普通物品,1是防具,2是武器
  61.    @recipe_list[2] = Game_Recipe.new(材料,材料种类, 材料数量,成品,成品种类)
  62.    ##########################################################################
  63.    ####3号物品合成设定    石头*30=石盾                       
  64.    ##########################################################################
  65.    材料 = [48]           # 需要材料的数据库编号
  66.    材料种类 = [0]        # 需要材料的种类,0是普通物品,1是防具,2是武器
  67.    材料数量 = [30]       # 需要材料的数量
  68.    成品 = 79             # 获得物品编号
  69.    成品种类 = 1          # 获得物品种类,0是普通物品,1是防具,2是武器
  70.    @recipe_list[3] = Game_Recipe.new(材料,材料种类, 材料数量,成品,成品种类)
  71.    ##########################################################################
  72.    ##########################################################################
  73.    ####4号物品合成设定    铝锭*20=铝质头饰                       
  74.    ##########################################################################
  75.    材料 = [47]           # 需要材料的数据库编号
  76.    材料种类 = [0]        # 需要材料的种类,0是普通物品,1是防具,2是武器
  77.    材料数量 = [20]       # 需要材料的数量
  78.    成品 = 35             # 获得物品编号
  79.    成品种类 = 1          # 获得物品种类,0是普通物品,1是防具,2是武器
  80.    @recipe_list[4] = Game_Recipe.new(材料,材料种类, 材料数量,成品,成品种类)
  81.    ##########################################################################
  82.    ##########################################################################
  83.    ####5号物品合成设定    铝锭*25=铝质胸甲                       
  84.    ##########################################################################
  85.    材料 = [47]           # 需要材料的数据库编号
  86.    材料种类 = [0]        # 需要材料的种类,0是普通物品,1是防具,2是武器
  87.    材料数量 = [25]       # 需要材料的数量
  88.    成品 = 50             # 获得物品编号
  89.    成品种类 = 1          # 获得物品种类,0是普通物品,1是防具,2是武器
  90.    @recipe_list[5] = Game_Recipe.new(材料,材料种类, 材料数量,成品,成品种类)
  91.    ##########################################################################
  92.    ##########################################################################
  93.    ####6号物品合成设定    铝锭*15=铝质鞋子                       
  94.    ##########################################################################
  95.    材料 = [47]           # 需要材料的数据库编号
  96.    材料种类 = [0]        # 需要材料的种类,0是普通物品,1是防具,2是武器
  97.    材料数量 = [15]       # 需要材料的数量
  98.    成品 = 65             # 获得物品编号
  99.    成品种类 = 1          # 获得物品种类,0是普通物品,1是防具,2是武器
  100.    @recipe_list[6] = Game_Recipe.new(材料,材料种类, 材料数量,成品,成品种类)
  101.    ##########################################################################
  102.    ##########################################################################
  103.    ####7号物品合成设定    铝锭*20=铝质小盾                       
  104.    ##########################################################################
  105.    材料 = [47]           # 需要材料的数据库编号
  106.    材料种类 = [0]        # 需要材料的种类,0是普通物品,1是防具,2是武器
  107.    材料数量 = [20]       # 需要材料的数量
  108.    成品 = 80             # 获得物品编号
  109.    成品种类 = 1          # 获得物品种类,0是普通物品,1是防具,2是武器
  110.    @recipe_list[7] = Game_Recipe.new(材料,材料种类, 材料数量,成品,成品种类)
  111.    ##########################################################################
  112.    ##########################################################################
  113.    ####8号物品合成设定    铁锭*22=铁质面具                       
  114.    ##########################################################################
  115.    材料 = [46]           # 需要材料的数据库编号
  116.    材料种类 = [0]        # 需要材料的种类,0是普通物品,1是防具,2是武器
  117.    材料数量 = [22]       # 需要材料的数量
  118.    成品 = 36             # 获得物品编号
  119.    成品种类 = 1          # 获得物品种类,0是普通物品,1是防具,2是武器
  120.    @recipe_list[8] = Game_Recipe.new(材料,材料种类, 材料数量,成品,成品种类)
  121.    ##########################################################################
  122.    ##########################################################################
  123.    ####9号物品合成设定    铁锭*28=铁质胸甲                       
  124.    ##########################################################################
  125.    材料 = [46]           # 需要材料的数据库编号
  126.    材料种类 = [0]        # 需要材料的种类,0是普通物品,1是防具,2是武器
  127.    材料数量 = [28]       # 需要材料的数量
  128.    成品 = 51             # 获得物品编号
  129.    成品种类 = 1          # 获得物品种类,0是普通物品,1是防具,2是武器
  130.    @recipe_list[9] = Game_Recipe.new(材料,材料种类, 材料数量,成品,成品种类)
  131.    ##########################################################################
  132.    ##########################################################################
  133.    ####10号物品合成设定   铁锭*16=铁质鞋子                       
  134.    ##########################################################################
  135.    材料 = [46]           # 需要材料的数据库编号
  136.    材料种类 = [0]        # 需要材料的种类,0是普通物品,1是防具,2是武器
  137.    材料数量 = [16]       # 需要材料的数量
  138.    成品 = 66             # 获得物品编号
  139.    成品种类 = 1          # 获得物品种类,0是普通物品,1是防具,2是武器
  140.    @recipe_list[10] = Game_Recipe.new(材料,材料种类, 材料数量,成品,成品种类)
  141.    ##########################################################################
  142.    ##########################################################################
  143.    ####11号物品合成设定   铁锭*23=铁质小盾                       
  144.    ##########################################################################
  145.    材料 = [46]           # 需要材料的数据库编号
  146.    材料种类 = [0]        # 需要材料的种类,0是普通物品,1是防具,2是武器
  147.    材料数量 = [23]       # 需要材料的数量
  148.    成品 = 81             # 获得物品编号
  149.    成品种类 = 1          # 获得物品种类,0是普通物品,1是防具,2是武器
  150.    @recipe_list[11] = Game_Recipe.new(材料,材料种类, 材料数量,成品,成品种类)
  151.    ##########################################################################
  152.    ##########################################################################
  153.    ####12号物品合成设定    铜锭*24=铜质头盔                       
  154.    ##########################################################################
  155.    材料 = [45]           # 需要材料的数据库编号
  156.    材料种类 = [0]        # 需要材料的种类,0是普通物品,1是防具,2是武器
  157.    材料数量 = [24]       # 需要材料的数量
  158.    成品 = 37             # 获得物品编号
  159.    成品种类 = 1          # 获得物品种类,0是普通物品,1是防具,2是武器
  160.    @recipe_list[12] = Game_Recipe.new(材料,材料种类, 材料数量,成品,成品种类)
  161.    ##########################################################################
  162.    ##########################################################################
  163.    ####13号物品合成设定    铜锭*31=黄铜护甲                     
  164.    ##########################################################################
  165.    材料 = [45]           # 需要材料的数据库编号
  166.    材料种类 = [0]        # 需要材料的种类,0是普通物品,1是防具,2是武器
  167.    材料数量 = [31]       # 需要材料的数量
  168.    成品 = 52             # 获得物品编号
  169.    成品种类 = 1          # 获得物品种类,0是普通物品,1是防具,2是武器
  170.    @recipe_list[13] = Game_Recipe.new(材料,材料种类, 材料数量,成品,成品种类)
  171.    ##########################################################################
  172.    ##########################################################################
  173.    ####14号物品合成设定   铜锭*17=黄铜跑鞋                       
  174.    ##########################################################################
  175.    材料 = [45]           # 需要材料的数据库编号
  176.    材料种类 = [0]        # 需要材料的种类,0是普通物品,1是防具,2是武器
  177.    材料数量 = [17]       # 需要材料的数量
  178.    成品 = 67             # 获得物品编号
  179.    成品种类 = 1          # 获得物品种类,0是普通物品,1是防具,2是武器
  180.    @recipe_list[14] = Game_Recipe.new(材料,材料种类, 材料数量,成品,成品种类)
  181.    ##########################################################################
  182.    ##########################################################################
  183.    ####15号物品合成设定   铜锭*26=黄铜盾牌                       
  184.    ##########################################################################
  185.    材料 = [45]           # 需要材料的数据库编号
  186.    材料种类 = [0]        # 需要材料的种类,0是普通物品,1是防具,2是武器
  187.    材料数量 = [26]       # 需要材料的数量
  188.    成品 = 82             # 获得物品编号
  189.    成品种类 = 1          # 获得物品种类,0是普通物品,1是防具,2是武器
  190.    @recipe_list[15] = Game_Recipe.new(材料,材料种类, 材料数量,成品,成品种类)
  191.    ##########################################################################
  192.    ##########################################################################
  193.    ####16号物品合成设定    银锭*26=白银头盔                       
  194.    ##########################################################################
  195.    材料 = [62]           # 需要材料的数据库编号
  196.    材料种类 = [0]        # 需要材料的种类,0是普通物品,1是防具,2是武器
  197.    材料数量 = [26]       # 需要材料的数量
  198.    成品 = 38             # 获得物品编号
  199.    成品种类 = 1          # 获得物品种类,0是普通物品,1是防具,2是武器
  200.    @recipe_list[16] = Game_Recipe.new(材料,材料种类, 材料数量,成品,成品种类)
  201.    ##########################################################################
  202.    ##########################################################################
  203.    ####17号物品合成设定    银锭*34=白银护甲                     
  204.    ##########################################################################
  205.    材料 = [62]           # 需要材料的数据库编号
  206.    材料种类 = [0]        # 需要材料的种类,0是普通物品,1是防具,2是武器
  207.    材料数量 = [34]       # 需要材料的数量
  208.    成品 = 53             # 获得物品编号
  209.    成品种类 = 1          # 获得物品种类,0是普通物品,1是防具,2是武器
  210.    @recipe_list[17] = Game_Recipe.new(材料,材料种类, 材料数量,成品,成品种类)
  211.    ##########################################################################
  212.    ##########################################################################
  213.    ####18号物品合成设定   银锭*18=白银跑鞋                       
  214.    ##########################################################################
  215.    材料 = [62]           # 需要材料的数据库编号
  216.    材料种类 = [0]        # 需要材料的种类,0是普通物品,1是防具,2是武器
  217.    材料数量 = [18]       # 需要材料的数量
  218.    成品 = 68             # 获得物品编号
  219.    成品种类 = 1          # 获得物品种类,0是普通物品,1是防具,2是武器
  220.    @recipe_list[18] = Game_Recipe.new(材料,材料种类, 材料数量,成品,成品种类)
  221.    ##########################################################################
  222.    ##########################################################################
  223.    ####19号物品合成设定   银锭*29=白银盾牌                       
  224.    ##########################################################################
  225.    材料 = [62]           # 需要材料的数据库编号
  226.    材料种类 = [0]        # 需要材料的种类,0是普通物品,1是防具,2是武器
  227.    材料数量 = [29]       # 需要材料的数量
  228.    成品 = 83             # 获得物品编号
  229.    成品种类 = 1          # 获得物品种类,0是普通物品,1是防具,2是武器
  230.    @recipe_list[19] = Game_Recipe.new(材料,材料种类, 材料数量,成品,成品种类)
  231.    ##########################################################################
  232.    ##########################################################################
  233.    ####20号物品合成设定    金锭*28=黄金战盔                       
  234.    ##########################################################################
  235.    材料 = [44]           # 需要材料的数据库编号
  236.    材料种类 = [0]        # 需要材料的种类,0是普通物品,1是防具,2是武器
  237.    材料数量 = [28]       # 需要材料的数量
  238.    成品 = 39             # 获得物品编号
  239.    成品种类 = 1          # 获得物品种类,0是普通物品,1是防具,2是武器
  240.    @recipe_list[20] = Game_Recipe.new(材料,材料种类, 材料数量,成品,成品种类)
  241.    ##########################################################################
  242.    ##########################################################################
  243.    ####21号物品合成设定    金锭*37=黄金铠甲                     
  244.    ##########################################################################
  245.    材料 = [44]           # 需要材料的数据库编号
  246.    材料种类 = [0]        # 需要材料的种类,0是普通物品,1是防具,2是武器
  247.    材料数量 = [37]       # 需要材料的数量
  248.    成品 = 54             # 获得物品编号
  249.    成品种类 = 1          # 获得物品种类,0是普通物品,1是防具,2是武器
  250.    @recipe_list[21] = Game_Recipe.new(材料,材料种类, 材料数量,成品,成品种类)
  251.    ##########################################################################
  252.    ##########################################################################
  253.    ####22号物品合成设定    金锭*19=黄金飞靴                       
  254.    ##########################################################################
  255.    材料 = [44]           # 需要材料的数据库编号
  256.    材料种类 = [0]        # 需要材料的种类,0是普通物品,1是防具,2是武器
  257.    材料数量 = [19]       # 需要材料的数量
  258.    成品 = 69             # 获得物品编号
  259.    成品种类 = 1          # 获得物品种类,0是普通物品,1是防具,2是武器
  260.    @recipe_list[22] = Game_Recipe.new(材料,材料种类, 材料数量,成品,成品种类)
  261.    ##########################################################################
  262.    ##########################################################################
  263.    ####23号物品合成设定    金锭*32=黄金盾牌                       
  264.    ##########################################################################
  265.    材料 = [44]           # 需要材料的数据库编号
  266.    材料种类 = [0]        # 需要材料的种类,0是普通物品,1是防具,2是武器
  267.    材料数量 = [32]       # 需要材料的数量
  268.    成品 = 84             # 获得物品编号
  269.    成品种类 = 1          # 获得物品种类,0是普通物品,1是防具,2是武器
  270.    @recipe_list[23] = Game_Recipe.new(材料,材料种类, 材料数量,成品,成品种类)
  271.    ##########################################################################
  272.    ##########################################################################
  273.    ####24号物品合成设定    钻石*30=金刚战盔                       
  274.    ##########################################################################
  275.    材料 = [43]           # 需要材料的数据库编号
  276.    材料种类 = [0]        # 需要材料的种类,0是普通物品,1是防具,2是武器
  277.    材料数量 = [30]       # 需要材料的数量
  278.    成品 = 40             # 获得物品编号
  279.    成品种类 = 1          # 获得物品种类,0是普通物品,1是防具,2是武器
  280.    @recipe_list[24] = Game_Recipe.new(材料,材料种类, 材料数量,成品,成品种类)
  281.    ##########################################################################
  282.    ##########################################################################
  283.    ####25号物品合成设定    钻石*40=金刚铠甲                     
  284.    ##########################################################################
  285.    材料 = [43]           # 需要材料的数据库编号
  286.    材料种类 = [0]        # 需要材料的种类,0是普通物品,1是防具,2是武器
  287.    材料数量 = [40]       # 需要材料的数量
  288.    成品 = 55             # 获得物品编号
  289.    成品种类 = 1          # 获得物品种类,0是普通物品,1是防具,2是武器
  290.    @recipe_list[25] = Game_Recipe.new(材料,材料种类, 材料数量,成品,成品种类)
  291.    ##########################################################################
  292.    ##########################################################################
  293.    ####26号物品合成设定    钻石*20=金刚飞靴                       
  294.    ##########################################################################
  295.    材料 = [43]           # 需要材料的数据库编号
  296.    材料种类 = [0]        # 需要材料的种类,0是普通物品,1是防具,2是武器
  297.    材料数量 = [20]       # 需要材料的数量
  298.    成品 = 70             # 获得物品编号
  299.    成品种类 = 1          # 获得物品种类,0是普通物品,1是防具,2是武器
  300.    @recipe_list[26] = Game_Recipe.new(材料,材料种类, 材料数量,成品,成品种类)
  301.    ##########################################################################
  302.    ##########################################################################
  303.    ####27号物品合成设定    钻石*35=金刚盾牌                       
  304.    ##########################################################################
  305.    材料 = [43]           # 需要材料的数据库编号
  306.    材料种类 = [0]        # 需要材料的种类,0是普通物品,1是防具,2是武器
  307.    材料数量 = [35]       # 需要材料的数量
  308.    成品 = 85             # 获得物品编号
  309.    成品种类 = 1          # 获得物品种类,0是普通物品,1是防具,2是武器
  310.    @recipe_list[27] = Game_Recipe.new(材料,材料种类, 材料数量,成品,成品种类)
  311.    ##########################################################################
  312. end # of get_recipe_list method
  313. end # of updates to Game_Temp Class
  314.  
  315. #================================
  316. # CRAFTING PROGRAM
  317. #----------------------------------------------------------------
  318. #-written by Deke
  319. #-yes_no window code created by Phsylomortis
  320. #----------------------------------------------------------------
  321. #================================
  322.  
  323. #updates to Game_Party class
  324.  
  325. class Game_Party
  326.  
  327. attr_accessor       :recipes
  328.  
  329. alias crafting_party_initialize initialize
  330.  
  331. def initialize
  332.    crafting_party_initialize
  333.    @recipes=[]
  334. end
  335.  
  336. #----------------------------------------------------------------------
  337. def know?(recipe, version = 1)
  338.    unless recipe.is_a?(Game_Recipe)
  339.      recipe = get_recipe_from_master_list(recipe, version)
  340.    end
  341.    return $game_party.recipes.include?(recipe)
  342. end
  343.  
  344. #----------------------------------------------------------------------
  345. def learn_recipe(recipe , version = 1)
  346.    unless recipe.is_a?(Game_Recipe)
  347.      recipe = get_recipe_from_master_list(recipe, version)
  348.    end
  349.    if recipe.is_a?(Game_Recipe)
  350.      unless know?(recipe)
  351.        @recipes.push(recipe)
  352.      end
  353.    end
  354. end
  355.  
  356. #----------------------------------------------------------------------
  357. def forget_recipe(recipe , version = 1)
  358.    if !recipe.is_a?(Game_Recipe)
  359.      recipe = get_recipe_from_master_list(recipe, version)
  360.    end
  361.    if recipe.is_a?(Game_Recipe)
  362.      for i in [email]0...@recipes.size[/email]
  363.        if recipe == @recipes
  364.          index = i
  365.          break
  366.        end
  367.      end
  368.      if index != nil
  369.        @recipes.delete(@recipes[index])
  370.      end
  371.    end
  372. end
  373.  
  374. #----------------------------------------------------------------------
  375. def get_recipe_from_master_list(item, version)
  376.    index = nil
  377.    for i in 0...$game_temp.recipe_list.size
  378.      if item[0] == $game_temp.recipe_list.result and item[1] == $game_temp.recipe_list.result_type
  379.        version -= 1
  380.        if version == 0
  381.          index = i
  382.          break
  383.        end
  384.      end
  385.    end
  386.    if index.is_a?(Integer)
  387.      return ($game_temp.recipe_list[index])
  388.    else
  389.      return false
  390.    end
  391. end
  392.  
  393. end # of Game_Party updates
  394.  
  395. #================================
  396. class Game_Recipe
  397.  
  398. attr_reader :ingredients
  399. attr_reader :quantities
  400. attr_reader :result
  401. attr_reader :result_type
  402. attr_reader :ingredient_types
  403.  
  404. #----------------------------------------------------------------------
  405. def initialize( ingredients, ingredient_types, quantities, result, result_type)
  406.    @ingredients = ingredients
  407.    @ingredient_types = ingredient_types
  408.    @quantities = quantities
  409.    @result = result
  410.    @result_type = result_type
  411. end
  412.  
  413. #----------------------------------------------------------------------
  414. def name
  415.    case @result_type
  416.      when 0
  417.        name = $data_items[@result].name
  418.      when 1
  419.        name = $data_armors[@result].name
  420.      when 2
  421.        name = $data_weapons[@result].name
  422.    end
  423.    return name
  424. end
  425.  
  426. #----------------------------------------------------------------------
  427. def have
  428.    have_all = true
  429.    for i in [email]0...@ingredients.size[/email]
  430.      case @ingredient_types
  431.        when 0
  432.          if $game_party.item_number(@ingredients) < @quantities
  433.            have_all=false
  434.          end
  435.        when 1
  436.          if $game_party.armor_number(@ingredients) < @quantities
  437.            have_all=false
  438.          end
  439.        when 2
  440.          if $game_party.weapon_number(@ingredients) < @quantities
  441.            have_all=false
  442.          end
  443.      end
  444.    end
  445.    return have_all
  446. end
  447.  
  448. #----------------------------------------------------------------------
  449. def decrement
  450.    for i in [email]0...@ingredients.size[/email]
  451.      case @ingredient_types
  452.      when 0
  453.        $game_party.lose_item(@ingredients, @quantities)
  454.      when 1
  455.        $game_party.lose_armor(@ingredients, @quantities)
  456.      when 2
  457.        $game_party.lose_weapon(@ingredients, @quantities)
  458.      end
  459.    end
  460. end
  461.  
  462. #----------------------------------------------------------------------
  463. def make
  464.    if have
  465.      case @result_type
  466.      when 0
  467.        $game_party.gain_item(@result, 1)
  468.      when 1
  469.        $game_party.gain_armor(@result, 1)
  470.      when 2
  471.        $game_party.gain_weapon(@result, 1)
  472.      end
  473.      decrement
  474.    end
  475. end
  476.  
  477. #----------------------------------------------------------------------
  478. def == (recipe)
  479.    if recipe.is_a?(Game_Recipe)
  480.      equal = true
  481.      if recipe.ingredients != self.ingredients
  482.        equal = false
  483.      end
  484.      if recipe.ingredient_types != self.ingredient_types
  485.        equal = false
  486.      end
  487.      if recipe.quantities != self.quantities
  488.        equal = false
  489.      end
  490.      if recipe.result != self.result
  491.        equal=false
  492.      end
  493.      if recipe.result_type != self.result_type
  494.        equal = false
  495.      end
  496.    else
  497.      equal = false
  498.    end
  499.    return equal
  500. end
  501.  
  502. end # of Game_Recipe class
  503.  
  504. #===================================
  505.  
  506. class Window_Craft < Window_Selectable
  507.  
  508. #--------------------------------------------------------------------------
  509. def initialize
  510.    super(0, 64, 240, 416)
  511.    @column_max = 1
  512.    refresh
  513.    self.index = 0
  514. end
  515.  
  516. #--------------------------------------------------------------------------
  517. def recipe
  518.    return @data[self.index]
  519. end
  520.  
  521. #--------------------------------------------------------------------------
  522. def refresh
  523.    if self.contents != nil
  524.      self.contents.dispose
  525.      self.contents = nil
  526.    end
  527.    @data = []
  528.    for i in 0...$game_party.recipes.size
  529.        @data.push($game_party.recipes)
  530.    end
  531.    @item_max = @data.size
  532.    if @item_max > 0
  533.      self.contents = Bitmap.new(width - 32, row_max * 32)
  534.      self.contents.font.name = "黑体" # = "黑体"
  535.      self.contents.font.size = 18 # = 18
  536.      for i in 0...@item_max
  537.        draw_item(i)
  538.      end
  539.    end
  540. end
  541.  
  542. #--------------------------------------------------------------------------
  543. def draw_item(index)
  544.    recipe = @data[index]
  545.    self.contents.font.color = recipe.have ? normal_color : disabled_color
  546.    x = 16
  547.    y = index * 32
  548.    self.contents.draw_text(x , y, self.width-32, 32, recipe.name, 0)
  549. end
  550.  
  551. #--------------------------------------------------------------------------
  552. def update_help
  553.    current_recipe = recipe
  554.    if current_recipe.is_a?(Game_Recipe)
  555.    case current_recipe.result_type
  556.      when 0
  557.        description = $data_items[current_recipe.result].description
  558.      when 1
  559.        description = $data_armors[current_recipe.result].description
  560.      when 2
  561.        description = $data_weapons[current_recipe.result].description
  562.      end
  563.    else
  564.      description = ""
  565.    end
  566.    @help_window.set_text(description)
  567.    @help_window.update
  568. end
  569.  
  570. end # of Window_Craft
  571.  
  572. #=======================================
  573. class Window_CraftResult < Window_Base
  574.  
  575. #--------------------------------------------------------------------------
  576. def initialize
  577.    super(240, 64, 400, 184)
  578.    self.contents = Bitmap.new(width - 32, height - 32)
  579.    self.contents.font.name = "黑体" # = $fontface.is_a?(String) ? $fontface : $defaultfonttype
  580.    self.contents.font.size = 18 # = 20
  581.    @result = nil
  582.    @type = nil
  583. end
  584.  
  585. #--------------------------------------------------------------------------
  586. def refresh
  587.    self.contents.clear
  588.    case @type
  589.      when 0
  590.        item = $data_items[@result]
  591.  
  592.          hp_string = "HP回复率:"
  593.          hp_stat = item.recover_hp_rate
  594.          hp_string2 = "HP回复量:"
  595.          hp_stat2 = item.recover_hp
  596.          sp_string = "SP回复率:"
  597.          sp_stat = item.recover_sp_rate
  598.          sp_string2 = "SP回复量:"
  599.          sp_stat2 = item.recover_sp
  600.        @strings = [hp_string, sp_string,hp_string2,sp_string2]
  601.        @stats = [hp_stat, sp_stat,hp_stat2 ,sp_stat2,
  602.                       $game_party.item_number(@result)]
  603.        @bitmap = RPG::Cache.icon(item.icon_name)
  604.        when 1
  605.        item = $data_armors[@result]
  606.        @strings = ["物御增加:", "魔御增加:",  "力量增加:", "灵巧增加:",
  607.                       "速度增加:", "魔力增加:"]
  608.        @stats = [item.pdef, item.mdef, item.str_plus, item.dex_plus,
  609.                    item.agi_plus, item.int_plus, $game_party.armor_number(@result) ]
  610.        @bitmap = RPG::Cache.icon(item.icon_name)
  611.      when 2
  612.        item = $data_weapons[@result]
  613.        @strings =["破坏:", "物御增加:", "魔御增加:", "力量增加:", "灵巧增加:",
  614.                    "速度增加:", "魔力增加:"]
  615.        @stats = [item.atk, item.pdef, item.mdef, item.str_plus, item.dex_plus,
  616.                    item.agi_plus, item.int_plus, $game_party.weapon_number(@result) ]
  617.        @bitmap = RPG::Cache.icon(item.icon_name)
  618.    end
  619.    for i in [email]0...@strings.size[/email]
  620.      x = i%2 * 184
  621.      y = i /2 *28 +32
  622.      self.contents.font.color = normal_color
  623.      self.contents.draw_text(x,y,100, 28,@strings)
  624.      self.contents.font.color = system_color
  625.      self.contents.draw_text(x + 110, y, 45, 28, @stats.to_s)
  626.    end
  627.    self.contents.blt(0, 0, @bitmap, Rect.new(0, 0, 24, 24), 255)
  628.    self.contents.font.color= normal_color
  629.    self.contents.draw_text(40, 0, 300, 28, "待合成物品的现有数量:")
  630.    self.contents.font.color = system_color
  631.    count = @stats[@stats.size - 1].to_s
  632.    self.contents.draw_text(294, 0, 45, 28, count )
  633. end
  634.  
  635. #----------------------------------------------------------------------
  636. def set_result(result , type)
  637.    @result = result
  638.    @type = type
  639.    refresh
  640. end
  641.  
  642. end #of Window_CraftResult
  643.  
  644. #=======================================
  645. class Window_CraftIngredients < Window_Base
  646.  
  647. #--------------------------------------------------------------------------
  648. def initialize
  649.    super(240, 248, 400, 232)
  650.    self.contents = Bitmap.new(width - 32, height - 32)
  651.    self.contents.font.name = "黑体" # = $fontface.is_a?(String) ? $fontface : $defaultfonttype
  652.    self.contents.font.size = 18 # = 20
  653.    @ingredients = []
  654.    @types = []
  655.    @quantities = []
  656.    @item = nil
  657.    @count = 0
  658. end
  659.  
  660. #--------------------------------------------------------------------------
  661. def refresh
  662.    self.contents.clear
  663.    for i in [email]0...@ingredients.size[/email]
  664.      case @types
  665.      when 0
  666.        @item = $data_items[@ingredients]
  667.        @count = $game_party.item_number(@ingredients)
  668.      when 1
  669.        @item = $data_armors[@ingredients]
  670.        @count = $game_party.armor_number(@ingredients)
  671.      when 2
  672.        @item = $data_weapons[@ingredients]
  673.        @count = $game_party.weapon_number(@ingredients)
  674.      end
  675.      y = i *26
  676.      self.contents.blt(0, y, RPG::Cache.icon(@item.icon_name), Rect.new(0, 0, 24, 24), 255)
  677.      self.contents.font.color = @count >= @quantities ? normal_color : disabled_color
  678.      self.contents.draw_text(30, y, 280, 28, @item.name)
  679.      self.contents.draw_text(300, y, 45, 28, @quantities.to_s)
  680.      self.contents.font.color = system_color
  681.      self.contents.draw_text(245, y, 45, 28, @count.to_s )     
  682.    end
  683. end
  684.  
  685. #--------------------------------------------------------------------------
  686. def set_ingredients(ingredients , types, quantities)
  687.    @ingredients = ingredients
  688.    @types = types
  689.    @quantities = quantities
  690.    refresh
  691. end
  692.  
  693. end # of Window_CraftIngredients
  694.  
  695. #======================================
  696. class Scene_Craft
  697.  
  698. #--------------------------------------------------------------------------
  699. def initialize(craft_index=0)
  700.    @craft_index=craft_index
  701. end
  702.  
  703. #--------------------------------------------------------------------------
  704. def main
  705.    @craft_window = Window_Craft.new
  706.    @craft_window.index=@craft_index
  707.    @confirm_window = Window_Base.new(120, 188, 400, 64)
  708.    @confirm_window.contents = Bitmap.new(368, 32)
  709.    @confirm_window.contents.font.name = "黑体"
  710.    @confirm_window.contents.font.size = 20
  711.    @help_window = Window_Help.new
  712.    @craft_window.help_window = @help_window
  713.    @result_window=Window_CraftResult.new
  714.    @ingredients_window=Window_CraftIngredients.new
  715.    @yes_no_window = Window_Command.new(100, ["确定", "放弃"])
  716.    @confirm_window.visible = false
  717.    @confirm_window.z = 1500
  718.    @yes_no_window.visible = false
  719.    @yes_no_window.active = false
  720.    @yes_no_window.index = 1
  721.    @yes_no_window.x = 270
  722.    @yes_no_window.y = 252
  723.    @yes_no_window.z = 1500
  724.    @label_window = Window_Base.new(450,200,190,52)
  725.    @label_window.contents=Bitmap.new(@label_window.width - 32,@label_window.height - 32)
  726.    @label_window.contents.font.size=20
  727.    @label_window.contents.font.color = @label_window.normal_color
  728.    @label_window.contents.font.name = "黑体"
  729.    @label_window.contents.draw_text(0, 0, @label_window.contents.width, 20, "  现有   需要")
  730.    Graphics.transition
  731.    loop do
  732.      Graphics.update
  733.      Input.update
  734.      update
  735.      if $scene != self
  736.        break
  737.      end
  738.    end
  739.    Graphics.freeze
  740.    @help_window.dispose
  741.    @craft_window.dispose
  742.    @result_window.dispose
  743.    @ingredients_window.dispose
  744.    @confirm_window.dispose
  745.    @yes_no_window.dispose
  746.    @label_window.dispose
  747. end
  748.  
  749. #--------------------------------------------------------------------------
  750. def update
  751.    @craft_window.update
  752.    @ingredients_window.update
  753.    if $game_party.recipes.size > 0
  754.      @result_window.set_result(@craft_window.recipe.result, @craft_window.recipe.result_type)
  755.      @ingredients_window.set_ingredients(@craft_window.recipe.ingredients,
  756.                                                           @craft_window.recipe.ingredient_types,
  757.                                                           @craft_window.recipe.quantities)
  758.    end
  759.    if @craft_window.active
  760.      update_craft
  761.      return
  762.    end
  763.    if @yes_no_window.active
  764.      confirm_update
  765.      return
  766.    end
  767. end
  768.  
  769. #--------------------------------------------------------------------------
  770. def update_craft
  771.    if Input.trigger?(Input::B)
  772.      $game_system.se_play($data_system.cancel_se)
  773.      $scene = Scene_Map.new
  774.      return
  775.    end
  776.    if Input.trigger?(Input::C) and $game_party.recipes.size != 0
  777.      @recipe = @craft_window.recipe
  778.      if @recipe.have
  779.        @yes_no_window.active = true
  780.        @craft_window.active = false
  781.      else
  782.        $game_system.se_play($data_system.buzzer_se)
  783.        return
  784.      end
  785.    end
  786. end
  787.  
  788. #--------------------------------------------------------------------------
  789. def confirm_update
  790.    @craft_index = @craft_window.index
  791.    @confirm_window.visible = true
  792.    @confirm_window.z = 1500
  793.    @yes_no_window.visible = true
  794.    @yes_no_window.active = true
  795.    @yes_no_window.z = 1500
  796.    @yes_no_window.update
  797.    string = "合成 " + @recipe.name + "?"
  798.    cw = @confirm_window.contents.text_size(string).width
  799.    center = @confirm_window.contents.width/2 - cw /2
  800.    unless @drawn
  801.      @confirm_window.contents.draw_text(center, 0, cw, 30, string)
  802.      @drawn = true
  803.    end
  804.    if Input.trigger?(Input::C)
  805.      if @yes_no_window.index == 0
  806.        $game_system.se_play($data_system.decision_se)
  807.        @recipe.make
  808.        $game_system.se_play($data_system.save_se)
  809.        $scene=Scene_Craft.new(@craft_index)
  810.      else
  811.        $game_system.se_play($data_system.cancel_se)
  812.        $scene=Scene_Craft.new(@craft_index)
  813.      end
  814.    end
  815.    if Input.trigger?(Input::B)
  816.      $game_system.se_play($data_system.cancel_se)
  817.      $scene=Scene_Craft.new(@craft_index)
  818.    end
  819. end
  820.  
  821. end # of Scene_Craft
  822.  
  823. #==============================================================================
  824. # 本脚本来自[url]www.66RPG.com[/url],使用和转载请保留此信息
  825. #==============================================================================

合成已经学习了
作者: cinderelmini    时间: 2016-3-6 22:09
在544和545之间插入一行
  1. return unless recipe
复制代码

作者: 欧买歌    时间: 2016-3-7 12:12
本帖最后由 欧买歌 于 2016-3-7 17:58 编辑
cinderelmini 发表于 2016-3-6 22:09
在544和545之间插入一行



插入之后打开合成界面还是错误,貌似是判断有没有这个材料然后改变颜色的吧





原754行出错,我想知道脚本作者真的有测试过吗……
作者: cinderelmini    时间: 2016-3-7 19:26
…….应该是坛子转码的锅……
代码框529行
  1. @data.push($game_party.recipes)
复制代码
后面的取数组位置的i被坛子吃了……
改成这样:
  1. @data.push($game_party.recipes[i])
复制代码

作者: 欧买歌    时间: 2016-3-8 12:48
本帖最后由 欧买歌 于 2016-3-11 19:33 编辑
cinderelmini 发表于 2016-3-7 19:26
…….应该是坛子转码的锅……
代码框529行后面的取数组位置的i被坛子吃了……
改成这样: ...



这……
还是有错误……
self.contents.draw_text(x,y,100, 28,@strings)

警察叔叔就是这一行





self.contents.blt(0, y, RPG::Cache.icon(@item.icon_name), Rect.new(0, 0, 24, 24), 255)

我并不知道要在什么地方加……于是我会一直这样伸手下去直到问题解决
作者: 烁灵    时间: 2016-3-11 23:42
本帖最后由 烁灵 于 2016-3-12 00:26 编辑

测试
RUBY 代码复制
  1. 测试[i]


正经脸。

你使用的脚本如果是从站内直接复制得到的话,如你所见,@被解析为[email],同时,
  1. [i]
复制代码
被当做编辑器代码未匹配到
RUBY 代码复制
  1. [/i]
而消失掉了,所以建议找原作者要一份或者再搜索一下其他地方有没有这份脚本。
作者: 欧买歌    时间: 2016-3-16 13:26
cinderelmini 发表于 2016-3-7 19:26
…….应该是坛子转码的锅……
代码框529行后面的取数组位置的i被坛子吃了……
改成这样: ...


找到了原脚本 能用了


懒癌中期由于现在的我看不懂脚本了所以想再伸一下手把划红线的去掉




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