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

Project1

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

[解决] 为什么发帖发不出去?

[复制链接]

Lv4.逐梦者

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

开拓者

跳转到指定楼层
1
发表于 2012-9-22 18:18:16 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
发出去没几秒就没了···


‘‘──chd114于2012-9-22 18:18补充以下内容:

代码复制
  1. #==============================================================================
  2. # ★ Item_Transmute
  3. #------------------------------------------------------------------------------
  4. #  配方不公开的物品合成 
  5. #  By Summoner (已经修改)
  6. #==============================================================================
  7. #
  8. # 本脚本以 知识共享署名-非商业性使用 3.0 Unported 许可协议进行许可。
  9. # 详见 [url]http://creativecommons.org/licenses/by-nc/3.0/[/url]
  10. #
  11. #==============================================================================
  12. #  
  13. # 这是一个配方不公开的物品合成,也就是说什么材料可以合成什么物品玩家在
  14. # 游戏中的合成界面是不能直接看到的。由于物品的合成配方不是公开的,所以
  15. # 玩家需要通过自己探索或从NPC处得到合成配方(当然看攻略也是一种可能)
  16. #  
  17. # 例如M&M中的配药水,Diablo II的盒子,NWV中的铁匠铺、Wizard Lab……
  18. #  
  19. # 冲突可能性:基本上是添加新的内容,冲突可能性较小
  20. #
  21. # 可扩展性:可以加强、扩展的东西应该很多。
  22. #   例如:合成需要花费GP、SP甚至XP,合成需要特定器具,合成失败受到伤害,
  23. #   某些物品的几率合成、物品图鉴等等。
  24. #
  25. #   有的东西已经注释清楚了,搞懂原理的话,根据自己需要改起来也不会很麻烦。
  26. #
  27. #   个人一下子没时间实现这些,欢迎大家多多修改分享。
  28. #
  29. # 使用方法:在事件中使用脚本$scene = Scene_Compose.new,然后等待2帧
  30. #
  31. #
  32. #==============================================================================
  33.  
  34. # 若合成失败(无匹配的配方)物品是否失去
  35. $Ingredient_Lost_When_Fail = false
  36.  
  37. # 合成成功/失败SE  
  38. # 若不使用SE请设置为“""”(不含外引号)
  39. $SE_Compose_Successful = ""#"Audio/SE/109-Heal05"  
  40. $SE_Compose_Failed = ""#"Audio/SE/117-Fire01"
  41.  
  42. #=============================================================================
  43. # ■ 配方及补充的定义
  44. #-----------------------------------------------------------------------------
  45. # Game_System
  46. #=============================================================================
  47. class Game_System
  48.   attr_accessor :formulas
  49.   attr_accessor :products
  50.   attr_accessor :additionals
  51.   attr_accessor :additionals
  52.   alias formulas_initialize initialize  
  53.   def initialize  
  54.     formulas_initialize
  55.     @formulas = []  
  56.     @products = []
  57.     @additionals = []
  58.     @Faileds = []
  59.     @Others = []
  60. #############################################################################
  61. #  
  62. #===========================配方表===========================================   
  63. #
  64. #  配方格式
  65. #
  66. #  @formulas[i] = [[材料种类,材料编号,数量],[材料种类,材料编号,数量]……]                  
  67. #  @products[i] = [[成品种类,成品编号,数量],[成品种类,成品编号,数量]……]
  68. #   
  69. #  种类:物品 0 武器 1 防具 2
  70. #
  71. #  1.如果有两个配方材料相同,理论上会按编号较小的处理
  72. #  2.配方材料的顺序与合成是无关的(当然如果你想改成有关肯定也不会太麻烦)
  73. #  3.允许某个材料拆成多件成品(可能就不叫物品合成,应该叫物品分解了)
  74. #  4.暂时不支持多步合并为一步的合成  
  75. #       例如 A + B = C,C + D = E,如果不存在A + B + D = E的配方
  76. #       A + B + D无法合成 E  
  77. #
  78. #############################################################################
  79.     @formulas[0] = []
  80.     @products[0] = []
  81.     @additionals[0] = []
  82.     @Faileds[0] = []
  83.     @Others[0] = []
  84.     # 样例1: 回复剂x3 = 超回复剂x1
  85.     @formulas[1] = [[0,1,2]]         
  86.     @products[1] = [[1,2,1],[0,1,3]]
  87.     @additionals[1] = [[3,2,1,99]]#合成成功后95%的概率出现二号物品1个
  88.     @Faileds[1] = [[1,2,1,95]]#合成失败后95%的概率
  89.     @Others[1] = [[1,2,1]]
  90.  
  91. #    p @additionals[1]#.to_s#_temp[i]
  92. #   p @products[1]#.to_s
  93.     #↑新的合成脚本哦
  94.     @formulas[2] = [[0,2,3]]
  95.     @products[2] = [[0,3,1]]
  96.     @formulas[3] = [[0,4,3]]
  97.     @products[3] = [[0,5,1]]
  98.     @formulas[4] = [[0,5,3]]
  99.     @products[4] = [[0,6,1]]
  100.     # 样例2: 完全恢复剂x1 + 超级香水x1 = 圣灵药x1
  101.     @formulas[5] = [[0,3,1],[0,6,1]]
  102.     @products[5] = [[0,7,1]]
  103.     # 样例3: 完全恢复剂x1 + 超级香水x1 = 完全圣灵药x1
  104.     # 被样例2 被覆盖
  105.     @formulas[6] = [[0,3,1],[0,6,1]]
  106.     @products[6] = [[0,8,1]]
  107.     # 圣灵药x1 = 完全恢复剂x1 + 超级香水x1 (Item_Decompose...)
  108.     @formulas[7] = [[0,7,1]]
  109.     @products[7] = [[0,3,1],[0,6,1]]
  110.     # 样例5: 铜剑x1 + 回复剂x1 + 铜铠x1 = 密斯利尔剑x1
  111.     @formulas[8] = [[1,1,1],[0,1,1],[2,1,1]]  
  112.     @products[8] = [[1,4,1]]
  113.   end  
  114. end
  115.  
  116. class Game_Temp  
  117.   attr_accessor :forge
  118.   alias forge_item_initialize initialize  
  119.   def initialize  
  120.     forge_item_initialize
  121.     # 定义合成窗口中的物品储存区
  122.     @forge = []  
  123.   end  
  124. end
  125.  
  126. #==============================================================================
  127. # ■ Window_ForgeCommand
  128. #------------------------------------------------------------------------------
  129. #  合成画面、选择要做的事的窗口
  130. #==============================================================================
  131.  
  132. class Window_ComposeCommand < Window_Selectable
  133.   #--------------------------------------------------------------------------
  134.   # ● 初始化对像
  135.   #--------------------------------------------------------------------------
  136.   def initialize
  137.     super(0, 64, 640, 64)
  138.     self.contents = Bitmap.new(width - 32, height - 32)
  139.     @item_max = 4
  140.     @column_max = 4
  141.     @commands = ["更改材料", "合成", "放弃合成", "离开"]
  142.     refresh
  143.     self.index = 0
  144.   end
  145.   #--------------------------------------------------------------------------
  146.   # ● 刷新
  147.   #--------------------------------------------------------------------------
  148.   def refresh
  149.     self.contents.clear
  150.     for i in 0...@item_max
  151.       draw_item(i)
  152.     end
  153.   end
  154.   #--------------------------------------------------------------------------
  155.   # ● 描绘项目
  156.   #     index : 项目编号
  157.   #--------------------------------------------------------------------------
  158.   def draw_item(index)
  159.     x = 4 + index * 160
  160.     self.contents.draw_text(x, 0, 128, 32, @commands[index])
  161.   end
  162. end
  163.  
  164. #==============================================================================
  165. # ■ Window_ForgeLeft
  166. #------------------------------------------------------------------------------
  167. #  合成画面中显示拥有的物品的窗口
  168. #==============================================================================
  169.  
  170. class Window_ComposeLeft < Window_Selectable
  171.   #--------------------------------------------------------------------------
  172.   # ● 初始化对像
  173.   #--------------------------------------------------------------------------
  174.   def initialize
  175.     super(0, 128, 320, 352)
  176.     @column_max = 1
  177.     refresh
  178.     self.index = 0
  179.   end
  180.   #--------------------------------------------------------------------------
  181.   # ● 获取物品
  182.   #--------------------------------------------------------------------------
  183.   def item
  184.     return @data[self.index]
  185.   end
  186.   #--------------------------------------------------------------------------
  187.   # ● 刷新
  188.   #--------------------------------------------------------------------------
  189.   def refresh
  190.     if self.contents != nil
  191.       self.contents.dispose
  192.       self.contents = nil
  193.     end
  194.     self.update_cursor_rect
  195.     @data = []
  196.     for i in 1...$data_items.size
  197.       if $game_party.item_number(i) > 0
  198.         @data.push($data_items[i])
  199.       end
  200.     end
  201.     for i in 1...$data_weapons.size
  202.       if $game_party.weapon_number(i) > 0
  203.         @data.push($data_weapons[i])
  204.       end
  205.     end
  206.     for i in 1...$data_armors.size
  207.       if $game_party.armor_number(i) > 0
  208.         @data.push($data_armors[i])
  209.       end
  210.     end
  211.     # 如果项目数不是 0 就生成位图、描绘全部项目
  212.     @item_max = @data.size
  213.     if @item_max > 0
  214.       self.contents = Bitmap.new(width - 32, row_max * 32)
  215.       for i in 0...@item_max
  216.         draw_item(i)
  217.       end
  218.     end
  219.   end
  220.   #--------------------------------------------------------------------------
  221.   # ● 描绘项目
  222.   #     index : 项目标号
  223.   #--------------------------------------------------------------------------
  224.   def draw_item(index)
  225.     item = @data[index]
  226.     case item
  227.     when RPG::Item
  228.       number = $game_party.item_number(item.id)
  229.     when RPG::Weapon
  230.       number = $game_party.weapon_number(item.id)
  231.     when RPG::Armor
  232.       number = $game_party.armor_number(item.id)
  233.     end
  234.     self.contents.font.color = normal_color
  235.     x = 4
  236.     y = index * 32
  237.     rect = Rect.new(x, y, self.width / @column_max - 32, 32)
  238.     self.contents.fill_rect(rect, Color.new(0, 0, 0, 0))
  239.     bitmap = RPG::Cache.icon(item.icon_name)
  240.     opacity = self.contents.font.color == normal_color ? 255 : 128
  241.     self.contents.blt(x, y + 4, bitmap, Rect.new(0, 0, 24, 24), opacity)
  242.     self.contents.draw_text(x + 28, y, 212, 32, item.name, 0)
  243.     self.contents.draw_text(x + 240, y, 16, 32, ":", 1)
  244.     self.contents.draw_text(x + 256, y, 24, 32, number.to_s, 2)
  245.   end
  246.   #--------------------------------------------------------------------------
  247.   # ● 刷新帮助文本
  248.   #--------------------------------------------------------------------------
  249.   def update_help
  250.     @help_window.set_text(self.item == nil ? "" : self.item.description)
  251.   end
  252. end
  253.  
  254. #==============================================================================
  255. # ■ Window_ForgeRight
  256. #------------------------------------------------------------------------------
  257. #  合成画面中的合成区窗口
  258. #==============================================================================
  259.  
  260. class Window_ComposeRight < Window_Selectable
  261.   attr_accessor :forge_item
  262.   #--------------------------------------------------------------------------
  263.   # ● 初始化对像
  264.   #--------------------------------------------------------------------------
  265.   def initialize(forge_item)
  266.     super(320, 128, 320, 352)
  267.     @column_max = 1
  268.     @forge_item = []
  269.     refresh
  270.     self.index = 0
  271.   end
  272.   #--------------------------------------------------------------------------
  273.   # ● 获取物品
  274.   #--------------------------------------------------------------------------
  275.   def item
  276.     return @data[self.index]
  277.   end
  278.   #--------------------------------------------------------------------------  
  279.   # ● 获取物品  
  280.   #--------------------------------------------------------------------------  
  281.   def item_number  
  282.     return @data_number[self.index]  
  283.   end  
  284.   #--------------------------------------------------------------------------
  285.   # ● 刷新
  286.   #--------------------------------------------------------------------------
  287.   def refresh
  288.     if self.contents != nil
  289.       self.contents.dispose
  290.       self.contents = nil
  291.     end
  292.     @data = []
  293.     @data_number = []  
  294.     @forge_item = $game_temp.forge
  295.     for item_forge in @forge_item
  296.       case item_forge[0]
  297.       when 0
  298.         item = $data_items[item_forge[1]]
  299.       when 1
  300.         item = $data_weapons[item_forge[1]]
  301.       when 2
  302.         item = $data_armors[item_forge[1]]
  303.       end
  304.       if (item != nil) and (item_forge[2] != 0)  
  305.         @data.push(item)  
  306.         @data_number.push(item_forge[2])  
  307.       else  
  308.         @data.delete(item)  
  309.       end  
  310.     end
  311.     # 如果项目数不是 0 就生成位图、描绘全部项目
  312.     @item_max = @data.size
  313.     if @item_max > 0
  314.       self.contents = Bitmap.new(width - 32, row_max * 32)
  315.       for i in 0...@item_max
  316.         draw_item(i)
  317.       end
  318.     end
  319.   end
  320.   #--------------------------------------------------------------------------
  321.   # ● 描绘项目
  322.   #     index : 项目标号
  323.   #--------------------------------------------------------------------------
  324.   def draw_item(index)
  325.     item = @data[index]
  326.     case item
  327.     when RPG::Item
  328.       number = $game_temp.forge[index][2]
  329.     when RPG::Weapon
  330.       number = $game_temp.forge[index][2]
  331.     when RPG::Armor
  332.       number = $game_temp.forge[index][2]
  333.     end
  334.     self.contents.font.color = normal_color
  335.     x = 4
  336.     y = index * 32
  337.     rect = Rect.new(x, y, self.width / @column_max - 32, 32)
  338.     self.contents.fill_rect(rect, Color.new(0, 0, 0, 0))
  339.     bitmap = RPG::Cache.icon(item.icon_name)
  340.     opacity = self.contents.font.color == normal_color ? 255 : 128
  341.     self.contents.blt(x, y + 4, bitmap, Rect.new(0, 0, 24, 24), opacity)
  342.     self.contents.draw_text(x + 28, y, 212, 32, item.name, 0)
  343.     self.contents.draw_text(x + 240, y, 16, 32, ":", 1)
  344.     self.contents.draw_text(x + 256, y, 24, 32, number.to_s, 2)
  345.   end
  346.   #--------------------------------------------------------------------------
  347.   # ● 刷新帮助文本
  348.   #--------------------------------------------------------------------------
  349.   def update_help
  350.     @help_window.set_text(self.item == nil ? "" : self.item.description)
  351.   end
  352. end
  353.  
  354.     #p @additionals#[1]#.to_s#_temp[i]
  355.     #p @products#[1]#.to_s
  356. #==============================================================================
  357. # ■ Scene_Compose
  358. #------------------------------------------------------------------------------
  359. #  处理物品合成画面的类
  360. #==============================================================================
  361.  
  362. class Scene_Compose
  363. #--------------------------------------------------------------------------
  364. # ● 初始化
  365. #--------------------------------------------------------------------------
  366. def initialize
  367.    # 生成帮助窗口
  368.    @help_window = Window_Help.new
  369.    # 生成命令窗口
  370.    @command_window = Window_ComposeCommand.new
  371.    @command_window.active = false
  372.    # 生成左方窗口
  373.    @item_window = Window_ComposeLeft.new
  374.    @item_window.active = true
  375.    @item_window.help_window = @help_window
  376.    # 生成右方窗口
  377.    @forge_window = Window_ComposeRight.new([])
  378.    @forge_window.active = false
  379.    @forge_window.help_window = @help_window
  380.    # 初始化配方与合成区
  381.    @formulas = $game_system.formulas
  382.    @products = $game_system.products
  383.    @additionals = $game_system.additionals #合成成功后95%的概率出现二号物品1个
  384.    @forge = []
  385.    @products_temp = []   
  386.    @additionals_temp = []#合成成功后95%的概率出现二号物品1个
  387.    @Faileds_temp = []#合成失败后95%的概率
  388.  
  389. end
  390.   #--------------------------------------------------------------------------
  391.   # ● 主处理
  392.   #--------------------------------------------------------------------------
  393. def main
  394.    # 执行过渡
  395.    Graphics.transition
  396.    # 主循环
  397.    loop do
  398.      # 刷新游戏画面
  399.      Graphics.update
  400.      # 刷新输入情报
  401.      Input.update
  402.      # 刷新画面
  403.      update
  404.      # 如果画面被切换的话就中断循环
  405.      if $scene != self
  406.        break
  407.      end
  408.    end
  409.    # 准备过渡
  410.    Graphics.freeze
  411.    # 释放窗口
  412.    @help_window.dispose
  413.    @command_window.dispose
  414.    @item_window.dispose
  415.    @forge_window.dispose
  416. end
  417.   #--------------------------------------------------------------------------
  418.   # ● 刷新画面
  419.   #--------------------------------------------------------------------------  
  420. def update
  421.    @help_window.update
  422.    @command_window.update
  423.    @item_window.update
  424.    @forge_window.update
  425.    if @command_window.active
  426.      update_command
  427.      return
  428.    end
  429.    if @item_window.active
  430.      update_item
  431.      return
  432.    end
  433.    if @forge_window.active
  434.      update_forge
  435.      return
  436.    end
  437.     return
  438. end
  439.   #--------------------------------------------------------------------------
  440.   # ● 刷新画面(指令窗口激活的情况下)
  441.   #--------------------------------------------------------------------------
  442.   def update_command
  443.     # 按下 B 键的情况下
  444.     if Input.trigger?(Input::B)
  445.       # 演奏取消 SE
  446.       $game_system.se_play($data_system.cancel_se)
  447.       abort
  448.       # 切换到地图画面
  449.       $scene = Scene_Map.new
  450.       return
  451.     end
  452.      # 按下 C 键的情况下
  453.     if Input.trigger?(Input::C)
  454.       # 命令窗口光标位置分支
  455.       case @command_window.index
  456.       when 0  # 更改材料
  457.         # 演奏确定 SE
  458.         $game_system.se_play($data_system.decision_se)
  459.         # 窗口状态转向物品窗口
  460.         @command_window.active = false
  461.         @item_window.active = true
  462.         @forge_window.active = false
  463.       when 1  # 合成
  464.         # 演奏确定 SE
  465.         $game_system.se_play($data_system.decision_se)
  466.         # 执行合成命令
  467.         if $game_temp.forge != []
  468.           compose
  469.         end
  470.       when 2  # 放弃合成
  471.         # 演奏确定 SE
  472.         $game_system.se_play($data_system.decision_se)
  473.         # 放弃合成
  474.         abort
  475.       when 3  # 离开
  476.         # 演奏确定 SE
  477.         $game_system.se_play($data_system.decision_se)
  478.         # 放弃合成
  479.         abort
  480.         # 切换到地图画面
  481.         $scene = Scene_Map.new
  482.       end
  483.       return
  484.     end
  485.   end
  486.   #--------------------------------------------------------------------------
  487.   # ● 刷新画面(物品窗口激活的情况下)
  488.   #--------------------------------------------------------------------------
  489.   def update_item
  490.      # 按下 B 键的情况下
  491.     if Input.trigger?(Input::B)
  492.       # 演奏取消 SE
  493.       $game_system.se_play($data_system.cancel_se)
  494.       # 切换到指令窗口
  495.       @item_window.active = false
  496.       @command_window.active = true
  497.       @help_window.set_text("")
  498.       return
  499.     end
  500.      # 按下 C 键的情况
  501.     if Input.trigger?(Input::C)
  502.       # 演奏确定 SE
  503.       $game_system.se_play($data_system.decision_se)
  504.       # 获取物品
  505.       @item = @item_window.item
  506.       # 获取物品的所持数
  507.       case @item
  508.       when RPG::Item
  509.         number = $game_party.item_number(@item.id)
  510.         typetemp = 0
  511.       when RPG::Weapon
  512.         number = $game_party.weapon_number(@item.id)
  513.         typetemp = 1
  514.       when RPG::Armor
  515.         number = $game_party.armor_number(@item.id)
  516.         typetemp = 2
  517.       end
  518.       if number != nil
  519.         # 更改合成窗口的物品
  520.         case @item
  521.         when RPG::Item
  522.           $game_party.lose_item(@item.id, 1)
  523.         when RPG::Weapon
  524.           $game_party.lose_weapon(@item.id, 1)
  525.         when RPG::Armor
  526.           $game_party.lose_armor(@item.id, 1)
  527.         end
  528.         forge_change(typetemp, @item.id, 1)
  529.         # 刷新各窗口
  530.         @item_window.update
  531.         @help_window.update
  532.         @forge_window.update
  533.         @item_window.refresh
  534.         @forge_window.refresh
  535.       end
  536.     end
  537.      # 按下 右方向键 的情况
  538.     if Input.trigger?(Input::RIGHT)
  539.       # 切换到合成窗口
  540.       @item_window.active = false
  541.       @forge_window.active = true
  542.     end
  543.   end
  544.   #--------------------------------------------------------------------------
  545.   # ● 刷新画面(合成窗口激活的情况下)
  546.   #--------------------------------------------------------------------------
  547.   def update_forge
  548.      # 按下 B 键的情况下
  549.     if Input.trigger?(Input::B)
  550.       # 演奏取消 SE
  551.       $game_system.se_play($data_system.cancel_se)
  552.       # 切换到指令窗口
  553.       @forge_window.active = false
  554.       @command_window.active = true
  555.       @help_window.set_text("")
  556.       return
  557.     end
  558.      # 按下 C 键的情况
  559.     if Input.trigger?(Input::C)
  560.      # 演奏确定 SE
  561.      $game_system.se_play($data_system.decision_se)
  562.      # 获取物品
  563.       @item = @forge_window.item
  564.       # 获取物品的所持数
  565.       case @item
  566.       when RPG::Item
  567.         number = @forge_window.item_number
  568.         typetemp = 0
  569.       when RPG::Weapon
  570.         number = @forge_window.item_number
  571.         typetemp = 1
  572.       when RPG::Armor
  573.         number = @forge_window.item_number
  574.         typetemp = 2
  575.       end
  576.      if number != nil
  577.        # 更改合成窗口的物品
  578.        case @item
  579.        when RPG::Item
  580.          $game_party.gain_item(@item.id, 1)
  581.        when RPG::Weapon
  582.          $game_party.gain_weapon(@item.id, 1)
  583.        when RPG::Armor
  584.          $game_party.gain_armor(@item.id, 1)
  585.        end
  586.        #p number
  587.        forge_change(typetemp, @item.id, -1)
  588.        # 刷新各窗口
  589.        @item_window.refresh
  590.        @forge_window.refresh
  591.        @help_window.update
  592.        @item_window.update
  593.        @forge_window.update
  594.       end
  595.     end
  596.        # 按下 左方向键 的情况下
  597.     if Input.trigger?(Input::LEFT)
  598.       # 切换到合成窗口
  599.       @forge_window.active = false
  600.       @item_window.active = true
  601.     end
  602.   end
  603.   #--------------------------------------------------------------------------
  604.   # ● 更改合成窗口物品
  605.   #--------------------------------------------------------------------------
  606.   def forge_change(type,id,number)  
  607.      quantity = number  
  608.      for item in $game_temp.forge
  609.        if (item[0]==type) and (item[1]==id)  
  610.          item[2] = [item[2] += quantity,99].min  
  611.          if item[2] == 0  
  612.            $game_temp.forge.delete(item)  
  613.          end
  614.          return  
  615.        end  
  616.      end  
  617.      $game_temp.forge.push([type,id,number])  
  618.   end  
  619.   #--------------------------------------------------------------------------
  620.   # ● 更改合成窗口额外产物
  621.   #--------------------------------------------------------------------------
  622.   def forge2_change(type,id,number)  
  623.      quantity = number  
  624.      for item2 in $game_temp.forge
  625.        if (item2[3]==type) and (item2[4]==id)  
  626.          item2[5] = [item2[5] += quantity,99].min  
  627.          if item2[5] == 0  
  628.            $game_temp.forge.delete(item2)  
  629.          end
  630.          return  
  631.        end  
  632.      end  
  633.      $game_temp.forge.push([type,id,number])  
  634.   end
  635.   #--------------------------------------------------------------------------
  636.   # ● 放弃合成
  637.   #--------------------------------------------------------------------------  
  638.   def abort
  639.     # 将合成窗口中的物品转移至物品窗口中
  640.     for item in $game_temp.forge
  641.       # 判断物品类型并归还
  642.       case item[0]
  643.       when 0
  644.         $game_party.gain_item(item[1], item[2])
  645.         #$game_party.gain_item(item[4], item[5])
  646.       when 1
  647.         $game_party.gain_weapon(item[1], item[2])
  648.         #$game_party.gain_weapon(item[4], item[5])
  649.       when 2
  650.         $game_party.gain_armor(item[1], item[2])
  651.         #$game_party.gain_armor(item[4], item[5])
  652.       end
  653.     end
  654.     $game_temp.forge = []
  655.     # 刷新各窗口
  656.     @item_window.refresh
  657.     @forge_window.refresh
  658.   end
  659.   #--------------------------------------------------------------------------
  660.   # ● 检测是否有符合的配方
  661.   #--------------------------------------------------------------------------
  662. def match
  663.    match_one = false
  664.    match_this = false
  665.     # 检测每一个配方
  666.  
  667.     #p @additionals#[1]#.to_s#_temp[i]
  668.     #p @products[1]#.to_s
  669.    for i in [email protected]
  670.      # 将合成窗口中的物品复制到合成缓存区
  671.      # 注意: 直接使用"="将传引用 导致检测配方是否匹配时合成窗口中物品被删除
  672.      @forge = $game_temp.forge.dup
  673.      # 检测这个配方中每一项材料
  674.      for ingredient in @formulas[i]
  675.        match_this = true
  676.        # 合成区中没有此项材料的情况
  677.        unless @forge.include?(ingredient)
  678.          match_this = false
  679.          break
  680.        end
  681.        # 从合成区中暂时删除这项材料
  682.        @forge.delete(ingredient)
  683.      end
  684.      if match_this == false
  685.        next
  686.      end
  687.      # 检测合成区中是否还有配方外的材料剩余
  688.      unless @forge == []
  689.        match_this = false
  690.      end
  691.      # 满足这一个配方的情况
  692.      if match_this == true
  693.        match_one = true
  694.        # 获取配方的成品
  695.        @products_temp = @products[i]
  696.        @additionals_temp = @additionals[i]
  697.        break
  698.      end
  699.    end
  700.    return match_one
  701. end
  702.   #--------------------------------------------------------------------------
  703.   # ● 合成
  704.   #--------------------------------------------------------------------------
  705. def compose
  706.  
  707.     #@Additionals[1] = [[1,2,1,95]]#合成成功后95%的概率出现二号物品1个
  708.     #@Faileds[1] = [[1,2,1,95]]#合成失败后95%的概率
  709.    # 如果有符合的配方
  710.    if match
  711.      # 将合成窗口中的材料改变为成品
  712.      $game_temp.forge = []
  713.      for i in 0...@products_temp.size
  714.       forge_change(@products_temp[i][0], @products_temp[i][1], @products_temp[i][2])
  715.     end
  716.      @aps=rand(99)
  717.      @additionals_temp = @additionals[1]
  718.      p @additionals[0][0]
  719.      p @additionals_temp[0][3]
  720.      if @aps<=@additionals_temp[0][3]
  721.        #p "啊啊啊啊"
  722.        for i in 0...@additionals_temp.size
  723.          forge2_change(@additionals_temp[i][0], @additionals_temp[i][1], @additionals_temp[i][2])
  724.        end
  725.      end
  726.      if $SE_Compose_Successful != ""
  727.        Audio.se_play($SE_Compose_Successful)
  728.      end
  729.    # 合成失败的情况
  730.    else  
  731.      if $SE_Compose_Failed != ""
  732.        Audio.se_play($SE_Compose_Failed)
  733.      end
  734.      if $Ingredient_Lost_When_Fail
  735.        $game_temp.forge = []
  736.      end
  737.    end
  738.     # 刷新各窗口
  739.    @item_window.refresh
  740.    @forge_window.refresh
  741. end
  742. end

