Project1

标题: 关于道具仓库的问题?? [打印本页]

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

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

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




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

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




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

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



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

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




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

  707. class Window_ShopStatus_Va < Window_Base
  708. #--------------------------------------------------------------------------
  709. # ● 初始化对像
  710. #--------------------------------------------------------------------------
  711. def initialize
  712.    super(368, 128, 272, 352)
  713.    self.contents = Bitmap.new(width - 32, height - 32)
  714.    @item = nil
  715.    refresh
  716. end
  717. #--------------------------------------------------------------------------
  718. # ● 刷新
  719. #--------------------------------------------------------------------------
  720. def refresh
  721.    self.contents.clear
  722.    self.contents.font.color = system_color
  723.    self.contents.font.size -= 4
  724.    self.contents.draw_text(0, 0, 252, 32, "每存入一件物品都要收取1元的保管费!")
  725.    self.contents.draw_text(0, 34, 252, 32, "不过,您来取物品的话,我们不收钱!")
  726.    self.contents.font.size += 4
  727. end
  728. #--------------------------------------------------------------------------
  729. # ● 设置物品
  730. #     item : 新的物品
  731. #--------------------------------------------------------------------------
  732. def item=(item)
  733.    if @item != item
  734.      @item = item
  735.      refresh
  736.    end
  737. end
  738. end
复制代码
[LINE]1,#dddddd[/LINE]系统信息:本贴获得楼主认可,66RPG感谢您的热情解答~
作者: qq543065826    时间: 2008-2-19 05:25
还有别的吗??这个不是我要的...
作者: 阿米尔    时间: 2008-2-19 05:37
要什么?
作者: qq543065826    时间: 2008-2-19 06:51
要能寄放在npc的又能拿出来的!!
作者: darkten    时间: 2008-2-19 07:54
如果只是特定道具寄放在npc身上的话,可以直接使用事件。
使用条件分支+增建道具+开关/变量

[LINE]1,#dddddd[/LINE]
如果是全部种类的道具的话
使用这个脚本:“物品银行 (物品仓库,复刻魔力效果)”
http://rpg.blue/web/htm/news438.htm

如果搂主是想要实现不同npc有不同仓库的话,
(就是说,放在仓库1的道具在别的地方拿不到)
方法:
脚本第20行:
    @goods[1] = [[-1,-1,-1]]  
复制这句脚本,然后粘贴在这句脚本下面。
复制的脚本数量=游戏里仓库的数量
然后把 @goods[1]里的“1”依序改为2,3,4...
就象这样
    @goods[1] = [[-1,-1,-1]]  
    @goods[2] = [[-1,-1,-1]]  
    @goods[3] = [[-1,-1,-1]]  

当呼唤仓库界面时,调用的脚本 $scene = Scene_Shop_Vb.new(1),( )里的“1”就依据不同的npc改去2,3,4...

以上步揍是创建出n个仓库,并且可以依据编号呼唤出相应的仓库。 [LINE]1,#dddddd[/LINE]系统信息:本贴获得楼主认可,66RPG感谢您的热情解答~ [LINE]1,#dddddd[/LINE]系统信息:本贴由楼主认可为正确答案,66RPG感谢您的热情解答~
作者: 凌冰    时间: 2008-2-19 10:54
用飞龙那个不行吗?




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1