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

Project1

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

[已经过期] 怎么设置仓库脚本存的东西可以每个角色都共用呢?

[复制链接]

Lv1.梦旅人

梦石
0
星屑
50
在线时间
130 小时
注册时间
2012-4-5
帖子
117
跳转到指定楼层
1
发表于 2012-6-2 13:01:16 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
  1. #==============================================================================
  2. #==============================================================================
  3. #     
  4. #                      ■ [vx]仓库
  5. #------------------------------------------------------------------------------
  6. #                       by 八云 紫
  7. #                转载时,请注明 本脚本来着 66RPG
  8. #==============================================================================
  9. #==============================================================================

  10. #==============================================================================
  11. # ■ Byz_Vocab
  12. #------------------------------------------------------------------------------
  13. #  定义系统用语和信息的模块。
  14. #==============================================================================
  15. module Byz_Vocab
  16.   #------  仓库  ---------
  17.   WAREHOUSE_SAVING = "存东西"
  18.   WAREHOUSE_TAKING = "取东西"
  19.   CANCEN           = "取消"
  20.   # 箭头文件名字, 放到 GraphicsPictures 目录下。
  21.   ARROW_TWO        = "Cursor"
  22.   # 存物品的时候的价格
  23.   PRICES           = 10
  24. end

  25. class Bitmap
  26.   #--------------------------------------------------------------------------
  27.   # ● 描绘直线   
  28.   #     x1,y1,x2,y2:  直线两端的坐标
  29.   #     width:    宽度  
  30.   #     color:    颜色
  31.   #--------------------------------------------------------------------------
  32.   def drawline(x1, y1, x2, y2, width, color)
  33.     x1 = x1.to_f
  34.     y1 = y1.to_f
  35.     x2 = x2.to_f
  36.     y2 = y2.to_f
  37.     width = width.to_f
  38.     k = (y2 - y1) / (x2 - x1)
  39.     if k.abs > 1
  40.       drawline_x(x1, y1, x2, y2, width, color)
  41.     else
  42.       drawline_y(x1, y1, x2, y2, width, color)
  43.     end
  44.   end
  45.   def drawline_x(x1, y1, x2, y2, width, color)
  46.     l = ((x1 - x2) ** 2 + (y1 - y2) ** 2) ** 0.5 * width / (y1 - y2)
  47.     length = l.abs * 2
  48.     k = (x2 - x1) / (y2 - y1) #x=ky+b
  49.     b = x1 - k * y1
  50.     if l > 0
  51.       for ty in y2.to_i..y1.to_i
  52.         tx = ty * k + b
  53.         fill_rect(tx - l, ty, length, 1, color)
  54.       end
  55.     else
  56.       for ty in y1.to_i..y2.to_i
  57.         tx = ty * k + b
  58.         fill_rect(tx + l, ty, length, 1, color)
  59.       end
  60.     end
  61.   end
  62.   def drawline_y(x1, y1, x2, y2, width, color)
  63.     l = ((x1 - x2) ** 2 + (y1 - y2) ** 2) ** 0.5 * width / (x1 - x2)
  64.     height = l.abs * 2
  65.     k = (y2 - y1) / (x2 - x1) #y=kx+b
  66.     b = y1 - k * x1
  67.     if l > 0
  68.       for tx in x2.to_i..x1.to_i
  69.         ty = tx * k + b
  70.         fill_rect(tx, ty - l, 1, height, color)
  71.       end
  72.     else
  73.       for tx in x1.to_i..x2.to_i
  74.         ty = tx * k + b
  75.         fill_rect(tx, ty + l, 1, height, color)
  76.       end
  77.     end
  78.   end
  79. end
  80. #==============================================================================
  81. # ■ Game_System
  82. #------------------------------------------------------------------------------
  83. #  处理系统附属数据的类。也可执行诸如 BGM 管理、交通工具之类的功能。本类的实
  84. # 例请参考 $game_system 。
  85. #==============================================================================

  86. class Game_System
  87.   attr_accessor :bank_loli_bitmap
  88.   attr_accessor :back_bank_bitmap
  89.   attr_accessor :prices                   # 存物品的收费价格
  90.   #--------------------------------------------------------------------------
  91.   # ● 初始化对象
  92.   #--------------------------------------------------------------------------
  93.   alias old_initialize initialize
  94.   def initialize
  95.     old_initialize
  96.     @bank_loli_bitmap = "MM_Pic1"
  97.     @back_bank_bitmap = "back"
  98.     @prices = Byz_Vocab::PRICES
  99.   end
  100. end
  101. #==============================================================================
  102. # ■ Game_Party
  103. #------------------------------------------------------------------------------
  104. #  处理队伍的类。包含金钱以及物品的信息。
  105. # 这个类的实例请参考 $game_party 。
  106. #==============================================================================
  107. class Game_Party < Game_Unit
  108.   attr_accessor :warehouse                              # 仓库
  109.   #--------------------------------------------------------------------------
  110.   # ● 初始化对象
  111.   #--------------------------------------------------------------------------
  112.   alias initialize_currency initialize
  113.   def initialize
  114.     initialize_currency
  115.     @warehouse_item = {}                                # 仓库物品
  116.     @warehouse_weapon = {}                              # 仓库武器
  117.     @warehouse_armor = {}                               # 仓库防具
  118.     @warehouse = [@warehouse_item, @warehouse_weapon, @warehouse_armor]
  119.   end
  120. end

  121. #==============================================================================
  122. # ■ Window_Warehouse
  123. #==============================================================================
  124. class Window_Warehouse < Window_Selectable
  125.   #--------------------------------------------------------------------------
  126.   # ● 初始化
  127.   #     kind  : 0  物品            bool :0  背包
  128.   #           : 1  武器                 :1  仓库
  129.   #           :2  防具
  130.   #--------------------------------------------------------------------------
  131.   def initialize(kind, bool)
  132.     super(100, 110, 285, 202)
  133.     @kind = kind
  134.     @bool = bool
  135.     @column_max = 1
  136.     @help_window = Window_Byz_Help.new
  137.     @last_kind = @kind + 1
  138.     self.index = 0
  139.     @last_index = self.index + 1
  140.     @data = []
  141.     refresh
  142.   end
  143.   #--------------------------------------------------------------------------
  144.   # ● 写入 kind
  145.   #--------------------------------------------------------------------------
  146.   def kind=(index)
  147.     @kind = index
  148.     refresh
  149.   end
  150.   #--------------------------------------------------------------------------
  151.   # ● 获取 obj
  152.   #--------------------------------------------------------------------------
  153.   def check
  154.     if @data[self.index] == nil
  155.       return nil
  156.     else
  157.       return @data[self.index].id
  158.     end
  159.   end
  160.   #--------------------------------------------------------------------------
  161.   # ● 刷新开关
  162.   #--------------------------------------------------------------------------
  163.   def refresh_bool
  164.     @last_index = self.index + 1
  165.   end
  166.   #--------------------------------------------------------------------------
  167.   # ● 刷新
  168.   #--------------------------------------------------------------------------
  169.   def refresh
  170.     if @bool == 1
  171.       dates = []
  172.       dates.clear
  173.       @data.clear
  174.       $game_party.warehouse[@kind].each_key {|key|
  175.         next if $game_party.warehouse[@kind][key] == nil
  176.         dates.push(key)}
  177.       if dates.size == 0
  178.         @data.clear
  179.       end
  180.       dates.sort!
  181.       if @kind == 0
  182.         dates.each{|index| @data.push($data_items[index])}
  183.       elsif @kind == 1
  184.         dates.each{|index| @data.push($data_weapons[index])}
  185.       elsif @kind == 2
  186.         dates.each{|index| @data.push($data_armors[index])}
  187.       end
  188.       @item_max = @data.size
  189.     else
  190.       @data.clear
  191.       for item in $game_party.items
  192.         if @kind == 0
  193.           @data.push(item) if item.is_a?(RPG::Item)
  194.         elsif @kind == 1
  195.           @data.push(item) if item.is_a?(RPG::Weapon)
  196.         elsif @kind == 2
  197.           @data.push(item) if item.is_a?(RPG::Armor)
  198.         end
  199.       end
  200.       @item_max = @data.size
  201.     end
  202.     return if 0 == @item_max
  203.     self.contents.clear
  204.     create_contents
  205.     if @data.size != 0
  206.       @data.each_index{|index| draw_item(index)}
  207.     end
  208.   end
  209.   
  210.   def update
  211.     super
  212.     if @last_index != self.index or @last_kind != @kind
  213.       item_index = check
  214.       if item_index != nil
  215.         if @kind == 0
  216.           @help_window.set_item($data_items[item_index])
  217.         elsif @kind == 1
  218.           @help_window.set_item($data_weapons[item_index])
  219.         elsif @kind == 2
  220.           @help_window.set_item($data_armors[item_index])
  221.         end
  222.       else
  223.         @help_window.clear
  224.         self.contents.clear
  225.       end
  226.       refresh
  227.       @last_index = self.index
  228.       @last_kind = @kind
  229.     end
  230.   end
  231.   
  232.   def dispose
  233.     super
  234.     @help_window.dispose
  235.   end
  236.   #--------------------------------------------------------------------------
  237.   # ● 描绘项目
  238.   #     index : 项目编号
  239.   #--------------------------------------------------------------------------
  240.   def draw_item(index)
  241.     rect = item_rect(index)
  242.     item = @data[index]
  243.     self.contents.clear_rect(rect)
  244.     if item != nil
  245.       if @bool == 1
  246.         number = $game_party.warehouse[@kind][@data[index].id]
  247.       else
  248.         number = $game_party.item_number(item)
  249.       end
  250.       rect.width -= 4
  251.       draw_item_name(item, rect.x, rect.y, true)
  252.       self.contents.draw_text(rect, sprintf("%10d", number), 2)
  253.     else
  254.       self.contents.clear
  255.     end
  256.   end
  257. end

  258. #==============================================================================
  259. # ■ Window_Byz_Help   物品帮助
  260. #==============================================================================
  261. class Window_Byz_Help < Window_Base
  262.   #--------------------------------------------------------------------------
  263.   # ● 初始化
  264.   #--------------------------------------------------------------------------
  265.   def initialize
  266.     super(0, 312, 544, 104)
  267.   end
  268.   
  269.   def clear
  270.     self.contents.clear
  271.   end
  272.   
  273.   #--------------------------------------------------------------------------
  274.   # ● 文字设定
  275.   #     item  : 物品
  276.   #--------------------------------------------------------------------------
  277.   def set_item(item)
  278.     if item.nil?
  279.       self.contents.clear
  280.       self.contents.font.color = normal_color
  281.       self.contents.draw_text(0, 0, 512, 24, $game_temp.shop_word)
  282.       @item = nil
  283.       return
  284.     end
  285.     if item != @item
  286.       @item = item
  287.       self.contents.clear
  288.       self.contents.font.color = normal_color
  289.       self.contents.draw_text(0, 0, 512, 24, @item.description)
  290.       if @item.is_a?(RPG::Item)
  291.         # 物品范围描述
  292.         scope = "[对象] : "
  293.         case @item.scope
  294.         when 0;  scope += "无"
  295.         when 1;  scope += "敌单体"
  296.         when 2;  scope += "敌全体"
  297.         when 3;  scope += "敌单体 连续"
  298.         when 4;  scope += "敌单体 随机"
  299.         when 5;  scope += "敌二体 随机"
  300.         when 6;  scope += "敌三体 随机"
  301.         when 7;  scope += "我方单体"
  302.         when 8;  scope += "我方全体"
  303.         when 9;  scope += "我方单体 (阵亡)"
  304.         when 10; scope += "我方全体 (阵亡)"
  305.         when 11; scope += "使用者"
  306.         end
  307.         self.contents.draw_text(0, 24, 512, 24, scope)
  308.         # 物品范围描述结束
  309.         # 物品恢复效果描述
  310.         effection = "[效果] : "
  311.         if @item.hp_recovery_rate > 0
  312.           effection += "#{Vocab.hp}+#{@item.hp_recovery_rate}% "
  313.         elsif @item.hp_recovery_rate < 0
  314.           effection += "#{Vocab.hp}-#{@item.hp_recovery_rate}% "
  315.         elsif @item.hp_recovery > 0
  316.           effection += "#{Vocab.hp}+#{@item.hp_recovery} "
  317.         elsif @item.hp_recovery < 0
  318.           effection += "#{Vocab.hp}-#{@item.hp_recovery} "
  319.         end
  320.         if @item.mp_recovery_rate > 0
  321.           effection += "#{Vocab.mp}+#{@item.mp_recovery_rate}% "
  322.         elsif @item.mp_recovery_rate < 0
  323.           effection += "#{Vocab.mp}-#{@item.mp_recovery_rate}% "
  324.         elsif @item.mp_recovery > 0
  325.           effection += "#{Vocab.mp}+#{@item.mp_recovery} "
  326.         elsif @item.mp_recovery < 0
  327.           effection += "#{Vocab.mp}-#{@item.mp_recovery} "
  328.         end
  329.         effection += "伤害#{@item.base_damage} " if @item.base_damage != 0
  330.         case @item.parameter_type
  331.         when 1
  332.           effection += "最大#{Vocab.hp}+#{@item.parameter_points}"
  333.         when 2
  334.           effection += "最大#{Vocab.mp}+#{@item.parameter_points}"
  335.         when 3
  336.           effection += "#{Vocab.atk}+#{@item.parameter_points}"
  337.         when 4
  338.           effection += "#{Vocab.def}+#{@item.parameter_points}"
  339.         when 5
  340.           effection += "#{Vocab.spi}+#{@item.parameter_points}"
  341.         when 6
  342.           effection += "#{Vocab.agi}+#{@item.parameter_points}"
  343.         end
  344.         self.contents.draw_text(0, 48, 512, 24, effection)
  345.         # 物品恢复效果描述结束
  346.       else
  347.         # 武器防具可装备人员描述
  348.         equip = "[可装备] : "
  349.         for actor in $game_party.members
  350.           if actor.equippable?(@item)
  351.             equip += "、" if equip != "[可装备] : "
  352.             equip += actor.name
  353.           end
  354.         end
  355.         equip += "无" if equip == "[可装备] : "
  356.         self.contents.draw_text(0, 24, 512, 24, equip)
  357.         # 武器防具可装备人员描述结束
  358.         # 武器防具攻防增减描述
  359.         effection = "[属性] : "
  360.         if @item.atk != 0
  361.           effection += "攻击力+#{@item.atk} "
  362.         end
  363.         if @item.def != 0
  364.           effection += "防御力+#{@item.def} "
  365.         end
  366.         if @item.spi != 0
  367.           effection += "精神力+#{@item.spi} "
  368.         end
  369.         if @item.agi != 0
  370.           effection += "敏捷性+#{@item.agi} "
  371.         end
  372.         # 武器防具攻防增减描述结束
  373.         if @item.is_a?(RPG::Armor)
  374.           # 防具特殊属性描述
  375.           if @item.prevent_critical
  376.             effection += "防止会心一击 "
  377.           end
  378.           if @item.half_mp_cost
  379.             effection += "消费MP减半 "
  380.           end
  381.           if @item.double_exp_gain
  382.             effection += "双倍经验 "
  383.           end
  384.           if @item.auto_hp_recover
  385.             effection += "自动恢复HP "
  386.           end
  387.           # 防具特殊属性描述结束
  388.         else
  389.           # 武器特殊属性描述
  390.           if @item.two_handed
  391.             effection += "双手持 "
  392.           end
  393.           if @item.fast_attack
  394.             effection += "先发制人 "
  395.           end
  396.           if @item.dual_attack
  397.             effection += "连击 "
  398.           end
  399.           if @item.critical_bonus
  400.             effection += "频发会心一击 "
  401.           end
  402.           # 武器特殊属性描述结束
  403.         end
  404.         unless @item.element_set.empty?
  405.           # 武器防具属性描述(左边那一栏需要打勾的)
  406.           effection += @item.is_a?(RPG::Armor) ? "  [防具状态] : " : "  [武器属性] : "
  407.           for state in @item.element_set
  408.             effection += $data_system.elements[state] + " "
  409.           end
  410.           # 武器防具属性描述结束
  411.         end
  412.         unless @item.state_set.empty?
  413.           # 武器防具状态描述(右边那一栏需要打勾的)
  414.           effection += @item.is_a?(RPG::Armor) ? "  [无效化属性] : " : "  [附加状态] : "
  415.           for state in @item.state_set
  416.             effection += $data_states[state].name + " "
  417.           end
  418.           # 武器防具状态描述结束
  419.         end
  420.         self.contents.draw_text(0, 48, 512, 24, effection)
  421.       end
  422.     end
  423.   end
  424. end
  425. #==============================================================================
  426. # ■ Window_Byz_Name   标题名字
  427. #==============================================================================
  428. class Window_Byz_Name < Window_Base
  429.   #--------------------------------------------------------------------------
  430.   # ● 初始化对象
  431.   #     x : 窗口的 X 坐标
  432.   #     y : 窗口的 Y 坐标
  433.   #--------------------------------------------------------------------------
  434.   def initialize
  435.     super(0, 0, 384, 56)
  436.     self.contents.draw_text(-10, -5, 384, 32, "欢迎", 1)
  437.   end
  438.   #--------------------------------------------------------------------------
  439.   # ● 设置
  440.   #--------------------------------------------------------------------------
  441.   def set(string)
  442.     self.contents.clear
  443.     self.contents.draw_text(-10, -5, 384, 32, string, 1)
  444.   end
  445. end

  446. #==============================================================================
  447. # ■ Window_ByzNumber
  448. #==============================================================================

  449. class Window_ByzNumber < Window_Base
  450.   #--------------------------------------------------------------------------
  451.   # ● 初始化
  452.   #--------------------------------------------------------------------------
  453.   def initialize(x, y)
  454.     super(x, y, 304, 130)
  455.     @item = nil
  456.     @max = 1
  457.     @price = 0
  458.     @number = 1
  459.   end
  460.   #--------------------------------------------------------------------------
  461.   # ● 物品、最大个数、价格设定
  462.   #--------------------------------------------------------------------------
  463.   def set(item, max, price)
  464.     @item = item
  465.     @max = max
  466.     @price = price
  467.     @number = 1
  468.     refresh
  469.   end
  470.   #--------------------------------------------------------------------------
  471.   # ● 取得数量
  472.   #--------------------------------------------------------------------------
  473.   def number
  474.     return @number
  475.   end
  476.   #--------------------------------------------------------------------------
  477.   # ● 取得总价格
  478.   #--------------------------------------------------------------------------
  479.   def price
  480.     return @price * @number
  481.   end
  482.   #--------------------------------------------------------------------------
  483.   # ● 刷新
  484.   #--------------------------------------------------------------------------
  485.   def refresh
  486.     y = 5
  487.     self.contents.clear
  488.     draw_item_name(@item, 0, y)
  489.     self.contents.font.color = normal_color
  490.     self.contents.draw_text(212, y, 20, WLH, "×")
  491.     self.contents.draw_text(248, y, 20, WLH, @number, 2)
  492.     self.cursor_rect.set(244, y, 28, WLH)
  493.     self.contents.draw_text(0, y + WLH * 2, 100, WLH, "所需金钱")
  494.     draw_currency_value(@price * @number, 4, y + WLH * 2, 264)
  495.     self.contents.draw_text(0, y + WLH * 3, 100, WLH, "现有金钱")
  496.     draw_currency_value($game_party.gold, 4, y + WLH * 3, 264)
  497.   end
  498.   #--------------------------------------------------------------------------
  499.   # ● 更新(再定义)
  500.   #--------------------------------------------------------------------------
  501.   def update
  502.     super
  503.     if self.active
  504.       last_number = @number
  505.       if Input.repeat?(Input::RIGHT) and @number < @max
  506.         @number += 1
  507.       end
  508.       if Input.repeat?(Input::LEFT) and @number > 1
  509.         @number -= 1
  510.       end
  511.       if Input.repeat?(Input::UP) and @number < @max
  512.         @number = [@number + 10, @max].min
  513.       end
  514.       if Input.repeat?(Input::DOWN) and @number > 1
  515.         @number = [@number - 10, 1].max
  516.       end
  517.       if @number != last_number
  518.         Sound.play_cursor
  519.         refresh
  520.       end
  521.     end
  522.   end
  523. end
  524. #==========================================================================
  525. #  Scene_Byz_Bank
  526. #==========================================================================
  527. class Scene_Byz_Bank < Scene_Base
  528.   #======== 初始化 ========
  529.   def initialize
  530.     @command = []
  531.     @currency_exchanges_1 = -1              # 需要兑换的货币种类
  532.     @currency_exchanges_2 = -1
  533.     @numbers = 0
  534.     @command_number = []
  535.     @command_numbers = []
  536.     @type = -1                              # 窗口刷新标志
  537.   end
  538.   #======== 主题 ========
  539.   #--------------------------------------------------------------------------
  540.   # ● 开始处理
  541.   #--------------------------------------------------------------------------
  542.   def start
  543.     super
  544.     create_menu_background
  545.     create_name
  546.     create_warehouse_command
  547.     @gold_window = Window_Gold.new(384, 0)
  548.     draw_loli_bitmap if $game_system.bank_loli_bitmap != ""
  549.     draw_back_bitmap if $game_system.back_bank_bitmap != ""
  550.   end
  551.   #--------------------------------------------------------------------------
  552.   # ● 结束处理
  553.   #--------------------------------------------------------------------------
  554.   def terminate
  555.     super
  556.     dispose_menu_background
  557.     dispose_loli_bitmap if $game_system.bank_loli_bitmap != ""
  558.     dispose_back_bitmap if $game_system.back_bank_bitmap != ""
  559.     @warehouse_obj_command_window.dispose if @warehouse_obj_command_window != nil
  560.     @name_window.dispose
  561.     @gold_window.dispose
  562.     @warehouse_command_window.dispose
  563.   end
  564.   #--------------------------------------------------------------------------
  565.   # ● 刷新
  566.   #--------------------------------------------------------------------------
  567.   def update
  568.     super
  569.     @warehouse_command_window.update if @warehouse_command_window.active
  570.     @warehouse_window.update if @warehouse_window != nil and @warehouse_window.active
  571.     @warehouse_input.update if @warehouse_input != nil
  572.     if @warehouse_command_window.active
  573.       update_warehouse_command
  574.     elsif @warehouse_input != nil
  575.       update_warehouse_input(@type)
  576.     elsif @warehouse_window != nil and @warehouse_window.active
  577.       update_warehouse_window
  578.     end
  579.   end
  580.   #======== //end主题 ========   
  581.   #========    创建   ========
  582.   #--------------------------------------------------------------------------
  583.   # ● 创建仓库选项
  584.   #--------------------------------------------------------------------------
  585.   def create_warehouse_command
  586.     s1 = Byz_Vocab::WAREHOUSE_SAVING
  587.     s2 = Byz_Vocab::WAREHOUSE_TAKING
  588.     s3 = Byz_Vocab::CANCEN
  589.     @warehouse_command_window = Window_Command.new(384,[s1, s2, s3], 3)
  590.     @warehouse_command_window.x = 0
  591.     @warehouse_command_window.y = 55
  592.     @warehouse_command_window.index = 0
  593.     @warehouse_command_window.active = true
  594.     @warehouse_command_window.visible = true
  595.   end
  596.   #--------------------------------------------------------------------------
  597.   # ● 创建仓库子选项
  598.   #--------------------------------------------------------------------------  
  599.   def create_warehouse_type
  600.     @warehouse_obj_command_window = Window_Base.new(0,110, 100, 130)
  601.     @warehouse_obj_command_window.visible = true
  602.     @warehouse_obj_command_window_index = 0
  603.     @warehouse_obj_command_window.contents.draw_text(-5, -27, 78, 100, "物品", 1)
  604.     @warehouse_obj_command_window.contents.draw_text(-5, 0, 78, 100, "武器", 1)
  605.     @warehouse_obj_command_window.contents.draw_text(-5, 27, 78, 100, "防具", 1)
  606.   end
  607.   #--------------------------------------------------------------------------
  608.   # ● 创建银行名字
  609.   #--------------------------------------------------------------------------
  610.   def create_name
  611.     @name_window = Window_Byz_Name.new
  612.   end
  613.   #--------------------------------------------------------------------------
  614.   # ● 显示LOLI图片
  615.   #--------------------------------------------------------------------------
  616.   def draw_loli_bitmap
  617.     @bitmap_viewport = Viewport.new(384, 55, 544, 416)
  618.     @loli_bitmap = Sprite.new(@bitmap_viewport)
  619.     @loli_bitmap.bitmap = Bitmap.new("Graphics/Pictures/#{$game_system.bank_loli_bitmap}")
  620.     @bitmap_viewport.z = 1
  621.   end
  622.   #--------------------------------------------------------------------------
  623.   # ● 显示背景图片
  624.   #--------------------------------------------------------------------------
  625.   def draw_back_bitmap
  626.     @back_bitmap = Sprite.new
  627.     @back_bitmap.bitmap = Bitmap.new("Graphics/Pictures/#{$game_system.back_bank_bitmap}")
  628.     @back_bitmap.x = @back_bitmap.y = 0
  629.     @back_bitmap.z = 0
  630.   end
  631.   #--------------------------------------------------------------------------
  632.   # ● 显示箭头图片
  633.   #--------------------------------------------------------------------------
  634.   def show_arrow_two
  635.     @arrow_two = Sprite.new
  636.     @arrow_two.bitmap = Bitmap.new("Graphics/Pictures/#{Byz_Vocab::ARROW_TWO}")
  637.     @arrow_two.x = 0
  638.     @arrow_two.y = 130
  639.     @arrow_two.z = 500
  640.   end
  641.   #--------------------------------------------------------------------------
  642.   # ● 显示提示窗口
  643.   #--------------------------------------------------------------------------
  644.   def show_window(string)
  645.     re = string.split(//)
  646.     w = Window_Base.new(150, 100, re.size * 32 + 64, 64)
  647.     w.contents = Bitmap.new(w.width - 32, w.height - 32)
  648.     w.contents.font.color = w.text_color(2)
  649.     w.contents.draw_text(0, -15, w.width, w.height, string)
  650.     for i in 0..10
  651.       w.open
  652.       w.update
  653.       Graphics.update
  654.     end
  655.     for i in 0..30
  656.       Graphics.update
  657.     end
  658.     for i in 0..20
  659.       w.close
  660.       w.update
  661.       Graphics.update
  662.     end
  663.     w.dispose
  664.   end
  665.   #======== //end创建 ========
  666.   #========    更新   ========
  667.   #--------------------------------------------------------------------------
  668.   # ● 仓库总窗口刷新
  669.   #--------------------------------------------------------------------------
  670.   def update_warehouse_command
  671.     if Input.trigger?(Input::B)
  672.       $scene = Scene_Map.new
  673.     elsif Input.trigger?(Input::C)
  674.       Sound.play_decision
  675.       case @warehouse_command_window.index
  676.       when 0
  677.         create_warehouse_type
  678.         show_arrow_two
  679.         @warehouse_window = Window_Warehouse.new(@warehouse_obj_command_window_index, 0)
  680.         @warehouse_window.active = true
  681.         @bitmap_viewport.rect.set(384, 55, 544, 257)
  682.         @type = 0
  683.         @warehouse_command_window.active = false
  684.         @warehouse_command_window.index = -1
  685.         @name_window.set("存物品")
  686.       when 1
  687.         create_warehouse_type
  688.         show_arrow_two
  689.         @warehouse_window = Window_Warehouse.new(@warehouse_obj_command_window_index, 1)
  690.         @warehouse_window.active = true
  691.         @bitmap_viewport.rect.set(384, 55, 544, 257)
  692.         @type = 1
  693.         @warehouse_command_window.active = false
  694.         @warehouse_command_window.index = -1
  695.         @name_window.set("取物品")
  696.       when 2
  697.         $scene = Scene_Map.new
  698.       end
  699.     end
  700.   end
  701.   #--------------------------------------------------------------------------
  702.   # ● 物品窗口刷新
  703.   #--------------------------------------------------------------------------  
  704.   def update_warehouse_window
  705.     if Input.trigger?(Input::R) or Input.trigger?(Input::RIGHT)
  706.       Sound.play_decision
  707.       @warehouse_obj_command_window_index += 1
  708.       @warehouse_obj_command_window_index %= 3
  709.       @warehouse_window.kind = @warehouse_obj_command_window_index
  710.       @warehouse_window.index = 0
  711.       @arrow_two.y = 130 + @warehouse_obj_command_window_index * 32
  712.     elsif Input.trigger?(Input::L) or Input.trigger?(Input::LEFT)
  713.       Sound.play_decision
  714.       @warehouse_obj_command_window_index -= 1
  715.       @warehouse_obj_command_window_index %= 3
  716.       @warehouse_window.kind = @warehouse_obj_command_window_index
  717.       @item_index = @warehouse_window.check
  718.       @warehouse_window.index = 0
  719.       @arrow_two.y = 130 + @warehouse_obj_command_window_index * 32
  720.     elsif Input.trigger?(Input::C)
  721.       Sound.play_decision
  722.       @item_index = @warehouse_window.check
  723.       @last_index = @warehouse_window.index
  724.       if @item_index == nil
  725.         return
  726.       end
  727.       @warehouse_window.active = false
  728.       @warehouse_input = Window_ByzNumber.new(100, 100)
  729.       @warehouse_input.active = true
  730.       if @type == 0
  731.         price = Byz_Vocab::PRICES
  732.         if @warehouse_obj_command_window_index == 0
  733.           @warehouse_input.set($data_items[@item_index], $game_party.item_number($data_items[@item_index]), price)
  734.         elsif @warehouse_obj_command_window_index == 1
  735.           @warehouse_input.set($data_weapons[@item_index], $game_party.item_number($data_weapons[@item_index]), price)
  736.         elsif @warehouse_obj_command_window_index == 2
  737.           @warehouse_input.set($data_armors[@item_index], $game_party.item_number($data_armors[@item_index]), price)
  738.         end
  739.       else
  740.         if @warehouse_obj_command_window_index == 0
  741.           @warehouse_input.set($data_items[@item_index], $game_party.warehouse[0][@item_index], 0)
  742.         elsif @warehouse_obj_command_window_index == 1
  743.           @warehouse_input.set($data_weapons[@item_index], $game_party.warehouse[1][@item_index], 0)
  744.         elsif @warehouse_obj_command_window_index == 2
  745.           @warehouse_input.set($data_armors[@item_index], $game_party.warehouse[2][@item_index], 0)
  746.         end
  747.       end
  748.     elsif Input.trigger?(Input::B)
  749.       @warehouse_obj_command_window.dispose
  750.       @warehouse_obj_command_window = nil
  751.       @arrow_two.bitmap.dispose
  752.       @arrow_two.dispose
  753.       @warehouse_window.dispose
  754.       @warehouse_window = nil
  755.       @warehouse_command_window.index = @type
  756.       @warehouse_command_window.active = true
  757.       @bitmap_viewport.rect.set(384, 55, 544, 416)
  758.       @name_window.set("欢迎")
  759.     end
  760.   end
  761.   
  762.   def update_warehouse_input(type)
  763.     if Input.trigger?(Input::B)
  764.       @warehouse_obj_command_window.dispose
  765.       @warehouse_obj_command_window = nil
  766.       @arrow_two.bitmap.dispose
  767.       @arrow_two.dispose
  768.       create_warehouse_type
  769.       show_arrow_two
  770.       @warehouse_window.dispose
  771.       @warehouse_window = Window_Warehouse.new(@warehouse_obj_command_window_index, @type)
  772.       @warehouse_window.active = true
  773.       @warehouse_window.index = @last_index
  774.       @warehouse_input.dispose if @warehouse_input != nil
  775.       @warehouse_input = nil
  776.       @warehouse_window.active = true
  777.     elsif Input.trigger?(Input::C)
  778.       Sound.play_decision
  779.       @item_index = @warehouse_window.check
  780.       if @item_index == nil
  781.         return
  782.       end
  783.       @numbers = @warehouse_input.number
  784.       price = @warehouse_input.price
  785.       if type == 0
  786.         if @warehouse_obj_command_window_index == 0
  787.           if price < $game_party.gold
  788.             $game_party.lose_item($data_items[@item_index], @numbers)
  789.             if $game_party.warehouse[0][@item_index] == nil
  790.               $game_party.warehouse[0][@item_index] = 0
  791.             end
  792.             $game_party.lose_gold(@warehouse_input.price)
  793.             $game_party.warehouse[0][@item_index] += @numbers
  794.             @warehouse_window.refresh_bool
  795.             @gold_window.refresh
  796.             input_to_command
  797.           else
  798.             show_window("金钱不足")
  799.             return
  800.           end
  801.         elsif @warehouse_obj_command_window_index == 1
  802.           if price < $game_party.gold
  803.             $game_party.lose_item($data_weapons[@item_index], @numbers)
  804.             if $game_party.warehouse[1][@item_index] == nil
  805.               $game_party.warehouse[1][@item_index] = 0
  806.             end
  807.             $game_party.lose_gold(@warehouse_input.price)
  808.             $game_party.warehouse[1][@item_index] += @numbers
  809.             @warehouse_window.refresh_bool
  810.             @gold_window.refresh
  811.             input_to_command
  812.           else
  813.             show_window("金钱不足")
  814.             return
  815.           end
  816.         elsif @warehouse_obj_command_window_index == 2
  817.           if price < $game_party.gold
  818.             $game_party.lose_item($data_armors[@item_index], @numbers)
  819.             if $game_party.warehouse[2][@item_index] == nil
  820.               $game_party.warehouse[2][@item_index] = 0
  821.             end
  822.             $game_party.lose_gold(@warehouse_input.price)
  823.             $game_party.warehouse[2][@item_index] += @numbers
  824.             @warehouse_window.refresh_bool
  825.             @gold_window.refresh
  826.             input_to_command
  827.           else
  828.             show_window("金钱不足")
  829.             return
  830.           end
  831.         end
  832.       else
  833.         if @warehouse_obj_command_window_index == 0
  834.           if $game_party.warehouse[0][@item_index] == nil
  835.             input_to_command
  836.             return
  837.           end
  838.           if $game_party.warehouse[0][@item_index] <= @numbers
  839.             @numbers = $game_party.warehouse[0][@item_index]
  840.             $game_party.warehouse[0][@item_index] = nil
  841.           else
  842.             $game_party.warehouse[0][@item_index] -= @numbers
  843.           end
  844.           $game_party.gain_item($data_items[@item_index], @numbers)
  845.           @warehouse_window.refresh_bool
  846.           @gold_window.refresh
  847.           input_to_command
  848.         elsif @warehouse_obj_command_window_index == 1
  849.           if $game_party.warehouse[1][@item_index] == nil
  850.             @warehouse_window.refresh_bool
  851.             input_to_command
  852.             return
  853.           end
  854.           if $game_party.warehouse[1][@item_index] <= @numbers
  855.             @numbers = $game_party.warehouse[1][@item_index]
  856.             $game_party.warehouse[1][@item_index] = nil
  857.           else
  858.             $game_party.warehouse[1][@item_index] -= @numbers
  859.           end
  860.           $game_party.gain_item($data_weapons[@item_index], @numbers)
  861.           @warehouse_window.refresh_bool
  862.           @gold_window.refresh
  863.           input_to_command
  864.         elsif @warehouse_obj_command_window_index == 2
  865.           if $game_party.warehouse[2][@item_index] == nil
  866.             @warehouse_window.refresh_bool
  867.             input_to_command
  868.             return
  869.           end
  870.           if $game_party.warehouse[2][@item_index] <= @numbers
  871.             @numbers = $game_party.warehouse[2][@item_index]
  872.             $game_party.warehouse[2][@item_index] = nil
  873.           else
  874.             $game_party.warehouse[2][@item_index] -= @numbers
  875.           end
  876.           $game_party.gain_item($data_armors[@item_index], @numbers)
  877.           @warehouse_window.refresh_bool
  878.           @gold_window.refresh
  879.           input_to_command
  880.         end
  881.       end
  882.     end
  883.   end
  884.   #======== //end更新 ========
  885.   #========    切换   ========
  886.   def input_to_command
  887.     @warehouse_input.dispose
  888.     @warehouse_input = nil
  889.     @warehouse_window.refresh
  890.     @warehouse_window.active = true
  891.   end
  892.   #======== //end切换 ========
  893.   #========    释放   ========
  894.   #--------------------------------------------------------------------------
  895.   # ● 释放LOLI图片
  896.   #--------------------------------------------------------------------------
  897.   def dispose_loli_bitmap
  898.     @loli_bitmap.bitmap.dispose
  899.     @loli_bitmap.dispose
  900.   end
  901.   #--------------------------------------------------------------------------
  902.   # ● 释放背景图片
  903.   #--------------------------------------------------------------------------
  904.   def dispose_back_bitmap
  905.     @back_bitmap.bitmap.dispose
  906.     @back_bitmap.dispose
  907.   end
  908.   #======== //end释放 ========
  909. end
复制代码

Lv3.寻梦者

梦石
0
星屑
1449
在线时间
1592 小时
注册时间
2010-11-6
帖子
3193

贵宾

2
发表于 2012-6-2 15:18:17 | 只看该作者
你可以试试这个:
  1. #==============================================================================
  2. #
  3. #  仓库ver1.1
  4. #
  5. #                         汉化 by 约束
  6. #
  7. #    RPG中存放多余物品的仓库。
  8. #    本脚本与黑狮子的脚本相似
  9. #    参考于MQ0_PartyReserve所做。
  10. #   
  11. #    使用方法
  12. #    事件中的「脚本」里填入reserve_system即可启动此脚本。
  13. #
  14. #    不可存放物品
  15. #    ・不想可以存放事件/剧情所需物品时
  16. #      在物品的备注栏中填入  非存放 即可
  17. #      如此即可使物品不可存入仓库。
  18. #
  19. #    另外、为能使用TYPE74RX-T様的「限定特定物平的所持数上限」脚本
  20. #    而写了专门应对的方法
  21. #    如果有用到以上所述脚本、请使RX_T_ITEM为true状态
  22. #
  23. #==============================================================================

  24. module BBL_RESERVE_SYSTEM
  25. #==============================================================================
  26. # 设定项目开始
  27. #==============================================================================

  28.   # 如果不希望保管物品根据以下范畴区分的情况时 请填入false
  29.   ITEM_DISCRETION = true

  30.   # ITEM_DISCRETION在true的状态时 请在以下填入范畴名
  31.   # 从左开始依次为物品、武器、防具、金钱(顺序不可改变)
  32.   # ※如果不希望有金钱保管功能时 将金钱从范畴内消去
  33.   #   例) ["物品", "武器", "防具"]
  34.   DISCRETION_NAME = ["物品", "武器", "防具", "金钱"]

  35.   # 操作说明文
  36.   # 如果不需要时、消除""内文字即可
  37.   COMMAND_EXPLANATION = "空格:分别存入  D:全部存入"

  38.   # 使用仓库时的按键
  39.   RESERVE_KEY = Input::C      # 分别存入
  40.   RESERVE_ALL_KEY = Input::Z  # 全部存入

  41.   # 金钱选项窗口的用语
  42.   # 从左开始依次为保存和提取
  43.   GOLD_COMMAND_NAME = ["保存", "取出"]

  44.   # 所持金钱的用语
  45.   GOLD_NAME = "现有金额"

  46.   # 保存金钱的用语
  47.   RESERVE_GOLD_NAME = "存储金额"

  48.   # 使用了TYPE74RX-T様的「限定特定物平的所持数上限」脚本
  49.   # 请在以下改为true即可
  50.   RX_T_ITEM = false

  51. #==============================================================================
  52. # 设定项目完毕
  53. #==============================================================================
  54. end

  55. $imported = {} if $imported == nil

  56. class Game_Party
  57.   alias bbl_initialize initialize
  58.   #--------------------------------------------------------------------------
  59.   # ○ 定义实例变量 (追加定义)
  60.   #--------------------------------------------------------------------------
  61.   attr_reader   :keep_gold                     # 保存金钱
  62.   #--------------------------------------------------------------------------
  63.   # ● 初期化对象
  64.   #--------------------------------------------------------------------------
  65.   def initialize
  66.     bbl_initialize
  67.     @keep_items = {}       # 保管品 hash (物品 ID)
  68.     @keep_weapons = {}     # 保管品 hash (武器 ID)
  69.     @keep_armors = {}      # 保管品 hash (防具 ID)
  70.     @keep_gold = 0         # 保管金钱
  71.   end
  72.   #--------------------------------------------------------------------------
  73.   # ○ 获取保存物品的排序
  74.   #--------------------------------------------------------------------------
  75.   def keeping_items
  76.     result = []
  77.     for i in @keep_items.keys.sort
  78.       result.push($data_items[i]) if @keep_items[i] > 0
  79.     end
  80.     for i in @keep_weapons.keys.sort
  81.       result.push($data_weapons[i]) if @keep_weapons[i] > 0
  82.     end
  83.     for i in @keep_armors.keys.sort
  84.       result.push($data_armors[i]) if @keep_armors[i] > 0
  85.     end
  86.     return result
  87.   end
  88.   #--------------------------------------------------------------------------
  89.   # ○ 获取保存物品的所持数量
  90.   #--------------------------------------------------------------------------
  91.   def keeping_item_number(item)
  92.     case item
  93.     when RPG::Item
  94.       number = @keep_items[item.id]
  95.     when RPG::Weapon
  96.       number = @keep_weapons[item.id]
  97.     when RPG::Armor
  98.       number = @keep_armors[item.id]
  99.     end
  100.     return number == nil ? 0 : number
  101.   end
  102.   #--------------------------------------------------------------------------
  103.   # ○ 保存物品的增加  (减少)
  104.   #     item          : 物品
  105.   #     n             : 个数
  106.   #--------------------------------------------------------------------------
  107.   def gain_keeping_item(item, n)
  108.     number = keeping_item_number(item)
  109.     case item
  110.     when RPG::Item
  111.       @keep_items[item.id] = [[number + n, 0].max, 99].min
  112.     when RPG::Weapon
  113.       @keep_weapons[item.id] = [[number + n, 0].max, 99].min
  114.     when RPG::Armor
  115.       @keep_armors[item.id] = [[number + n, 0].max, 99].min
  116.     end
  117.   end
  118.   #--------------------------------------------------------------------------
  119.   # ○ 保存物品的减少
  120.   #     item          : 物品
  121.   #     n             : 个数
  122.   #--------------------------------------------------------------------------
  123.   def lose_keeping_item(item, n)
  124.     gain_keeping_item(item, -n)
  125.   end
  126.   #--------------------------------------------------------------------------
  127.   # ● 保管金额的增加 (减少)
  128.   #     n : 金额
  129.   #--------------------------------------------------------------------------
  130.   def gain_keeping_gold(n)
  131.     @keep_gold = [[@keep_gold + n, 0].max, 9999999].min
  132.   end
  133.   #--------------------------------------------------------------------------
  134.   # ● 保管金额的减少
  135.   #     n : 金额
  136.   #--------------------------------------------------------------------------
  137.   def lose_keeping_gold(n)
  138.     gain_keeping_gold(-n)
  139.   end
  140. end


  141. #==============================================================================
  142. # ■ Game_Interpreter
  143. #==============================================================================
  144. class Game_Interpreter
  145.   #--------------------------------------------------------------------------
  146.   # ● 呼出仓库
  147.   #--------------------------------------------------------------------------
  148.   def reserve_system
  149.     $scene = Scene_Reserve.new
  150.     return true
  151.   end
  152. end

  153. class Scene_Reserve < Scene_Base
  154.   #--------------------------------------------------------------------------
  155.   # ● 开始处理
  156.   #--------------------------------------------------------------------------
  157.   def start
  158.     super
  159.     create_menu_background
  160.     @not_gold = true if BBL_RESERVE_SYSTEM::DISCRETION_NAME.size < 4
  161.     if BBL_RESERVE_SYSTEM::ITEM_DISCRETION
  162.       @item_window = Window_Reserve_main.new(0, 112, 272, 248)
  163.       @reserve_window = Window_Reserve.new(272, 112, 272, 248)
  164.     else
  165.       @item_window = Window_Reserve_main.new(0, 56, 272, 304)
  166.       @reserve_window = Window_Reserve.new(272, 56, 272, 304)
  167.     end
  168.     @help_window = Window_Help.new
  169.     @item_window.help_window = @help_window
  170.     @reserve_window.help_window = @help_window
  171.     @command_window = Window_ReserveCommand.new(544, BBL_RESERVE_SYSTEM::DISCRETION_NAME,
  172.     BBL_RESERVE_SYSTEM::DISCRETION_NAME.size, 1, 4)
  173.     @command_window.y = 56
  174.     @command_window.active = true
  175.     @gold_command_window = Window_ReserveCommand.new(192, BBL_RESERVE_SYSTEM::GOLD_COMMAND_NAME, 1, 0)
  176.     @gold_command_window.opacity = 0
  177.     @gold_command_window.x = 32
  178.     @gold_command_window.y = @item_window.y + 64
  179.     @gold_command_window.visible = false
  180.     @item_window.active = false
  181.     @reserve_window.active = false
  182.     @item_window.index = -1
  183.     @reserve_window.index = -1
  184.     @item_cursor = 0
  185.     @reserve_cursor = 0
  186.     @item_window.mode = 1
  187.     @reserve_window.mode = 1
  188.     @number_window = Window_GoldInput.new
  189.     @number_window.visible = false
  190.     @number_window.y = @gold_command_window.y + @gold_command_window.height
  191.     @gold_window = Window_HandGold.new(0, 416 - 56)
  192.     @gold_reserve_window = Window_ReserveGold.new(272, 416 - 56)
  193.     unless BBL_RESERVE_SYSTEM::ITEM_DISCRETION
  194.       @command_window.active = false
  195.       @command_window.visible = false
  196.       @item_window.index = 0
  197.       @item_window.active
  198.     end
  199.     if $imported["HelpExtension"]
  200.       adjust_window_size
  201.     else
  202.       adjust_gold_window_size
  203.     end
  204.   end
  205.   #--------------------------------------------------------------------------
  206.   # ● 完毕处理
  207.   #--------------------------------------------------------------------------
  208.   def terminate
  209.     super
  210.     dispose_menu_background
  211.     @item_window.dispose
  212.     @reserve_window.dispose
  213.     @command_window.dispose
  214.     @help_window.dispose
  215.     @gold_command_window.dispose
  216.     @gold_window.dispose
  217.     @gold_reserve_window.dispose
  218.     @number_window.dispose
  219.   end
  220.   #--------------------------------------------------------------------------
  221.   # ● 刷新画面
  222.   #--------------------------------------------------------------------------
  223.   def update
  224.     super
  225.     update_menu_background
  226.     @command_window.update if BBL_RESERVE_SYSTEM::ITEM_DISCRETION
  227.     if @item_window.index >= 0
  228.       @item_window.active = true
  229.       @reserve_window.active = false
  230.     elsif @reserve_window.index >= 0
  231.       @item_window.active = false
  232.       @reserve_window.active = true
  233.     end
  234.     if @command_window.active == true
  235.       command_selection
  236.     elsif @item_window.active == true
  237.       select_item
  238.     elsif @reserve_window.active == true
  239.       select_keeping_item
  240.     elsif @gold_command_window.active == true
  241.       select_gold_command
  242.     elsif @number_window.active == true
  243.       select_number
  244.     end
  245.     item_mode = @command_window.index + 1
  246.     if item_mode != @item_window.mode
  247.       @item_window.mode = item_mode
  248.     end
  249.     if item_mode != @reserve_window.mode
  250.       @reserve_window.mode = item_mode
  251.     end
  252.   end
  253.   #--------------------------------------------------------------------------
  254.   # ● 指令窗口选项的刷新
  255.   #--------------------------------------------------------------------------
  256.   def command_selection
  257.     @help_window.set_text(BBL_RESERVE_SYSTEM::COMMAND_EXPLANATION)
  258.     if Input.trigger?(Input::C)
  259.       if @command_window.index == 3
  260.       Sound.play_decision
  261.       @command_window.active = false
  262.       @gold_command_window.visible = true
  263.       @gold_command_window.active = true
  264.       @gold_command_window.index = 0
  265.       else
  266.       Sound.play_decision
  267.       @command_window.active = false
  268.       @item_window.active = true
  269.       @item_window.index = 0
  270.       end
  271.     elsif Input.trigger?(Input::B)
  272.       Sound.play_cancel
  273.       $scene = Scene_Map.new
  274.     end
  275.   end
  276.   #--------------------------------------------------------------------------
  277.   # ● 所持物品选项的刷新
  278.   #--------------------------------------------------------------------------
  279.   def select_item
  280.     @item_window.update
  281.     @reserve_window.update
  282.     if Input.repeat?(BBL_RESERVE_SYSTEM::RESERVE_KEY)
  283.       @item_window.gain_item
  284.       @item_window.refresh
  285.       @reserve_window.refresh
  286.         if @item_window.item == nil
  287.           @item_window.index -= 1 if @item_window.index > 0
  288.         end
  289.     elsif Input.repeat?(BBL_RESERVE_SYSTEM::RESERVE_ALL_KEY)
  290.       @item_window.gain_item_all
  291.       @item_window.refresh
  292.       @reserve_window.refresh
  293.       if @item_window.item == nil
  294.         @item_window.index -= 1 if @item_window.index > 0
  295.       end
  296.     elsif Input.trigger?(Input::B)
  297.       if BBL_RESERVE_SYSTEM::ITEM_DISCRETION
  298.         Sound.play_cancel
  299.         @item_window.active = false
  300.         @item_window.index = -1
  301.         @command_window.active = true
  302.       else
  303.         Sound.play_cancel
  304.         $scene = Scene_Map.new
  305.       end
  306.     elsif Input.trigger?(Input::RIGHT) or Input.trigger?(Input::LEFT)
  307.       Sound.play_cursor
  308.       @item_cursor = @item_window.index
  309.       @item_window.active = false
  310.       @reserve_window.active
  311.       @item_window.index = -1
  312.       @reserve_window.index = @reserve_cursor
  313.     end
  314.   end
  315.   #--------------------------------------------------------------------------
  316.   # ● 保管物品选项的刷新
  317.   #--------------------------------------------------------------------------
  318.   def select_keeping_item
  319.     @item_window.update
  320.     @reserve_window.update
  321.     if Input.repeat?(BBL_RESERVE_SYSTEM::RESERVE_KEY)
  322.       @reserve_window.reserve_item
  323.       @item_window.refresh
  324.       @reserve_window.refresh
  325.       if @reserve_window.item == nil
  326.         @reserve_window.index -= 1 if @reserve_window.index > 0
  327.       end
  328.     elsif Input.repeat?(BBL_RESERVE_SYSTEM::RESERVE_ALL_KEY)
  329.       @reserve_window.reserve_item_all
  330.       @item_window.refresh
  331.       @reserve_window.refresh
  332.       if @reserve_window.item == nil
  333.         @reserve_window.index -= 1 if @reserve_window.index > 0
  334.       end
  335.     elsif Input.trigger?(Input::B)
  336.       if BBL_RESERVE_SYSTEM::ITEM_DISCRETION
  337.         Sound.play_cancel
  338.         @reserve_window.active = false
  339.         @reserve_window.index = -1
  340.         @command_window.active = true
  341.       else
  342.         Sound.play_cancel
  343.         $scene = Scene_Map.new
  344.       end
  345.     elsif Input.trigger?(Input::RIGHT) or Input.trigger?(Input::LEFT)
  346.       Sound.play_cursor
  347.       @reserve_cursor = @reserve_window.index
  348.       @reserve_window.active = false
  349.       @item_window.active
  350.       @reserve_window.index = -1
  351.       @item_window.index = @item_cursor
  352.     end
  353.   end
  354.   #--------------------------------------------------------------------------
  355.   # ● 金钱指令窗口选项的刷新
  356.   #--------------------------------------------------------------------------
  357.   def select_gold_command
  358.     @gold_command_window.update
  359.     if Input.trigger?(Input::C)
  360.       Sound.play_decision
  361.       @gold_command_window.active = false
  362.       @gold_command_window.visible = false
  363.       @number_window.visible = true
  364.       @number_window.active = true
  365.       if @gold_command_window.index == 0
  366.         @number_window.mode = 0 # 存入
  367.         @number_window.x = 32
  368.       else
  369.         @number_window.mode = 1 # 提取
  370.         @number_window.x = 304
  371.       end
  372.     elsif Input.trigger?(Input::B)
  373.       Sound.play_cancel
  374.       @gold_command_window.active = false
  375.       @gold_command_window.visible = false
  376.       @command_window.active = true
  377.     end
  378.   end
  379.   #--------------------------------------------------------------------------
  380.   # ● 填写金额的刷新
  381.   #--------------------------------------------------------------------------
  382.   def select_number
  383.     @number_window.update
  384.     if Input.trigger?(Input::C)
  385.       if @number_window.mode == 0
  386.         if @number_window.number > $game_party.gold
  387.           Sound.play_buzzer
  388.           @number_window.number = $game_party.gold
  389.         else
  390.           Sound.play_decision
  391.           gold = @number_window.number
  392.           $game_party.lose_gold(gold)
  393.           $game_party.gain_keeping_gold(gold)
  394.           @number_window.number = 0
  395.           @gold_window.refresh
  396.           @gold_reserve_window.refresh
  397.         end
  398.       elsif @number_window.mode == 1
  399.         if @number_window.number > $game_party.keep_gold
  400.           Sound.play_buzzer
  401.           @number_window.number = $game_party.keep_gold
  402.         else
  403.           Sound.play_decision
  404.           gold = @number_window.number
  405.           $game_party.gain_gold(gold)
  406.           $game_party.lose_keeping_gold(gold)
  407.           @number_window.number = 0
  408.           @gold_window.refresh
  409.           @gold_reserve_window.refresh
  410.         end
  411.       end
  412.     elsif Input.trigger?(Input::B)
  413.       Sound.play_cancel
  414.       @number_window.visible = false
  415.       @number_window.active = false
  416.       @number_window.number = 0
  417.       @number_window.index = 6
  418.       @gold_command_window.visible = true
  419.       @gold_command_window.active = true
  420.     end
  421.   end
  422.   if $imported["HelpExtension"]
  423.   #--------------------------------------------------------------------------
  424.   # ● 调整窗口大小 用于KGC的扩张帮助窗口
  425.   #--------------------------------------------------------------------------
  426.   def adjust_window_size
  427.     @help_window.row_max = KGC::HelpExtension::ROW_MAX
  428.     @command_window.y = @help_window.height
  429.     @item_window.y = @command_window.height + @help_window.height
  430.     @reserve_window.y = @command_window.height + @help_window.height
  431.     sy = @help_window.height + @command_window.height + @gold_window.height
  432.     sy = @help_window.height + @command_window.height if @not_gold
  433.     @item_window.height = 416 - sy
  434.     @reserve_window.height = 416 - sy
  435.     @gold_command_window.y = @item_window.y
  436.     if @not_gold
  437.       @gold_window.visible = false
  438.       @gold_reserve_window.visible = false
  439.     end
  440.   end
  441.   end
  442.   #--------------------------------------------------------------------------
  443.   # ● 调整窗口大小
  444.   #--------------------------------------------------------------------------
  445.   def adjust_gold_window_size
  446.     sy = @help_window.height + @command_window.height + @gold_window.height
  447.     sy = @help_window.height + @command_window.height if @not_gold
  448.     @item_window.height = 416 - sy
  449.     @reserve_window.height = 416 - sy
  450.     if @not_gold
  451.       @gold_window.visible = false
  452.       @gold_reserve_window.visible = false
  453.     end
  454.   end
  455. end

  456. #==============================================================================
  457. # ■ Window_Reserve
  458. #------------------------------------------------------------------------------
  459. #  显示仓库中物品一览
  460. #==============================================================================

  461. class Window_Reserve < Window_Selectable
  462.   #--------------------------------------------------------------------------
  463.   # ● 定义实例变量
  464.   #--------------------------------------------------------------------------
  465.   attr_reader   :mode                     # 模式
  466.   #--------------------------------------------------------------------------
  467.   # ● 初期化对象
  468.   #     x      : 窗口的 X 坐标
  469.   #     y      : 窗口的 Y 坐标
  470.   #     width  : 窗口的宽度
  471.   #     height : 窗口的高度
  472.   #--------------------------------------------------------------------------
  473.   def initialize(x, y, width, height)
  474.     super(x, y, width, height)
  475.     @column_max = 1
  476.     self.index = -1
  477.     @mode = 0
  478.     @total = 0
  479.     @value = 0
  480.     refresh
  481.   end
  482.   #--------------------------------------------------------------------------
  483.   # ● 获取物品
  484.   #--------------------------------------------------------------------------
  485.   def item
  486.     return @data[self.index]
  487.   end
  488.   #--------------------------------------------------------------------------
  489.   # ● 刷新
  490.   #--------------------------------------------------------------------------
  491.   def refresh
  492.     @data = []
  493.     for item in $game_party.keeping_items
  494.       next unless include?(item)
  495.       @data.push(item)
  496.       if item.is_a?(RPG::Item) and item.id == $game_party.last_item_id
  497.         self.index = @data.size - 1
  498.       end
  499.     end
  500.     @data.push(nil) if include?(nil)
  501.     @item_max = @data.size
  502.     create_contents
  503.     for i in 0...@item_max
  504.       draw_item(i)
  505.     end
  506.   end
  507.   #--------------------------------------------------------------------------
  508.   # ● 项目的描画
  509.   #     index : 项目编号
  510.   #--------------------------------------------------------------------------
  511.   def draw_item(index)
  512.     rect = item_rect(index)
  513.     self.contents.clear_rect(rect)
  514.     item = @data[index]
  515.     if item != nil
  516.       number = $game_party.keeping_item_number(item)
  517.       enabled = enable?(item)
  518.       rect.width -= 4
  519.       draw_item_name(item, rect.x, rect.y, enabled)
  520.       self.contents.draw_text(rect, sprintf("%2d", number), 2)
  521.       self.contents.font.size = 14
  522.       rect.width -= 20
  523.       self.contents.draw_text(rect, "×", 2)
  524.       self.contents.font.size = 20
  525.     end
  526.   end
  527.   #--------------------------------------------------------------------------
  528.   # ● 刷新帮助文本
  529.   #--------------------------------------------------------------------------
  530.   def update_help
  531.     @help_window.set_text(item == nil ? "" : item.description)
  532.   end
  533.   #--------------------------------------------------------------------------
  534.   # ● 模式的设定
  535.   #     mode : 新模式
  536.   #--------------------------------------------------------------------------
  537.   def mode=(mode)
  538.     if @mode != mode
  539.       @mode = mode
  540.       refresh
  541.     end
  542.   end
  543.   #--------------------------------------------------------------------------
  544.   # ● 物品在许可状态时是否显示
  545.   #--------------------------------------------------------------------------
  546.   def enable?(item)
  547.     if BBL_RESERVE_SYSTEM::RX_T_ITEM
  548.     rx_limit = RX_T.get_numeric_of_system_word_in_sys_str(item, "所持可能数")
  549.       if rx_limit > 0
  550.         if $game_party.item_number(item) == rx_limit
  551.           return false
  552.         end
  553.       end
  554.     end
  555.     if $game_party.item_number(item) == 99
  556.       return false
  557.     else
  558.       return true
  559.     end
  560.   end
  561.   #--------------------------------------------------------------------------
  562.   # ● 物品是否存在于名单
  563.   #     item : 物品
  564.   #--------------------------------------------------------------------------
  565.   def include?(item)
  566.     if BBL_RESERVE_SYSTEM::ITEM_DISCRETION
  567.       case @mode
  568.       when 1    # 物品
  569.         return false unless item.is_a?(RPG::Item)
  570.       when 2    # 武器
  571.         return false unless item.is_a?(RPG::Weapon)
  572.       when 3    # 防具
  573.         return false unless item.is_a?(RPG::Armor)
  574.       when 4    # 金钱
  575.         return false
  576.       end
  577.       return true
  578.     else
  579.       return false if item == nil
  580.       if $game_temp.in_battle
  581.         return false unless item.is_a?(RPG::Item)
  582.       end
  583.       return true
  584.     end
  585.   end
  586.   #--------------------------------------------------------------------------
  587.   # ● 取出保管中物品
  588.   #--------------------------------------------------------------------------
  589.   def reserve_item
  590.     return if item == nil
  591.     if BBL_RESERVE_SYSTEM::RX_T_ITEM
  592.     rx_limit = RX_T.get_numeric_of_system_word_in_sys_str(item, "所持可能数")
  593.     end
  594.     return Sound.play_buzzer if $game_party.item_number(item) == 99
  595.     if rx_limit == 0
  596.       rx_limit = nil
  597.     end
  598.     if $game_party.item_number(item) == rx_limit
  599.         Sound.play_buzzer
  600.     else
  601.       Sound.play_use_item
  602.       $game_party.lose_keeping_item(item, 1)
  603.       $game_party.gain_item(item, 1)
  604.     end
  605.   end
  606.   #--------------------------------------------------------------------------
  607.   # ● 将保管中物品全部取出
  608.   #--------------------------------------------------------------------------
  609.   def reserve_item_all
  610.     return if item == nil
  611.     if BBL_RESERVE_SYSTEM::RX_T_ITEM
  612.       rx_limit = RX_T.get_numeric_of_system_word_in_sys_str(item, "所持可能数")
  613.     end
  614.     return Sound.play_buzzer if $game_party.item_number(item) == 99
  615.     if rx_limit == 0
  616.       rx_limit = nil
  617.     end
  618.     if $game_party.item_number(item) == rx_limit
  619.       Sound.play_buzzer
  620.     else
  621.       Sound.play_use_item
  622.       @total = $game_party.keeping_item_number(item) + $game_party.item_number(item)
  623.       if rx_limit != nil
  624.         if rx_limit > 0
  625.           if @total > rx_limit
  626.             @value = @total - rx_limit
  627.           end
  628.         end
  629.       else   
  630.           if @total > 99
  631.             @value = @total - 99
  632.           end
  633.       end
  634.       $game_party.gain_item(item, $game_party.keeping_item_number(item))
  635.       $game_party.lose_keeping_item(item, $game_party.keeping_item_number(item))
  636.       $game_party.gain_keeping_item(item, @value)
  637.       @total = 0
  638.       @value = 0
  639.     end
  640.   end
  641. end

  642. #==============================================================================
  643. # ■ Window_Reserve
  644. #------------------------------------------------------------------------------
  645. #  显示仓库中所持物品一览
  646. #==============================================================================

  647. class Window_Reserve_main < Window_Selectable
  648.   #--------------------------------------------------------------------------
  649.   # ● 定义实例变量
  650.   #--------------------------------------------------------------------------
  651.   attr_reader   :mode                     # 模式
  652.   #--------------------------------------------------------------------------
  653.   # ● 初期化对象
  654.   #     x      : 窗口的 X 坐标
  655.   #     y      : 窗口的 Y 坐标
  656.   #     width  : 窗口的宽度
  657.   #     height : 窗口的高度
  658.   #--------------------------------------------------------------------------
  659.   def initialize(x, y, width, height)
  660.     super(x, y, width, height)
  661.     @column_max = 1
  662.     self.index = -1
  663.     @mode = 0
  664.     @total = 0
  665.     @value = 0
  666.     refresh
  667.   end
  668.   #--------------------------------------------------------------------------
  669.   # ● 物品的获取
  670.   #--------------------------------------------------------------------------
  671.   def item
  672.     return @data[self.index]
  673.   end
  674.   #--------------------------------------------------------------------------
  675.   # ● 刷新
  676.   #--------------------------------------------------------------------------
  677.   def refresh
  678.     @data = []
  679.     for item in $game_party.items
  680.       next unless include?(item)
  681.       @data.push(item)
  682.       if item.is_a?(RPG::Item) and item.id == $game_party.last_item_id
  683.         self.index = @data.size - 1
  684.       end
  685.     end
  686.     @data.push(nil) if include?(nil)
  687.     @item_max = @data.size
  688.     create_contents
  689.     for i in 0...@item_max
  690.       draw_item(i)
  691.     end
  692.   end
  693.   #--------------------------------------------------------------------------
  694.   # ● 项目的描画
  695.   #     index : 项目编号
  696.   #--------------------------------------------------------------------------
  697.   def draw_item(index)
  698.     rect = item_rect(index)
  699.     self.contents.clear_rect(rect)
  700.     item = @data[index]
  701.     if item != nil
  702.       number = $game_party.item_number(item)
  703.       enabled = enable?(item)
  704.       rect.width -= 4
  705.       draw_item_name(item, rect.x, rect.y, enabled)
  706.       self.contents.draw_text(rect, sprintf("%2d", number), 2)
  707.       self.contents.font.size = 14
  708.       rect.width -= 20
  709.       self.contents.draw_text(rect, "×", 2)
  710.       self.contents.font.size = 20
  711.     end
  712.   end
  713.   #--------------------------------------------------------------------------
  714.   # ● 刷新帮助文本
  715.   #--------------------------------------------------------------------------
  716.   def update_help
  717.     @help_window.set_text(item == nil ? "" : item.description)
  718.   end
  719.   #--------------------------------------------------------------------------
  720.   # ● 模式的设定
  721.   #     mode : 新模式
  722.   #--------------------------------------------------------------------------
  723.   def mode=(mode)
  724.     if @mode != mode
  725.       @mode = mode
  726.       refresh
  727.     end
  728.   end
  729.   #--------------------------------------------------------------------------
  730.   # ● 物品在许可状态时是否显示
  731.   #--------------------------------------------------------------------------
  732.   def enable?(item)
  733.     if $game_party.keeping_item_number(item) == 99
  734.       return false
  735.     else
  736.       return true
  737.     end
  738.   end
  739.   #--------------------------------------------------------------------------
  740.   # ○ 物品是否存在于名单
  741.   #     item : 物品
  742.   #--------------------------------------------------------------------------
  743.   def include?(item)
  744.     if BBL_RESERVE_SYSTEM::ITEM_DISCRETION
  745.       case @mode
  746.       when 1    # 物品
  747.         return false unless item.is_a?(RPG::Item)
  748.         return false if item.note.include?("非存放")
  749.       when 2    # 武器
  750.         return false unless item.is_a?(RPG::Weapon)
  751.         return false if item.note.include?("非存放")
  752.       when 3    # 防具
  753.         return false unless item.is_a?(RPG::Armor)
  754.         return false if item.note.include?("非存放")
  755.       when 4    # 金钱
  756.         return false
  757.       end
  758.       return true
  759.     else
  760.       return false if item == nil
  761.       if $game_temp.in_battle
  762.         return false unless item.is_a?(RPG::Item)
  763.       end
  764.       return false if item.note.include?("非存放")
  765.       return true
  766.     end
  767.   end
  768.   #--------------------------------------------------------------------------
  769.   # ● 所持有物品的保存
  770.   #--------------------------------------------------------------------------
  771.   def gain_item
  772.     return if item == nil
  773.     if $game_party.keeping_item_number(item) == 99
  774.       Sound.play_buzzer
  775.     else
  776.       Sound.play_use_item
  777.       $game_party.gain_keeping_item(item, 1)
  778.       $game_party.lose_item(item, 1)
  779.     end
  780.   end
  781.   #--------------------------------------------------------------------------
  782.   # ● 所持有物品全部保存
  783.   #--------------------------------------------------------------------------
  784.   def gain_item_all
  785.     return if item == nil
  786.     if $game_party.keeping_item_number(item) == 99
  787.       Sound.play_buzzer
  788.     else
  789.       Sound.play_use_item
  790.       @total = $game_party.keeping_item_number(item) + $game_party.item_number(item)
  791.         if @total > 99
  792.           @value = @total - 99
  793.         end
  794.       $game_party.gain_keeping_item(item, $game_party.item_number(item))
  795.       $game_party.lose_item(item, $game_party.item_number(item))
  796.       $game_party.gain_item(item, @value)
  797.       @total = 0
  798.       @value = 0
  799.     end
  800.   end
  801. end

  802. #==============================================================================
  803. # ■ Window_GoldInput
  804. #------------------------------------------------------------------------------
  805. #   用于填写所持金钱的窗口。
  806. #==============================================================================

  807. class Window_GoldInput < Window_Base
  808.   #--------------------------------------------------------------------------
  809.   # ● 定义实例变量
  810.   #--------------------------------------------------------------------------
  811.   attr_reader   :mode                     # 模式
  812.   attr_accessor :index                    # 索引
  813.   #--------------------------------------------------------------------------
  814.   # ● 初期化对象
  815.   #     digits_max : 行数
  816.   #--------------------------------------------------------------------------
  817.   def initialize
  818.     super(32, 208, 544, 64)
  819.     @number = 0
  820.     @digits_max = 7
  821.     @index = @digits_max - 1
  822.     @mode = 0
  823.     self.opacity = 0
  824.     self.active = false
  825.     self.z += 9999
  826.     refresh
  827.     update_cursor
  828.   end
  829.   #--------------------------------------------------------------------------
  830.   # ● 数值的获取
  831.   #--------------------------------------------------------------------------
  832.   def number
  833.     return @number
  834.   end
  835.   #--------------------------------------------------------------------------
  836.   # ● 模式的获取
  837.   #    0:保存 1:提取
  838.   #--------------------------------------------------------------------------
  839.   def mode=(mode)
  840.     @mode = mode
  841.     return @mode
  842.   end
  843.   #--------------------------------------------------------------------------
  844.   # ● 数值的设定
  845.   #     number : 新数值
  846.   #--------------------------------------------------------------------------
  847.   def number=(number)
  848.     @number = [[number, 0].max, 10 ** @digits_max - 1].min
  849.     refresh
  850.   end
  851.   #--------------------------------------------------------------------------
  852.   # ● 行数的获取
  853.   #--------------------------------------------------------------------------
  854.   def digits_max
  855.     return @digits_max
  856.   end
  857.   #--------------------------------------------------------------------------
  858.   # ● 行数的设定
  859.   #     digits_max : 新行数
  860.   #--------------------------------------------------------------------------
  861.   def digits_max=(digits_max)
  862.     @digits_max = digits_max
  863.     refresh
  864.   end
  865.   #--------------------------------------------------------------------------
  866.   # ● 光标向右移动
  867.   #     wrap : 可以往复循环移动
  868.   #--------------------------------------------------------------------------
  869.   def cursor_right(wrap)
  870.     if @index < @digits_max - 1 or wrap
  871.       @index = (@index + 1) % @digits_max
  872.     end
  873.   end
  874.   #--------------------------------------------------------------------------
  875.   # ● 光标向左移动
  876.   #     wrap : 可以往复循环移动
  877.   #--------------------------------------------------------------------------
  878.   def cursor_left(wrap)
  879.     if @index > 0 or wrap
  880.       @index = (@index + @digits_max - 1) % @digits_max
  881.     end
  882.   end
  883.   #--------------------------------------------------------------------------
  884.   # ● 刷新画面
  885.   #--------------------------------------------------------------------------
  886.   def update
  887.     super
  888.     if self.active
  889.       if Input.repeat?(Input::UP) or Input.repeat?(Input::DOWN)
  890.         Sound.play_cursor
  891.         place = 10 ** (@digits_max - 1 - @index)
  892.         n = @number / place % 10
  893.         @number -= n * place
  894.         n = (n + 1) % 10 if Input.repeat?(Input::UP)
  895.         n = (n + 9) % 10 if Input.repeat?(Input::DOWN)
  896.         @number += n * place
  897.         refresh
  898.       end
  899.       last_index = @index
  900.       if Input.repeat?(Input::RIGHT)
  901.         if @index == @digits_max - 1
  902.           Sound.play_cursor
  903.           if @mode == 0
  904.             if @number == $game_party.gold
  905.               @number = 0
  906.             else
  907.               @number = $game_party.gold
  908.             end
  909.           elsif @mode == 1
  910.             if @number == $game_party.keep_gold
  911.               @number = 0
  912.             else
  913.               @number = $game_party.keep_gold
  914.             end
  915.           end
  916.           refresh
  917.         else
  918.           cursor_right(Input.trigger?(Input::RIGHT))
  919.         end
  920.       end
  921.       if Input.repeat?(Input::LEFT)
  922.         if @index == 0
  923.           Sound.play_cursor
  924.           if @mode == 0
  925.             if @number == $game_party.gold
  926.               @number = 0
  927.             else
  928.               @number = $game_party.gold
  929.             end
  930.           elsif @mode == 1
  931.             if @number == $game_party.keep_gold
  932.               @number = 0
  933.             else
  934.               @number = $game_party.keep_gold
  935.             end
  936.           end
  937.           refresh
  938.         else
  939.           cursor_left(Input.trigger?(Input::LEFT))
  940.         end
  941.       end
  942.       if @index != last_index
  943.         Sound.play_cursor
  944.       end
  945.       update_cursor
  946.     end
  947.   end
  948.   #--------------------------------------------------------------------------
  949.   # ● 刷新
  950.   #--------------------------------------------------------------------------
  951.   def refresh
  952.     self.contents.clear
  953.     self.contents.font.color = normal_color
  954.     s = sprintf("%0*d", @digits_max, @number)
  955.     for i in 0...@digits_max
  956.       self.contents.draw_text(24 + i * 16, 0, 16, WLH, s[i,1], 1)
  957.     end
  958.     self.contents.font.color = system_color
  959.     self.contents.draw_text(24 + (i + 1) * 16, 0, 16, WLH, Vocab::gold)
  960.   end
  961.   #--------------------------------------------------------------------------
  962.   # ● 光标的刷新
  963.   #--------------------------------------------------------------------------
  964.   def update_cursor
  965.     self.cursor_rect.set(24 + @index * 16, 0, 16, WLH)
  966.   end
  967. end

  968. #==============================================================================
  969. # ■ Window_ReserveGold
  970. #------------------------------------------------------------------------------
  971. #  显示保存金额的窗口。
  972. #==============================================================================

  973. class Window_ReserveGold < Window_Base
  974.   #--------------------------------------------------------------------------
  975.   # ● 初期化对象
  976.   #     x : 窗口的 X 坐标
  977.   #     y : 窗口的 Y 坐标
  978.   #--------------------------------------------------------------------------
  979.   def initialize(x, y)
  980.     super(x, y, 272, WLH + 32)
  981.     refresh
  982.   end
  983.   #--------------------------------------------------------------------------
  984.   # ● 刷新
  985.   #--------------------------------------------------------------------------
  986.   def refresh
  987.     self.contents.clear
  988.     draw_currency_value($game_party.keep_gold, 104, 0, 120)
  989.     self.contents.font.color = system_color
  990.     self.contents.draw_text(16, 0, 120, WLH, BBL_RESERVE_SYSTEM::RESERVE_GOLD_NAME)
  991.   end
  992. end

  993. #==============================================================================
  994. # ■ Window_HandGold
  995. #------------------------------------------------------------------------------
  996. #  显示所持金额的窗口。
  997. #==============================================================================

  998. class Window_HandGold < Window_Base
  999.   #--------------------------------------------------------------------------
  1000.   # ● 初期化对象
  1001.   #     x : 窗口的 X 坐标
  1002.   #     y : 窗口的 Y 坐标
  1003.   #--------------------------------------------------------------------------
  1004.   def initialize(x, y)
  1005.     super(x, y, 272, WLH + 32)
  1006.     refresh
  1007.   end
  1008.   #--------------------------------------------------------------------------
  1009.   # ● 刷新
  1010.   #--------------------------------------------------------------------------
  1011.   def refresh
  1012.     self.contents.clear
  1013.     draw_currency_value($game_party.gold, 104, 0, 120)
  1014.     self.contents.font.color = system_color
  1015.     self.contents.draw_text(16, 0, 120, WLH, BBL_RESERVE_SYSTEM::GOLD_NAME)
  1016.   end
  1017. end

  1018. #==============================================================================
  1019. # ■ Window_ReserveCommand
  1020. #------------------------------------------------------------------------------
  1021. #  进行仓库指令选择的窗口。
  1022. #==============================================================================

  1023. class Window_ReserveCommand < Window_Selectable
  1024.   #--------------------------------------------------------------------------
  1025.   # ● 定义实例变量
  1026.   #--------------------------------------------------------------------------
  1027.   attr_reader   :commands                 # 指令
  1028.   #--------------------------------------------------------------------------
  1029.   # ● 初期化对象
  1030.   #     width      : 窗口的宽度
  1031.   #     commands   : 指令字符串的排序
  1032.   #     column_max : 行数 (在2 以上时,横向选项)
  1033.   #     row_max    : 列数 (0:切合指令个数)
  1034.   #     spacing    : 项目横向排列时 空白的部分
  1035.   #--------------------------------------------------------------------------
  1036.   def initialize(width, commands, column_max = 1, row_max = 0, spacing = 32)
  1037.     if row_max == 0
  1038.       row_max = (commands.size + column_max - 1) / column_max
  1039.     end
  1040.     super(0, 0, width, row_max * WLH + 32, spacing)
  1041.     @commands = commands
  1042.     @item_max = commands.size
  1043.     @column_max = column_max
  1044.     refresh
  1045.     self.index = 0
  1046.   end
  1047.   #--------------------------------------------------------------------------
  1048.   # ● 刷新
  1049.   #--------------------------------------------------------------------------
  1050.   def refresh
  1051.     self.contents.clear
  1052.     for i in 0...@item_max
  1053.       draw_item(i)
  1054.     end
  1055.   end
  1056.   #--------------------------------------------------------------------------
  1057.   # ● 项目的描画
  1058.   #     index   : 项目编号
  1059.   #     enabled : 有效标志。false 时会描绘为半透明状
  1060.   #--------------------------------------------------------------------------
  1061.   def draw_item(index, enabled = true)
  1062.     rect = item_rect(index)
  1063.     rect.x += 4
  1064.     rect.width -= 8
  1065.     self.contents.clear_rect(rect)
  1066.     self.contents.font.color = normal_color
  1067.     self.contents.font.color.alpha = enabled ? 255 : 128
  1068.     self.contents.draw_text(rect, @commands[index], 1)
  1069.   end
  1070. end



复制代码
走你耶。
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
130 小时
注册时间
2012-4-5
帖子
117
3
 楼主| 发表于 2012-6-2 16:02:49 | 只看该作者
yychchhh 发表于 2012-6-2 15:18
你可以试试这个:

不行 ,第二个角色去还是空的...不可以共用
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1449
在线时间
1592 小时
注册时间
2010-11-6
帖子
3193

贵宾

4
发表于 2012-6-2 16:33:15 | 只看该作者
344143370 发表于 2012-6-2 16:02
不行 ,第二个角色去还是空的...不可以共用

我说的是把你的去掉,换成我的脚本!
在事件中加上reserve_system这个脚本即可运行!
走你耶。
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
130 小时
注册时间
2012-4-5
帖子
117
5
 楼主| 发表于 2012-6-2 16:46:15 | 只看该作者
yychchhh 发表于 2012-6-2 16:33
我说的是把你的去掉,换成我的脚本!
在事件中加上reserve_system这个脚本即可运行! ...

不行 我用的就是你的脚本 我把我的删了  一样不能共用
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2025-1-6 22:38

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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