’’


‘‘──chd114于2012-9-22 18:18补充以下内容:

#==============================================================================
# ★ Item_Transmute
#------------------------------------------------------------------------------
#  配方不公开的物品合成 
#  By Summoner (已经修改)
#==============================================================================
#
# 本脚本以 知识共享署名-非商业性使用 3.0 Unported 许可协议进行许可。
# 详见 [url]http://creativecommons.org/licenses/by-nc/3.0/[/url]
#
#==============================================================================
#  
# 这是一个配方不公开的物品合成,也就是说什么材料可以合成什么物品玩家在
# 游戏中的合成界面是不能直接看到的。由于物品的合成配方不是公开的,所以
# 玩家需要通过自己探索或从NPC处得到合成配方(当然看攻略也是一种可能)
#  
# 例如M&M中的配药水,Diablo II的盒子,NWV中的铁匠铺、Wizard Lab……
#  
# 冲突可能性:基本上是添加新的内容,冲突可能性较小
#
# 可扩展性:可以加强、扩展的东西应该很多。
#   例如:合成需要花费GP、SP甚至XP,合成需要特定器具,合成失败受到伤害,
#   某些物品的几率合成、物品图鉴等等。
#
#   有的东西已经注释清楚了,搞懂原理的话,根据自己需要改起来也不会很麻烦。
#
#   个人一下子没时间实现这些,欢迎大家多多修改分享。
#
# 使用方法:在事件中使用脚本$scene = Scene_Compose.new,然后等待2帧
#
#
#==============================================================================
  
