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

Project1

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

[已经解决] 求一个没有问题的VA物品合成脚本

[复制链接]

Lv1.梦旅人

梦石
0
星屑
50
在线时间
16 小时
注册时间
2016-7-16
帖子
18
跳转到指定楼层
1
发表于 2017-7-10 06:25:19 | 只看该作者 |只看大图 回帖奖励 |正序浏览 |阅读模式

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

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

x
在别的帖子搜索的脚本都用不起来,说是几百行几百行有问题,求一个没有问题的,谢谢!

Lv3.寻梦者

梦石
0
星屑
1345
在线时间
378 小时
注册时间
2015-6-16
帖子
571
7
发表于 2017-7-11 20:44:35 | 只看该作者
本帖最后由 300英雄 于 2017-7-11 20:53 编辑

带@符号而导致的bug,照图片那样格式改就行。
抱怨现在人自己不会去看怎么解决这个bug,别人说了图书馆。他还是不知道。结果还得去帮他解决。
还拜托什么,这样子,那别人只能完完整整帮你弄好,自己不用动手了
出bug行,@Index  = 1,一堆英文。其实@index就是正确,旁边的什么用【】里面还是URL的都是论坛bug的
全部去除完就是@index = 1才是正确行。看不懂没救。
@VIPArcher ,准备结帖。我讲的够清楚了。剩下有没有bug看他自己了。白魔脚本兼容性除了那个物品制造会bug。其他他没说还有什么物品制造的。所以应该不会bug。

Screenshot_2017-07-11-20-45-10-27.png (308.93 KB, 下载次数: 23)

Screenshot_2017-07-11-20-45-10-27.png
P1不太上了,有问题加个Q1286124843,不管是脚本还是游戏问题都可以来找我
回复 支持 1 反对 0

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1345
在线时间
378 小时
注册时间
2015-6-16
帖子
571
6
发表于 2017-7-11 20:43:29 | 只看该作者
ace论坛进去不是有张图片写着图书馆三个字,点进去就能看到。
P1不太上了,有问题加个Q1286124843,不管是脚本还是游戏问题都可以来找我
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
16 小时
注册时间
2016-7-16
帖子
18
5
 楼主| 发表于 2017-7-11 16:23:43 | 只看该作者
300英雄 发表于 2017-7-10 19:51
论坛bug,@recipe = xxxx这种格式应该是这样。你去查论坛bug怎么解决就行了,就在图书馆那里面就说怎么解决 ...

能不能给一个网页链接,我搜不到。。拜托
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1345
在线时间
378 小时
注册时间
2015-6-16
帖子
571
4
发表于 2017-7-10 19:51:44 | 只看该作者
本帖最后由 300英雄 于 2017-7-10 19:53 编辑

论坛bug,@recipe = xxxx这种格式应该是这样。你去查论坛bug怎么解决就行了,就在图书馆那里面就说怎么解决。你把上面@recipe除外的所有去除即可
P1不太上了,有问题加个Q1286124843,不管是脚本还是游戏问题都可以来找我
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
16 小时
注册时间
2016-7-16
帖子
18
3
 楼主| 发表于 2017-7-10 18:50:46 | 只看该作者
300英雄 发表于 2017-7-10 16:22
扔你一个白魔的物品合成,有没有问题是建立在你的脚本里面,你这里有不代表别人那里有 ...

这是怎么回事

QQ截图20170710184958.png (18.85 KB, 下载次数: 23)

