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

Project1

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

[已经解决] 請問在XP裡可以製作倉庫系統嗎?

[复制链接]

Lv1.梦旅人

梦石
0
星屑
100
在线时间
0 小时
注册时间
2010-9-23
帖子
3
跳转到指定楼层
1
发表于 2010-9-23 22:17:38 | 只看该作者 回帖奖励 |正序浏览 |阅读模式

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

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

x
請問在XP裡可以製作倉庫系統嗎?
我需要腳本(我是新手)
有誰能給我嗎?

Lv1.梦旅人

梦石
0
星屑
100
在线时间
0 小时
注册时间
2010-9-23
帖子
3
3
 楼主| 发表于 2010-9-24 06:27:30 | 只看该作者
太感謝了
真的很好用 謝謝
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
344
在线时间
185 小时
注册时间
2007-9-2
帖子
168
2
发表于 2010-9-23 22:37:18 | 只看该作者
本帖最后由 zhli667 于 2010-9-23 22:40 编辑

银行仓库:
  1. #==============================================================================
  2. # 本脚本来自www.66rpg.com,转载和使用请保留此信息
  3. #==============================================================================
  4. #
  5. # 调用:$scene = Scene_Shop_Va.new(1)  
  6. #
  7. #==============================================================================
  8. # ■ Scene_Shop
  9. #------------------------------------------------------------------------------
  10. #  处理商店画面的类。
  11. #==============================================================================
  12. class Game_System
  13. attr_accessor :goods   
  14. alias vaule_shop_66RPG_initialize initialize
  15. def initialize
  16.    vaule_shop_66RPG_initialize
  17.    @goods = []
  18. ###########################################################################
  19.    # 初期的时候的商店物品,编号顺序:种类,ID,可卖数量
  20.    @goods[1] = [[-1,-1,-1]]  
  21. ###########################################################################
  22. end
  23. def shop_change(shop,kind,id,delnumber)
  24.    dl = delnumber
  25.    for dt in $game_system.goods[shop]
  26.      if (dt[0]==kind) and (dt[1]==id)
  27.        dt[2] -= dl
  28.        dt[2] = [dt[2],99].min
  29.        if dt[2] == 0
  30.          $game_system.goods[shop].delete(dt)
  31.        end
  32.        return
  33.      end
  34.    end
  35.    $game_system.goods[shop].push([kind,id,-delnumber])
  36. end
  37. end

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

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

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




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

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




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

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



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

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




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

  706. class Window_ShopStatus_Va < Window_Base
  707. #--------------------------------------------------------------------------
  708. # ● 初始化对像
  709. #--------------------------------------------------------------------------
  710. def initialize
  711.    super(368, 128, 272, 352)
  712.    self.contents = Bitmap.new(width - 32, height - 32)
  713.    @item = nil
  714.    refresh
  715. end
  716. #--------------------------------------------------------------------------
  717. # ● 刷新
  718. #--------------------------------------------------------------------------
  719. def refresh
  720.    self.contents.clear
  721.    self.contents.font.color = system_color
  722.    self.contents.draw_text(0, 0, 202, 32, "每存入一件物品都要收取1元的保管费!")
  723.    self.contents.draw_text(0, 34, 202, 32, "不过,您来取物品的话,我们不收钱!")
  724. end
  725. #--------------------------------------------------------------------------
  726. # ● 设置物品
  727. #     item : 新的物品
  728. #--------------------------------------------------------------------------
  729. def item=(item)
  730.    if @item != item
  731.      @item = item
  732.      refresh
  733.    end
  734. end
  735. end
复制代码
物品仓库:
  1. #==============================================================================
  2. # 本脚本来自www.66rpg.com,转载和使用请保留此信息
  3. #==============================================================================
  4. #
  5. # 调用:$scene = Scene_Shop_Va.new(1)  
  6. #
  7. #==============================================================================
  8. # ■ Scene_Shop
  9. #------------------------------------------------------------------------------
  10. #  处理商店画面的类。
  11. #==============================================================================
  12. class Game_System
  13. attr_accessor :goods   
  14. alias vaule_shop_66RPG_initialize initialize
  15. def initialize
  16.    vaule_shop_66RPG_initialize
  17.    @goods = []
  18. ###########################################################################
  19.    # 初期的时候的商店物品,编号顺序:种类,ID,可卖数量
  20.    @goods[1] = [[-1,-1,-1]]  
  21. ###########################################################################
  22. end
  23. def shop_change(shop,kind,id,delnumber)
  24.    dl = delnumber
  25.    for dt in $game_system.goods[shop]
  26.      if (dt[0]==kind) and (dt[1]==id)
  27.        dt[2] -= dl
  28.        dt[2] = [dt[2],99].min
  29.        if dt[2] == 0
  30.          $game_system.goods[shop].delete(dt)
  31.        end
  32.        return
  33.      end
  34.    end
  35.    $game_system.goods[shop].push([kind,id,-delnumber])
  36. end
  37. end

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

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

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




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

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




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

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



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

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




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

  706. class Window_ShopStatus_Va < Window_Base
  707. #--------------------------------------------------------------------------
  708. # ● 初始化对像
  709. #--------------------------------------------------------------------------
  710. def initialize
  711.    super(368, 128, 272, 352)
  712.    self.contents = Bitmap.new(width - 32, height - 32)
  713.    @item = nil
  714.    refresh
  715. end
  716. #--------------------------------------------------------------------------
  717. # ● 刷新
  718. #--------------------------------------------------------------------------
  719. def refresh
  720.    self.contents.clear
  721.    self.contents.font.color = system_color
  722.    self.contents.draw_text(0, 0, 202, 32, "每存入一件物品都要收取1元的保管费!")
  723.    self.contents.draw_text(0, 34, 202, 32, "不过,您来取物品的话,我们不收钱!")
  724. end
  725. #--------------------------------------------------------------------------
  726. # ● 设置物品
  727. #     item : 新的物品
  728. #--------------------------------------------------------------------------
  729. def item=(item)
  730.    if @item != item
  731.      @item = item
  732.      refresh
  733.    end
  734. end
  735. end
复制代码

点评

認可  发表于 2010-9-28 20:04

评分

参与人数 2星屑 +202 收起 理由
「旅」 + 200 认可答案
kukurui00 + 2 乐善好施

查看全部评分

新手作品:《幻想》———缓慢制作中———
   
合击技能!哇哈哈~~~                                                                     金山寺求宝~~~
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-15 11:17

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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