# 若合成失败(无匹配的配方)物品是否失去
$Ingredient_Lost_When_Fail = false
  
# 合成成功/失败SE  
# 若不使用SE请设置为“""”(不含外引号)
$SE_Compose_Successful = ""#"Audio/SE/109-Heal05"  
$SE_Compose_Failed = ""#"Audio/SE/117-Fire01"
  
#=============================================================================
# ■ 配方及补充的定义
#-----------------------------------------------------------------------------
# Game_System
#=============================================================================
class Game_System
  attr_accessor :formulas
  attr_accessor :products
  attr_accessor :additionals
  attr_accessor :additionals
  alias formulas_initialize initialize  
  def initialize  
    formulas_initialize
    @formulas = []  
    @products = []
    @additionals = []
    @Faileds = []
    @Others = []
#############################################################################
#  
#===========================配方表===========================================   
#
#  配方格式
#
#  @formulas[i] = [[材料种类,材料编号,数量],[材料种类,材料编号,数量]……]                  
#  @products[i] = [[成品种类,成品编号,数量],[成品种类,成品编号,数量]……]
#   
#  种类:物品 0 武器 1 防具 2
#
#  1.如果有两个配方材料相同,理论上会按编号较小的处理
#  2.配方材料的顺序与合成是无关的(当然如果你想改成有关肯定也不会太麻烦)
#  3.允许某个材料拆成多件成品(可能就不叫物品合成,应该叫物品分解了)
#  4.暂时不支持多步合并为一步的合成  
#       例如 A + B = C,C + D = E,如果不存在A + B + D = E的配方
#       A + B + D无法合成 E  
#
#############################################################################
    @formulas[0] = []
    @products[0] = []
    @additionals[0] = []
    @Faileds[0] = []
    @Others[0] = []
    # 样例1: 回复剂x3 = 超回复剂x1
    @formulas[1] = [[0,1,2]]         
    @products[1] = [[1,2,1],[0,1,3]]
    @additionals[1] = [[3,2,1,99]]#合成成功后95%的概率出现二号物品1个
    @Faileds[1] = [[1,2,1,95]]#合成失败后95%的概率
    @Others[1] = [[1,2,1]]
   
