Project1

标题: 多货币购买物品显示的货币名称仍然是原来的 [打印本页]

作者: j296196585    时间: 2016-11-20 01:06
标题: 多货币购买物品显示的货币名称仍然是原来的
RUBY 代码复制
  1. #==============================================================================
  2. # ■ 多货币系统
  3. #------------------------------------------------------------------------------
  4. #         ——by.帕克
  5. #==============================================================================
  6. #这个很简单的。第一货币用金钱控制即可,其余货币用变量控制,改变货币种类
  7. #同样用变量。
  8.  
  9. $控制货币种类的变量 = 1  #这里填写控制货币种类的变量为几号变量,为1号变量即人名币,2号即美元等等
  10.  
  11. $第二货币数量的变量 = 2  #这里填写你要用几号变量控制第二货币,依此类推。
  12. $第三货币数量的变量 = 3
  13. $第四货币数量的变量 = 4
  14. $第五货币数量的变量 = 5
  15.  
  16. $第二货币的名称 = "美元"
  17. $第三货币的名称 = "欧元"
  18. $第四货币的名称 = "越南盾"
  19. $第五货币的名称 = "英镑"
  20. class Window_Gold < Window_Base
  21.   #--------------------------------------------------------------------------
  22.   # ● 初始化窗口
  23.   #--------------------------------------------------------------------------
  24.   def initialize
  25.     super(0, 0, 160, 64)
  26.     self.contents = Bitmap.new(width - 32, height - 32)
  27.     refresh
  28.   end
  29.   #--------------------------------------------------------------------------
  30.   # ● 刷新
  31.   #--------------------------------------------------------------------------
  32. def refresh
  33.     self.contents.clear
  34.     cx = contents.text_size($data_system.words.gold).width
  35.     self.contents.font.color = normal_color
  36.   case $game_variables[$控制货币种类的变量]
  37.    when 0
  38.     self.contents.draw_text(4, 0, 120-cx-2, 32, $game_party.gold.to_s, 2)
  39.    when 1
  40.     self.contents.draw_text(4, 0, 120-cx-2, 32, $game_variables[$第二货币数量的变量].to_s, 2)
  41.    when 2
  42.     self.contents.draw_text(4, 0, 120-cx-2, 32, $game_variables[$第三货币数量的变量].to_s, 2)
  43.    when 3
  44.     self.contents.draw_text(4, 0, 120-cx-2, 32, $game_variables[$第四货币数量的变量].to_s, 2)
  45.    when 4
  46.     self.contents.draw_text(4, 0, 120-cx-2, 32, $game_variables[$第五货币数量的变量].to_s, 2)
  47.     end
  48.     self.contents.font.color = system_color
  49.   case $game_variables[1]
  50.    when 0
  51.     self.contents.draw_text(124-cx, 0, cx, 32, $data_system.words.gold, 2)
  52.    when 1
  53.     self.contents.draw_text(124-cx, 0, cx, 32, $第二货币的名称, 2)
  54.    when 2
  55.     self.contents.draw_text(124-cx, 0, cx, 32, $第三货币的名称, 2)
  56.    when 3
  57.     self.contents.draw_text(124-cx, 0, cx, 32, $第四货币的名称, 2)
  58.    when 4
  59.     self.contents.draw_text(124-cx, 0, cx, 32, $第五货币的名称, 2)
  60.     end
  61.   end
  62. end
  63. class Scene_Shop
  64.   #--------------------------------------------------------------------------
  65.   # ● 主处理
  66.   #--------------------------------------------------------------------------
  67.   def main
  68.     # 生成帮助窗口
  69.     @help_window = Window_Help.new
  70.     # 生成指令窗口
  71.     @command_window = Window_ShopCommand.new
  72.     # 生成金钱窗口
  73.     @gold_window = Window_Gold.new
  74.     @gold_window.x = 480
  75.     @gold_window.y = 64
  76.     # 生成时间窗口
  77.     @dummy_window = Window_Base.new(0, 128, 640, 352)
  78.     # 生成购买窗口
  79.     @buy_window = Window_ShopBuy.new($game_temp.shop_goods)
  80.     @buy_window.active = false
  81.     @buy_window.visible = false
  82.     @buy_window.help_window = @help_window
  83.     # 生成卖出窗口
  84.     @sell_window = Window_ShopSell.new
  85.     @sell_window.active = false
  86.     @sell_window.visible = false
  87.     @sell_window.help_window = @help_window
  88.     # 生成数量输入窗口
  89.     @number_window = Window_ShopNumber.new
  90.     @number_window.active = false
  91.     @number_window.visible = false
  92.     # 生成状态窗口
  93.     @status_window = Window_ShopStatus.new
  94.     @status_window.visible = false
  95.     # 执行过渡
  96.     Graphics.transition
  97.     # 主循环
  98.     loop do
  99.       # 刷新游戏画面
  100.       Graphics.update
  101.       # 刷新输入信息
  102.       Input.update
  103.       # 刷新画面
  104.       update
  105.       # 如果画面切换的话就中断循环
  106.       if $scene != self
  107.         break
  108.       end
  109.     end
  110.     # 准备过渡
  111.     Graphics.freeze
  112.     # 释放窗口
  113.     @help_window.dispose
  114.     @command_window.dispose
  115.     @gold_window.dispose
  116.     @dummy_window.dispose
  117.     @buy_window.dispose
  118.     @sell_window.dispose
  119.     @number_window.dispose
  120.     @status_window.dispose
  121.   end
  122.   #--------------------------------------------------------------------------
  123.   # ● 刷新画面
  124.   #--------------------------------------------------------------------------
  125.   def update
  126.     # 刷新窗口
  127.     @help_window.update
  128.     @command_window.update
  129.     @gold_window.update
  130.     @dummy_window.update
  131.     @buy_window.update
  132.     @sell_window.update
  133.     @number_window.update
  134.     @status_window.update
  135.     # 指令窗口激活的情况下: 调用 update_command
  136.     if @command_window.active
  137.       update_command
  138.       return
  139.     end
  140.     # 购买窗口激活的情况下: 调用 update_buy
  141.     if @buy_window.active
  142.       update_buy
  143.       return
  144.     end
  145.     # 卖出窗口激活的情况下: 调用 update_sell
  146.     if @sell_window.active
  147.       update_sell
  148.       return
  149.     end
  150.     # 个数输入窗口激活的情况下: 调用 update_number
  151.     if @number_window.active
  152.       update_number
  153.       return
  154.     end
  155.   end
  156.   #--------------------------------------------------------------------------
  157.   # ● 刷新画面 (指令窗口激活的情况下)
  158.   #--------------------------------------------------------------------------
  159.   def update_command
  160.     # 按下 B 键的情况下
  161.     if Input.trigger?(Input::B)
  162.       # 演奏取消 SE
  163.       $game_system.se_play($data_system.cancel_se)
  164.       # 切换到地图画面
  165.       $scene = Scene_Map.new
  166.       return
  167.     end
  168.     # 按下 C 键的情况下
  169.     if Input.trigger?(Input::C)
  170.       # 命令窗口光标位置分支
  171.       case @command_window.index
  172.       when 0  # 购买
  173.         # 演奏确定 SE
  174.         $game_system.se_play($data_system.decision_se)
  175.         # 窗口状态转向购买模式
  176.         @command_window.active = false
  177.         @dummy_window.visible = false
  178.         @buy_window.active = true
  179.         @buy_window.visible = true
  180.         @buy_window.refresh
  181.         @status_window.visible = true
  182.       when 1  # 卖出
  183.         # 演奏确定 SE
  184.         $game_system.se_play($data_system.decision_se)
  185.         # 窗口状态转向卖出模式
  186.         @command_window.active = false
  187.         @dummy_window.visible = false
  188.         @sell_window.active = true
  189.         @sell_window.visible = true
  190.         @sell_window.refresh
  191.       when 2  # 取消
  192.         # 演奏确定 SE
  193.         $game_system.se_play($data_system.decision_se)
  194.         # 切换到地图画面
  195.         $scene = Scene_Map.new
  196.       end
  197.       return
  198.     end
  199.   end
  200.   #--------------------------------------------------------------------------
  201.   # ● 刷新画面 (购买窗口激活的情况下)
  202.   #--------------------------------------------------------------------------
  203.   def update_buy
  204.     # 设置状态窗口的物品
  205.     @status_window.item = @buy_window.item
  206.     # 按下 B 键的情况下
  207.     if Input.trigger?(Input::B)
  208.       # 演奏取消 SE
  209.       $game_system.se_play($data_system.cancel_se)
  210.       # 窗口状态转向初期模式
  211.       @command_window.active = true
  212.       @dummy_window.visible = true
  213.       @buy_window.active = false
  214.       @buy_window.visible = false
  215.       @status_window.visible = false
  216.       @status_window.item = nil
  217.       # 删除帮助文本
  218.       @help_window.set_text("")
  219.       return
  220.     end
  221.     # 按下 C 键的情况下
  222.     if Input.trigger?(Input::C)
  223.       # 获取物品
  224.       @item = @buy_window.item
  225.       # 物品无效的情况下、或者价格在所持金以上的情况下
  226.       if @item == nil or @item.price > $game_party.gold
  227.         # 演奏冻结 SE
  228.         $game_system.se_play($data_system.buzzer_se)
  229.         return
  230.       end
  231.       # 获取物品所持数
  232.       case @item
  233.       when RPG::Item
  234.         number = $game_party.item_number(@item.id)
  235.       when RPG::Weapon
  236.         number = $game_party.weapon_number(@item.id)
  237.       when RPG::Armor
  238.         number = $game_party.armor_number(@item.id)
  239.       end
  240.       # 如果已经拥有了 99 个情况下
  241.       if number == 99
  242.         # 演奏冻结 SE
  243.         $game_system.se_play($data_system.buzzer_se)
  244.         return
  245.       end
  246.       # 演奏确定 SE
  247.       $game_system.se_play($data_system.decision_se)
  248.       # 计算可以最多购买的数量
  249.       max = @item.price == 0 ? 99 : $game_party.gold / @item.price
  250.       max = [max, 99 - number].min
  251.       # 窗口状态转向数值输入模式
  252.       @buy_window.active = false
  253.       @buy_window.visible = false
  254.       @number_window.set(@item, max, @item.price)
  255.       @number_window.active = true
  256.       @number_window.visible = true
  257.     end
  258.   end
  259.   #--------------------------------------------------------------------------
  260.   # ● 画面更新 (卖出窗口激活的情况下)
  261.   #--------------------------------------------------------------------------
  262.   def update_sell
  263.     # 按下 B 键的情况下
  264.     if Input.trigger?(Input::B)
  265.       # 演奏取消 SE
  266.       $game_system.se_play($data_system.cancel_se)
  267.       # 窗口状态转向初期模式
  268.       @command_window.active = true
  269.       @dummy_window.visible = true
  270.       @sell_window.active = false
  271.       @sell_window.visible = false
  272.       @status_window.item = nil
  273.       # 删除帮助文本
  274.       @help_window.set_text("")
  275.       return
  276.     end
  277.     # 按下 C 键的情况下
  278.     if Input.trigger?(Input::C)
  279.       # 获取物品
  280.       @item = @sell_window.item
  281.       # 设置状态窗口的物品
  282.       @status_window.item = @item
  283.       # 物品无效的情况下、或者价格为 0 (不能卖出) 的情况下
  284.       if @item == nil or @item.price == 0
  285.         # 演奏冻结 SE
  286.         $game_system.se_play($data_system.buzzer_se)
  287.         return
  288.       end
  289.       # 演奏确定 SE
  290.       $game_system.se_play($data_system.decision_se)
  291.       # 获取物品的所持数
  292.       case @item
  293.       when RPG::Item
  294.         number = $game_party.item_number(@item.id)
  295.       when RPG::Weapon
  296.         number = $game_party.weapon_number(@item.id)
  297.       when RPG::Armor
  298.         number = $game_party.armor_number(@item.id)
  299.       end
  300.       # 最大卖出个数 = 物品的所持数
  301.       max = number
  302.       # 窗口状态转向个数输入模式
  303.       @sell_window.active = false
  304.       @sell_window.visible = false
  305.       @number_window.set(@item, max, @item.price / 2)
  306.       @number_window.active = true
  307.       @number_window.visible = true
  308.       @status_window.visible = true
  309.     end
  310.   end
  311.   #--------------------------------------------------------------------------
  312.   # ● 刷新画面 (个数输入窗口激活的情况下)
  313.   #--------------------------------------------------------------------------
  314.   def update_number
  315.     # 按下 B 键的情况下
  316.     if Input.trigger?(Input::B)
  317.       # 演奏取消 SE
  318.       $game_system.se_play($data_system.cancel_se)
  319.       # 设置个数输入窗口为不活动·非可视状态
  320.       @number_window.active = false
  321.       @number_window.visible = false
  322.       # 命令窗口光标位置分支
  323.       case @command_window.index
  324.       when 0  # 购买
  325.         # 窗口状态转向购买模式
  326.         @buy_window.active = true
  327.         @buy_window.visible = true
  328.       when 1  # 卖出
  329.         # 窗口状态转向卖出模式
  330.         @sell_window.active = true
  331.         @sell_window.visible = true
  332.         @status_window.visible = false
  333.       end
  334.       return
  335.     end
  336.     # 按下 C 键的情况下
  337.     if Input.trigger?(Input::C)
  338.       # 演奏商店 SE
  339.       $game_system.se_play($data_system.shop_se)
  340.       # 设置个数输入窗口为不活动·非可视状态
  341.       @number_window.active = false
  342.       @number_window.visible = false
  343.       # 命令窗口光标位置分支
  344.       case @command_window.index
  345.       when 0  # 购买
  346.         # 购买处理
  347.        case $game_variables[$控制货币种类的变量]
  348.         when 0
  349.         $game_party.lose_gold(@number_window.number * @item.price)
  350.         when 1
  351.          $game_variables[$第二货币数量的变量]-=(@number_window.number * @item.price)
  352.         when 2
  353.          $game_variables[$第三货币数量的变量]-=(@number_window.number * @item.price)
  354.         when 3
  355.          $game_variables[$第四货币数量的变量]-=(@number_window.number * @item.price)
  356.         when 4
  357.          $game_variables[$第五货币数量的变量]-=(@number_window.number * @item.price)
  358.         end
  359.         case @item
  360.         when RPG::Item
  361.           $game_party.gain_item(@item.id, @number_window.number)
  362.         when RPG::Weapon
  363.           $game_party.gain_weapon(@item.id, @number_window.number)
  364.         when RPG::Armor
  365.           $game_party.gain_armor(@item.id, @number_window.number)
  366.         end
  367.         # 刷新各窗口
  368.         @gold_window.refresh
  369.         @buy_window.refresh
  370.         @status_window.refresh
  371.         # 窗口状态转向购买模式
  372.         @buy_window.active = true
  373.         @buy_window.visible = true
  374.       when 1  # 卖出
  375.         # 卖出处理
  376.        case $game_variables[$控制货币种类的变量]
  377.         when 0
  378.         $game_party.gain_gold(@number_window.number * (@item.price / 2))
  379.         when 1
  380.          $game_variables[$第二货币数量的变量]+=(@number_window.number * (@item.price / 2))
  381.         when 2
  382.          $game_variables[$第三货币数量的变量]+=(@number_window.number * (@item.price / 2))
  383.         when 3
  384.          $game_variables[$第四货币数量的变量]+=(@number_window.number * (@item.price / 2))
  385.         when 4
  386.          $game_variables[$第五货币数量的变量]+=(@number_window.number * (@item.price / 2))
  387.         end
  388.         case @item
  389.         when RPG::Item
  390.           $game_party.lose_item(@item.id, @number_window.number)
  391.         when RPG::Weapon
  392.           $game_party.lose_weapon(@item.id, @number_window.number)
  393.         when RPG::Armor
  394.           $game_party.lose_armor(@item.id, @number_window.number)
  395.         end
  396.         # 刷新各窗口
  397.         @gold_window.refresh
  398.         @sell_window.refresh
  399.         @status_window.refresh
  400.         # 窗口状态转向卖出模式
  401.         @sell_window.active = true
  402.         @sell_window.visible = true
  403.         @status_window.visible = false
  404.       end
  405.       return
  406.     end
  407.   end
  408. end

