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

Project1

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

[已发主站] 【VA】【原创】物品制造系统V0.1

  [复制链接]

Lv1.梦旅人

梦石
0
星屑
60
在线时间
79 小时
注册时间
2007-2-11
帖子
140
跳转到指定楼层
1
发表于 2012-5-23 23:59:05 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

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

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

x
这个系统的功能呢。。是用已有的物品生产其他物品。。
本来我是想搞个生活技能——制药
结果发现其实也可以适用于烹饪什么的
最后就成为了生产类生活技能的集合。。武器制造是不行的。。s05s0039酱提醒我了,囧。我太挫了
因为原材料和产出物的数量是不限制的,所以其实也可以用来把某东西拆分成原材料,只要你设置原材料的数量为1,产出物多几个,就好了。。

115网盘范例下载
迅雷快传
补充:度盘下载

RUBY 代码复制
  1. #encoding:utf-8
  2. #==============================================================================
  3. #
  4. #每添加一个制造的类型,最上面的类别菜单就会多一项。
  5. #
  6. #添加类型的方法是:
  7. #$game_party.add_cook_type(类别名称,类别介绍, 类别状态-默认false)
  8. #
  9. #举例:
  10. #$game_party.add_cook_type("制药","调配药品", true)
  11. #
  12. #添加配方的方法:
  13. #$game_party.add_cookbook(配方名称, 配方介绍, 配方类别名称,材料的二维数组,产出物的二维数组,配方状态默认为true)
  14. #
  15. #举例:
  16. #$game_party.add_cookbook("初级补血药水", "制作初级补血药水", "制药",[[18,2],[3,4],[2,5]],[[1,1],[44,5]],true)
  17. #
  18. #调用窗口的方法:SceneManager.call(Scene_Cook)
  19. #==============================================================================
  20.  
  21. #==============================================================================
  22. # ■ Cookbook_Type
  23. #------------------------------------------------------------------------------
  24. #  食谱类型类。
  25. #==============================================================================
  26.  
  27. class Cookbook_Type
  28.   attr_reader :index
  29.   attr_reader :name
  30.   attr_reader :description
  31.   attr_reader :enabled
  32.   #--------------------------------------------------------------------------
  33.   # ● 初始化对象
  34.   #--------------------------------------------------------------------------
  35.   def initialize(index, name, description, enabled = false)
  36.     @index = index
  37.     @name = name
  38.     @description = description
  39.     @enabled = enabled
  40.   end
  41.  
  42.   def enable(en)
  43.     @enabled = en
  44.   end
  45. end
  46.  
  47. #==============================================================================
  48. # ■ Cookbook
  49. #------------------------------------------------------------------------------
  50. #  食谱类。本类在 Game_Task 类的内部使用。
  51. #   食谱属性:食谱序号,食谱名称,食谱类型,食谱介绍,原料,成品
  52. #==============================================================================
  53.  
  54. class Cookbook
  55.   attr_reader :index
  56.   attr_reader :name
  57.   attr_reader :description
  58.   attr_reader :type
  59.   attr_reader :input
  60.   attr_reader :output
  61.   attr_reader :enabled
  62.   #--------------------------------------------------------------------------
  63.   # ● 初始化对象
  64.   #--------------------------------------------------------------------------
  65.   def initialize(index, name, description, type, input, output, enabled = true)
  66.     @index = index
  67.     @name = name
  68.     @description = description
  69.     @type = type
  70.     @input = input
  71.     @output = output
  72.     @enabled = enabled
  73.   end
  74.  
  75.   def enable(en)
  76.     @enabled = en
  77.   end
  78.  
  79.   #--------------------------------------------------------------------------
  80.   # ● 查询列表中的物品
  81.   #--------------------------------------------------------------------------
  82.   def in_list?(item, list)
  83.     list.each do |arr|
  84.       return true if arr[0] == item.id
  85.     end
  86.     return false
  87.   end
  88.   #--------------------------------------------------------------------------
  89.   # ● 查询是否是材料列表中的物品
  90.   #--------------------------------------------------------------------------
  91.   def resource?(item)
  92.     in_list?(item, @input)
  93.   end
  94.   #--------------------------------------------------------------------------
  95.   # ● 查询是否是产出列表中的物品
  96.   #--------------------------------------------------------------------------
  97.   def output?(item)
  98.     in_list?(item, @output)
  99.   end
  100.   #--------------------------------------------------------------------------
  101.   # ● 查询材料需求量
  102.   #--------------------------------------------------------------------------
  103.   def amount(item, i)
  104.     if i == 0
  105.       @input.each do |arr|
  106.         return arr[1] if arr[0] == item.id
  107.       end
  108.     else
  109.       @output.each do |arr|
  110.         return arr[1] if arr[0] == item.id
  111.       end
  112.     end
  113.     return 0
  114.   end
  115.   #--------------------------------------------------------------------------
  116.   # ● 查询材料是否足够
  117.   #--------------------------------------------------------------------------
  118.   def enough?
  119.     input.each do |arr|
  120.       return false if $data_items[arr[0]] && arr[1] > $game_party.item_number($data_items[arr[0]])
  121.     end
  122.     return true
  123.   end
  124.   #--------------------------------------------------------------------------
  125.   # ● 查询某件材料是否足够
  126.   #--------------------------------------------------------------------------
  127.   def item_enough?(item)
  128.     input.each do |arr|
  129.       return false if arr[0] == item.id && arr[1] > $game_party.item_number(item)
  130.     end
  131.     return true
  132.   end
  133. end
  134.  
  135. #==============================================================================
  136. # ■ Game_Party
  137. #==============================================================================
  138.  
  139. class Game_Party < Game_Unit
  140.   #--------------------------------------------------------------------------
  141.   # ● 初始化对象
  142.   #--------------------------------------------------------------------------
  143.   alias old_init initialize
  144.   def initialize
  145.     old_init
  146.     @cook_types = []
  147.     @cookbooks = []
  148.   end
  149.   #--------------------------------------------------------------------------
  150.   # ● 添加新的食谱类型
  151.   #--------------------------------------------------------------------------
  152.   def add_cook_type(n, d, en)
  153.     @cook_types.push(Cookbook_Type.new(@cook_types.size, n, d, en)) if !have_cook_type?(n)
  154.   end
  155.   #--------------------------------------------------------------------------
  156.   # ● 添加新的食谱
  157.   #--------------------------------------------------------------------------
  158.   def add_cookbook(n, d, type, input, output, en)
  159.     if !have_cookbook?(n) && have_cook_type?(type)
  160.       @cookbooks.push(Cookbook.new(@cookbooks.size, n, d, type, input, output, en))
  161.     end
  162.   end
  163.   #--------------------------------------------------------------------------
  164.   # ● 判断名称为n的食谱类型是否存在
  165.   #--------------------------------------------------------------------------
  166.   def have_cook_type?(n)
  167.     @cook_types.each do |x|
  168.       return true if x.name == n
  169.     end
  170.     return false
  171.   end
  172.   #--------------------------------------------------------------------------
  173.   # ● 判断名称为n的食谱是否存在
  174.   #--------------------------------------------------------------------------
  175.   def have_cookbook?(n)
  176.     @cookbooks.each do |x|
  177.       return true if x.name == n
  178.     end
  179.     return false
  180.   end
  181.   #--------------------------------------------------------------------------
  182.   # ● 返回食谱类型列表
  183.   #--------------------------------------------------------------------------
  184.   def cook_types
  185.     return @cook_types
  186.   end
  187.   #--------------------------------------------------------------------------
  188.   # ● 返回食谱列表
  189.   #--------------------------------------------------------------------------
  190.   def cookbooks(type = nil)
  191.     return @cookbooks if type == nil
  192.     arr = []
  193.     @cookbooks.each do |x|
  194.       arr.push(x) if x.type == type
  195.     end
  196.     return arr
  197.   end
  198.   #--------------------------------------------------------------------------
  199.   # ● 更改序号为i的食谱类型的使用状态
  200.   #--------------------------------------------------------------------------
  201.   def set_cook_type(i, en)
  202.     @cook_types[i].enable(en)
  203.   end
  204.   #--------------------------------------------------------------------------
  205.   # ● 更改序号为i的食谱的使用状态
  206.   #--------------------------------------------------------------------------
  207.   def set_cookbook(i, en)
  208.     @cookbooks[i].enable(en)
  209.   end
  210.   #--------------------------------------------------------------------------
  211.   # ● 返回食谱类型数目
  212.   #--------------------------------------------------------------------------
  213.   def cook_types_size
  214.     return @cook_types.size
  215.   end
  216.   #--------------------------------------------------------------------------
  217.   # ● 查询名称为n的食谱类型的描述
  218.   #--------------------------------------------------------------------------
  219.   def cook_type_description(n)
  220.     @cook_types.each do |x|
  221.       return x.description if x.name == n
  222.     end
  223.     return ""
  224.   end
  225. end
  226.  
  227. #==============================================================================
  228. # ■ Scene_Cook
  229. #------------------------------------------------------------------------------
  230. #  烹饪画面
  231. #==============================================================================
  232.  
  233. class Scene_Cook < Scene_ItemBase
  234.   #--------------------------------------------------------------------------
  235.   # ● 开始处理
  236.   #--------------------------------------------------------------------------
  237.   def start
  238.     super
  239.     create_category_window
  240.     create_cookbook_window
  241.     create_description_window
  242.     create_needs_window
  243.   end
  244.   #--------------------------------------------------------------------------
  245.   # ● 生成分类窗口
  246.   #--------------------------------------------------------------------------
  247.   def create_category_window
  248.     @category_window = Window_CookCategory.new
  249.     @category_window.viewport = @viewport
  250.     @category_window.y = 0
  251.     @category_window.set_handler(:ok,     method(:on_category_ok))
  252.     @category_window.set_handler(:cancel, method(:return_scene))
  253.   end
  254.   #--------------------------------------------------------------------------
  255.   # ● 生成食谱窗口
  256.   #--------------------------------------------------------------------------
  257.   def create_cookbook_window
  258.     wy = @category_window.height
  259.     wh = Graphics.height - wy
  260.     @item_window = Window_CookList.new(0, wy, Graphics.width*0.5 , wh)
  261.     @item_window.viewport = @viewport
  262.     @item_window.set_handler(:ok,     method(:on_item_ok))
  263.     @item_window.set_handler(:cancel, method(:on_item_cancel))
  264.     @category_window.item_window = @item_window
  265.   end
  266.   #--------------------------------------------------------------------------
  267.   # ● 生成描述窗口
  268.   #--------------------------------------------------------------------------
  269.   def create_description_window
  270.     wy = @category_window.height
  271.     @help_window = Window_Description.new(Graphics.width*0.5, wy)
  272.     @help_window.viewport = @viewport
  273.     @item_window.help_window = @help_window
  274.     @category_window.help_window = @help_window
  275.   end
  276.     #--------------------------------------------------------------------------
  277.   # ● 生成材料窗口
  278.   #--------------------------------------------------------------------------
  279.   def create_needs_window
  280.     wy = @category_window.height + @help_window.height
  281.     wh = Graphics.height - wy
  282.     @needs_window = Window_NeedsList.new(Graphics.width*0.5, wy, Graphics.width*0.5 , wh)
  283.     #@item_window.viewport = @viewport
  284.     @item_window.needs_window = @needs_window
  285.  
  286.   end
  287.   #--------------------------------------------------------------------------
  288.   # ● 分类“确定”
  289.   #--------------------------------------------------------------------------
  290.   def on_category_ok
  291.     @item_window.activate
  292.     @item_window.select_last
  293.   end
  294.   #--------------------------------------------------------------------------
  295.   # ● 食谱“确定”
  296.   #--------------------------------------------------------------------------
  297.   def on_item_ok
  298.     #$game_party.last_item.object = item
  299.     cook
  300.   end
  301.   #--------------------------------------------------------------------------
  302.   # ● 食谱“取消”
  303.   #--------------------------------------------------------------------------
  304.   def on_item_cancel
  305.     @item_window.unselect
  306.     @category_window.activate
  307.   end
  308.   #--------------------------------------------------------------------------
  309.   # ● 烹饪
  310.   #--------------------------------------------------------------------------
  311.   def cook
  312.     if item.enough?
  313.       play_se_for_item
  314.       use_item
  315.       @needs_window.refresh
  316.       @item_window.refresh
  317.       activate_item_window
  318.     end
  319.   end
  320.   #--------------------------------------------------------------------------
  321.   # ● 播放制作声效
  322.   #--------------------------------------------------------------------------
  323.   def play_se_for_item
  324.     Sound.play_recovery
  325.   end
  326.   #--------------------------------------------------------------------------
  327.   # ● 使用食谱
  328.   #--------------------------------------------------------------------------
  329.   def use_item
  330.     #super
  331.     #@item_window.redraw_current_item
  332.     $data_items.each do |it|
  333.       if it && !it.name.empty?
  334.         $game_party.gain_item(it,-item.amount(it,0)) if item.resource?(it)
  335.         $game_party.gain_item(it,item.amount(it,1)) if item.output?(it)
  336.       end
  337.     end
  338.   end
  339. end
  340.  
  341.  
  342. #==============================================================================
  343. # ■ Window_CookCategory
  344. #------------------------------------------------------------------------------
  345. #  烹饪画面中,显示食谱类型的窗口。
  346. #==============================================================================
  347.  
  348. class Window_CookCategory < Window_HorzCommand
  349.   #--------------------------------------------------------------------------
  350.   # ● 定义实例变量
  351.   #--------------------------------------------------------------------------
  352.   attr_reader   :item_window
  353.   #--------------------------------------------------------------------------
  354.   # ● 初始化对象
  355.   #--------------------------------------------------------------------------
  356.   def initialize
  357.     super(0, 0)
  358.   end
  359.   #--------------------------------------------------------------------------
  360.   # ● 获取窗口的宽度
  361.   #--------------------------------------------------------------------------
  362.   def window_width
  363.     Graphics.width
  364.   end
  365.   #--------------------------------------------------------------------------
  366.   # ● 获取列数
  367.   #--------------------------------------------------------------------------
  368.   def col_max
  369.     return $game_party.cook_types_size
  370.   end
  371.   #--------------------------------------------------------------------------
  372.   # ● 更新画面
  373.   #--------------------------------------------------------------------------
  374.   def update
  375.     super
  376.     #@item_window.category = current_symbol if @item_window
  377.     @item_window.category = current_data[:name] if @item_window
  378.   end
  379.   #--------------------------------------------------------------------------
  380.   # ● 生成食谱类型列表
  381.   #--------------------------------------------------------------------------
  382.   def make_command_list
  383.     $game_party.cook_types.each do |t|
  384.       add_command(t.name, t.index, t.enabled)
  385.     end
  386.   end
  387.   #--------------------------------------------------------------------------
  388.   # ● 设置食谱列表窗口
  389.   #--------------------------------------------------------------------------
  390.   def item_window=(item_window)
  391.     @item_window = item_window
  392.     update
  393.   end
  394.   #--------------------------------------------------------------------------
  395.   # ● 更新帮助内容
  396.   #--------------------------------------------------------------------------
  397.   def update_help
  398.     @help_window.set_text($game_party.cook_type_description(current_data[:name]))
  399.   end
  400. end
  401.  
  402. #==============================================================================
  403. # ■ Window_CookList
  404. #------------------------------------------------------------------------------
  405. #  任务画面中,显示已获得任务的窗口。
  406. #==============================================================================
  407.  
  408. class Window_CookList < Window_Selectable
  409.   #--------------------------------------------------------------------------
  410.   # ● 定义实例变量
  411.   #--------------------------------------------------------------------------
  412.   attr_reader   :needs_window
  413.   #--------------------------------------------------------------------------
  414.   # ● 初始化对象
  415.   #--------------------------------------------------------------------------
  416.   def initialize(x, y, width, height)
  417.     super
  418.     @data = []
  419.     @category = $game_party.cook_types_size > 0 ? $game_party.cook_types[0].name : nil
  420.     refresh
  421.   end
  422.   #--------------------------------------------------------------------------
  423.   # ● 设置分类
  424.   #--------------------------------------------------------------------------
  425.   def category=(category)
  426.     return if @category == category
  427.     @category = category
  428.     refresh
  429.     self.oy = 0
  430.   end
  431.   #--------------------------------------------------------------------------
  432.   # ● 设置材料窗口
  433.   #--------------------------------------------------------------------------
  434.   def needs_window=(needs_window)
  435.     @needs_window = needs_window
  436.     update
  437.   end
  438.   #--------------------------------------------------------------------------
  439.   # ● 获取列数
  440.   #--------------------------------------------------------------------------
  441.   def col_max
  442.     return 1
  443.   end
  444.   #--------------------------------------------------------------------------
  445.   # ● 获取项目数
  446.   #--------------------------------------------------------------------------
  447.   def item_max
  448.     @data ? @data.size : 1
  449.   end
  450.   #--------------------------------------------------------------------------
  451.   # ● 获取食谱
  452.   #--------------------------------------------------------------------------
  453.   def item
  454.     @data && index >= 0 ? @data[index] : nil
  455.   end
  456.   #--------------------------------------------------------------------------
  457.   # ● 获取选择食谱的有效状态
  458.   #--------------------------------------------------------------------------
  459.   def current_item_enabled?
  460.     enable?(@data[index])
  461.   end
  462.   #--------------------------------------------------------------------------
  463.   # ● 查询此食谱是否可用
  464.   #--------------------------------------------------------------------------
  465.   def enable?(item)
  466.     item.enabled && item.enough?
  467.   end
  468.   #--------------------------------------------------------------------------
  469.   # ● 生成食谱列表
  470.   #--------------------------------------------------------------------------
  471.   def make_item_list
  472.     @data = $game_party.cookbooks(@category)
  473.   end
  474.   #--------------------------------------------------------------------------
  475.   # ● 返回上一个选择的位置
  476.   #--------------------------------------------------------------------------
  477.   def select_last
  478.     select(0)
  479.   end
  480.   #--------------------------------------------------------------------------
  481.   # ● 绘制项目
  482.   #--------------------------------------------------------------------------
  483.   def draw_item(index)
  484.     item = @data[index]
  485.     if item
  486.       rect = item_rect(index)
  487.       rect.width -= 4
  488.       draw_item_name(item, rect.x, rect.y, enable?(item))
  489.     end
  490.   end
  491.   #--------------------------------------------------------------------------
  492.   # ● 绘制名称
  493.   #     enabled : 有效的标志。false 的时候使用半透明效果绘制
  494.   #--------------------------------------------------------------------------
  495.   def draw_item_name(item, x, y, enabled = true, width = 300)
  496.     return unless item
  497.     text = item.name
  498.     text += "[材料不足]" if !item.enough?
  499.     change_color(normal_color, enabled)
  500.     draw_text(x, y, width, line_height, text)
  501.   end
  502.   #--------------------------------------------------------------------------
  503.   # ● 更新帮助内容
  504.   #--------------------------------------------------------------------------
  505.   def update_help
  506.     @help_window.set_item(item)
  507.   end
  508.    #--------------------------------------------------------------------------
  509.   # ● 更新食谱清单
  510.   #--------------------------------------------------------------------------
  511.   def update_needslist
  512.     @needs_window.set_item(item)
  513.   end
  514.   #--------------------------------------------------------------------------
  515.   # ● 调用帮助窗口的更新方法
  516.   #--------------------------------------------------------------------------
  517.   def call_update_help
  518.     update_help if @help_window
  519.     update_needslist if @needs_window
  520.   end
  521.   #--------------------------------------------------------------------------
  522.   # ● 刷新
  523.   #--------------------------------------------------------------------------
  524.   def refresh
  525.     make_item_list
  526.     create_contents
  527.     draw_all_items
  528.   end
  529. end
  530. #==============================================================================
  531. # ■ Window_Description
  532. #------------------------------------------------------------------------------
  533. #  显示食谱的说明的窗口
  534. #==============================================================================
  535.  
  536. class Window_Description < Window_Base
  537.   #--------------------------------------------------------------------------
  538.   # ● 初始化对象
  539.   #--------------------------------------------------------------------------
  540.   def initialize(x, y)
  541.     super(x, y, Graphics.width*0.5, fitting_height(4))
  542.   end
  543.   #--------------------------------------------------------------------------
  544.   # ● 设置内容
  545.   #--------------------------------------------------------------------------
  546.   def set_text(text)
  547.     if text != @text
  548.       @text = text
  549.       refresh
  550.     end
  551.   end
  552.   #--------------------------------------------------------------------------
  553.   # ● 清除
  554.   #--------------------------------------------------------------------------
  555.   def clear
  556.     set_text("")
  557.   end
  558.   #--------------------------------------------------------------------------
  559.   # ● 设置食谱的介绍
  560.   #--------------------------------------------------------------------------
  561.   def set_item(item)
  562.     set_text(item ? item.description : "")
  563.   end
  564.   #--------------------------------------------------------------------------
  565.   # ● 刷新
  566.   #--------------------------------------------------------------------------
  567.   def refresh
  568.     contents.clear
  569.     draw_text_ex(4, 0, @text)
  570.   end
  571. end
  572.  
  573. #==============================================================================
  574. # ■ Window_NeedsList
  575. #------------------------------------------------------------------------------
  576. #  烹饪画面中,显示食谱所需材料的窗口。
  577. #==============================================================================
  578.  
  579. class Window_NeedsList < Window_Selectable
  580.   #--------------------------------------------------------------------------
  581.   # ● 初始化对象
  582.   #--------------------------------------------------------------------------
  583.   def initialize(x, y, width, height)
  584.     super
  585.     @category = :item
  586.     @cookbook = nil
  587.     @data = []
  588.     refresh
  589.   end
  590.   #--------------------------------------------------------------------------
  591.   # ● 获取列数
  592.   #--------------------------------------------------------------------------
  593.   def col_max
  594.     return 1
  595.   end
  596.   #--------------------------------------------------------------------------
  597.   # ● 获取项目数
  598.   #--------------------------------------------------------------------------
  599.   def item_max
  600.     @data ? @data.size : 1
  601.   end
  602.   #--------------------------------------------------------------------------
  603.   # ● 获取物品
  604.   #--------------------------------------------------------------------------
  605.   def item
  606.     @data && index >= 0 ? @data[index] : nil
  607.   end
  608.   #--------------------------------------------------------------------------
  609.   # ● 查询列表中是否含有此物品
  610.   #--------------------------------------------------------------------------
  611.   def include?(item)
  612.     item.is_a?(RPG::Item) && !item.key_item?
  613.   end
  614.   #--------------------------------------------------------------------------
  615.   # ● 获取选择食谱的有效状态
  616.   #--------------------------------------------------------------------------
  617.   def current_item_enabled?
  618.     enable?(@data[index])
  619.   end
  620.   #--------------------------------------------------------------------------
  621.   # ● 查询此食谱是否可用
  622.   #--------------------------------------------------------------------------
  623.   def enable?(item)
  624.     $game_party.usable?(item) && @cookbook.item_enough?(item)
  625.   end
  626.   #--------------------------------------------------------------------------
  627.   # ● 生成物品列表
  628.   #--------------------------------------------------------------------------
  629.   def make_item_list
  630.     @data = []
  631.     return if @cookbook== nil
  632.     tmp1 = []
  633.     tmp2 = []
  634.     $data_items.each do |item|
  635.       tmp1.push([item, 0]) if item && !item.name.empty? && @cookbook.resource?(item)
  636.       tmp2.push([item, 1]) if item && !item.name.empty? && @cookbook.output?(item)
  637.     end
  638.     if tmp1.size > 0 && tmp2.size > 0
  639.       @data.push(["需要材料:",0])
  640.       @data += tmp1
  641.       @data.push(["可以获得:",1])
  642.       @data += tmp2
  643.     end
  644.   end
  645.   #--------------------------------------------------------------------------
  646.   # ● 返回上一个选择的位置
  647.   #--------------------------------------------------------------------------
  648.   def select_last
  649.     select(0)
  650.   end
  651.   #--------------------------------------------------------------------------
  652.   # ● 绘制项目
  653.   #--------------------------------------------------------------------------
  654.   def draw_item(index)
  655.     item = @data[index]
  656.     if item
  657.       rect = item_rect(index)
  658.       rect.width -= 4
  659.       if item[0].is_a?(RPG::Item)
  660.         draw_item_name(item, rect.x, rect.y, enable?(item[0]))
  661.         draw_item_number(rect, item[0])
  662.       else
  663.         draw_input_output(item, rect.x, rect.y)
  664.       end
  665.     end
  666.   end
  667.   #--------------------------------------------------------------------------
  668.   # ● 绘制物品名称
  669.   #     enabled : 有效的标志。false 的时候使用半透明效果绘制
  670.   #--------------------------------------------------------------------------
  671.   def draw_item_name(item, x, y, enabled = true, width = 172)
  672.     return unless item
  673.     text = item[0].name + "*" + String(@cookbook.amount(item[0], item[1]))
  674.     draw_icon(item[0].icon_index, x, y, enabled)
  675.     change_color(normal_color, enable?(item[0]))
  676.     draw_text(x + 24, y, width, line_height, text)
  677.   end
  678.   #--------------------------------------------------------------------------
  679.   # ● 绘制输入和产出
  680.   #--------------------------------------------------------------------------
  681.   def draw_input_output(item, x, y, enabled = false, width = 172)
  682.     return unless item
  683.     if item[1] == 0
  684.       text = "[需要]"
  685.     else
  686.       text = "[可以获得]"
  687.     end
  688.     change_color(normal_color, @cookbook.enough?)
  689.     draw_text(x , y, width, line_height, text)
  690.   end
  691.   #--------------------------------------------------------------------------
  692.   # ● 绘制物品个数
  693.   #--------------------------------------------------------------------------
  694.   def draw_item_number(rect, item)
  695.     draw_text(rect, sprintf("现有%2d", $game_party.item_number(item)), 2)
  696.   end
  697.   #--------------------------------------------------------------------------
  698.   # ● 刷新
  699.   #--------------------------------------------------------------------------
  700.   def refresh
  701.     make_item_list
  702.     create_contents
  703.     draw_all_items
  704.   end
  705.   #--------------------------------------------------------------------------
  706.   # ● 设置食谱的材料
  707.   #--------------------------------------------------------------------------
  708.   def set_item(item)
  709.     @cookbook = item
  710.     refresh
  711.   end
  712. end




