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

Project1

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

[已经解决] 外接脚本怎么修改透明度?

[复制链接]

Lv4.逐梦者

梦石
10
星屑
5783
在线时间
1851 小时
注册时间
2013-2-14
帖子
395

开拓者

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

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

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

x
本帖最后由 hijl1990 于 2013-6-26 18:33 编辑

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

点评

再使用主站上的透明菜单,加入这个脚本的透明处理就行了  发表于 2013-6-26 18:20

Lv2.观梦者

梦石
0
星屑
280
在线时间
1374 小时
注册时间
2005-10-16
帖子
5113

贵宾

2
发表于 2013-6-26 15:25:04 | 只看该作者
对应窗口的initialize方法里最后一行,加上
self.opacity = xxx

点评

这个能解释的详细点吗?是在这个脚本里修改吗?我有用透明菜单的脚本,其他界面都是能看到地图的。。  发表于 2013-6-26 19:00
是的,你需要在对应的scene开头添加一个spriteset_map的对象  发表于 2013-6-26 18:34
好像降低了透明度后是黑的,看不到地图的吗?  发表于 2013-6-26 18:31
你加在哪里了?  发表于 2013-6-26 17:51
可是我加上去之后没有效果?你看看这个脚本里我应该插在哪里?  发表于 2013-6-26 16:10
我只个搬答案的
叔叔我已经当爹了~
婚后闪人了……
回复 支持 反对

使用道具 举报

Lv5.捕梦者 (版主)

梦石
20
星屑
1840
在线时间
6925 小时
注册时间
2012-12-14
帖子
11485

短篇十战斗者组别冠军开拓者贵宾短篇九勇士组亚军