QQ截图未命名.png (55.45 KB, 下载次数: 1)

QQ截图未命名.png

作者: 泪的苍白    时间: 2016-11-20 14:03
本帖最后由 泪的苍白 于 2016-11-26 11:49 编辑

是人民(min)币不是人名(ming)币谢谢……
  1. #==============================================================================
  2. # ■ 多货币系统
  3. #------------------------------------------------------------------------------
  4. # 制作:帕克
  5. # 修改:泪子
  6. #==============================================================================
  7. #这个很简单的。第一货币用金钱控制即可,其余货币用变量控制,改变货币种类
  8. #同样用变量。

  9. $控制货币种类的变量 = 1  #这里填写控制货币种类的变量为几号变量,为1号变量即人名币,2号即美元等等

  10. $第二货币数量的变量 = 2  #这里填写你要用几号变量控制第二货币,依此类推。
  11. $第三货币数量的变量 = 3
  12. $第四货币数量的变量 = 4
  13. $第五货币数量的变量 = 5

  14. $第二货币的名称 = "美元"
  15. $第三货币的名称 = "欧元"
  16. $第四货币的名称 = "越南盾"
  17. $第五货币的名称 = "英镑"
  18. class Window_Gold < Window_Base
  19.   #--------------------------------------------------------------------------
  20.   # ● 初始化窗口
  21.   #--------------------------------------------------------------------------
  22.   def initialize
  23.     super(0, 0, 160, 64)
  24.     self.contents = Bitmap.new(width - 32, height - 32)
  25.     refresh
  26.   end
  27.   #--------------------------------------------------------------------------
  28.   # ● 刷新
  29.   #--------------------------------------------------------------------------
  30. def refresh
  31.     self.contents.clear
  32.     self.contents.font.color = system_color
  33.   case $game_variables[1]
  34.    when 0
  35.     cx = contents.text_size($data_system.words.gold).width
  36.     self.contents.draw_text(124-cx, 0, cx, 32, $data_system.words.gold, 2)
  37.    when 1
  38.     cx = contents.text_size($第二货币的名称).width
  39.     self.contents.draw_text(124-cx, 0, cx, 32, $第二货币的名称, 2)
  40.    when 2
  41.     cx = contents.text_size($第三货币的名称).width
  42.     self.contents.draw_text(124-cx, 0, cx, 32, $第三货币的名称, 2)
  43.    when 3
  44.     cx = contents.text_size($第五货币的名称).width
  45.     self.contents.draw_text(124-cx, 0, cx, 32, $第五货币的名称, 2)
  46.    when 4
  47.     cx = contents.text_size($第五货币的名称).width
  48.     self.contents.draw_text(124-cx, 0, cx, 32, $第五货币的名称, 2)
  49.     end
  50.     self.contents.font.color = normal_color
  51.   case $game_variables[$控制货币种类的变量]
  52.    when 0
  53.     self.contents.draw_text(4, 0, 120-cx-2, 32, $game_party.gold.to_s, 2)
  54.    when 1
  55.     self.contents.draw_text(4, 0, 120-cx-2, 32, $game_variables[$第二货币数量的变量].to_s, 2)
  56.    when 2
  57.     self.contents.draw_text(4, 0, 120-cx-2, 32, $game_variables[$第三货币数量的变量].to_s, 2)
  58.    when 3
  59.     self.contents.draw_text(4, 0, 120-cx-2, 32, $game_variables[$第四货币数量的变量].to_s, 2)
  60.    when 4
  61.     self.contents.draw_text(4, 0, 120-cx-2, 32, $game_variables[$第五货币数量的变量].to_s, 2)
  62.     end
  63.   end
  64. end

  65. #==============================================================================
  66. # ■ Window_ShopNumber
  67. #------------------------------------------------------------------------------
  68. #  商店画面、输入买卖数量的窗口。
  69. #==============================================================================

  70. class Window_ShopNumber < Window_Base
  71.   #--------------------------------------------------------------------------
  72.   # ● 初始化对像
  73.   #--------------------------------------------------------------------------
  74.   def initialize
  75.     super(0, 128, 368, 352)
  76.     self.contents = Bitmap.new(width - 32, height - 32)
  77.     @item = nil
  78.     @max = 1
  79.     @price = 0
  80.     @number = 1
  81.   end
  82.   #--------------------------------------------------------------------------
  83.   # ● 设置物品、最大个数、价格
  84.   #--------------------------------------------------------------------------
  85.   def set(item, max, price)
  86.     @item = item
  87.     @max = max
  88.     @price = price
  89.     @number = 1
  90.     refresh
  91.   end
  92.   #--------------------------------------------------------------------------
  93.   # ● 被输入的件数设置
  94.   #--------------------------------------------------------------------------
  95.   def number
  96.     return @number
  97.   end
  98.   #--------------------------------------------------------------------------
  99.   # ● 刷新
  100.   #--------------------------------------------------------------------------
  101.   def refresh
  102.     self.contents.clear
  103.     draw_item_name(@item, 4, 96)
  104.     self.contents.font.color = normal_color
  105.     self.contents.draw_text(272, 96, 32, 32, "×")
  106.     self.contents.draw_text(308, 96, 24, 32, @number.to_s, 2)
  107.     self.cursor_rect.set(304, 96, 32, 32)
  108.     # 描绘合计价格和货币单位
  109.   case $game_variables[1]
  110.    when 0
  111.     domination = $data_system.words.gold
  112.    when 1
  113.     domination = $第二货币的名称
  114.    when 2
  115.     domination = $第三货币的名称
  116.    when 3
  117.     domination = $第四货币的名称
  118.    when 4
  119.     domination = $第五货币的名称
  120.     end
  121.     cx = contents.text_size(domination).width
  122.     total_price = @price * @number
  123.     self.contents.font.color = normal_color
  124.     self.contents.draw_text(4, 160, 328-cx-2, 32, total_price.to_s, 2)
  125.     self.contents.font.color = system_color
  126.     self.contents.draw_text(332-cx, 160, cx, 32, domination, 2)
  127.   end
  128.   #--------------------------------------------------------------------------
  129.   # ● 刷新画面
  130.   #--------------------------------------------------------------------------
  131.   def update
  132.     super
  133.     if self.active
  134.       # 光标右 (+1)
  135.       if Input.repeat?(Input::RIGHT) and @number < @max
  136.         $game_system.se_play($data_system.cursor_se)
  137.         @number += 1
  138.         refresh
  139.       end
  140.       # 光标左 (-1)
  141.       if Input.repeat?(Input::LEFT) and @number > 1
  142.         $game_system.se_play($data_system.cursor_se)
  143.         @number -= 1
  144.         refresh
  145.       end
  146.       # 光标上 (+10)
  147.       if Input.repeat?(Input::UP) and @number < @max
  148.         $game_system.se_play($data_system.cursor_se)
  149.         @number = [@number + 10, @max].min
  150.         refresh
  151.       end
  152.       # 光标下 (-10)
  153.       if Input.repeat?(Input::DOWN) and @number > 1
  154.         $game_system.se_play($data_system.cursor_se)
  155.         @number = [@number - 10, 1].max
  156.         refresh
  157.       end
  158.     end
  159.   end
  160. end
  161. #==============================================================================
  162. # ■ Window_ShopBuy
  163. #------------------------------------------------------------------------------
  164. #  商店画面、浏览显示可以购买的商品的窗口。
  165. #==============================================================================

  166. class Window_ShopBuy < Window_Selectable
  167.   #--------------------------------------------------------------------------
  168.   # ● 初始化对像
  169.   #     shop_goods : 商品
  170.   #--------------------------------------------------------------------------
  171.   def initialize(shop_goods)
  172.     super(0, 128, 368, 352)
  173.     @shop_goods = shop_goods
  174.     refresh
  175.     self.index = 0
  176.   end
  177.   #--------------------------------------------------------------------------
  178.   # ● 获取物品
  179.   #--------------------------------------------------------------------------
  180.   def item
  181.     return @data[self.index]
  182.   end
  183.   #--------------------------------------------------------------------------
  184.   # ● 刷新
  185.   #--------------------------------------------------------------------------
  186.   def refresh
  187.     if self.contents != nil
  188.       self.contents.dispose
  189.       self.contents = nil
  190.     end
  191.     @data = []
  192.     for goods_item in @shop_goods
  193.       case goods_item[0]
  194.       when 0
  195.         item = $data_items[goods_item[1]]
  196.       when 1
  197.         item = $data_weapons[goods_item[1]]
  198.       when 2
  199.         item = $data_armors[goods_item[1]]
  200.       end
  201.       if item != nil
  202.         @data.push(item)
  203.       end
  204.     end
  205.     # 如果项目数不是 0 就生成位图、描绘全部项目
  206.     @item_max = @data.size
  207.     if @item_max > 0
  208.       self.contents = Bitmap.new(width - 32, row_max * 32)
  209.       for i in 0...@item_max
  210.         draw_item(i)
  211.       end
  212.     end
  213.   end
  214.   #--------------------------------------------------------------------------
  215.   # ● 描绘项目
  216.   #     index : 项目编号
  217.   #--------------------------------------------------------------------------
  218.   def draw_item(index)
  219.     item = @data[index]
  220.     # 获取物品所持数
  221.     case item
  222.     when RPG::Item
  223.       number = $game_party.item_number(item.id)
  224.     when RPG::Weapon
  225.       number = $game_party.weapon_number(item.id)
  226.     when RPG::Armor
  227.       number = $game_party.armor_number(item.id)
  228.     end
  229.     # 价格在所持金以下、并且所持数不是 99 的情况下为普通文字颜色
  230.     # 除此之外的情况设置为无效文字色
  231.     case $game_variables[$控制货币种类的变量]
  232.     when 0
  233.       gold = $game_party.gold
  234.     when 1
  235.       gold = $game_variables[$第二货币数量的变量]
  236.     when 2
  237.       gold = $game_variables[$第三货币数量的变量]
  238.    when 3
  239.       gold = $game_variables[$第四货币数量的变量]
  240.    when 4
  241.       gold = $game_variables[$第五货币数量的变量]
  242.     end
  243.     if item.price <= gold and number < 99
  244.       self.contents.font.color = normal_color
  245.     else
  246.       self.contents.font.color = disabled_color
  247.     end
  248.     x = 4
  249.     y = index * 32
  250.     rect = Rect.new(x, y, self.width - 32, 32)
  251.     self.contents.fill_rect(rect, Color.new(0, 0, 0, 0))
  252.     bitmap = RPG::Cache.icon(item.icon_name)
  253.     opacity = self.contents.font.color == normal_color ? 255 : 128
  254.     self.contents.blt(x, y + 4, bitmap, Rect.new(0, 0, 24, 24), opacity)
  255.     self.contents.draw_text(x + 28, y, 212, 32, item.name, 0)
  256.     self.contents.draw_text(x + 240, y, 88, 32, item.price.to_s, 2)
  257.   end
  258.   #--------------------------------------------------------------------------
  259.   # ● 刷新帮助文本
  260.   #--------------------------------------------------------------------------
  261.   def update_help
  262.     @help_window.set_text(self.item == nil ? "" : self.item.description)
  263.   end
  264. end
  265. class Scene_Shop
  266.   #--------------------------------------------------------------------------
  267.   # ● 主处理
  268.   #--------------------------------------------------------------------------
  269.   def main
  270.     # 生成帮助窗口
  271.     @help_window = Window_Help.new
  272.     # 生成指令窗口
  273.     @command_window = Window_ShopCommand.new
  274.     # 生成金钱窗口
  275.     @gold_window = Window_Gold.new
  276.     @gold_window.x = 480
  277.     @gold_window.y = 64
  278.     # 生成时间窗口
  279.     @dummy_window = Window_Base.new(0, 128, 640, 352)
  280.     # 生成购买窗口
  281.     @buy_window = Window_ShopBuy.new($game_temp.shop_goods)
  282.     @buy_window.active = false
  283.     @buy_window.visible = false
  284.     @buy_window.help_window = @help_window
  285.     # 生成卖出窗口
  286.     @sell_window = Window_ShopSell.new
  287.     @sell_window.active = false
  288.     @sell_window.visible = false
  289.     @sell_window.help_window = @help_window
  290.     # 生成数量输入窗口
  291.     @number_window = Window_ShopNumber.new
  292.     @number_window.active = false
  293.     @number_window.visible = false
  294.     # 生成状态窗口
  295.     @status_window = Window_ShopStatus.new
  296.     @status_window.visible = false
  297.     # 执行过渡
  298.     Graphics.transition
  299.     # 主循环
  300.     loop do
  301.       # 刷新游戏画面
  302.       Graphics.update
  303.       # 刷新输入信息
  304.       Input.update
  305.       # 刷新画面
  306.       update
  307.       # 如果画面切换的话就中断循环
  308.       if $scene != self
  309.         break
  310.       end
  311.     end
  312.     # 准备过渡
  313.     Graphics.freeze
  314.     # 释放窗口
  315.     @help_window.dispose
  316.     @command_window.dispose
  317.     @gold_window.dispose
  318.     @dummy_window.dispose
  319.     @buy_window.dispose
  320.     @sell_window.dispose
  321.     @number_window.dispose
  322.     @status_window.dispose
  323.   end
  324.   #--------------------------------------------------------------------------
  325.   # ● 刷新画面
  326.   #--------------------------------------------------------------------------
  327.   def update
  328.     # 刷新窗口
  329.     @help_window.update
  330.     @command_window.update
  331.     @gold_window.update
  332.     @dummy_window.update
  333.     @buy_window.update
  334.     @sell_window.update
  335.     @number_window.update
  336.     @status_window.update
  337.     # 指令窗口激活的情况下: 调用 update_command
  338.     if @command_window.active
  339.       update_command
  340.       return
  341.     end
  342.     # 购买窗口激活的情况下: 调用 update_buy
  343.     if @buy_window.active
  344.       update_buy
  345.       return
  346.     end
  347.     # 卖出窗口激活的情况下: 调用 update_sell
  348.     if @sell_window.active
  349.       update_sell
  350.       return
  351.     end
  352.     # 个数输入窗口激活的情况下: 调用 update_number
  353.     if @number_window.active
  354.       update_number
  355.       return
  356.     end
  357.   end
  358.   #--------------------------------------------------------------------------
  359.   # ● 刷新画面 (指令窗口激活的情况下)
  360.   #--------------------------------------------------------------------------
  361.   def update_command
  362.     # 按下 B 键的情况下
  363.     if Input.trigger?(Input::B)
  364.       # 演奏取消 SE
  365.       $game_system.se_play($data_system.cancel_se)
  366.       # 切换到地图画面
  367.       $scene = Scene_Map.new
  368.       return
  369.     end
  370.     # 按下 C 键的情况下
  371.     if Input.trigger?(Input::C)
  372.       # 命令窗口光标位置分支
  373.       case @command_window.index
  374.       when 0  # 购买
  375.         # 演奏确定 SE
  376.         $game_system.se_play($data_system.decision_se)
  377.         # 窗口状态转向购买模式
  378.         @command_window.active = false
  379.         @dummy_window.visible = false
  380.         @buy_window.active = true
  381.         @buy_window.visible = true
  382.         @buy_window.refresh
  383.         @status_window.visible = true
  384.       when 1  # 卖出
  385.         # 演奏确定 SE
  386.         $game_system.se_play($data_system.decision_se)
  387.         # 窗口状态转向卖出模式
  388.         @command_window.active = false
  389.         @dummy_window.visible = false
  390.         @sell_window.active = true
  391.         @sell_window.visible = true
  392.         @sell_window.refresh
  393.       when 2  # 取消
  394.         # 演奏确定 SE
  395.         $game_system.se_play($data_system.decision_se)
  396.         # 切换到地图画面
  397.         $scene = Scene_Map.new
  398.       end
  399.       return
  400.     end
  401.   end
  402.   #--------------------------------------------------------------------------
  403.   # ● 刷新画面 (购买窗口激活的情况下)
  404.   #--------------------------------------------------------------------------
  405.   def update_buy
  406.     # 设置状态窗口的物品
  407.     @status_window.item = @buy_window.item
  408.     # 按下 B 键的情况下
  409.     if Input.trigger?(Input::B)
  410.       # 演奏取消 SE
  411.       $game_system.se_play($data_system.cancel_se)
  412.       # 窗口状态转向初期模式
  413.       @command_window.active = true
  414.       @dummy_window.visible = true
  415.       @buy_window.active = false
  416.       @buy_window.visible = false
  417.       @status_window.visible = false
  418.       @status_window.item = nil
  419.       # 删除帮助文本
  420.       @help_window.set_text("")
  421.       return
  422.     end
  423.     # 按下 C 键的情况下
  424.     if Input.trigger?(Input::C)
  425.       # 获取物品
  426.       @item = @buy_window.item
  427.     case $game_variables[$控制货币种类的变量]
  428.     when 0
  429.       gold = $game_party.gold
  430.     when 1
  431.       gold = $game_variables[$第二货币数量的变量]
  432.     when 2
  433.       gold = $game_variables[$第三货币数量的变量]
  434.    when 3
  435.       gold = $game_variables[$第四货币数量的变量]
  436.    when 4
  437.       gold = $game_variables[$第五货币数量的变量]
  438.     end
  439.       # 物品无效的情况下、或者价格在所持金以上的情况下
  440.       if @item == nil or @item.price > gold
  441.         # 演奏冻结 SE
  442.         $game_system.se_play($data_system.buzzer_se)
  443.         return
  444.       end
  445.       # 获取物品所持数
  446.       case @item
  447.       when RPG::Item
  448.         number = $game_party.item_number(@item.id)
  449.       when RPG::Weapon
  450.         number = $game_party.weapon_number(@item.id)
  451.       when RPG::Armor
  452.         number = $game_party.armor_number(@item.id)
  453.       end
  454.       # 如果已经拥有了 99 个情况下
  455.       if number == 99
  456.         # 演奏冻结 SE
  457.         $game_system.se_play($data_system.buzzer_se)
  458.         return
  459.       end
  460.       # 演奏确定 SE
  461.       $game_system.se_play($data_system.decision_se)
  462.       # 计算可以最多购买的数量
  463.       max = @item.price == 0 ? 99 : gold / @item.price
  464.       max = [max, 99 - number].min
  465.       # 窗口状态转向数值输入模式
  466.       @buy_window.active = false
  467.       @buy_window.visible = false
  468.       @number_window.set(@item, max, @item.price)
  469.       @number_window.active = true
  470.       @number_window.visible = true
  471.     end
  472.   end
  473.   #--------------------------------------------------------------------------
  474.   # ● 画面更新 (卖出窗口激活的情况下)
  475.   #--------------------------------------------------------------------------
  476.   def update_sell
  477.     # 按下 B 键的情况下
  478.     if Input.trigger?(Input::B)
  479.       # 演奏取消 SE
  480.       $game_system.se_play($data_system.cancel_se)
  481.       # 窗口状态转向初期模式
  482.       @command_window.active = true
  483.       @dummy_window.visible = true
  484.       @sell_window.active = false
  485.       @sell_window.visible = false
  486.       @status_window.item = nil
  487.       # 删除帮助文本
  488.       @help_window.set_text("")
  489.       return
  490.     end
  491.     # 按下 C 键的情况下
  492.     if Input.trigger?(Input::C)
  493.       # 获取物品
  494.       @item = @sell_window.item
  495.       # 设置状态窗口的物品
  496.       @status_window.item = @item
  497.       # 物品无效的情况下、或者价格为 0 (不能卖出) 的情况下
  498.       if @item == nil or @item.price == 0
  499.         # 演奏冻结 SE
  500.         $game_system.se_play($data_system.buzzer_se)
  501.         return
  502.       end
  503.       # 演奏确定 SE
  504.       $game_system.se_play($data_system.decision_se)
  505.       # 获取物品的所持数
  506.       case @item
  507.       when RPG::Item
  508.         number = $game_party.item_number(@item.id)
  509.       when RPG::Weapon
  510.         number = $game_party.weapon_number(@item.id)
  511.       when RPG::Armor
  512.         number = $game_party.armor_number(@item.id)
  513.       end
  514.       # 最大卖出个数 = 物品的所持数
  515.       max = number
  516.       # 窗口状态转向个数输入模式
  517.       @sell_window.active = false
  518.       @sell_window.visible = false
  519.       @number_window.set(@item, max, @item.price / 2)
  520.       @number_window.active = true
  521.       @number_window.visible = true
  522.       @status_window.visible = true
  523.     end
  524.   end
  525.   #--------------------------------------------------------------------------
  526.   # ● 刷新画面 (个数输入窗口激活的情况下)
  527.   #--------------------------------------------------------------------------
  528.   def update_number
  529.     # 按下 B 键的情况下
  530.     if Input.trigger?(Input::B)
  531.       # 演奏取消 SE
  532.       $game_system.se_play($data_system.cancel_se)
  533.       # 设置个数输入窗口为不活动·非可视状态
  534.       @number_window.active = false
  535.       @number_window.visible = false
  536.       # 命令窗口光标位置分支
  537.       case @command_window.index
  538.       when 0  # 购买
  539.         # 窗口状态转向购买模式
  540.         @buy_window.active = true
  541.         @buy_window.visible = true
  542.       when 1  # 卖出
  543.         # 窗口状态转向卖出模式
  544.         @sell_window.active = true
  545.         @sell_window.visible = true
  546.         @status_window.visible = false
  547.       end
  548.       return
  549.     end
  550.     # 按下 C 键的情况下
  551.     if Input.trigger?(Input::C)
  552.       # 演奏商店 SE
  553.       $game_system.se_play($data_system.shop_se)
  554.       # 设置个数输入窗口为不活动·非可视状态
  555.       @number_window.active = false
  556.       @number_window.visible = false
  557.       # 命令窗口光标位置分支
  558.       case @command_window.index
  559.       when 0  # 购买
  560.         # 购买处理
  561.        case $game_variables[$控制货币种类的变量]
  562.         when 0
  563.         $game_party.lose_gold(@number_window.number * @item.price)
  564.         when 1
  565.          $game_variables[$第二货币数量的变量]-=(@number_window.number * @item.price)
  566.         when 2
  567.          $game_variables[$第三货币数量的变量]-=(@number_window.number * @item.price)
  568.         when 3
  569.          $game_variables[$第四货币数量的变量]-=(@number_window.number * @item.price)
  570.         when 4
  571.          $game_variables[$第五货币数量的变量]-=(@number_window.number * @item.price)
  572.         end
  573.         case @item
  574.         when RPG::Item
  575.           $game_party.gain_item(@item.id, @number_window.number)
  576.         when RPG::Weapon
  577.           $game_party.gain_weapon(@item.id, @number_window.number)
  578.         when RPG::Armor
  579.           $game_party.gain_armor(@item.id, @number_window.number)
  580.         end
  581.         # 刷新各窗口
  582.         @gold_window.refresh
  583.         @buy_window.refresh
  584.         @status_window.refresh
  585.         # 窗口状态转向购买模式
  586.         @buy_window.active = true
  587.         @buy_window.visible = true
  588.       when 1  # 卖出
  589.         # 卖出处理
  590.        case $game_variables[$控制货币种类的变量]
  591.         when 0
  592.         $game_party.gain_gold(@number_window.number * (@item.price / 2))
  593.         when 1
  594.          $game_variables[$第二货币数量的变量]+=(@number_window.number * (@item.price / 2))
  595.         when 2
  596.          $game_variables[$第三货币数量的变量]+=(@number_window.number * (@item.price / 2))
  597.         when 3
  598.          $game_variables[$第四货币数量的变量]+=(@number_window.number * (@item.price / 2))
  599.         when 4
  600.          $game_variables[$第五货币数量的变量]+=(@number_window.number * (@item.price / 2))
  601.         end
  602.         case @item
  603.         when RPG::Item
  604.           $game_party.lose_item(@item.id, @number_window.number)
  605.         when RPG::Weapon
  606.           $game_party.lose_weapon(@item.id, @number_window.number)
  607.         when RPG::Armor
  608.           $game_party.lose_armor(@item.id, @number_window.number)
  609.         end
  610.         # 刷新各窗口
  611.         @gold_window.refresh
  612.         @sell_window.refresh
  613.         @status_window.refresh
  614.         # 窗口状态转向卖出模式
  615.         @sell_window.active = true
  616.         @sell_window.visible = true
  617.         @status_window.visible = false
  618.       end
  619.       return
  620.     end
  621.   end
  622. end
复制代码
把脚本改掉了,你把我的这个替代掉原来的那个。
根据你在最开始的变量设置,在打开商店页面之前进行变量操作
比如你想使用美元,使变量1代入常数 1。
如果你想增减手里持有的美元数量,使变量加法/减法某某数字。
依次类推。

至于原脚本为何会出现这样的情况,是这样的:因为你确定购买某物品之后,要求你输入购买数量的窗口是Window_ShopNumber,原脚本并没有对此进行修改。
  1. domination = $data_system.words.gold
  2.     cx = contents.text_size(domination).width
  3.     self.contents.draw_text(332-cx, 160, cx, 32, domination, 2)
复制代码
上面的三行脚本就是显示货币名称的内容。
另外原脚本甚至没有判断别的货币的数量来进行分歧- -也就是说即使你手中有50美元,但是你本身持有的人民币不足50元,你还是不能在商店里买东西。
不过我给改掉了,用的是笨办法- -
这个脚本要不要这么坑?




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