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

Project1

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

[已经解决] 也许很简单

 关闭 [复制链接]

Lv1.梦旅人

梦石
0
星屑
50
在线时间
38 小时
注册时间
2009-11-30
帖子
71
跳转到指定楼层
1
发表于 2009-12-12 15:15:51 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
谁能把xp默认的商店系统改成只有【出售】一个选项的,或者商店处理时直接跳到出售界面,购买和取消就不要了
rpg爱好者

Lv2.观梦者

梦石
0
星屑
579
在线时间
169 小时
注册时间
2008-10-29
帖子
431
2
发表于 2009-12-12 15:50:56 | 只看该作者
以下内容替代脚本中 Scene_Shop 中的全部内容
或者在脚本Main前插入这段脚本也行
别看很长,我只改动了一点点
  1. #==============================================================================
  2. # ■ Scene_Shop
  3. #------------------------------------------------------------------------------
  4. #  处理商店画面的类。
  5. #==============================================================================

  6. class Scene_Shop
  7.   #--------------------------------------------------------------------------
  8.   # ● 主处理
  9.   #--------------------------------------------------------------------------
  10.   def main
  11.     # 生成帮助窗口
  12.     @help_window = Window_Help.new
  13.     # 生成指令窗口
  14.     @command_window = Window_ShopCommand.new
  15.     # 生成金钱窗口
  16.     @gold_window = Window_Gold.new
  17.     @gold_window.x = 480
  18.     @gold_window.y = 64
  19.     # 生成时间窗口
  20.     @dummy_window = Window_Base.new(0, 128, 640, 352)
  21.     # 生成购买窗口
  22.     @buy_window = Window_ShopBuy.new($game_temp.shop_goods)
  23.     @buy_window.active = false
  24.     @buy_window.visible = false
  25.     @buy_window.help_window = @help_window
  26.     # 生成卖出窗口
  27.     @sell_window = Window_ShopSell.new
  28.     @sell_window.active = false
  29.     @sell_window.visible = false
  30.     @sell_window.help_window = @help_window
  31.     # 生成数量输入窗口
  32.     @number_window = Window_ShopNumber.new
  33.     @number_window.active = false
  34.     @number_window.visible = false
  35.     # 生成状态窗口
  36.     @status_window = Window_ShopStatus.new
  37.     @status_window.visible = false
  38.     # 执行过渡
  39.     Graphics.transition
  40.     # 主循环
  41.     loop do
  42.       # 刷新游戏画面
  43.       Graphics.update
  44.       # 刷新输入信息
  45.       Input.update
  46.       # 刷新画面
  47.       update
  48.       # 如果画面切换的话就中断循环
  49.       if $scene != self
  50.         break
  51.       end
  52.     end
  53.     # 准备过渡
  54.     Graphics.freeze
  55.     # 释放窗口
  56.     @help_window.dispose
  57.     @command_window.dispose
  58.     @gold_window.dispose
  59.     @dummy_window.dispose
  60.     @buy_window.dispose
  61.     @sell_window.dispose
  62.     @number_window.dispose
  63.     @status_window.dispose
  64.   end
  65.   #--------------------------------------------------------------------------
  66.   # ● 刷新画面
  67.   #--------------------------------------------------------------------------
  68.   def update
  69.     # 刷新窗口
  70.     @help_window.update
  71.     @command_window.update
  72.     @gold_window.update
  73.     @dummy_window.update
  74.     @buy_window.update
  75.     @sell_window.update
  76.     @number_window.update
  77.     @status_window.update
  78.     # 指令窗口激活的情况下: 调用 update_command
  79.     if @command_window.active
  80.       update_command
  81.       return
  82.     end
  83.     # 购买窗口激活的情况下: 调用 update_buy
  84.     if @buy_window.active
  85.       update_buy
  86.       return
  87.     end
  88.     # 卖出窗口激活的情况下: 调用 update_sell
  89.     if @sell_window.active
  90.       update_sell
  91.       return
  92.     end
  93.     # 个数输入窗口激活的情况下: 调用 update_number
  94.     if @number_window.active
  95.       update_number
  96.       return
  97.     end
  98.   end
  99.   #--------------------------------------------------------------------------
  100.   # ● 刷新画面 (指令窗口激活的情况下)
  101.   #--------------------------------------------------------------------------
  102.   def update_command
  103.     # 按下 B 键的情况下
  104.     if Input.trigger?(Input::B)
  105.       # 演奏取消 SE
  106.       $game_system.se_play($data_system.cancel_se)
  107.       # 切换到地图画面
  108.       $scene = Scene_Map.new
  109.       return
  110.     end
  111.     # 按下 C 键的情况下
  112.     if Input.trigger?(Input::C)
  113.       # 命令窗口光标位置分支
  114.       case @command_window.index
  115.       when 1  # 购买
  116.         # 演奏确定 SE
  117.         $game_system.se_play($data_system.decision_se)
  118.         # 窗口状态转向购买模式
  119.         @command_window.active = false
  120.         @dummy_window.visible = false
  121.         @buy_window.active = true
  122.         @buy_window.visible = true
  123.         @buy_window.refresh
  124.         @status_window.visible = true
  125.       when 0  # 卖出
  126.         # 演奏确定 SE
  127.         $game_system.se_play($data_system.decision_se)
  128.         # 窗口状态转向卖出模式
  129.         @command_window.active = false
  130.         @dummy_window.visible = false
  131.         @sell_window.active = true
  132.         @sell_window.visible = true
  133.         @sell_window.refresh
  134.       when 2  # 取消
  135.         # 演奏确定 SE
  136.         $game_system.se_play($data_system.decision_se)
  137.         # 切换到地图画面
  138.         $scene = Scene_Map.new
  139.       end
  140.       return
  141.     end
  142.   end
  143.   #--------------------------------------------------------------------------
  144.   # ● 刷新画面 (购买窗口激活的情况下)
  145.   #--------------------------------------------------------------------------
  146.   def update_buy
  147.     # 设置状态窗口的物品
  148.     @status_window.item = @buy_window.item
  149.     # 按下 B 键的情况下
  150.     if Input.trigger?(Input::B)
  151.       # 演奏取消 SE
  152.       $game_system.se_play($data_system.cancel_se)
  153.       # 窗口状态转向初期模式
  154.       @command_window.active = true
  155.       @dummy_window.visible = true
  156.       @buy_window.active = false
  157.       @buy_window.visible = false
  158.       @status_window.visible = false
  159.       @status_window.item = nil
  160.       # 删除帮助文本
  161.       @help_window.set_text("")
  162.       return
  163.     end
  164.     # 按下 C 键的情况下
  165.     if Input.trigger?(Input::C)
  166.       # 获取物品
  167.       @item = @buy_window.item
  168.       # 物品无效的情况下、或者价格在所持金以上的情况下
  169.       if @item == nil or @item.price > $game_party.gold
  170.         # 演奏冻结 SE
  171.         $game_system.se_play($data_system.buzzer_se)
  172.         return
  173.       end
  174.       # 获取物品所持数
  175.       case @item
  176.       when RPG::Item
  177.         number = $game_party.item_number(@item.id)
  178.       when RPG::Weapon
  179.         number = $game_party.weapon_number(@item.id)
  180.       when RPG::Armor
  181.         number = $game_party.armor_number(@item.id)
  182.       end
  183.       # 如果已经拥有了 99 个情况下
  184.       if number == 99
  185.         # 演奏冻结 SE
  186.         $game_system.se_play($data_system.buzzer_se)
  187.         return
  188.       end
  189.       # 演奏确定 SE
  190.       $game_system.se_play($data_system.decision_se)
  191.       # 计算可以最多购买的数量
  192.       max = @item.price == 0 ? 99 : $game_party.gold / @item.price
  193.       max = [max, 99 - number].min
  194.       # 窗口状态转向数值输入模式
  195.       @buy_window.active = false
  196.       @buy_window.visible = false
  197.       @number_window.set(@item, max, @item.price)
  198.       @number_window.active = true
  199.       @number_window.visible = true
  200.     end
  201.   end
  202.   #--------------------------------------------------------------------------
  203.   # ● 画面更新 (卖出窗口激活的情况下)
  204.   #--------------------------------------------------------------------------
  205.   def update_sell
  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.       @sell_window.active = false
  214.       @sell_window.visible = false
  215.       @status_window.item = nil
  216.       # 删除帮助文本
  217.       @help_window.set_text("")
  218.       return
  219.     end
  220.     # 按下 C 键的情况下
  221.     if Input.trigger?(Input::C)
  222.       # 获取物品
  223.       @item = @sell_window.item
  224.       # 设置状态窗口的物品
  225.       @status_window.item = @item
  226.       # 物品无效的情况下、或者价格为 0 (不能卖出) 的情况下
  227.       if @item == nil or @item.price == 0
  228.         # 演奏冻结 SE
  229.         $game_system.se_play($data_system.buzzer_se)
  230.         return
  231.       end
  232.       # 演奏确定 SE
  233.       $game_system.se_play($data_system.decision_se)
  234.       # 获取物品的所持数
  235.       case @item
  236.       when RPG::Item
  237.         number = $game_party.item_number(@item.id)
  238.       when RPG::Weapon
  239.         number = $game_party.weapon_number(@item.id)
  240.       when RPG::Armor
  241.         number = $game_party.armor_number(@item.id)
  242.       end
  243.       # 最大卖出个数 = 物品的所持数
  244.       max = number
  245.       # 窗口状态转向个数输入模式
  246.       @sell_window.active = false
  247.       @sell_window.visible = false
  248.       @number_window.set(@item, max, @item.price / 2)
  249.       @number_window.active = true
  250.       @number_window.visible = true
  251.       @status_window.visible = true
  252.     end
  253.   end
  254.   #--------------------------------------------------------------------------
  255.   # ● 刷新画面 (个数输入窗口激活的情况下)
  256.   #--------------------------------------------------------------------------
  257.   def update_number
  258.     # 按下 B 键的情况下
  259.     if Input.trigger?(Input::B)
  260.       # 演奏取消 SE
  261.       $game_system.se_play($data_system.cancel_se)
  262.       # 设置个数输入窗口为不活动·非可视状态
  263.       @number_window.active = false
  264.       @number_window.visible = false
  265.       # 命令窗口光标位置分支
  266.       case @command_window.index
  267.       when 1  # 购买
  268.         # 窗口状态转向购买模式
  269.         @buy_window.active = true
  270.         @buy_window.visible = true
  271.       when 0  # 卖出
  272.         # 窗口状态转向卖出模式
  273.         @sell_window.active = true
  274.         @sell_window.visible = true
  275.         @status_window.visible = false
  276.       end
  277.       return
  278.     end
  279.     # 按下 C 键的情况下
  280.     if Input.trigger?(Input::C)
  281.       # 演奏商店 SE
  282.       $game_system.se_play($data_system.shop_se)
  283.       # 设置个数输入窗口为不活动·非可视状态
  284.       @number_window.active = false
  285.       @number_window.visible = false
  286.       # 命令窗口光标位置分支
  287.       case @command_window.index
  288.       when 1  # 购买
  289.         # 购买处理
  290.         $game_party.lose_gold(@number_window.number * @item.price)
  291.         case @item
  292.         when RPG::Item
  293.           $game_party.gain_item(@item.id, @number_window.number)
  294.         when RPG::Weapon
  295.           $game_party.gain_weapon(@item.id, @number_window.number)
  296.         when RPG::Armor
  297.           $game_party.gain_armor(@item.id, @number_window.number)
  298.         end
  299.         # 刷新各窗口
  300.         @gold_window.refresh
  301.         @buy_window.refresh
  302.         @status_window.refresh
  303.         # 窗口状态转向购买模式
  304.         @buy_window.active = true
  305.         @buy_window.visible = true
  306.       when 0  # 卖出
  307.         # 卖出处理
  308.         $game_party.gain_gold(@number_window.number * (@item.price / 2))
  309.         case @item
  310.         when RPG::Item
  311.           $game_party.lose_item(@item.id, @number_window.number)
  312.         when RPG::Weapon
  313.           $game_party.lose_weapon(@item.id, @number_window.number)
  314.         when RPG::Armor
  315.           $game_party.lose_armor(@item.id, @number_window.number)
  316.         end
  317.         # 刷新各窗口
  318.         @gold_window.refresh
  319.         @sell_window.refresh
  320.         @status_window.refresh
  321.         # 窗口状态转向卖出模式
  322.         @sell_window.active = true
  323.         @sell_window.visible = true
  324.         @status_window.visible = false
  325.       end
  326.       return
  327.     end
  328.   end
  329. end
  330. class Window_ShopCommand < Window_Selectable
  331.   #--------------------------------------------------------------------------
  332.   # ● 初始化对像
  333.   #--------------------------------------------------------------------------
  334.   def initialize
  335.     super(0, 64, 480, 64)
  336.     self.contents = Bitmap.new(width - 32, height - 32)
  337.     @item_max = 1
  338.     @column_max = 1
  339.     @commands = ["出售", "卖", "取消"]
  340.     refresh
  341.     self.index = 0
  342.   end
  343.   end
复制代码
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-12-26 09:24

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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