#    p @additionals[1]#.to_s#_temp[i]
#   p @products[1]#.to_s
    #↑新的合成脚本哦
    @formulas[2] = [[0,2,3]]
    @products[2] = [[0,3,1]]
    @formulas[3] = [[0,4,3]]
    @products[3] = [[0,5,1]]
    @formulas[4] = [[0,5,3]]
    @products[4] = [[0,6,1]]
    # 样例2: 完全恢复剂x1 + 超级香水x1 = 圣灵药x1
    @formulas[5] = [[0,3,1],[0,6,1]]
    @products[5] = [[0,7,1]]
    # 样例3: 完全恢复剂x1 + 超级香水x1 = 完全圣灵药x1
    # 被样例2 被覆盖
    @formulas[6] = [[0,3,1],[0,6,1]]
    @products[6] = [[0,8,1]]
    # 圣灵药x1 = 完全恢复剂x1 + 超级香水x1 (Item_Decompose...)
    @formulas[7] = [[0,7,1]]
    @products[7] = [[0,3,1],[0,6,1]]
    # 样例5: 铜剑x1 + 回复剂x1 + 铜铠x1 = 密斯利尔剑x1
    @formulas[8] = [[1,1,1],[0,1,1],[2,1,1]]  
    @products[8] = [[1,4,1]]
  end  