每添加一个制造的类型,最上面的类别菜单就会多一项。
添加类型的方法是:$game_party.add_cook_type(类别名称,类别介绍, 类别状态-默认false)
举例:$game_party.add_cook_type("制药","调配药品", true)

添加配方的方法:$game_party.add_cookbook(配方名称, 配方介绍, 配方类别名称,材料的二维数组,产出物的二维数组,true)
举例:$game_party.add_cookbook("初级补血药水配方", "用赤血草制作初级补血药水", "制药",[[18,2],[3,4],[2,5]],[[1,1],[44,5]],true)
二维数组里面,每一个[m,n]里的m是物品id,n是需要物品的数量。理论上来说加几个不同物品都是没问题的。但是显示材料的窗口会显示不下。。

调用窗口的方法:SceneManager.call(Scene_Cook)


预计有空的时候要加上生活技能的熟练度和等级。。  

评分

参与人数 6星屑 +322 +6 收起 理由
柳柳 + 6 发布到主站了
DeathKing + 176
duzhi5368 + 60 技术性很强啊~~~~
艾拉·贝尔 + 4 太迟啦= =我找了好久 还有问一下有没有技能.
alann + 2 这脚本来得太迟了……T_T
Luciffer + 80 很不错。。。

查看全部评分

Lv1.梦旅人