QQ截图20170710184958.png
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1345
在线时间
378 小时
注册时间
2015-6-16
帖子
571
2
发表于 2017-7-10 16:22:39 | 只看该作者
扔你一个白魔的物品合成,有没有问题是建立在你的脚本里面,你这里有不代表别人那里有
  1. #==============================================================================
  2. # ■ RGSS3 アイテム合成 ver 1.02
  3. #------------------------------------------------------------------------------
  4. #  配布元:
  5. #     白の魔 http://izumiwhite.web.fc2.com/
  6. #
  7. #  利用規約:
  8. #     RPGツクールVX Aceの正規の登録者のみご利用になれます。
  9. #     利用報告・著作権表示とかは必要ありません。
  10. #     改造もご自由にどうぞ。
  11. #     何か問題が発生しても責任は持ちません。
  12. #==============================================================================


  13. #--------------------------------------------------------------------------
  14. # ★ 初期設定。
  15. #    合成レシピ等の設定
  16. #--------------------------------------------------------------------------
  17. module WD_itemsynthesis_ini
  18.   
  19.   Cost_view =  true #費用(G)の表示(合成の費用が全て0Gの場合はfalseを推奨)
  20.   
  21.   Category_i = true #カテゴリウィンドウに「アイテム」の項目を表示
  22.   Category_w = true #カテゴリウィンドウに「武器」の項目を表示
  23.   Category_a = true #カテゴリウィンドウに「防具」の項目を表示
  24.   Category_k = true #カテゴリウィンドウに「大事なもの」の項目を表示
  25.   
  26.   I_recipe = [] #この行は削除しないこと
  27.   W_recipe = [] #この行は削除しないこと
  28.   A_recipe = [] #この行は削除しないこと
  29.   
  30.   #以下、合成レシピ。
  31.   #例: I_recipe[3]  = [100, ["I",1,1], ["W",2,1], ["A",2,2], ["A",3,1]]
  32.   #と記載した場合、ID3のアイテムの合成必要は、100G。
  33.   #必要な素材は、ID1のアイテム1個、ID2の武器1個、ID2の防具2個、ID3の防具1個
  34.   #となる。
  35.   #I代表物品 W代表武器 A代表防具
  36.   #  [合成物品ID],[需要多少钱],[]
  37.   I_recipe[2]  = [50,  ["I",1,2]]#合成2号物品需要1号物品2个和50G金币
  38.   I_recipe[3]  = [100, ["I",1,1], ["I",2,1]]
  39.   I_recipe[8]  = [200, ["I",1,2], ["I",4,1], ["I",5,1]]
  40.   I_recipe[34]  = [400, ["I",7,2], ["I",8,2], ["I",33,3], ["I",35,3]]
  41.   I_recipe[32]  = [400, ["I",17,6], ["I",18,7], ["I",19,8]]
  42.   I_recipe[40]  = [400, ["I",7,2], ["I",8,2]]
  43.   I_recipe[41]  = [400, ["I",1,1], ["I",4,1]]
  44.   I_recipe[42]  = [500, ["I",8,2], ["I",33,5], ["I",35,5]]
  45.   I_recipe[71]  = [500, ["I",53,4], ["I",54,3], ["I",55,2]]
  46.   I_recipe[72]  = [1500, ["I",53,4], ["I",54,3], ["I",55,2]]
  47.   I_recipe[45]  = [1500, ["I",22,1], ["I",23,1], ["I",24,1], ["I",25,1], ["I",26,1], ["I",27,1], ["I",28,1], ["I",29,1]]
  48.   I_recipe[53]  = [1500, ["I",1,5], ["I",4,3]]
  49.   #米德辛合成表
  50.     I_recipe[48]  = [50, ["I",2,1], ["I",2,1], ["I",6,1]]
  51. I_recipe[86]  = [50, ["I",1,2], ["I",2,4]]
  52. I_recipe[120]  = [50, ["I",30,3], ["I",31,5]]
  53. I_recipe[119]  = [50, ["I",5,2], ["I",6,3], ["I",7,3]]
  54. I_recipe[118]  = [50, ["I",17,2], ["I",18,2], ["I",19,3]]
  55. I_recipe[114]  = [50, ["I",8,3]]





  56.   I_recipe[54]  = [600, ["I",5,2], ["I",6,3], ["I",8,1]]
  57.   I_recipe[55]  = [600, ["I",5,2], ["I",6,3], ["I",8,1]]
  58.   I_recipe[56]  = [600, ["I",55,1], ["I",54,1], ["I",53,1]]
  59.   I_recipe[156]  = [50, ["I",9,15], ["I",10,15], ["I",11,15], ["I",12,15], ["I",13,15], ["I",14,15], ["I",15,15], ["I",16,15]]
  60.   
  61.   #武器の合成レシピ
  62.   W_recipe[64]  = [500,   ["I",36,10], ["I",37,6], ["I",38,2], ["I",39,3]]
  63.   W_recipe[65]  = [200,   ["I",36,1], ["I",37,1]]
  64.   W_recipe[72]  = [2000,   ["I",70,6], ["I",72,6]]
  65.   W_recipe[73]  = [2000,   ["I",70,6], ["I",72,6]]
  66.   W_recipe[74]  = [2000,   ["I",70,6], ["I",72,6]]
  67.   W_recipe[75]  = [2000,   ["I",70,6], ["I",72,6]]
  68.   W_recipe[77]  = [2500,   ["I",36,10], ["I",83,4], ["I",80,2], ["I",34,3]]
  69.   #W_recipe[6]  = [600,  ["W",3,1], ["I",17,0]]
  70.   
  71.   #防具の合成レシピ  
  72.   A_recipe[62]  = [500,   ["I",34,20]]
  73.   A_recipe[61]  = [500,   ["I",33,5], ["I",35,5]]
  74.   A_recipe[82]  = [2000,   ["I",33,8], ["I",70,6]]
  75.   A_recipe[83]  = [2000,   ["I",71,6], ["I",70,6]]
  76.   A_recipe[86]  = [2000,   ["I",33,8], ["I",70,6], ["I",34,8]]
  77.   A_recipe[87]  = [2000,   ["I",36,8], ["I",70,6], ["I",34,8]]
  78.   A_recipe[84]  = [2000,   ["I",71,5], ["I",70,6]]
  79.   A_recipe[85]  = [2000,   ["I",33,8], ["I",70,6], ["I",34,8]]
  80.   A_recipe[88]  = [2000,   ["I",34,8], ["I",70,6], ["W",54,2]]
  81.   A_recipe[89]  = [2000,   ["I",33,8], ["I",70,6], ["I",34,8], ["I",36,8]]
  82.   A_recipe[75]  = [2200,   ["I",36,6], ["I",37,8], ["I",21,10]]
  83.   A_recipe[100]  = [1800,   ["I",79,85], ["I",53,62], ["I",54,30], ["I",55,45]]
  84.    A_recipe[101]  = [3200,   ["I",45,15], ["I",34,55], ["I",72,50]]
  85.   #A_recipe[5]  = [400,  ["A",2,1], ["W",2,2], ["I",17,0]]
  86.   
  87. end


  88. #==============================================================================
  89. # ■ WD_itemsynthesis
  90. #------------------------------------------------------------------------------
  91. #  アイテム合成用の共通メソッドです。
  92. #==============================================================================

  93. module WD_itemsynthesis
  94.   def i_recipe_switch_on(id)
  95.     $game_system.i_rcp_sw = [] if $game_system.i_rcp_sw == nil
  96.     $game_system.i_rcp_sw[id] = false if $game_system.i_rcp_sw[id] == nil
  97.     $game_system.i_rcp_sw[id] = true
  98.   end
  99.   def i_recipe_switch_off(id)
  100.     $game_system.i_rcp_sw = [] if $game_system.i_rcp_sw == nil
  101.     $game_system.i_rcp_sw[id] = false if $game_system.i_rcp_sw[id] == nil
  102.     $game_system.i_rcp_sw[id] = false
  103.   end
  104.   def i_recipe_switch_on?(id)
  105.     $game_system.i_rcp_sw = [] if $game_system.i_rcp_sw == nil
  106.     $game_system.i_rcp_sw[id] = false if $game_system.i_rcp_sw[id] == nil
  107.     return $game_system.i_rcp_sw[id]
  108.   end
  109.   def i_recipe_all_switch_on
  110.     for i in 1..$data_items.size
  111.       i_recipe_switch_on(i)
  112.     end
  113.   end
  114.   def i_recipe_all_switch_off
  115.     for i in 1..$data_items.size
  116.       i_recipe_switch_off(i)
  117.     end
  118.   end
  119.   def w_recipe_switch_on(id)
  120.     $game_system.w_rcp_sw = [] if $game_system.w_rcp_sw == nil
  121.     $game_system.w_rcp_sw[id] = false if $game_system.w_rcp_sw[id] == nil
  122.     $game_system.w_rcp_sw[id] = true
  123.   end
  124.   def w_recipe_switch_off(id)
  125.     $game_system.w_rcp_sw = [] if $game_system.w_rcp_sw == nil
  126.     $game_system.w_rcp_sw[id] = false if $game_system.w_rcp_sw[id] == nil
  127.     $game_system.w_rcp_sw[id] = false
  128.   end
  129.   def w_recipe_switch_on?(id)
  130.     $game_system.w_rcp_sw = [] if $game_system.w_rcp_sw == nil
  131.     $game_system.w_rcp_sw[id] = false if $game_system.w_rcp_sw[id] == nil
  132.     return $game_system.w_rcp_sw[id]
  133.   end
  134.   def w_recipe_all_switch_on
  135.     for i in 1..$data_weapons.size
  136.       w_recipe_switch_on(i)
  137.     end
  138.   end
  139.   def w_recipe_all_switch_off
  140.     for i in 1..$data_weapons.size
  141.       w_recipe_switch_off(i)
  142.     end
  143.   end
  144.   def a_recipe_switch_on(id)
  145.     $game_system.a_rcp_sw = [] if $game_system.a_rcp_sw == nil
  146.     $game_system.a_rcp_sw[id] = false if $game_system.a_rcp_sw[id] == nil
  147.     $game_system.a_rcp_sw[id] = true
  148.   end
  149.   def a_recipe_switch_off(id)
  150.     $game_system.a_rcp_sw = [] if $game_system.a_rcp_sw == nil
  151.     $game_system.a_rcp_sw[id] = false if $game_system.a_rcp_sw[id] == nil
  152.     $game_system.a_rcp_sw[id] = false
  153.   end
  154.   def a_recipe_switch_on?(id)
  155.     $game_system.a_rcp_sw = [] if $game_system.a_rcp_sw == nil
  156.     $game_system.a_rcp_sw[id] = false if $game_system.a_rcp_sw[id] == nil
  157.     return $game_system.a_rcp_sw[id]
  158.   end
  159.   def a_recipe_all_switch_on
  160.     for i in 1..$data_armors.size
  161.       a_recipe_switch_on(i)
  162.     end
  163.   end
  164.   def a_recipe_all_switch_off
  165.     for i in 1..$data_armors.size
  166.       a_recipe_switch_off(i)
  167.     end
  168.   end
  169.   def recipe_all_switch_on
  170.     i_recipe_all_switch_on
  171.     w_recipe_all_switch_on
  172.     a_recipe_all_switch_on
  173.   end
  174.   def recipe_all_switch_off
  175.     i_recipe_all_switch_off
  176.     w_recipe_all_switch_off
  177.     a_recipe_all_switch_off
  178.   end

  179. end

  180. class Game_Interpreter
  181.   include WD_itemsynthesis
  182. end

  183. class Game_System
  184.   #--------------------------------------------------------------------------
  185.   # ● 公開インスタンス変数
  186.   #--------------------------------------------------------------------------
  187.   attr_accessor :i_rcp_sw
  188.   attr_accessor :w_rcp_sw
  189.   attr_accessor :a_rcp_sw
  190.   #--------------------------------------------------------------------------
  191.   # ● オブジェクト初期化
  192.   #--------------------------------------------------------------------------
  193.   alias wd_orig_initialize004 initialize
  194.   def initialize
  195.     wd_orig_initialize004
  196.     @i_rcp_sw = []
  197.     @w_rcp_sw = []
  198.     @a_rcp_sw = []
  199.   end
  200. end


  201. #==============================================================================
  202. # ■ Scene_ItemSynthesis
  203. #------------------------------------------------------------------------------
  204. #  合成画面の処理を行うクラスです。
  205. #==============================================================================

  206. class Scene_ItemSynthesis < Scene_MenuBase
  207.   #--------------------------------------------------------------------------
  208.   # ● 開始処理
  209.   #--------------------------------------------------------------------------
  210.   def start
  211.     super
  212.     create_help_window
  213.     create_dummy_window
  214.     create_number_window
  215.     create_status_window
  216.     create_material_window
  217.     create_list_window
  218.     create_category_window
  219.     create_gold_window
  220.     create_change_window
  221.   end
  222.   #--------------------------------------------------------------------------
  223.   # ● ゴールドウィンドウの作成
  224.   #--------------------------------------------------------------------------
  225.   def create_gold_window
  226.     @gold_window = Window_Gold.new
  227.     @gold_window.viewport = @viewport
  228.     @gold_window.x = Graphics.width - @gold_window.width
  229.     @gold_window.y = @help_window.height
  230.     @gold_window.hide
  231.   end
  232.   #--------------------------------------------------------------------------
  233.   # ● 切り替え表示ウィンドウの作成
  234.   #--------------------------------------------------------------------------
  235.   def create_change_window
  236.     wx = 0
  237.     wy = @gold_window.y
  238.     ww = Graphics.width - @gold_window.width
  239.     wh = @gold_window.height
  240.     @change_window = Window_ItemSynthesisChange.new(wx, wy, ww, wh)
  241.     @change_window.viewport = @viewport
  242.     @change_window.hide
  243.   end
  244.   #--------------------------------------------------------------------------
  245.   # ● ダミーウィンドウの作成
  246.   #--------------------------------------------------------------------------
  247.   def create_dummy_window
  248.     wy = @help_window.y + @help_window.height + 48
  249.     wh = Graphics.height - wy
  250.     @dummy_window = Window_Base.new(0, wy, Graphics.width, wh)
  251.     @dummy_window.viewport = @viewport
  252.   end
  253.   #--------------------------------------------------------------------------
  254.   # ● 個数入力ウィンドウの作成
  255.   #--------------------------------------------------------------------------
  256.   def create_number_window
  257.     wy = @dummy_window.y
  258.     wh = @dummy_window.height
  259.     @number_window = Window_ItemSynthesisNumber.new(0, wy, wh)
  260.     @number_window.viewport = @viewport
  261.     @number_window.hide
  262.     @number_window.set_handler(:ok,     method(:on_number_ok))
  263.     @number_window.set_handler(:cancel, method(:on_number_cancel))
  264.   end
  265.   #--------------------------------------------------------------------------
  266.   # ● ステータスウィンドウの作成
  267.   #--------------------------------------------------------------------------
  268.   def create_status_window
  269.     wx = @number_window.width
  270.     wy = @dummy_window.y
  271.     ww = Graphics.width - wx
  272.     wh = @dummy_window.height
  273.     @status_window = Window_ShopStatus.new(wx, wy, ww, wh)
  274.     @status_window.viewport = @viewport
  275.     @status_window.hide
  276.   end
  277.   #--------------------------------------------------------------------------
  278.   # ● 素材ウィンドウの作成
  279.   #--------------------------------------------------------------------------
  280.   def create_material_window
  281.     wx = @number_window.width
  282.     wy = @dummy_window.y
  283.     ww = Graphics.width - wx
  284.     wh = @dummy_window.height
  285.     @material_window = Window_ItemSynthesisMaterial.new(wx, wy, ww, wh)
  286.     @material_window.viewport = @viewport
  287.     @material_window.hide
  288.     @number_window.material_window = @material_window
  289.   end
  290.   #--------------------------------------------------------------------------
  291.   # ● 合成アイテムリストウィンドウの作成
  292.   #--------------------------------------------------------------------------
  293.   def create_list_window
  294.     wy = @dummy_window.y
  295.     wh = @dummy_window.height
  296.     @list_window = Window_ItemSynthesisList.new(0, wy, wh)
  297.     @list_window.viewport = @viewport
  298.     @list_window.help_window = @help_window
  299.     @list_window.status_window = @status_window
  300.     @list_window.material_window = @material_window
  301.     @list_window.hide
  302.     @list_window.set_handler(:ok,     method(:on_list_ok))
  303.     @list_window.set_handler(:cancel, method(:on_list_cancel))
  304.     @list_window.set_handler(:change_window, method(:on_change_window))   
  305.   end
  306.   #--------------------------------------------------------------------------
  307.   # ● カテゴリウィンドウの作成
  308.   #--------------------------------------------------------------------------
  309.   def create_category_window
  310.     @category_window = Window_ItemSynthesisCategory.new
  311.     @category_window.viewport = @viewport
  312.     @category_window.help_window = @help_window
  313.     @category_window.y = @help_window.height
  314.     @category_window.activate
  315.     @category_window.item_window = @list_window
  316.     @category_window.set_handler(:ok,     method(:on_category_ok))
  317.     @category_window.set_handler(:cancel, method(:return_scene))
  318.   end
  319.   #--------------------------------------------------------------------------
  320.   # ● 合成アイテムリストウィンドウのアクティブ化
  321.   #--------------------------------------------------------------------------
  322.   def activate_list_window
  323.     @list_window.money = money
  324.     @list_window.show.activate
  325.   end
  326.   #--------------------------------------------------------------------------
  327.   # ● 合成[決定]
  328.   #--------------------------------------------------------------------------
  329.   def on_list_ok
  330.     @item = @list_window.item
  331.     @list_window.hide
  332.     @number_window.set(@item, max_buy, buying_price, currency_unit)
  333.     @number_window.show.activate
  334.   end
  335.   #--------------------------------------------------------------------------
  336.   # ● 合成[キャンセル]
  337.   #--------------------------------------------------------------------------
  338.   def on_list_cancel
  339.     @category_window.activate
  340.     @category_window.show
  341.     @dummy_window.show
  342.     @list_window.hide
  343.     @status_window.hide
  344.     @status_window.item = nil
  345.     @material_window.hide
  346.     @material_window.set(nil, nil)
  347.     @gold_window.hide
  348.     @change_window.hide
  349.     @help_window.clear
  350.   end
  351.   #--------------------------------------------------------------------------
  352.   # ● 表示切替
  353.   #--------------------------------------------------------------------------
  354.   def on_change_window
  355.     if @status_window.visible
  356.       @status_window.hide
  357.       @material_window.show
  358.     else
  359.       @status_window.show
  360.       @material_window.hide
  361.     end
  362.   end
  363.   #--------------------------------------------------------------------------
  364.   # ● カテゴリ[決定]
  365.   #--------------------------------------------------------------------------
  366.   def on_category_ok
  367.     activate_list_window
  368.     @gold_window.show
  369.     @change_window.show
  370.     @material_window.show
  371.     @category_window.hide
  372.     @list_window.select(0)
  373.   end
  374.   #--------------------------------------------------------------------------
  375.   # ● 個数入力[決定]
  376.   #--------------------------------------------------------------------------
  377.   def on_number_ok
  378.     Sound.play_shop
  379.     do_syntetic(@number_window.number)
  380.     end_number_input
  381.     @gold_window.refresh
  382.   end
  383.   #--------------------------------------------------------------------------
  384.   # ● 個数入力[キャンセル]
  385.   #--------------------------------------------------------------------------
  386.   def on_number_cancel
  387.     Sound.play_cancel
  388.     end_number_input
  389.   end
  390.   #--------------------------------------------------------------------------
  391.   # ● 合成の実行
  392.   #--------------------------------------------------------------------------
  393.   def do_syntetic(number)
  394.     $game_party.lose_gold(number * buying_price)
  395.     $game_party.gain_item(@item, number)
  396.    
  397.       [url=home.php?mod=space&uid=2564094]@recipe[/url] = @list_window.recipe(@item)
  398.       for i in [email protected]
  399.         kind = @recipe[i][0]
  400.         id   = @recipe[i][1]
  401.         num  = @recipe[i][2]
  402.         if kind == "I"
  403.           item = $data_items[id]
  404.         elsif kind == "W"
  405.           item = $data_weapons[id]
  406.         elsif kind == "A"
  407.           item = $data_armors[id]
  408.         end
  409.         $game_party.lose_item(item, num*number)
  410.       end
  411.   end
  412.   #--------------------------------------------------------------------------
  413.   # ● 個数入力の終了
  414.   #--------------------------------------------------------------------------
  415.   def end_number_input
  416.     @number_window.hide
  417.     activate_list_window
  418.   end
  419.   #--------------------------------------------------------------------------
  420.   # ● 最大購入可能個数の取得
  421.   #--------------------------------------------------------------------------
  422.   def max_buy
  423.     max = $game_party.max_item_number(@item) - $game_party.item_number(@item)
  424.    
  425.     @recipe = @list_window.recipe(@item)
  426.       for i in [email protected]
  427.         kind = @recipe[i][0]
  428.         id   = @recipe[i][1]
  429.         num  = @recipe[i][2]
  430.         if kind == "I"
  431.           item = $data_items[id]
  432.         elsif kind == "W"
  433.           item = $data_weapons[id]
  434.         elsif kind == "A"
  435.           item = $data_armors[id]
  436.         end
  437.         if num > 0
  438.           max_buf = $game_party.item_number(item)/num
  439.         else
  440.           max_buf = 999
  441.         end
  442.         max = [max, max_buf].min
  443.       end
  444.       
  445.     buying_price == 0 ? max : [max, money / buying_price].min

  446.   end
  447.   #--------------------------------------------------------------------------
  448.   # ● 所持金の取得
  449.   #--------------------------------------------------------------------------
  450.   def money
  451.     @gold_window.value
  452.   end
  453.   #--------------------------------------------------------------------------
  454.   # ● 通貨単位の取得
  455.   #--------------------------------------------------------------------------
  456.   def currency_unit
  457.     @gold_window.currency_unit
  458.   end
  459.   #--------------------------------------------------------------------------
  460.   # ● 合成費用の取得
  461.   #--------------------------------------------------------------------------
  462.   def buying_price
  463.     @list_window.price(@item)
  464.   end
  465. end


  466. #==============================================================================
  467. # ■ Window_ItemSynthesisList
  468. #------------------------------------------------------------------------------
  469. #  合成画面で、合成可能なアイテムの一覧を表示するウィンドウです。
  470. #==============================================================================

  471. class Window_ItemSynthesisList < Window_Selectable
  472.   include WD_itemsynthesis
  473.   #--------------------------------------------------------------------------
  474.   # ● 公開インスタンス変数
  475.   #--------------------------------------------------------------------------
  476.   attr_reader   :status_window            # ステータスウィンドウ
  477.   #--------------------------------------------------------------------------
  478.   # ● オブジェクト初期化
  479.   #--------------------------------------------------------------------------
  480.   def initialize(x, y, height)
  481.     super(x, y, window_width, height)
  482.    
  483.     @shop_goods = []
  484.     @shop_recipes = []
  485.    
  486.     for i in 1..WD_itemsynthesis_ini::I_recipe.size
  487.       recipe = WD_itemsynthesis_ini::I_recipe[i]
  488.       if recipe
  489.         good = [0, i, recipe[0]]
  490.         if i_recipe_switch_on?(i)
  491.           @shop_goods.push(good)
  492.           @shop_recipes.push(recipe)
  493.         end
  494.       end
  495.     end
  496.     for i in 1..WD_itemsynthesis_ini::W_recipe.size
  497.       recipe = WD_itemsynthesis_ini::W_recipe[i]
  498.       if recipe
  499.         good = [1, i, recipe[0]]
  500.         if w_recipe_switch_on?(i)
  501.           @shop_goods.push(good)
  502.           @shop_recipes.push(recipe)
  503.         end
  504.       end
  505.     end
  506.     for i in 1..WD_itemsynthesis_ini::A_recipe.size
  507.       recipe = WD_itemsynthesis_ini::A_recipe[i]
  508.       if recipe
  509.         good = [2, i, recipe[0]]
  510.         if a_recipe_switch_on?(i)
  511.           @shop_goods.push(good)
  512.           @shop_recipes.push(recipe)
  513.         end
  514.       end
  515.     end
  516.    
  517.     [url=home.php?mod=space&uid=26101]@Money[/url] = 0
  518.     refresh
  519.     select(0)
  520.   end
  521.   #--------------------------------------------------------------------------
  522.   # ● ウィンドウ幅の取得
  523.   #--------------------------------------------------------------------------
  524.   def window_width
  525.     return 304
  526.   end
  527.   #--------------------------------------------------------------------------
  528.   # ● 項目数の取得
  529.   #--------------------------------------------------------------------------
  530.   def item_max
  531.     @data ? @data.size : 1
  532.   end
  533.   #--------------------------------------------------------------------------
  534.   # ● アイテムの取得
  535.   #--------------------------------------------------------------------------
  536.   def item
  537.     @data[index]
  538.   end
  539.   #--------------------------------------------------------------------------
  540.   # ● 所持金の設定
  541.   #--------------------------------------------------------------------------
  542.   def money=(money)
  543.     @money = money
  544.     refresh
  545.   end
  546.   #--------------------------------------------------------------------------
  547.   # ● 選択項目の有効状態を取得
  548.   #--------------------------------------------------------------------------
  549.   def current_item_enabled?
  550.     enable?(@data[index])
  551.   end
  552.   #--------------------------------------------------------------------------
  553.   # ● 合成費用を取得
  554.   #--------------------------------------------------------------------------
  555.   def price(item)
  556.     @price[item]
  557.   end
  558.   #--------------------------------------------------------------------------
  559.   # ● 合成可否を取得
  560.   #--------------------------------------------------------------------------
  561.   def enable?(item)
  562.     @makable[item]
  563.   end
  564.   #--------------------------------------------------------------------------
  565.   # ● レシピを取得
  566.   #--------------------------------------------------------------------------
  567.   def recipe(item)
  568.     @recipe[item]
  569.   end
  570.   #--------------------------------------------------------------------------
  571.   # ● アイテムを許可状態で表示するかどうか
  572.   #--------------------------------------------------------------------------
  573.   def have_mat?(recipe)
  574.     flag = true
  575.     if @money >= recipe[0]
  576.       for i in 1...recipe.size
  577.         kind = recipe[i][0]
  578.         id   = recipe[i][1]
  579.         num  = recipe[i][2]
  580.         if kind == "I"
  581.           item = $data_items[id]
  582.         elsif kind == "W"
  583.           item = $data_weapons[id]
  584.         elsif kind == "A"
  585.           item = $data_armors[id]
  586.         end
  587.         if $game_party.item_number(item) < [num, 1].max
  588.           flag = false
  589.         end
  590.       end
  591.     else
  592.       flag = false
  593.     end
  594.     return flag
  595.   end
  596.   #--------------------------------------------------------------------------
  597.   # ● カテゴリの設定
  598.   #--------------------------------------------------------------------------
  599.   def category=(category)
  600.     return if @category == category
  601.     @category = category
  602.     refresh
  603.   end
  604.   #--------------------------------------------------------------------------
  605.   # ● リフレッシュ
  606.   #--------------------------------------------------------------------------
  607.   def refresh
  608.     make_item_list
  609.     create_contents
  610.     draw_all_items
  611.   end
  612.   #--------------------------------------------------------------------------
  613.   # ● アイテムをリストに含めるかどうか
  614.   #--------------------------------------------------------------------------
  615.   def include?(item)
  616.     case @category
  617.     when :item
  618.       item.is_a?(RPG::Item) && !item.key_item?
  619.     when :weapon
  620.       item.is_a?(RPG::Weapon)
  621.     when :armor
  622.       item.is_a?(RPG::Armor)
  623.     when :key_item
  624.       item.is_a?(RPG::Item) && item.key_item?
  625.     else
  626.       false
  627.     end
  628.   end
  629.   #--------------------------------------------------------------------------
  630.   # ● アイテムリストの作成
  631.   #--------------------------------------------------------------------------
  632.   def make_item_list
  633.     @data = []
  634.     @price = {}
  635.     @makable = {}
  636.     @recipe = {}
  637.     for i in 0...@shop_goods.size
  638.       goods = @shop_goods[i]
  639.       recipe = @shop_recipes[i]
  640.       case goods[0]
  641.       when 0;  item = $data_items[goods[1]]
  642.       when 1;  item = $data_weapons[goods[1]]
  643.       when 2;  item = $data_armors[goods[1]]
  644.       end
  645.       if item
  646.         if include?(item)
  647.           @data.push(item)
  648.           @price[item] = goods[2]
  649.           @makable[item] = have_mat?(recipe)
  650.           @recipe[item] = recipe
  651.         end
  652.       end
  653.     end
  654.   end
  655.   #--------------------------------------------------------------------------
  656.   # ● 項目の描画
  657.   #--------------------------------------------------------------------------
  658.   def draw_item(index)
  659.     item = @data[index]
  660.     rect = item_rect(index)
  661.     draw_item_name(item, rect.x, rect.y, enable?(item))
  662.     rect.width -= 4
  663.     draw_text(rect, price(item), 2)  if WD_itemsynthesis_ini::Cost_view
  664.   end
  665.   #--------------------------------------------------------------------------
  666.   # ● ステータスウィンドウの設定
  667.   #--------------------------------------------------------------------------
  668.   def status_window=(status_window)
  669.     @status_window = status_window
  670.     call_update_help
  671.   end
  672.   #--------------------------------------------------------------------------
  673.   # ● 素材ウィンドウの設定
  674.   #--------------------------------------------------------------------------
  675.   def material_window=(material_window)
  676.     @material_window = material_window
  677.     call_update_help
  678.   end
  679.   #--------------------------------------------------------------------------
  680.   # ● ヘルプテキスト更新
  681.   #--------------------------------------------------------------------------
  682.   def update_help
  683.     @help_window.set_item(item) if @help_window
  684.     @status_window.item = item if @status_window
  685.     @material_window.set(item, recipe(item)) if @material_window
  686.   end
  687.   #--------------------------------------------------------------------------
  688.   # ● ←→ ボタン(表示切替)が押されたときの処理
  689.   #--------------------------------------------------------------------------
  690.   def process_change_window
  691.     Sound.play_cursor
  692.     Input.update
  693.     call_handler(:change_window)
  694.   end
  695.   #--------------------------------------------------------------------------
  696.   # ● 決定やキャンセルなどのハンドリング処理
  697.   #--------------------------------------------------------------------------
  698.   def process_handling
  699.     super
  700.     if active
  701.       return process_change_window if handle?(:change_window) && Input.trigger?(:X)
  702.       return process_change_window if handle?(:change_window) && Input.trigger?(:Y)
  703.     end
  704.   end
  705. end


  706. #==============================================================================
  707. # ■ Window_ItemSynthesisMaterial
  708. #------------------------------------------------------------------------------
  709. #  合成画面で、合成に必要な素材を表示するウィンドウです。
  710. #==============================================================================

  711. class Window_ItemSynthesisMaterial < Window_Base
  712.   #--------------------------------------------------------------------------
  713.   # ● オブジェクト初期化
  714.   #--------------------------------------------------------------------------
  715.   def initialize(x, y, width, height)
  716.     super(x, y, width, height)
  717.     @item = nil
  718.     refresh
  719.   end
  720.   #--------------------------------------------------------------------------
  721.   # ● リフレッシュ
  722.   #--------------------------------------------------------------------------
  723.   def refresh
  724.     contents.clear
  725.     draw_possession(4, 0)
  726.     draw_material_info(0, line_height * 2)
  727.   end
  728.   #--------------------------------------------------------------------------
  729.   # ● アイテムの設定
  730.   #--------------------------------------------------------------------------
  731.   def set(item, recipe)
  732.     @item = item
  733.     @recipe = recipe
  734.     @make_number = 1
  735.     refresh
  736.   end
  737.   #--------------------------------------------------------------------------
  738.   # ● 作成個数の設定
  739.   #--------------------------------------------------------------------------
  740.   def set_num(make_number)
  741.     @make_number = make_number
  742.     refresh
  743.   end
  744.   #--------------------------------------------------------------------------
  745.   # ● 所持数の描画
  746.   #--------------------------------------------------------------------------
  747.   def draw_possession(x, y)
  748.     rect = Rect.new(x, y, contents.width - 4 - x, line_height + 20)
  749.     change_color(system_color)
  750.     draw_text(rect, Vocab::Possession)
  751.     change_color(normal_color)
  752.     draw_text(rect, $game_party.item_number(@item), 2)
  753.   end
  754.   #--------------------------------------------------------------------------
  755.   # ● 素材情報の描画
  756.   #--------------------------------------------------------------------------
  757.   def draw_material_info(x, y)
  758.     rect = Rect.new(x, y, contents.width, line_height)
  759.     change_color(system_color)
  760.     contents.font.size = 18
  761.     draw_text(rect, "必要素材", 0)
  762.     if @recipe
  763.       for i in [email protected]
  764.         kind = @recipe[i][0]
  765.         id   = @recipe[i][1]
  766.         num  = @recipe[i][2]
  767.         if kind == "I"
  768.           item = $data_items[id]
  769.         elsif kind == "W"
  770.           item = $data_weapons[id]
  771.         elsif kind == "A"
  772.           item = $data_armors[id]
  773.         end
  774.         rect = Rect.new(x, y + line_height*i, contents.width, line_height)
  775.         enabled = true
  776.         enabled = false if [num*@make_number, 1].max  > $game_party.item_number(item)
  777.         draw_item_name(item, rect.x, rect.y, enabled)
  778.         change_color(normal_color, enabled)
  779.         if num > 0
  780.           draw_text(rect, "#{num*@make_number}/#{$game_party.item_number(item)}", 2)
  781.         end
  782.       end
  783.     end
  784.     change_color(normal_color)
  785.     contents.font.size = 24
  786.   end
  787. end


  788. #==============================================================================
  789. # ■ Window_ItemSynthesisNumber
  790. #------------------------------------------------------------------------------
  791. #  合成画面で、合成するアイテムの個数を入力するウィンドウです。
  792. #==============================================================================

  793. class Window_ItemSynthesisNumber < Window_ShopNumber
  794.   #--------------------------------------------------------------------------
  795.   # ● リフレッシュ
  796.   #--------------------------------------------------------------------------
  797.   def refresh
  798.     contents.clear
  799.     draw_item_name(@item, 0, item_y)
  800.     draw_number
  801.     draw_total_price if WD_itemsynthesis_ini::Cost_view
  802.   end
  803.   #--------------------------------------------------------------------------
  804.   # ● オブジェクト初期化
  805.   #--------------------------------------------------------------------------
  806.   def material_window=(material_window)
  807.     @material_window = material_window
  808.     call_update_help
  809.   end
  810.   #--------------------------------------------------------------------------
  811.   # ● 作成個数の変更
  812.   #--------------------------------------------------------------------------
  813.   def change_number(amount)
  814.     @number = [[@number + amount, @max].min, 1].max
  815.     call_update_help #追加
  816.   end
  817.   #--------------------------------------------------------------------------
  818.   # ● ヘルプテキスト更新
  819.   #--------------------------------------------------------------------------
  820.   def call_update_help
  821.     @material_window.set_num(@number) if @material_window
  822.   end
  823. end


  824. #==============================================================================
  825. # ■ Window_ItemSynthesisCategory
  826. #------------------------------------------------------------------------------
  827. #  合成画面で、通常アイテムや装備品の分類を選択するウィンドウです。
  828. #==============================================================================

  829. class Window_ItemSynthesisCategory < Window_ItemCategory
  830.   #--------------------------------------------------------------------------
  831.   # ● 桁数の取得
  832.   #--------------------------------------------------------------------------
  833.   def col_max
  834.     i = 0
  835.     i += 1 if WD_itemsynthesis_ini::Category_i
  836.     i += 1 if WD_itemsynthesis_ini::Category_w
  837.     i += 1 if WD_itemsynthesis_ini::Category_a
  838.     i += 1 if WD_itemsynthesis_ini::Category_k
  839.     return i
  840.   end
  841.   #--------------------------------------------------------------------------
  842.   # ● コマンドリストの作成
  843.   #--------------------------------------------------------------------------
  844.   def make_command_list
  845.     add_command(Vocab::item,     :item)     if WD_itemsynthesis_ini::Category_i
  846.     add_command(Vocab::weapon,   :weapon)   if WD_itemsynthesis_ini::Category_w
  847.     add_command(Vocab::armor,    :armor)    if WD_itemsynthesis_ini::Category_a
  848.     add_command(Vocab::key_item, :key_item) if WD_itemsynthesis_ini::Category_k
  849.   end
  850. end


  851. #==============================================================================
  852. # ■ Window_ItemSynthesisNumber
  853. #------------------------------------------------------------------------------
  854. #  合成画面で、切替を表示するウィンドウです。
  855. #==============================================================================

  856. class Window_ItemSynthesisChange < Window_Base
  857.   #--------------------------------------------------------------------------
  858.   # ● オブジェクト初期化
  859.   #--------------------------------------------------------------------------
  860.   def initialize(x, y, width, height)
  861.     super(x, y, width, height)
  862.     refresh
  863.   end
  864.   #--------------------------------------------------------------------------
  865.   # ● リフレッシュ
  866.   #--------------------------------------------------------------------------
  867.   def refresh
  868.     contents.clear
  869.     text = "X Y:表示切り替え"
  870.     draw_text(0, 0, contents_width, line_height, text, 1)
  871.   end
  872. end
复制代码

评分

参与人数 1星屑 +150 收起 理由
RaidenInfinity + 150 版主认可的答案

查看全部评分

P1不太上了,有问题加个Q1286124843,不管是脚本还是游戏问题都可以来找我
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-17 12:42

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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