end
  
class Game_Temp  
  attr_accessor :forge
  alias forge_item_initialize initialize  
  def initialize  
    forge_item_initialize
    # 定义合成窗口中的物品储存区
    @forge = []  
  end  
end
  
#==============================================================================
# ■ Window_ForgeCommand
#------------------------------------------------------------------------------
#  合成画面、选择要做的事的窗口
#==============================================================================
  
class Window_ComposeCommand < Window_Selectable
  #--------------------------------------------------------------------------
  # ● 初始化对像
  #--------------------------------------------------------------------------
  def initialize
    super(0, 64, 640, 64)
    self.contents = Bitmap.new(width - 32, height - 32)
    @item_max = 4
    @column_max = 4
    @commands = ["更改材料", "合成", "放弃合成", "离开"]
    refresh
    self.index = 0
  end
  #--------------------------------------------------------------------------
  # ● 刷新
  #--------------------------------------------------------------------------
  def refresh
    self.contents.clear
    for i in 0...@item_max
      draw_item(i)
    end
  end
  #--------------------------------------------------------------------------
  # ● 描绘项目
  #     index : 项目编号
  #--------------------------------------------------------------------------
  def draw_item(index)
    x = 4 + index * 160
    self.contents.draw_text(x, 0, 128, 32, @commands[index])
  end