梦石
0
星屑
97
在线时间
753 小时
注册时间
2011-7-17
帖子
781
2
发表于 2012-5-24 06:51:58 | 只看该作者
好东西。
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
2127
在线时间
437 小时
注册时间
2010-11-22
帖子
413
3
发表于 2012-5-24 08:18:52 | 只看该作者
期待加上熟练度和等级出来,就先收下这个了。
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
1061
在线时间
46 小时
注册时间
2011-9-5
帖子
3
4
发表于 2012-5-24 09:51:41 | 只看该作者
是个好东西啊!楼主继续加油啊!
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
388
在线时间
245 小时
注册时间
2011-11-20
帖子
324
5
发表于 2012-5-24 11:01:52 | 只看该作者
楼主最近发了很多好东西呢。相当支持啊
这里是个新人。
回复 支持 反对

使用道具 举报

Lv3.寻梦者

Assassin-K

梦石
0
星屑
3603
在线时间
2281 小时
注册时间
2012-5-23
帖子
4065

贵宾

6
发表于 2012-5-24 12:55:42 | 只看该作者
本帖最后由 Mic_洛洛 于 2012-5-24 12:56 编辑

话说这脚本还是100%成功的说?
可以参考图书馆里的强化系统脚本,把成功率写进去那就更真实,更好了!
期待熟练度和等级的更新+1


