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

Project1

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

[已经解决] 从物品仓库系统中增减某物品?

[复制链接]

Lv1.梦旅人

梦石
0
星屑
80
在线时间
216 小时
注册时间
2011-9-17
帖子
151
跳转到指定楼层
1
发表于 2015-12-7 20:45:34 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
本帖最后由 工藤~新一じ 于 2015-12-7 20:48 编辑

如题,楼主使用下面这个仓库系统,楼主想问,可不可以用一句脚本:减少仓库中某物品个数。
为什么会有这样的想法呢,如果使用了仓库脚本,而主线剧情又“必须”把主角某个物品减少。(不要让我设置主角携带此物品才触发剧情,如果可以选择这样,我就不会过来问啦)(更不要问我为什么不可以
既然说到把主角某物品减少,那假如物品存在仓库怎么办?
所以就有了这个问题。求解决!
  1. #==============================================================================
  2. # 本脚本来自www.66rpg.com,转载和使用请保留此信息
  3. # ikki,根据柳柳真实商店改编。存东西收费1元,取东西不收费。
  4. #==============================================================================
  5. #
  6. # 调用:$scene = Scene_Shop_Va.new(1)  
  7. #
  8. #==============================================================================
  9. # ■ Scene_Shop
  10. #------------------------------------------------------------------------------
  11. #  处理商店画面的类。
  12. #==============================================================================
  13. class Game_System
  14. attr_accessor :goods   
  15. alias vaule_shop_66RPG_initialize initialize
  16. def initialize
  17.    vaule_shop_66RPG_initialize
  18.    @goods = []
  19. ###########################################################################
  20.    # 初期的时候的商店物品,编号顺序:种类,ID,可卖数量
  21.    @goods[1] = [[-1,-1,-1]]  
  22. ###########################################################################
  23. end
  24. def shop_change(shop,kind,id,delnumber)
  25.    dl = delnumber
  26.    for dt in $game_system.goods[shop]
  27.      if (dt[0]==kind) and (dt[1]==id)
  28.        dt[2] -= dl
  29.        dt[2] = [dt[2],99].min
  30.        if dt[2] == 0
  31.          $game_system.goods[shop].delete(dt)
  32.        end
  33.        return
  34.      end
  35.    end
  36.    $game_system.goods[shop].push([kind,id,-delnumber])
  37. end
  38. end

  39. class Scene_Shop_Va
  40. def initialize(shop_number)
  41.    # 当前商店编号
  42.    @shop_now = shop_number     
  43. end   
  44. #--------------------------------------------------------------------------
  45. # ● 主处理
  46. #--------------------------------------------------------------------------
  47. def main
  48.    @spriteset = Spriteset_Map.new
  49.    # 生成帮助窗口
  50.    @help_window = Window_Help.new
  51.    # 生成指令窗口
  52.    @command_window = Window_ShopCommand_Va.new
  53.    # 生成金钱窗口
  54.    @gold_window = Window_Gold.new
  55.    @gold_window.x = 480
  56.    @gold_window.y = 64
  57.    # 生成时间窗口
  58.    @dummy_window = Window_Base.new(0, 128, 640, 352)
  59.    # 生成购买窗口
  60.    @buy_window = Window_ShopBuy_Va.new($game_system.goods[@shop_now])
  61.    @buy_window.active = false
  62.    @buy_window.visible = false
  63.    @buy_window.help_window = @help_window
  64.    # 生成卖出窗口
  65.    @sell_window = Window_ShopSell_Va.new
  66.    @sell_window.active = false
  67.    @sell_window.visible = false
  68.    @sell_window.help_window = @help_window
  69.    # 生成数量输入窗口
  70.    @number_window = Window_ShopNumber_Va.new
  71.    @number_window.active = false
  72.    @number_window.visible = false
  73.    # 生成状态窗口
  74.    @status_window = Window_ShopStatus_Va.new
  75.    @status_window.visible = false
  76.    # 执行过渡
  77.    Graphics.transition
  78.    # 主循环
  79.    loop do
  80.      # 刷新游戏画面
  81.      Graphics.update
  82.      # 刷新输入信息
  83.      Input.update
  84.      # 刷新画面
  85.      update
  86.      # 如果画面切换的话就中断循环
  87.      if $scene != self
  88.        break
  89.      end
  90.    end
  91.    # 准备过渡
  92.    Graphics.freeze
  93.    # 释放窗口
  94.    @spriteset.dispose
  95.    @help_window.dispose
  96.    @command_window.dispose
  97.    @gold_window.dispose
  98.    @dummy_window.dispose
  99.    @buy_window.dispose
  100.    @sell_window.dispose
  101.    @number_window.dispose
  102.    @status_window.dispose
  103. end
  104. #--------------------------------------------------------------------------
  105. # ● 刷新画面
  106. #--------------------------------------------------------------------------
  107. def update
  108.    # 刷新窗口
  109.    @help_window.update
  110.    @command_window.update
  111.    @gold_window.update
  112.    @dummy_window.update
  113.    @buy_window.update
  114.    @sell_window.update
  115.    @number_window.update
  116.    @status_window.update
  117.    # 指令窗口激活的情况下: 调用 update_command
  118.    if @command_window.active
  119.      update_command
  120.      return
  121.    end
  122.    # 购买窗口激活的情况下: 调用 update_buy
  123.    if @buy_window.active
  124.      update_buy
  125.      return
  126.    end
  127.    # 卖出窗口激活的情况下: 调用 update_sell
  128.    if @sell_window.active
  129.      update_sell
  130.      return
  131.    end
  132.    # 个数输入窗口激活的情况下: 调用 update_number
  133.    if @number_window.active
  134.      update_number
  135.      return
  136.    end
  137. end
  138. #--------------------------------------------------------------------------
  139. # ● 刷新画面 (指令窗口激活的情况下)
  140. #--------------------------------------------------------------------------
  141. def update_command
  142.    # 按下 B 键的情况下
  143.    if Input.trigger?(Input::B)
  144.      # 演奏取消 SE
  145.      $game_system.se_play($data_system.cancel_se)
  146.      # 切换到地图画面
  147.      $scene = Scene_Map.new
  148.      return
  149.    end
  150.    # 按下 C 键的情况下
  151.    if Input.trigger?(Input::C)
  152.      # 命令窗口光标位置分支
  153.      case @command_window.index
  154.      when 0  # 购买
  155.        # 演奏确定 SE
  156.        $game_system.se_play($data_system.decision_se)
  157.        # 窗口状态转向购买模式
  158.        @command_window.active = false
  159.        @dummy_window.visible = false
  160.        @buy_window.active = true
  161.        @buy_window.visible = true
  162.        @buy_window.refresh
  163.        @status_window.visible = true
  164.      when 1  # 卖出
  165.        # 演奏确定 SE
  166.        $game_system.se_play($data_system.decision_se)
  167.        # 窗口状态转向卖出模式
  168.        @command_window.active = false
  169.        @dummy_window.visible = false
  170.        @sell_window.active = true
  171.        @sell_window.visible = true
  172.        @sell_window.refresh
  173.      when 2  # 取消
  174.        # 演奏确定 SE
  175.        $game_system.se_play($data_system.decision_se)
  176.        # 切换到地图画面
  177.        $scene = Scene_Map.new
  178.      end
  179.      return
  180.    end
  181. end
  182. #--------------------------------------------------------------------------
  183. # ● 刷新画面 (购买窗口激活的情况下)
  184. #--------------------------------------------------------------------------
  185. def update_buy
  186.    # 设置状态窗口的物品
  187.    @status_window.item = @buy_window.item
  188.    # 按下 B 键的情况下
  189.    if Input.trigger?(Input::B)
  190.      # 演奏取消 SE
  191.      $game_system.se_play($data_system.cancel_se)
  192.      # 窗口状态转向初期模式
  193.      @command_window.active = true
  194.      @dummy_window.visible = true
  195.      @buy_window.active = false
  196.      @buy_window.visible = false
  197.      @status_window.visible = false
  198.      @status_window.item = nil
  199.      # 删除帮助文本
  200.      @help_window.set_text("")
  201.      return
  202.    end
  203.    # 按下 C 键的情况下
  204.    if Input.trigger?(Input::C)
  205.      # 获取物品
  206.      @item = @buy_window.item
  207.      # 物品无效的情况下、或者价格在所持金以上的情况下
  208.      if @item == nil# or @item.price > $game_party.gold
  209.        # 演奏冻结 SE
  210.        $game_system.se_play($data_system.buzzer_se)
  211.        return
  212.      end
  213.      # 获取物品所持数
  214.      case @item
  215.      when RPG::Item
  216.        number = $game_party.item_number(@item.id)
  217.      when RPG::Weapon
  218.        number = $game_party.weapon_number(@item.id)
  219.      when RPG::Armor
  220.        number = $game_party.armor_number(@item.id)
  221.      end
  222.      # 如果已经拥有了 99 个情况下
  223.      if number == 99
  224.        # 演奏冻结 SE
  225.        $game_system.se_play($data_system.buzzer_se)
  226.        return
  227.      end
  228.      # 演奏确定 SE
  229.      $game_system.se_play($data_system.decision_se)
  230.      # 计算可以最多购买的数量
  231.      max = @item.price == 0 ? 99 : $game_party.gold / @item.price
  232.      max = [[max, 99 - number].min,@buy_window.item_number].min
  233.      # 窗口状态转向数值输入模式
  234.      @buy_window.active = false
  235.      @buy_window.visible = false
  236.      @number_window.set(@item, max, @item.price)
  237.      @number_window.active = true
  238.      @number_window.visible = true
  239.    end
  240. end
  241. #--------------------------------------------------------------------------
  242. # ● 画面更新 (卖出窗口激活的情况下)
  243. #--------------------------------------------------------------------------
  244. def update_sell
  245.    # 按下 B 键的情况下
  246.    if Input.trigger?(Input::B)
  247.      # 演奏取消 SE
  248.      $game_system.se_play($data_system.cancel_se)
  249.      # 窗口状态转向初期模式
  250.      @command_window.active = true
  251.      @dummy_window.visible = true
  252.      @sell_window.active = false
  253.      @sell_window.visible = false
  254.      @status_window.item = nil
  255.      # 删除帮助文本
  256.      @help_window.set_text("")
  257.      return
  258.    end
  259.    # 按下 C 键的情况下
  260.    if Input.trigger?(Input::C)
  261.      # 获取物品
  262.      @item = @sell_window.item
  263.      # 物品无效的情况下、或者价格为 0 (不能卖出) 的情况下
  264.      if @item == nil# or @item.price == 0
  265.        # 演奏冻结 SE
  266.        $game_system.se_play($data_system.buzzer_se)
  267.        return
  268.      end
  269.      
  270.      
  271.      # 如果金钱为 0 G情况下
  272.      if $game_party.gold == 0
  273.        # 演奏冻结 SE
  274.        $game_system.se_play($data_system.buzzer_se)
  275.        $game_temp.message_text = "没钱了,请续费."
  276.        # 切换到地图画面
  277.        $scene = Scene_Map.new
  278.        return
  279.      end
  280.      
  281.      
  282.      # 演奏确定 SE
  283.      $game_system.se_play($data_system.decision_se)
  284.      # 获取物品的所持数
  285.      case @item
  286.      when RPG::Item
  287.        number = $game_party.item_number(@item.id)
  288.      when RPG::Weapon
  289.        number = $game_party.weapon_number(@item.id)
  290.      when RPG::Armor
  291.        number = $game_party.armor_number(@item.id)
  292.      end
  293.      # 最大卖出个数 = 物品的所持数
  294.      max = number
  295.      # 窗口状态转向个数输入模式
  296.      @sell_window.active = false
  297.      @sell_window.visible = false
  298.      @number_window.set(@item, max, @item.price / 2)
  299.      @number_window.active = true
  300.      @number_window.visible = true
  301.      @status_window.visible = true
  302.    end
  303. end
  304. #--------------------------------------------------------------------------
  305. # ● 刷新画面 (个数输入窗口激活的情况下)
  306. #--------------------------------------------------------------------------
  307. def update_number
  308.    # 按下 B 键的情况下
  309.    if Input.trigger?(Input::B)
  310.      # 演奏取消 SE
  311.      $game_system.se_play($data_system.cancel_se)
  312.      # 设置个数输入窗口为不活动·非可视状态
  313.      @number_window.active = false
  314.      @number_window.visible = false
  315.      # 命令窗口光标位置分支
  316.      case @command_window.index
  317.      when 0  # 购买
  318.        # 窗口状态转向购买模式
  319.        @buy_window.active = true
  320.        @buy_window.visible = true
  321.      when 1  # 卖出
  322.        # 窗口状态转向卖出模式
  323.        @sell_window.active = true
  324.        @sell_window.visible = true
  325.        @status_window.visible = false
  326.      end
  327.      return
  328.    end
  329.    # 按下 C 键的情况下
  330.    if Input.trigger?(Input::C)
  331.      # 演奏商店 SE
  332.      $game_system.se_play($data_system.shop_se)
  333.      # 设置个数输入窗口为不活动·非可视状态
  334.      @number_window.active = false
  335.      @number_window.visible = false
  336.      # 命令窗口光标位置分支
  337.      case @command_window.index
  338.      when 0  # 购买
  339.        # 购买处理
  340.        temp = 0
  341.        case @item
  342.        when RPG::Item
  343.          $game_party.gain_item(@item.id, @number_window.number)
  344.        when RPG::Weapon
  345.          $game_party.gain_weapon(@item.id, @number_window.number)
  346.          temp = 1
  347.        when RPG::Armor
  348.          $game_party.gain_armor(@item.id, @number_window.number)
  349.          temp = 2
  350.        end
  351.        goods_del(temp,@item.id,@number_window.number)
  352.        # 刷新各窗口
  353.        @buy_window = Window_ShopBuy_Va.new($game_system.goods[@shop_now])
  354.        @gold_window.refresh
  355.        @buy_window.refresh
  356.        @status_window.refresh
  357.        # 窗口状态转向购买模式
  358.        @buy_window.active = true
  359.        @buy_window.visible = true
  360.      when 1  # 卖出
  361.        # 卖出处理
  362.        $game_party.lose_gold(@number_window.number)
  363.        temp = 0
  364.        case @item
  365.        when RPG::Item
  366.          $game_party.lose_item(@item.id, @number_window.number)
  367.        when RPG::Weapon
  368.          $game_party.lose_weapon(@item.id, @number_window.number)
  369.          temp = 1
  370.        when RPG::Armor
  371.          $game_party.lose_armor(@item.id, @number_window.number)
  372.          temp = 2
  373.        end
  374.        # 刷新各窗口
  375.        goods_del(temp,@item.id,-@number_window.number)
  376.        @buy_window = Window_ShopBuy_Va.new($game_system.goods[@shop_now])
  377.        @buy_window.active = false
  378.        @buy_window.visible = false
  379.        @buy_window.help_window = @help_window
  380.        @gold_window.refresh
  381.        @sell_window.refresh
  382.        @status_window.refresh
  383.        # 窗口状态转向卖出模式
  384.        @sell_window.active = true
  385.        @sell_window.visible = true
  386.        @status_window.visible = false
  387.      end
  388.      return
  389.    end
  390. end
  391. # 删除可出售商品内容
  392. def goods_del(kind,id,delnumber)
  393.    dl = delnumber
  394.    for dt in $game_system.goods[@shop_now]
  395.      if (dt[0]==kind) and (dt[1]==id)
  396.        dt[2] -= dl
  397.        dt[2] = [dt[2],99].min
  398.        if dt[2] == 0
  399.          $game_system.goods[@shop_now].delete(dt)
  400.        end
  401.        return
  402.      end
  403.    end
  404.    $game_system.goods[@shop_now].push([kind,id,-delnumber])
  405. end
  406. end

  407. #==============================================================================
  408. # ■ Window_ShopBuy_Va
  409. #------------------------------------------------------------------------------
  410. #  商店画面、浏览显示可以购买的商品的窗口。
  411. #==============================================================================

  412. class Window_ShopBuy_Va < Window_Selectable
  413. attr_accessor :shop_goods
  414. #--------------------------------------------------------------------------
  415. # ● 初始化对像
  416. #     shop_goods : 商品
  417. #--------------------------------------------------------------------------
  418. def initialize(shop_goods)
  419.    super(0, 128, 368, 352)
  420.    @shop_goods = shop_goods
  421.    refresh
  422.    self.index = 0
  423. end
  424. #--------------------------------------------------------------------------
  425. # ● 获取物品
  426. #--------------------------------------------------------------------------
  427. def item
  428.    return @data[self.index]
  429. end
  430. #--------------------------------------------------------------------------
  431. # ● 获取物品
  432. #--------------------------------------------------------------------------
  433. def item_number
  434.    return @data_number[self.index]
  435. end
  436. #--------------------------------------------------------------------------
  437. # ● 刷新
  438. #--------------------------------------------------------------------------
  439. def refresh
  440.    if self.contents != nil
  441.      self.contents.dispose
  442.      self.contents = nil
  443.    end
  444.    @data = []
  445.    @data_number = []
  446.    for goods_item in @shop_goods
  447.      case goods_item[0]
  448.      when 0
  449.        item = $data_items[goods_item[1]]
  450.      when 1
  451.        item = $data_weapons[goods_item[1]]
  452.      when 2
  453.        item = $data_armors[goods_item[1]]
  454.      end
  455.      if (item != nil) and (goods_item[2] != 0)
  456.        @data.push(item)
  457.        @data_number.push(goods_item[2])
  458.      else
  459.        @data.delete(item)
  460.      end
  461.    end
  462.    # 如果项目数不是 0 就生成位图、描绘全部项目
  463.    @item_max = @data.size
  464.    if @item_max > 0
  465.      self.contents = Bitmap.new(width - 32, row_max * 32)
  466.      for i in 0...@item_max
  467.        draw_item(i)
  468.      end
  469.    end
  470. end
  471. #--------------------------------------------------------------------------
  472. # ● 描绘羡慕
  473. #     index : 项目编号
  474. #--------------------------------------------------------------------------
  475. def draw_item(index)
  476.    item = @data[index]
  477.    # 获取物品所持数
  478.    case item
  479.    when RPG::Item
  480.      number = $game_party.item_number(item.id)
  481.    when RPG::Weapon
  482.      number = $game_party.weapon_number(item.id)
  483.    when RPG::Armor
  484.      number = $game_party.armor_number(item.id)
  485.    end
  486.    x = 4
  487.    y = index * 32
  488.    rect = Rect.new(x, y, self.width - 32, 32)
  489.    self.contents.fill_rect(rect, Color.new(0, 0, 0, 0))
  490.    bitmap = RPG::Cache.icon(item.icon_name)
  491.    opacity = self.contents.font.color == normal_color ? 255 : 128
  492.    self.contents.blt(x, y + 4, bitmap, Rect.new(0, 0, 24, 24), opacity)
  493.    self.contents.draw_text(x + 28, y, 212, 32, item.name, 0)
  494.    self.contents.draw_text(x + 240, y, 88, 32, "存有  ", 2)
  495.    self.contents.draw_text(x + 240, y, 88, 32, @data_number[index].to_s, 2)
  496. #    self.contents.draw_text(x + 180, y, 88, 32, item.price.to_s, 2)
  497. end
  498. #--------------------------------------------------------------------------
  499. # ● 刷新帮助文本
  500. #--------------------------------------------------------------------------
  501. def update_help
  502.    @help_window.set_text(self.item == nil ? "" : self.item.description)
  503. end
  504. end




  505. #==============================================================================
  506. # ■ Window_ShopCommand_Va
  507. #------------------------------------------------------------------------------
  508. #  商店画面、选择要做的事的窗口
  509. #==============================================================================

  510. class Window_ShopCommand_Va < Window_Selectable
  511. #--------------------------------------------------------------------------
  512. # ● 初始化对像
  513. #--------------------------------------------------------------------------
  514. def initialize
  515.    super(0, 64, 480, 64)
  516.    self.contents = Bitmap.new(width - 32, height - 32)
  517.    @item_max = 3
  518.    @column_max = 3
  519.    @commands = ["取出物品", "存入电脑", "离开"]
  520.    refresh
  521.    self.index = 0
  522. end
  523. #--------------------------------------------------------------------------
  524. # ● 刷新
  525. #--------------------------------------------------------------------------
  526. def refresh
  527.    self.contents.clear
  528.    for i in 0...@item_max
  529.      draw_item(i)
  530.    end
  531. end
  532. #--------------------------------------------------------------------------
  533. # ● 描绘项目
  534. #     index : 项目编号
  535. #--------------------------------------------------------------------------
  536. def draw_item(index)
  537.    x = 4 + index * 160
  538.    self.contents.draw_text(x, 0, 128, 32, @commands[index])
  539. end
  540. end




  541. #==============================================================================
  542. # ■ Window_ShopSell_Va
  543. #------------------------------------------------------------------------------
  544. #  商店画面、浏览显示可以卖掉的商品的窗口。
  545. #==============================================================================

  546. class Window_ShopSell_Va < Window_Selectable
  547. #--------------------------------------------------------------------------
  548. # ● 初始化对像
  549. #--------------------------------------------------------------------------
  550. def initialize
  551.    super(0, 128, 640, 352)
  552.    @column_max = 2
  553.    refresh
  554.    self.index = 0
  555. end
  556. #--------------------------------------------------------------------------
  557. # ● 获取物品
  558. #--------------------------------------------------------------------------
  559. def item
  560.    return @data[self.index]
  561. end
  562. #--------------------------------------------------------------------------
  563. # ● 刷新
  564. #--------------------------------------------------------------------------
  565. def refresh
  566.    if self.contents != nil
  567.      self.contents.dispose
  568.      self.contents = nil
  569.    end
  570.    @data = []
  571.    for i in 1...$data_items.size
  572.      if $game_party.item_number(i) > 0
  573.        @data.push($data_items[i])
  574.      end
  575.    end
  576.    for i in 1...$data_weapons.size
  577.      if $game_party.weapon_number(i) > 0
  578.        @data.push($data_weapons[i])
  579.      end
  580.    end
  581.    for i in 1...$data_armors.size
  582.      if $game_party.armor_number(i) > 0
  583.        @data.push($data_armors[i])
  584.      end
  585.    end
  586.    # 如果项目数不是 0 就生成位图、描绘全部项目
  587.    @item_max = @data.size
  588.    if @item_max > 0
  589.      self.contents = Bitmap.new(width - 32, row_max * 32)
  590.      for i in 0...@item_max
  591.        draw_item(i)
  592.      end
  593.    end
  594. end
  595. #--------------------------------------------------------------------------
  596. # ● 描绘项目
  597. #     index : 项目标号
  598. #--------------------------------------------------------------------------
  599. def draw_item(index)
  600.    item = @data[index]
  601.    case item
  602.    when RPG::Item
  603.      number = $game_party.item_number(item.id)
  604.    when RPG::Weapon
  605.      number = $game_party.weapon_number(item.id)
  606.    when RPG::Armor
  607.      number = $game_party.armor_number(item.id)
  608.    end
  609.    x = 4 + index % 2 * (288 + 32)
  610.    y = index / 2 * 32
  611.    rect = Rect.new(x, y, self.width / @column_max - 32, 32)
  612.    self.contents.fill_rect(rect, Color.new(0, 0, 0, 0))
  613.    bitmap = RPG::Cache.icon(item.icon_name)
  614.    opacity = self.contents.font.color == normal_color ? 255 : 128
  615.    self.contents.blt(x, y + 4, bitmap, Rect.new(0, 0, 24, 24), opacity)
  616.    self.contents.draw_text(x + 28, y, 212, 32, item.name, 0)
  617.    self.contents.draw_text(x + 240, y, 16, 32, ":", 1)
  618.    self.contents.draw_text(x + 256, y, 24, 32, number.to_s, 2)
  619. end
  620. #--------------------------------------------------------------------------
  621. # ● 刷新帮助文本
  622. #--------------------------------------------------------------------------
  623. def update_help
  624.    @help_window.set_text(self.item == nil ? "" : self.item.description)
  625. end
  626. end



  627. #==============================================================================
  628. # ■ Window_ShopNumber_Va
  629. #------------------------------------------------------------------------------
  630. #  商店画面、输入买卖数量的窗口。
  631. #==============================================================================

  632. class Window_ShopNumber_Va < Window_Base
  633. #--------------------------------------------------------------------------
  634. # ● 初始化对像
  635. #--------------------------------------------------------------------------
  636. def initialize
  637.    super(0, 128, 368, 352)
  638.    self.contents = Bitmap.new(width - 32, height - 32)
  639.    @item = nil
  640.    @max = 1
  641.    @price = 0
  642.    @number = 1
  643. end
  644. #--------------------------------------------------------------------------
  645. # ● 设置物品、最大个数、价格
  646. #--------------------------------------------------------------------------
  647. def set(item, max, price)
  648.    @item = item
  649.    @max = max
  650.    @price = price
  651.    @number = 1
  652.    refresh
  653. end
  654. #--------------------------------------------------------------------------
  655. # ● 被输入的件数设置
  656. #--------------------------------------------------------------------------
  657. def number
  658.    return @number
  659. end
  660. #--------------------------------------------------------------------------
  661. # ● 刷新
  662. #--------------------------------------------------------------------------
  663. def refresh
  664.    self.contents.clear
  665.    draw_item_name(@item, 4, 96)
  666.    self.contents.font.color = normal_color
  667.    self.contents.draw_text(272, 96, 32, 32, "×")
  668.    self.contents.draw_text(308, 96, 24, 32, @number.to_s, 2)
  669.    self.cursor_rect.set(304, 96, 32, 32)
  670. end
  671. #--------------------------------------------------------------------------
  672. # ● 刷新画面
  673. #--------------------------------------------------------------------------
  674. def update
  675.    super
  676.    if self.active
  677.      # 光标右 (+1)
  678.      if Input.repeat?(Input::RIGHT) and @number < @max
  679.        $game_system.se_play($data_system.cursor_se)
  680.        @number += 1
  681.        refresh
  682.      end
  683.      # 光标左 (-1)
  684.      if Input.repeat?(Input::LEFT) and @number > 1
  685.        $game_system.se_play($data_system.cursor_se)
  686.        @number -= 1
  687.        refresh
  688.      end
  689.      # 光标上 (+10)
  690.      if Input.repeat?(Input::UP) and @number < @max
  691.        $game_system.se_play($data_system.cursor_se)
  692.        @number = [@number + 10, @max].min
  693.        refresh
  694.      end
  695.      # 光标下 (-10)
  696.      if Input.repeat?(Input::DOWN) and @number > 1
  697.        $game_system.se_play($data_system.cursor_se)
  698.        @number = [@number - 10, 1].max
  699.        refresh
  700.      end
  701.    end
  702. end
  703. end




  704. #==============================================================================
  705. # ■ Window_ShopStatus_Va
  706. #------------------------------------------------------------------------------
  707. #  商店画面、显示物品所持数与角色装备的窗口。
  708. #==============================================================================

  709. class Window_ShopStatus_Va < Window_Base
  710. #--------------------------------------------------------------------------
  711. # ● 初始化对像
  712. #--------------------------------------------------------------------------
  713. def initialize
  714.    super(368, 128, 272, 352)
  715.    self.contents = Bitmap.new(width - 32, height - 32)
  716.    @item = nil
  717.    refresh
  718. end
  719. #--------------------------------------------------------------------------
  720. # ● 刷新
  721. #--------------------------------------------------------------------------
  722. def refresh
  723.    self.contents.clear
  724.    self.contents.font.color = system_color
  725.    self.contents.font.size -= 4
  726.    self.contents.draw_text(0, 0, 252, 32, "每次存入需要1元的传输费.")
  727.    self.contents.draw_text(0, 34, 252, 32, "取出物品无须任何费用.")
  728.    self.contents.font.size += 4
  729. end
  730. #--------------------------------------------------------------------------
  731. # ● 设置物品
  732. #     item : 新的物品
  733. #--------------------------------------------------------------------------
  734. def item=(item)
  735.    if @item != item
  736.      @item = item
  737.      refresh
  738.    end
  739. end
  740. end
复制代码

评分

参与人数 1星屑 +35 收起 理由
RyanBern + 35 手动认可奖励

查看全部评分

Lv1.梦旅人

梦石
0
星屑
80
在线时间
216 小时
注册时间
2011-9-17
帖子
151
2
 楼主| 发表于 2015-12-7 22:23:52 | 只看该作者
另外,还发现了一个问题,如果存仓库的物品已经99了,还可以继续存,希望有大大能帮忙修复此脚本。
这个脚本是一个很不错的物品仓库脚本,效果也很直接和简单,我在论坛没有搜到这类型的,论坛的仓库脚本都带有其他效果。
所以希望各种大大能帮忙!!
回复 支持 反对

使用道具 举报

Lv4.逐梦者

「Pemercyia」


Urhurrenna

梦石
0
星屑
9397
在线时间
2748 小时
注册时间
2008-9-5
帖子
3543

开拓者短篇八RM组冠军短篇九导演组亚军白银编剧

3
发表于 2015-12-7 22:27:17 | 只看该作者
没错的话应该是
脚本:》
  1. kind = 0~2(0=物品,1=武器,2=防具)
  2. id = 要消除的物品(武器、防具)ID
  3. del = 消除数量
  4. for goods in $game_system.goods[仓库编号]
  5.   if goods[0] == kind && goods[1] == id
  6.     goods[2] -= del
  7.     if goods[2] <= 0
  8.       $game_system.goods[仓库编号].delete(goods)
  9.     end
  10.     break
  11.   end
  12. end
复制代码

点评

可不可以修复2L的bug呢?感谢!  发表于 2015-12-7 23:03
感谢!  发表于 2015-12-7 23:02

评分

参与人数 1星屑 +200 收起 理由
RyanBern + 200 认可答案

查看全部评分

回复 支持 反对

使用道具 举报

Lv4.逐梦者

「Pemercyia」


Urhurrenna

梦石
0
星屑
9397
在线时间
2748 小时
注册时间
2008-9-5
帖子
3543

开拓者短篇八RM组冠军短篇九导演组亚军白银编剧

4
发表于 2015-12-7 23:28:04 | 只看该作者
大概可以这样(只改了这个方法):
  1. #--------------------------------------------------------------------------
  2. # ● 画面更新 (卖出窗口激活的情况下)
  3. #--------------------------------------------------------------------------
  4. def update_sell
  5.    # 按下 B 键的情况下
  6.    if Input.trigger?(Input::B)
  7.      # 演奏取消 SE
  8.      $game_system.se_play($data_system.cancel_se)
  9.      # 窗口状态转向初期模式
  10.      @command_window.active = true
  11.      @dummy_window.visible = true
  12.      @sell_window.active = false
  13.      @sell_window.visible = false
  14.      @status_window.item = nil
  15.      # 删除帮助文本
  16.      @help_window.set_text("")
  17.      return
  18.    end
  19.    # 按下 C 键的情况下
  20.    if Input.trigger?(Input::C)
  21.      # 获取物品
  22.      @item = @sell_window.item
  23. ############################
  24.      case @item
  25.      when RPG::Item
  26.        kind = 0
  27.      when RPG::Weapon
  28.        kind = 1
  29.      when RPG::Armor
  30.        kind = 2
  31.      end
  32.      goods_num = 0
  33.      for goods in $game_system.goods[@shop_now]
  34.        if goods[0] == kind && goods[1] == @item.id
  35.          goods_num = goods[3]
  36.          break
  37.        end
  38.      end
  39. ############################
  40.          
  41.      # 物品无效的情况下、或者价格为 0 (不能卖出) 的情况下
  42.      if @item == nil || goods_num >= 99# or @item.price == 0  #########加了数量判定
  43.        # 演奏冻结 SE
  44.        $game_system.se_play($data_system.buzzer_se)
  45.        return
  46.      end
  47.      
  48.      
  49.      # 如果金钱为 0 G情况下
  50.      if $game_party.gold == 0
  51.        # 演奏冻结 SE
  52.        $game_system.se_play($data_system.buzzer_se)
  53.        $game_temp.message_text = "没钱了,请续费."
  54.        # 切换到地图画面
  55.        $scene = Scene_Map.new
  56.        return
  57.      end
  58.      
  59.      
  60.      # 演奏确定 SE
  61.      $game_system.se_play($data_system.decision_se)
  62.      # 获取物品的所持数
  63.      case @item
  64.      when RPG::Item
  65.        number = $game_party.item_number(@item.id)
  66.      when RPG::Weapon
  67.        number = $game_party.weapon_number(@item.id)
  68.      when RPG::Armor
  69.        number = $game_party.armor_number(@item.id)
  70.      end
  71.      # 最大卖出个数 = 物品的所持数
  72.      max = number
  73.      # 窗口状态转向个数输入模式
  74.      @sell_window.active = false
  75.      @sell_window.visible = false
  76.      @number_window.set(@item, max, @item.price / 2)
  77.      @number_window.active = true
  78.      @number_window.visible = true
  79.      @status_window.visible = true
  80.    end
  81. end
复制代码
脑内逻辑是这样,也不知道是不是可行………………

点评

非常感谢!  发表于 2015-12-7 23:55
NoMethodError occurred.undefined method '>='for nil:NilClass  发表于 2015-12-7 23:54
呃呃…………【goods_num = goods[3]】这句,是【goods_num = goods[2]】是2!是2!!就是2!!  发表于 2015-12-7 23:52
这部分替换掉原来脚本的这整段。(报的啥错?  发表于 2015-12-7 23:51
把修改部分更改到原脚本对吗?if @item == nil || goods_num >= 99报错了~  发表于 2015-12-7 23:47
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-13 23:51

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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