end
  
#==============================================================================
# ■ Window_ForgeLeft
#------------------------------------------------------------------------------
#  合成画面中显示拥有的物品的窗口
#==============================================================================
  
class Window_ComposeLeft < Window_Selectable
  #--------------------------------------------------------------------------
  # ● 初始化对像
  #--------------------------------------------------------------------------
  def initialize
    super(0, 128, 320, 352)
    @column_max = 1
    refresh
    self.index = 0
  end
  #--------------------------------------------------------------------------
  # ● 获取物品
  #--------------------------------------------------------------------------
  def item
    return @data[self.index]
  end
  #--------------------------------------------------------------------------
  # ● 刷新
  #--------------------------------------------------------------------------
  def refresh
    if self.contents != nil
      self.contents.dispose
      self.contents = nil
    end
    self.update_cursor_rect
    @data = []
    for i in 1...$data_items.size
      if $game_party.item_number(i) > 0
        @data.push($data_items[i])
      end
    end
    for i in 1...$data_weapons.size
      if $game_party.weapon_number(i) > 0
        @data.push($data_weapons[i])
      end
    end
    for i in 1...$data_armors.size
      if $game_party.armor_number(i) > 0
        @data.push($data_armors[i])
      end
    end
    # 如果项目数不是 0 就生成位图、描绘全部项目
    @item_max = @data.size
    if @item_max > 0
      self.contents = Bitmap.new(width - 32, row_max * 32)
      for i in 0...@item_max
        draw_item(i)
      end
    end
  end
  #--------------------------------------------------------------------------
  # ● 描绘项目
  #     index : 项目标号
  #--------------------------------------------------------------------------
  def draw_item(index)
    item = @data[index]
    case item
    when RPG::Item
      number = $game_party.item_number(item.id)
    when RPG::Weapon
      number = $game_party.weapon_number(item.id)
    when RPG::Armor
      number = $game_party.armor_number(item.id)
    end
    self.contents.font.color = normal_color
    x = 4
    y = index * 32
    rect = Rect.new(x, y, self.width / @column_max - 32, 32)
    self.contents.fill_rect(rect, Color.new(0, 0, 0, 0))
    bitmap = RPG::Cache.icon(item.icon_name)
    opacity = self.contents.font.color == normal_color ? 255 : 128
    self.contents.blt(x, y + 4, bitmap, Rect.new(0, 0, 24, 24), opacity)
    self.contents.draw_text(x + 28, y, 212, 32, item.name, 0)
    self.contents.draw_text(x + 240, y, 16, 32, ":", 1)
    self.contents.draw_text(x + 256, y, 24, 32, number.to_s, 2)
  end
  #--------------------------------------------------------------------------
  # ● 刷新帮助文本
  #--------------------------------------------------------------------------
  def update_help
    @help_window.set_text(self.item == nil ? "" : self.item.description)
  end
end
  
#==============================================================================
# ■ Window_ForgeRight
#------------------------------------------------------------------------------
#  合成画面中的合成区窗口
#==============================================================================
  