3
发表于 2013-6-26 17:09:01 | 只看该作者
  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.   alias formulas_initialize initialize  
  51.   def initialize  
  52.     formulas_initialize
  53.     @formulas = []  
  54.     @products = []
  55. #############################################################################
  56. #  
  57. #===========================配方表===========================================   
  58. #
  59. #  配方格式
  60. #
  61. #  @formulas[i] = [[材料种类,材料编号,数量],[材料种类,材料编号,数量]……]                  
  62. #  @products[i] = [[成品种类,成品编号,数量],[成品种类,成品编号,数量]……]
  63. #   
  64. #  种类:物品 0 武器 1 防具 2
  65. #
  66. #  1.如果有两个配方材料相同,理论上会按编号较小的处理
  67. #  2.配方材料的顺序与合成是无关的(当然如果你想改成有关肯定也不会太麻烦)
  68. #  3.允许某个材料拆成多件成品(可能就不叫物品合成,应该叫物品分解了)
  69. #  4.暂时不支持多步合并为一步的合成  
  70. #       例如 A + B = C,C + D = E,如果不存在A + B + D = E的配方
  71. #       A + B + D无法合成 E  
  72. #
  73. #############################################################################
  74.     @formulas[0] = []
  75.     @products[0] = []
  76.     # 物品类
  77.     @formulas[1] = [[0,1,1],[0,2,1]]   
  78.     @products[1] = [[0,32,1]]         
  79.     @formulas[2] = [[0,1,3]]
  80.     @products[2] = [[0,3,1]]
  81.     @formulas[3] = [[0,4,3]]
  82.     @products[3] = [[0,5,1]]
  83.     @formulas[4] = [[0,5,3]]
  84.     @products[4] = [[0,6,1]]
  85.     # 武器类
  86.     @formulas[101] = [[0,2,3]]   
  87.     @products[101] = [[1,4,1]]   
  88.     # 防具类
  89.     @formulas[201] = [[1,1,1],[0,1,1],[2,1,1]]  
  90.     @products[201] = [[1,4,1]]
  91.   end  
  92. end
  93.   
  94. class Game_Temp  
  95.   attr_accessor :forge
  96.   alias forge_item_initialize initialize  
  97.   def initialize  
  98.     forge_item_initialize
  99.     # 定义合成窗口中的物品储存区
  100.     [url=home.php?mod=space&uid=14254]@Forge[/url] = []  
  101.   end  
  102. end
  103.   
  104. #==============================================================================
  105. # ■ Window_ForgeCommand
  106. #------------------------------------------------------------------------------
  107. #  合成画面、选择要做的事的窗口
  108. #==============================================================================
  109.   
  110. class Window_ComposeCommand < Window_Selectable
  111.   #--------------------------------------------------------------------------
  112.   # ● 初始化对像
  113.   #--------------------------------------------------------------------------
  114.   def initialize
  115.     super(0, 64, 640, 64)
  116.     self.opacity = 0
  117.     self.contents = Bitmap.new(width - 32, height - 32)
  118.     @item_max = 4
  119.     @column_max = 4
  120.     @commands = ["选择材料", "合成加工", "放弃合成", "关闭"]
  121.     refresh
  122.     self.index = 0
  123.   end
  124.   #--------------------------------------------------------------------------
  125.   # ● 刷新
  126.   #--------------------------------------------------------------------------
  127.   def refresh
  128.     self.contents.clear
  129.     for i in 0...@item_max
  130.       draw_item(i)
  131.     end
  132.   end
  133.   #--------------------------------------------------------------------------
  134.   # ● 描绘项目
  135.   #     index : 项目编号
  136.   #--------------------------------------------------------------------------
  137.   def draw_item(index)
  138.     x = 4 + index * 160
  139.     self.contents.draw_text(x, 0, 128, 32, @commands[index])
  140.   end
  141. end
  142.   
  143. #==============================================================================
  144. # ■ Window_ForgeLeft
  145. #------------------------------------------------------------------------------
  146. #  合成画面中显示拥有的物品的窗口
  147. #==============================================================================
  148.   
  149. class Window_ComposeLeft < Window_Selectable
  150.   #--------------------------------------------------------------------------
  151.   # ● 初始化对像
  152.   #--------------------------------------------------------------------------
  153.   def initialize
  154.     super(0, 128, 320, 352)
  155.     @column_max = 1
  156.     self.opacity = 0
  157.     refresh
  158.     self.index = 0
  159.   end
  160.   #--------------------------------------------------------------------------
  161.   # ● 获取物品
  162.   #--------------------------------------------------------------------------
  163.   def item
  164.     return @data[self.index]
  165.   end
  166.   #--------------------------------------------------------------------------
  167.   # ● 刷新
  168.   #--------------------------------------------------------------------------
  169.   def refresh
  170.     if self.contents != nil
  171.       self.contents.dispose
  172.       self.contents = nil
  173.     end
  174.     self.update_cursor_rect
  175.     @data = []
  176.     for i in 1...$data_items.size
  177.       if $game_party.item_number(i) > 0
  178.         @data.push($data_items[i])
  179.       end
  180.     end
  181.     for i in 1...$data_weapons.size
  182.       if $game_party.weapon_number(i) > 0
  183.         @data.push($data_weapons[i])
  184.       end
  185.     end
  186.     for i in 1...$data_armors.size
  187.       if $game_party.armor_number(i) > 0
  188.         @data.push($data_armors[i])
  189.       end
  190.     end
  191.     # 如果项目数不是 0 就生成位图、描绘全部项目
  192.     @item_max = @data.size
  193.     if @item_max > 0
  194.       self.contents = Bitmap.new(width - 32, row_max * 32)
  195.       for i in 0...@item_max
  196.         draw_item(i)
  197.       end
  198.     end
  199.   end
  200.   #--------------------------------------------------------------------------
  201.   # ● 描绘项目
  202.   #     index : 项目标号
  203.   #--------------------------------------------------------------------------
  204.   def draw_item(index)
  205.     item = @data[index]
  206.     case item
  207.     when RPG::Item
  208.       number = $game_party.item_number(item.id)
  209.     when RPG::Weapon
  210.       number = $game_party.weapon_number(item.id)
  211.     when RPG::Armor
  212.       number = $game_party.armor_number(item.id)
  213.     end
  214.     self.contents.font.color = normal_color
  215.     x = 4
  216.     y = index * 32
  217.     rect = Rect.new(x, y, self.width / @column_max - 32, 32)
  218.     self.contents.fill_rect(rect, Color.new(0, 0, 0, 0))
  219.     bitmap = RPG::Cache.icon(item.icon_name)
  220.     opacity = self.contents.font.color == normal_color ? 255 : 128
  221.     self.contents.blt(x, y + 4, bitmap, Rect.new(0, 0, 24, 24), opacity)
  222.     self.contents.draw_text(x + 28, y, 212, 32, item.name, 0)
  223.     self.contents.draw_text(x + 240, y, 16, 32, ":", 1)
  224.     self.contents.draw_text(x + 256, y, 24, 32, number.to_s, 2)
  225.   end
  226.   #--------------------------------------------------------------------------
  227.   # ● 刷新帮助文本
  228.   #--------------------------------------------------------------------------
  229.   def update_help
  230.     @help_window.set_text(self.item == nil ? "" : self.item.description)
  231.   end
  232. end
  233.   
  234. #==============================================================================
  235. # ■ Window_ForgeRight
  236. #------------------------------------------------------------------------------
  237. #  合成画面中的合成区窗口
  238. #==============================================================================
  239.   
  240. class Window_ComposeRight < Window_Selectable
  241.   attr_accessor :forge_item
  242.   #--------------------------------------------------------------------------
  243.   # ● 初始化对像
  244.   #--------------------------------------------------------------------------
  245.   def initialize(forge_item)
  246.     super(320, 128, 320, 352)
  247.     @column_max = 1
  248.     self.opacity = 0
  249.     @forge_item = []
  250.     refresh
  251.     self.index = 0
  252.   end
  253.   #--------------------------------------------------------------------------
  254.   # ● 获取物品
  255.   #--------------------------------------------------------------------------
  256.   def item
  257.     return @data[self.index]
  258.   end
  259.   #--------------------------------------------------------------------------  
  260.   # ● 获取物品  
  261.   #--------------------------------------------------------------------------  
  262.   def item_number  
  263.     return @data_number[self.index]  
  264.   end  
  265.   #--------------------------------------------------------------------------
  266.   # ● 刷新
  267.   #--------------------------------------------------------------------------
  268.   def refresh
  269.     if self.contents != nil
  270.       self.contents.dispose
  271.       self.contents = nil
  272.     end
  273.     @data = []
  274.     @data_number = []  
  275.     @forge_item = $game_temp.forge
  276.     for item_forge in @forge_item
  277.       case item_forge[0]
  278.       when 0
  279.         item = $data_items[item_forge[1]]
  280.       when 1
  281.         item = $data_weapons[item_forge[1]]
  282.       when 2
  283.         item = $data_armors[item_forge[1]]
  284.       end
  285.       if (item != nil) and (item_forge[2] != 0)  
  286.         @data.push(item)  
  287.         @data_number.push(item_forge[2])  
  288.       else  
  289.         @data.delete(item)  
  290.       end  
  291.     end
  292.     # 如果项目数不是 0 就生成位图、描绘全部项目
  293.     @item_max = @data.size
  294.     if @item_max > 0
  295.       self.contents = Bitmap.new(width - 32, row_max * 32)
  296.       for i in 0...@item_max
  297.         draw_item(i)
  298.       end
  299.     end
  300.   end
  301.   #--------------------------------------------------------------------------
  302.   # ● 描绘项目
  303.   #     index : 项目标号
  304.   #--------------------------------------------------------------------------
  305.   def draw_item(index)
  306.     item = @data[index]
  307.     case item
  308.     when RPG::Item
  309.       number = $game_temp.forge[index][2]
  310.     when RPG::Weapon
  311.       number = $game_temp.forge[index][2]
  312.     when RPG::Armor
  313.       number = $game_temp.forge[index][2]
  314.     end
  315.     self.contents.font.color = normal_color
  316.     x = 4
  317.     y = index * 32
  318.     rect = Rect.new(x, y, self.width / @column_max - 32, 32)
  319.     self.contents.fill_rect(rect, Color.new(0, 0, 0, 0))
  320.     bitmap = RPG::Cache.icon(item.icon_name)
  321.     opacity = self.contents.font.color == normal_color ? 255 : 128
  322.     self.contents.blt(x, y + 4, bitmap, Rect.new(0, 0, 24, 24), opacity)
  323.     self.contents.draw_text(x + 28, y, 212, 32, item.name, 0)
  324.     self.contents.draw_text(x + 240, y, 16, 32, ":", 1)
  325.     self.contents.draw_text(x + 256, y, 24, 32, number.to_s, 2)
  326.   end
  327.   #--------------------------------------------------------------------------
  328.   # ● 刷新帮助文本
  329.   #--------------------------------------------------------------------------
  330.   def update_help
  331.     @help_window.set_text(self.item == nil ? "" : self.item.description)
  332.   end
  333. end
  334.   
  335. #==============================================================================
  336. # ■ Scene_Compose
  337. #------------------------------------------------------------------------------
  338. #  处理物品合成画面的类
  339. #==============================================================================
  340.   
  341. class Scene_Compose
  342. #--------------------------------------------------------------------------
  343. # ● 初始化
  344. #--------------------------------------------------------------------------
  345. def initialize
  346.    # 生成帮助窗口
  347.    @help_window = Window_Help.new
  348.    # 生成命令窗口
  349.    @command_window = Window_ComposeCommand.new
  350.    @command_window.active = false
  351.    # 生成左方窗口
  352.    @item_window = Window_ComposeLeft.new
  353.    @item_window.active = true
  354.    @item_window.help_window = @help_window
  355.    # 生成右方窗口
  356.    @forge_window = Window_ComposeRight.new([])
  357.    @forge_window.active = false
  358.    @forge_window.help_window = @help_window
  359.    # 初始化配方与合成区
  360.    @formulas = $game_system.formulas
  361.    @products = $game_system.products
  362.    [url=home.php?mod=space&uid=14254]@Forge[/url] = []
  363.    @products_temp = []      
  364. end
  365.   #--------------------------------------------------------------------------
  366.   # ● 主处理
  367.   #--------------------------------------------------------------------------
  368. def main
  369.    # 执行过渡
  370.    Graphics.transition
  371.    # 主循环
  372.    loop do
  373.      # 刷新游戏画面
  374.      Graphics.update
  375.      # 刷新输入情报
  376.      Input.update
  377.      # 刷新画面
  378.      update
  379.      # 如果画面被切换的话就中断循环
  380.      if $scene != self
  381.        break
  382.      end
  383.    end
  384.    # 准备过渡
  385.    Graphics.freeze
  386.    # 释放窗口
  387.    @help_window.dispose
  388.    @command_window.dispose
  389.    @item_window.dispose
  390.    @forge_window.dispose
  391. end
  392.   #--------------------------------------------------------------------------
  393.   # ● 刷新画面
  394.   #--------------------------------------------------------------------------  
  395. def update
  396.    @help_window.update
  397.    @command_window.update
  398.    @item_window.update
  399.    @forge_window.update
  400.    if @command_window.active
  401.      update_command
  402.      return
  403.    end
  404.    if @item_window.active
  405.      update_item
  406.      return
  407.    end
  408.    if @forge_window.active
  409.      update_forge
  410.      return
  411.    end
  412.     return
  413. end
  414.   #--------------------------------------------------------------------------
  415.   # ● 刷新画面(指令窗口激活的情况下)
  416.   #--------------------------------------------------------------------------
  417.   def update_command
  418.     # 按下 B 键的情况下
  419.     if Input.trigger?(Input::B)
  420.       # 演奏取消 SE
  421.       $game_system.se_play($data_system.cancel_se)
  422.       abort
  423.       # 切换到地图画面
  424.       $scene = Scene_Map.new
  425.       return
  426.     end
  427.      # 按下 C 键的情况下
  428.     if Input.trigger?(Input::C)
  429.       # 命令窗口光标位置分支
  430.       case @command_window.index
  431.       when 0  # 更改材料
  432.         # 演奏确定 SE
  433.         $game_system.se_play($data_system.decision_se)
  434.         # 窗口状态转向物品窗口
  435.         @command_window.active = false
  436.         @item_window.active = true
  437.         @forge_window.active = false
  438.       when 1  # 合成
  439.         # 演奏确定 SE
  440.         $game_system.se_play($data_system.decision_se)
  441.         # 执行合成命令
  442.         if $game_temp.forge != []
  443.           compose
  444.         end
  445.       when 2  # 放弃合成
  446.         # 演奏确定 SE
  447.         $game_system.se_play($data_system.decision_se)
  448.         # 放弃合成
  449.         abort
  450.       when 3  # 离开
  451.         # 演奏确定 SE
  452.         $game_system.se_play($data_system.decision_se)
  453.         # 放弃合成
  454.         abort
  455.         # 切换到地图画面
  456.         $scene = Scene_Map.new
  457.       end
  458.       return
  459.     end
  460.   end
  461.   #--------------------------------------------------------------------------
  462.   # ● 刷新画面(物品窗口激活的情况下)
  463.   #--------------------------------------------------------------------------
  464.   def update_item
  465.      # 按下 B 键的情况下
  466.     if Input.trigger?(Input::B)
  467.       # 演奏取消 SE
  468.       $game_system.se_play($data_system.cancel_se)
  469.       # 切换到指令窗口
  470.       @item_window.active = false
  471.       @command_window.active = true
  472.       @help_window.set_text("")
  473.       return
  474.     end
  475.      # 按下 C 键的情况
  476.     if Input.trigger?(Input::C)
  477.       # 演奏确定 SE
  478.       $game_system.se_play($data_system.decision_se)
  479.       # 获取物品
  480.       @item = @item_window.item
  481.       # 获取物品的所持数
  482.       case @item
  483.       when RPG::Item
  484.         number = $game_party.item_number(@item.id)
  485.         typetemp = 0
  486.       when RPG::Weapon
  487.         number = $game_party.weapon_number(@item.id)
  488.         typetemp = 1
  489.       when RPG::Armor
  490.         number = $game_party.armor_number(@item.id)
  491.         typetemp = 2
  492.       end
  493.       if number != nil
  494.         # 更改合成窗口的物品
  495.         case @item
  496.         when RPG::Item
  497.           $game_party.lose_item(@item.id, 1)
  498.         when RPG::Weapon
  499.           $game_party.lose_weapon(@item.id, 1)
  500.         when RPG::Armor
  501.           $game_party.lose_armor(@item.id, 1)
  502.         end
  503.         forge_change(typetemp, @item.id, 1)
  504.         # 刷新各窗口
  505.         @item_window.update
  506.         @help_window.update
  507.         @forge_window.update
  508.         @item_window.refresh
  509.         @forge_window.refresh
  510.       end
  511.     end
  512.      # 按下 右方向键 的情况
  513.     if Input.trigger?(Input::RIGHT)
  514.       # 切换到合成窗口
  515.       @item_window.active = false
  516.       @forge_window.active = true
  517.     end
  518.   end
  519.   #--------------------------------------------------------------------------
  520.   # ● 刷新画面(合成窗口激活的情况下)
  521.   #--------------------------------------------------------------------------
  522.   def update_forge
  523.      # 按下 B 键的情况下
  524.     if Input.trigger?(Input::B)
  525.       # 演奏取消 SE
  526.       $game_system.se_play($data_system.cancel_se)
  527.       # 切换到指令窗口
  528.       @forge_window.active = false
  529.       @command_window.active = true
  530.       @help_window.set_text("")
  531.       return
  532.     end
  533.      # 按下 C 键的情况
  534.     if Input.trigger?(Input::C)
  535.      # 演奏确定 SE
  536.      $game_system.se_play($data_system.decision_se)
  537.      # 获取物品
  538.       @item = @forge_window.item
  539.       # 获取物品的所持数
  540.       case @item
  541.       when RPG::Item
  542.         number = @forge_window.item_number
  543.         typetemp = 0
  544.       when RPG::Weapon
  545.         number = @forge_window.item_number
  546.         typetemp = 1
  547.       when RPG::Armor
  548.         number = @forge_window.item_number
  549.         typetemp = 2
  550.       end
  551.      if number != nil
  552.        # 更改合成窗口的物品
  553.        case @item
  554.        when RPG::Item
  555.          $game_party.gain_item(@item.id, 1)
  556.        when RPG::Weapon
  557.          $game_party.gain_weapon(@item.id, 1)
  558.        when RPG::Armor
  559.          $game_party.gain_armor(@item.id, 1)
  560.        end
  561.        #p number
  562.        forge_change(typetemp, @item.id, -1)
  563.        # 刷新各窗口
  564.        @item_window.refresh
  565.        @forge_window.refresh
  566.        @help_window.update
  567.        @item_window.update
  568.        @forge_window.update
  569.       end
  570.     end
  571.        # 按下 左方向键 的情况下
  572.     if Input.trigger?(Input::LEFT)
  573.       # 切换到合成窗口
  574.       @forge_window.active = false
  575.       @item_window.active = true
  576.     end
  577.   end
  578.   #--------------------------------------------------------------------------
  579.   # ● 更改合成窗口物品
  580.   #--------------------------------------------------------------------------
  581.   def forge_change(type,id,number)  
  582.      quantity = number  
  583.      for item in $game_temp.forge
  584.        if (item[0]==type) and (item[1]==id)  
  585.          item[2] = [item[2] += quantity,99].min  
  586.          if item[2] == 0  
  587.            $game_temp.forge.delete(item)  
  588.          end
  589.          return  
  590.        end  
  591.      end  
  592.      $game_temp.forge.push([type,id,number])  
  593.   end  
  594.   #--------------------------------------------------------------------------
  595.   # ● 放弃合成
  596.   #--------------------------------------------------------------------------  
  597.   def abort
  598.     # 将合成窗口中的物品转移至物品窗口中
  599.     for item in $game_temp.forge
  600.       # 判断物品类型并归还
  601.       case item[0]
  602.       when 0
  603.         $game_party.gain_item(item[1], item[2])
  604.       when 1
  605.         $game_party.gain_weapon(item[1], item[2])
  606.       when 2
  607.         $game_party.gain_armor(item[1], item[2])
  608.       end
  609.     end
  610.     $game_temp.forge = []
  611.     # 刷新各窗口
  612.     @item_window.refresh
  613.     @forge_window.refresh
  614.   end
  615.   #--------------------------------------------------------------------------
  616.   # ● 检测是否有符合的配方
  617.   #--------------------------------------------------------------------------
  618. def match
  619.    match_one = false
  620.    match_this = false
  621.     # 检测每一个配方
  622.    for i in [email protected]
  623.      # 将合成窗口中的物品复制到合成缓存区
  624.      # 注意: 直接使用"="将传引用 导致检测配方是否匹配时合成窗口中物品被删除
  625.      @forge = $game_temp.forge.dup
  626.      # 检测这个配方中每一项材料
  627.      for ingredient in @formulas[i]
  628.        match_this = true
  629.        # 合成区中没有此项材料的情况
  630.        unless @forge.include?(ingredient)
  631.          match_this = false
  632.          break
  633.        end
  634.        # 从合成区中暂时删除这项材料
  635.        @forge.delete(ingredient)
  636.      end
  637.      if match_this == false
  638.        next
  639.      end
  640.      # 检测合成区中是否还有配方外的材料剩余
  641.      unless @forge == []
  642.        match_this = false
  643.      end
  644.      # 满足这一个配方的情况
  645.      if match_this == true
  646.        match_one = true
  647.        # 获取配方的成品
  648.        @products_temp = @products[i]
  649.        break
  650.      end
  651.    end
  652.    return match_one
  653. end
  654.   #--------------------------------------------------------------------------
  655.   # ● 合成
  656.   #--------------------------------------------------------------------------
  657. def compose
  658.    # 如果有符合的配方
  659.    if match
  660.      # 将合成窗口中的材料改变为成品
  661.      $game_temp.forge = []
  662.      for i in 0...@products_temp.size
  663.       forge_change(@products_temp[i][0], @products_temp[i][1], @products_temp[i][2])
  664.     end
  665.      if $SE_Compose_Successful != ""
  666.        Audio.se_play($SE_Compose_Successful)
  667.      end
  668.    # 合成失败的情况
  669.    else  
  670.      if $SE_Compose_Failed != ""
  671.        Audio.se_play($SE_Compose_Failed)
  672.      end
  673.      if $Ingredient_Lost_When_Fail
  674.        $game_temp.forge = []
  675.      end
  676.    end
  677.     # 刷新各窗口
  678.    @item_window.refresh
  679.    @forge_window.refresh
  680. end
  681. end
