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

Project1

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

[已经过期] 商店画面、输入买卖数量的窗口。

[复制链接]

Lv3.寻梦者

梦石
0
星屑
3531
在线时间
1888 小时
注册时间
2010-6-19
帖子
1210
跳转到指定楼层
1
发表于 2010-12-4 19:22:51 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

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

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

x
本帖最后由 黑米馒头 于 2010-12-4 19:26 编辑

系统默认的商店画面、输入买卖数量的窗口弄起来没有显示买卖物品的图案的.如图:
如何做到买卖物品的时候显示物品图案就像这样的图案
貌似应该在这里改吧Scene_Shop 不过我不知道怎么弄....大虾们快来帮下

范例
Project1.rar (197.13 KB, 下载次数: 73)

Lv2.观梦者

梦石
0
星屑
635
在线时间
244 小时
注册时间
2010-9-9
帖子
472
2
发表于 2010-12-4 19:46:34 | 只看该作者
本帖最后由 EngShun 于 2010-12-4 19:47 编辑

Scene_Shop改成以下的
  1. #==============================================================================
  2. # ■ Scene_Shop
  3. #------------------------------------------------------------------------------
  4. #  处理商店画面的类。
  5. #==============================================================================

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

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
3531
在线时间
1888 小时
注册时间
2010-6-19
帖子
1210
3
 楼主| 发表于 2010-12-4 20:34:29 | 只看该作者
回复 EngShun 的帖子

...哪里改了可以弄点记号吗...

点评

增加第36、37、41和42行, 修改第 211和 262行  发表于 2010-12-4 20:38
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-9-30 04:17

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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