class Window_ComposeRight < Window_Selectable
  attr_accessor :forge_item
  #--------------------------------------------------------------------------
  # ● 初始化对像
  #--------------------------------------------------------------------------
  def initialize(forge_item)
    super(320, 128, 320, 352)
    @column_max = 1
    @forge_item = []
    refresh
    self.index = 0
  end
  #--------------------------------------------------------------------------
  # ● 获取物品
  #--------------------------------------------------------------------------
  def item
    return @data[self.index]
  end
  #--------------------------------------------------------------------------  
  # ● 获取物品  
  #--------------------------------------------------------------------------  
  def item_number  
    return @data_number[self.index]  
  end  
  #--------------------------------------------------------------------------
  # ● 刷新
  #--------------------------------------------------------------------------
  def refresh
    if self.contents != nil
      self.contents.dispose
      self.contents = nil
    end
    @data = []
    @data_number = []  
    @forge_item = $game_temp.forge
    for item_forge in @forge_item
      case item_forge[0]
      when 0
        item = $data_items[item_forge[1]]
      when 1
        item = $data_weapons[item_forge[1]]
      when 2
        item = $data_armors[item_forge[1]]
      end
      if (item != nil) and (item_forge[2] != 0)  
        @data.push(item)  
        @data_number.push(item_forge[2])  
      else  
        @data.delete(item)  
      end  
    end
    # 如果项目数不是 0 就生成位图、描绘全部项目
    @item_max = @data.size
    if @item_max > 0
      self.contents = Bitmap.new(width - 32, row_max * 32)
      for i in 0...@item_max
        draw_item(i)
      end
    end
  end
  #--------------------------------------------------------------------------
  # ● 描绘项目
  #     index : 项目标号
  #--------------------------------------------------------------------------
  def draw_item(index)
    item = @data[index]
    case item
    when RPG::Item
      number = $game_temp.forge[index][2]
    when RPG::Weapon
      number = $game_temp.forge[index][2]
    when RPG::Armor
      number = $game_temp.forge[index][2]
    end
    self.contents.font.color = normal_color
    x = 4
    y = index * 32
    rect = Rect.new(x, y, self.width / @column_max - 32, 32)
    self.contents.fill_rect(rect, Color.new(0, 0, 0, 0))
    bitmap = RPG::Cache.icon(item.icon_name)
    opacity = self.contents.font.color == normal_color ? 255 : 128
    self.contents.blt(x, y + 4, bitmap, Rect.new(0, 0, 24, 24), opacity)
    self.contents.draw_text(x + 28, y, 212, 32, item.name, 0)
    self.contents.draw_text(x + 240, y, 16, 32, ":", 1)
    self.contents.draw_text(x + 256, y, 24, 32, number.to_s, 2)
  end
  #--------------------------------------------------------------------------
  # ● 刷新帮助文本
  #--------------------------------------------------------------------------
  def update_help
    @help_window.set_text(self.item == nil ? "" : self.item.description)
  end
end
  
    #p @additionals#[1]#.to_s#_temp[i]
    #p @products#[1]#.to_s
#==============================================================================
# ■ Scene_Compose
#------------------------------------------------------------------------------
#  处理物品合成画面的类
#==============================================================================
  
class Scene_Compose
#--------------------------------------------------------------------------
# ● 初始化
#--------------------------------------------------------------------------
def initialize
   # 生成帮助窗口
   @help_window = Window_Help.new
   # 生成命令窗口
   @command_window = Window_ComposeCommand.new
   @command_window.active = false
   # 生成左方窗口
   @item_window = Window_ComposeLeft.new
   @item_window.active = true
   @item_window.help_window = @help_window
   # 生成右方窗口
   @forge_window = Window_ComposeRight.new([])
   @forge_window.active = false
   @forge_window.help_window = @help_window
   # 初始化配方与合成区
   @formulas = $game_system.formulas
   @products = $game_system.products
   @additionals = $game_system.additionals #合成成功后95%的概率出现二号物品1个
   @forge = []
   @products_temp = []   
   @additionals_temp = []#合成成功后95%的概率出现二号物品1个
   @Faileds_temp = []#合成失败后95%的概率
      
end
  #--------------------------------------------------------------------------
  # ● 主处理
  #--------------------------------------------------------------------------
def main
   # 执行过渡
   Graphics.transition
   # 主循环
   loop do
     # 刷新游戏画面
     Graphics.update
     # 刷新输入情报
     Input.update
     # 刷新画面
     update
     # 如果画面被切换的话就中断循环
     if $scene != self
       break
     end
   end
   # 准备过渡
   Graphics.freeze
   # 释放窗口
   @help_window.dispose
   @command_window.dispose
   @item_window.dispose
   @forge_window.dispose
end
  #--------------------------------------------------------------------------
  # ● 刷新画面
  #--------------------------------------------------------------------------  
def update
   @help_window.update
   @command_window.update
   @item_window.update
   @forge_window.update
   if @command_window.active
     update_command
     return
   end
   if @item_window.active
     update_item
     return
   end
   if @forge_window.active
     update_forge
     return
   end
    return