复制代码

点评

为什么透明度降低了后是黑的,看不到地图呢?  发表于 2013-6-26 18:14
大家好,这里是晨露的说。请多多指教。
刚入门RM软件制作,请大家多多帮助我哦。
落雪君的欢乐像素教程,欢迎查阅。

回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
10
星屑
5783
在线时间
1851 小时
注册时间
2013-2-14
帖子
395

开拓者

4
 楼主| 发表于 2013-6-26 18:56:07 | 只看该作者
美丽晨露 发表于 2013-6-26 17:09

我有用透明菜单的脚本,系统菜单都是可以看到地图的,就这个看不到。。
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
280
在线时间
1374 小时
注册时间
2005-10-16
帖子
5113

贵宾

5
发表于 2013-6-26 20:04:16 | 只看该作者
  1. class Scene_Compose
  2.   #--------------------------------------------------------------------------
  3.   # ● 主处理
  4.   #--------------------------------------------------------------------------
  5.   def main
  6.     back = Spriteset_Map.new
  7.   中间有好多好多行
  8.     back.dispose
  9.   end
复制代码
按这个,自己改一下吧~

点评

谢谢,已经解决了。。  发表于 2013-6-26 20:19

评分

参与人数 1星屑 +84 收起 理由
弗雷德 + 84 认可答案

查看全部评分

我只个搬答案的
叔叔我已经当爹了~
婚后闪人了……
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

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

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

GMT+8, 2024-12-28 06:34

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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