点评

我昨天考虑过要不要加成功率这东西,还有产出物的品质一类的。。但是这么一来构造函数好麻烦啊- -!我有点懒了。我去看看图书馆吧。。谢谢提醒  发表于 2012-5-24 13:37

◆ROZONE◆
>洛子又要去流浪地球了……
>如果你看到我在线,又没动静,那只能说明我在挂机……
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
154
在线时间
664 小时
注册时间
2011-9-25
帖子
241
7
发表于 2012-5-24 17:38:12 | 只看该作者
脚本无法复制是什么情况呢?

点评

换个浏览器就好了~  发表于 2012-7-12 11:15
回复 支持 反对

使用道具 举报

Lv3.寻梦者 (版主)

  /) /)<

梦石
0
星屑
4212
在线时间
4890 小时
注册时间
2009-2-16
帖子
8434

开拓者短篇七成年组季军

8
发表于 2012-5-24 17:54:26 | 只看该作者
挺给力的
就是  最好把“[材料不足]”移到“需要”那栏  因为标题太长的话 “[材料不足]”加上会超出那栏吧……  标题就用透明来表示材料不足就够了
另外 说明是加在事件脚本里?如果说明过长怎么办?
最后 如果有几率就好了

点评

啊啊啊。。我也不知道说明过长怎么办。。我还没研究这个问题。。你有啥经验木有啊  发表于 2012-5-24 21:38
回复 支持 反对

使用道具 举报

Lv3.寻梦者

死亡颂唱者

梦石
0
星屑
1159
在线时间
1795 小时
注册时间
2011-10-21
帖子
2245

开拓者

9
发表于 2012-5-24 17:59:09 | 只看该作者
xuzhengchi 发表于 2012-5-24 17:38
脚本无法复制是什么情况呢?

可以复制 点脚本代码右上角COPY会弹出提示信息:点此复制到剪贴板 再点击一下就复制成功了

点评

可能我这电脑出错了,没弹出提示。能否发一份我邮箱[email protected]?不胜感激~  发表于 2012-5-24 18:03
这家伙很懒,什么也没有留下
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
86 小时
注册时间
2012-3-26
帖子
28
10
发表于 2012-5-24 18:31:12 | 只看该作者
如果能不废存档就好了,期待改进!

点评

不废存档?恩?我刚开始练习写脚本,很多东西还不会呢。。  发表于 2012-5-24 21:39
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-22 06:49

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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