end
  #--------------------------------------------------------------------------
  # ● 刷新画面(指令窗口激活的情况下)
  #--------------------------------------------------------------------------
  def update_command
    # 按下 B 键的情况下
    if Input.trigger?(Input::B)
      # 演奏取消 SE
      $game_system.se_play($data_system.cancel_se)
      abort
      # 切换到地图画面
      $scene = Scene_Map.new
      return
    end
     # 按下 C 键的情况下
    if Input.trigger?(Input::C)
      # 命令窗口光标位置分支
      case @command_window.index
      when 0  # 更改材料
        # 演奏确定 SE
        $game_system.se_play($data_system.decision_se)
        # 窗口状态转向物品窗口
        @command_window.active = false
        @item_window.active = true
        @forge_window.active = false
      when 1  # 合成
        # 演奏确定 SE
        $game_system.se_play($data_system.decision_se)
        # 执行合成命令
        if $game_temp.forge != []
          compose
        end
      when 2  # 放弃合成
        # 演奏确定 SE
        $game_system.se_play($data_system.decision_se)
        # 放弃合成
        abort
      when 3  # 离开
        # 演奏确定 SE
        $game_system.se_play($data_system.decision_se)
        # 放弃合成
        abort
        # 切换到地图画面
        $scene = Scene_Map.new
      end
      return
    end
  end
  #--------------------------------------------------------------------------
  # ● 刷新画面(物品窗口激活的情况下)
  #--------------------------------------------------------------------------
  def update_item
     # 按下 B 键的情况下
    if Input.trigger?(Input::B)
      # 演奏取消 SE
      $game_system.se_play($data_system.cancel_se)
      # 切换到指令窗口
      @item_window.active = false
      @command_window.active = true
      @help_window.set_text("")
      return
    end
     # 按下 C 键的情况
    if Input.trigger?(Input::C)
      # 演奏确定 SE
      $game_system.se_play($data_system.decision_se)
      # 获取物品
      @item = @item_window.item
      # 获取物品的所持数
      case @item
      when RPG::Item
        number = $game_party.item_number(@item.id)
        typetemp = 0
      when RPG::Weapon
        number = $game_party.weapon_number(@item.id)
        typetemp = 1
      when RPG::Armor
        number = $game_party.armor_number(@item.id)
        typetemp = 2
      end
      if number != nil
        # 更改合成窗口的物品
        case @item
        when RPG::Item
          $game_party.lose_item(@item.id, 1)
        when RPG::Weapon
          $game_party.lose_weapon(@item.id, 1)
        when RPG::Armor
          $game_party.lose_armor(@item.id, 1)
        end
        forge_change(typetemp, @item.id, 1)
        # 刷新各窗口
        @item_window.update
        @help_window.update
        @forge_window.update
        @item_window.refresh
        @forge_window.refresh
      end
    end
     # 按下 右方向键 的情况
    if Input.trigger?(Input::RIGHT)
      # 切换到合成窗口
      @item_window.active = false
      @forge_window.active = true
    end
  end
  #--------------------------------------------------------------------------
  # ● 刷新画面(合成窗口激活的情况下)
  #--------------------------------------------------------------------------
  def update_forge
     # 按下 B 键的情况下
    if Input.trigger?(Input::B)
      # 演奏取消 SE
      $game_system.se_play($data_system.cancel_se)
      # 切换到指令窗口
      @forge_window.active = false
      @command_window.active = true
      @help_window.set_text("")
      return
    end
     # 按下 C 键的情况
    if Input.trigger?(Input::C)
     # 演奏确定 SE
     $game_system.se_play($data_system.decision_se)
     # 获取物品
      @item = @forge_window.item
      # 获取物品的所持数
      case @item
      when RPG::Item
        number = @forge_window.item_number
        typetemp = 0
      when RPG::Weapon
        number = @forge_window.item_number
        typetemp = 1
      when RPG::Armor
        number = @forge_window.item_number
        typetemp = 2
      end
     if number != nil
       # 更改合成窗口的物品
       case @item
       when RPG::Item
         $game_party.gain_item(@item.id, 1)
       when RPG::Weapon
         $game_party.gain_weapon(@item.id, 1)
       when RPG::Armor
         $game_party.gain_armor(@item.id, 1)
       end
       #p number
       forge_change(typetemp, @item.id, -1)
       # 刷新各窗口
       @item_window.refresh
       @forge_window.refresh
       @help_window.update
       @item_window.update
       @forge_window.update
      end
    end
       # 按下 左方向键 的情况下
    if Input.trigger?(Input::LEFT)
      # 切换到合成窗口
      @forge_window.active = false
      @item_window.active = true
    end
  end
  #--------------------------------------------------------------------------
  # ● 更改合成窗口物品
  #--------------------------------------------------------------------------
  def forge_change(type,id,number)  
     quantity = number  
     for item in $game_temp.forge
       if (item[0]==type) and (item[1]==id)  
         item[2] = [item[2] += quantity,99].min  
         if item[2] == 0  
           $game_temp.forge.delete(item)  
         end
         return  
       end  
     end  
     $game_temp.forge.push([type,id,number])  
  end  
  #--------------------------------------------------------------------------
  # ● 更改合成窗口额外产物
  #--------------------------------------------------------------------------
  def forge2_change(type,id,number)  
     quantity = number  
     for item2 in $game_temp.forge
       if (item2[3]==type) and (item2[4]==id)  
         item2[5] = [item2[5] += quantity,99].min  
         if item2[5] == 0  
           $game_temp.forge.delete(item2)  
         end
         return  
       end  
     end  
     $game_temp.forge.push([type,id,number])  
  end
  #--------------------------------------------------------------------------
  # ● 放弃合成
  #--------------------------------------------------------------------------  
  def abort
    # 将合成窗口中的物品转移至物品窗口中
    for item in $game_temp.forge
      # 判断物品类型并归还
      case item[0]
      when 0
        $game_party.gain_item(item[1], item[2])
        #$game_party.gain_item(item[4], item[5])
      when 1
        $game_party.gain_weapon(item[1], item[2])
        #$game_party.gain_weapon(item[4], item[5])
      when 2
        $game_party.gain_armor(item[1], item[2])
        #$game_party.gain_armor(item[4], item[5])
      end
    end
    $game_temp.forge = []
    # 刷新各窗口
    @item_window.refresh
    @forge_window.refresh
  end
  #--------------------------------------------------------------------------
  # ● 检测是否有符合的配方
  #--------------------------------------------------------------------------
def match
   match_one = false
   match_this = false
    # 检测每一个配方
        
    #p @additionals#[1]#.to_s#_temp[i]
    #p @products[1]#.to_s
   for i in [email][email protected][/email]
     # 将合成窗口中的物品复制到合成缓存区
     # 注意: 直接使用"="将传引用 导致检测配方是否匹配时合成窗口中物品被删除
     @forge = $game_temp.forge.dup
     # 检测这个配方中每一项材料
     for ingredient in @formulas[i]
       match_this = true
       # 合成区中没有此项材料的情况
       unless @forge.include?(ingredient)
         match_this = false
         break
       end
       # 从合成区中暂时删除这项材料
       @forge.delete(ingredient)
     end
     if match_this == false
       next
     end
     # 检测合成区中是否还有配方外的材料剩余
     unless @forge == []
       match_this = false
     end
     # 满足这一个配方的情况
     if match_this == true
       match_one = true
       # 获取配方的成品
       @products_temp = @products[i]
       @additionals_temp = @additionals[i]
       break
     end
   end
   return match_one
end
  #--------------------------------------------------------------------------
  # ● 合成
  #--------------------------------------------------------------------------
def compose
   
    #@Additionals[1] = [[1,2,1,95]]#合成成功后95%的概率出现二号物品1个
    #@Faileds[1] = [[1,2,1,95]]#合成失败后95%的概率
   # 如果有符合的配方
   if match
     # 将合成窗口中的材料改变为成品
     $game_temp.forge = []
     for i in [email]0...@products_temp.size[/email]
      forge_change(@products_temp[i][0], @products_temp[i][1], @products_temp[i][2])
    end
     @aps=rand(99)
     @additionals_temp = @additionals[1]
     p @additionals[0][0]
     p @additionals_temp[0][3]
     if @aps<=@additionals_temp[0][3]
       #p "啊啊啊啊"
       for i in [email]0...@additionals_temp.size[/email]
         forge2_change(@additionals_temp[i][0], @additionals_temp[i][1], @additionals_temp[i][2])
       end
     end
     if $SE_Compose_Successful != ""
       Audio.se_play($SE_Compose_Successful)
     end
   # 合成失败的情况
   else  
     if $SE_Compose_Failed != ""
       Audio.se_play($SE_Compose_Failed)
     end
     if $Ingredient_Lost_When_Fail
       $game_temp.forge = []
     end
   end
    # 刷新各窗口
   @item_window.refresh
   @forge_window.refresh
end
end
’’
[img]http://service.t.sina.com.cn/widget/qmd/5339802982/c02e16bd/7.png
您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

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

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

GMT+8, 2024-12-26 02:26

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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