Project1

标题: 求对这个商店系统的完善 [打印本页]

作者: jiahui5592986    时间: 2012-8-6 15:02
标题: 求对这个商店系统的完善
本帖最后由 jiahui5592986 于 2012-8-6 15:15 编辑
  1. #==============================================================================
  2. # ■ Scene_Name
  3. #------------------------------------------------------------------------------
  4. #  处理名称输入画面的类。
  5. #==============================================================================

  6. class Scene_Shop
  7.   #--------------------------------------------------------------------------
  8.   # ● 主处理
  9.   #--------------------------------------------------------------------------
  10.   def main
  11.     # 主处理
  12.     shop_main
  13.     # 执行过渡
  14.     Graphics.transition
  15.     # 主循环
  16.     loop do
  17.       # 刷新游戏画面
  18.       Graphics.update
  19.       # 刷新输入信息
  20.       Input.update
  21.       # 刷新信息
  22.       shop_update
  23.       # 如果画面切换就中断循环
  24.       if $scene != self
  25.         break
  26.       end
  27.     end
  28.     # 准备过渡
  29.     Graphics.freeze
  30.     # 释放
  31.     shop_dispose
  32.   end
  33.   #--------------------------------------------------------------------------
  34.   # ● 商店主处理
  35.   #--------------------------------------------------------------------------
  36.   def shop_main
  37.     # 生成商店窗口背景
  38.     @skin5 = Sprite.new
  39.     @skin5.bitmap = Bitmap.new("UI/商店")
  40.     @skin5.x = 184
  41.     @skin5.y = 30
  42.     @skin5.z = 500
  43.     shop = [[0,1],[0,2],[0,2],[0,2],[0,2],[0,2],[0,2],[0,2],[0,2],[0,2],
  44.     [0,1],[0,2],[0,2],[0,2],[0,2]]
  45.     # 生成窗口
  46.     @shop_window = Window_ShopBuy.new($game_temp.shop_goods)
  47.     @shop_window.z = 501
  48.     @shop_window.help_window = Window_Help.new
  49.     @shop_window.help_window.visible = false
  50.     # 确定按钮
  51.     @确定 = Sprite.new
  52.     @确定.bitmap = Bitmap.new("UI/确定")
  53.     @确定.x = 300
  54.     @确定.y = 407
  55.     @确定.z = 501
  56.     确定(0)
  57.     # 叉按钮
  58.     @叉7 = Sprite.new
  59.     @叉7.bitmap = Bitmap.new("UI/叉")
  60.     @叉7.x = 435
  61.     @叉7.y = 35
  62.     @叉7.z = 501
  63.     叉7(0)
  64.     # 描绘物品
  65.     draw_shop
  66.   end
  67.   #--------------------------------------------------------------------------
  68.   # ● 刷新画面
  69.   #--------------------------------------------------------------------------
  70.   def shop_update
  71.     # 获取鼠标位置
  72.     @mouse_x, @mouse_y = Mouse.get_mouse_pos
  73.     # 购买窗口刷新
  74.     @shop_window.update
  75.     # 刷新输入端口
  76.     update_field
  77.     # 按下 B 键的情况下
  78.     if Input.trigger?(Input::X)
  79.       # 演奏取消 SE
  80.       $game_system.se_play($data_system.cancel_se)
  81.       # 切换到菜单画面
  82.       $scene = Scene_Menu.new(2)
  83.       return
  84.     end
  85.     # 当按下鼠标左键时
  86.     if Mouse.trigger?(Mouse::LEFT)
  87.       # 光标存在的情况下
  88.       if $help_visible
  89.         # 同物品的情况下
  90.         if @shop_window.select_index == @old_index
  91.           @number += 1
  92.         end
  93.         # 释放输入窗口
  94.         field_dispose
  95.         # 描绘选中物品
  96.         draw_shop
  97.         return
  98.       end
  99.       # 生成输入窗口
  100.       draw_field if @field.nil?
  101.     end
  102.     if @press2 == 1
  103.       unless Mouse.press?(Mouse::LEFT)
  104.         @press2 = 0
  105.         # 确定
  106.         if @mouse_x >= @确定.x and @mouse_x <= @确定.x + @确定.bitmap.width/3 and
  107.           @mouse_y >= @确定.y and @mouse_y <= @确定.y + @确定.bitmap.height
  108.           #######################################################
  109.           return if $game_party.gold < @item.price*@number
  110.           $game_party.gain_item(@item.id, @number)
  111.           $scene = Scene_Map.new
  112.           #######################################################
  113.           return
  114.         end
  115.         # 叉
  116.         if @mouse_x >= @叉7.x and @mouse_x <= @叉7.x + @叉7.bitmap.width/4 and
  117.           @mouse_y >= @叉7.y and @mouse_y <= @叉7.y + @叉7.bitmap.height
  118.           #######################################################
  119.           $scene = Scene_Map.new
  120.           #######################################################
  121.           return
  122.         end
  123.       end
  124.     end
  125.     # 确定
  126.     if @mouse_x >= @确定.x and @mouse_x <= @确定.x + @确定.bitmap.width/3 and
  127.       @mouse_y >= @确定.y and @mouse_y <= @确定.y + @确定.bitmap.height
  128.       确定(1)
  129.       if Mouse.press?(Mouse::LEFT)
  130.         确定(2)
  131.         @press2 = 1
  132.       end
  133.     else
  134.       确定(0)
  135.     end
  136.     # 叉
  137.     if @mouse_x >= @叉7.x and @mouse_x <= @叉7.x + @叉7.bitmap.width/4 and
  138.       @mouse_y >= @叉7.y and @mouse_y <= @叉7.y + @叉7.bitmap.height
  139.       叉7(1)
  140.       if Mouse.press?(Mouse::LEFT)
  141.         叉7(2)
  142.         @press2 = 1
  143.       end
  144.     else
  145.       叉7(0)
  146.     end
  147.   end
  148.   #--------------------------------------------------------------------------
  149.   # ● 描绘选中物品
  150.   #--------------------------------------------------------------------------
  151.   def draw_shop
  152.     @skin5.bitmap.dispose
  153.     @skin5.bitmap = Bitmap.new("UI/商店")
  154.     @skin5.bitmap.font = Font.new("宋体",14)
  155.     @skin5.bitmap.font.color = Color.new(0,0,0,255)
  156.     # 描绘金钱
  157.     @skin5.bitmap.draw_text(126, 344, 100, 32, $game_party.gold.to_s, 0)
  158.     if @shop_window.select_index >= 0
  159.       # 获取物品
  160.       @item = @shop_window.item
  161.       @number = 1 if @shop_window.select_index != @old_index
  162.       @old_index = @shop_window.select_index
  163.       # 描绘物品单价
  164.       @skin5.bitmap.draw_text(126, 272, 100, 32, @item.price.to_s, 0)
  165.       # 描绘物品数量
  166.       @skin5.bitmap.draw_text(126, 296, 100, 32, @number.to_s, 0) if @field.nil?
  167.       # 描绘物品总额
  168.       @skin5.bitmap.draw_text(126, 320, 100, 32, (@item.price*@number).to_s, 0)
  169.     end
  170.   end
  171.   #--------------------------------------------------------------------------
  172.   # ● 生成输入窗口
  173.   #--------------------------------------------------------------------------
  174.   def draw_field
  175.     if @mouse_x >= 310 and @mouse_x <= 380 and @mouse_y >= 333 and @mouse_y <= 348
  176.       if @shop_window.select_index >= 0 and @field.nil?
  177.         # 生成输入窗口
  178.         @viewport = Viewport.new(310,335,20,14)
  179.         @field = Type_Field2.new(@viewport,false,false,true,Color.new(0,0,0,255),@number.to_s)
  180.         @field.active = true
  181.         draw_shop
  182.       end
  183.       return
  184.     end
  185.     field_dispose
  186.   end
  187.   #--------------------------------------------------------------------------
  188.   # ● 刷新输入窗口
  189.   #--------------------------------------------------------------------------
  190.   def update_field
  191.     # 刷新输入端口
  192.     @field.update if @field != nil
  193.     # 物品数量刷新
  194.     if @field != nil
  195.       if @field.get_text != [] and @field.get_text.to_s.to_i > 0
  196.         @number = @field.get_text.to_s.to_i
  197.         draw_shop
  198.         return
  199.       end
  200.       @number = 1
  201.       draw_shop
  202.     end
  203.   end
  204.   #--------------------------------------------------------------------------
  205.   # ● 释放输入窗口
  206.   #--------------------------------------------------------------------------
  207.   def field_dispose
  208.     return if @field.nil?
  209.     @field.dispose
  210.     @viewport.dispose
  211.     @field = nil
  212.     draw_shop
  213.   end
  214.   #--------------------------------------------------------------------------
  215.   # ● 刷新确定按钮
  216.   #--------------------------------------------------------------------------
  217.   def 确定(n)
  218.     @确定.src_rect.set(@确定.bitmap.width/3*n, 0, @确定.bitmap.width/3, @确定.bitmap.height)
  219.   end
  220.   #--------------------------------------------------------------------------
  221.   # ● 刷新叉按钮
  222.   #--------------------------------------------------------------------------
  223.   def 叉7(n)
  224.     @叉7.src_rect.set(@叉7.bitmap.width/4*n, 0, @叉7.bitmap.width/4, @叉7.bitmap.height)
  225.   end
  226.   #--------------------------------------------------------------------------
  227.   # ● 释放
  228.   #--------------------------------------------------------------------------
  229.   def shop_dispose
  230.     field_dispose
  231.     @确定.bitmap.dispose
  232.     @确定.dispose
  233.     @叉7.bitmap.dispose
  234.     @叉7.dispose
  235.     @shop_window.dispose
  236.     @shop_window.help_window.dispose
  237.     @skin5.bitmap.dispose
  238.     @skin5.dispose
  239.   end
  240. end
复制代码
这里是脚本,工程就不上传了.我相信大大们一眼就能看出来错误.

目前知道的BUG:1.购买物品后,银两没有减少.
                        2.购买物品后自动关闭商店窗口???
                        3.最好能附加个,银两颜色的脚本...   
                        4.展示的商品说明都是最后一个商品的说明.或者你选中了某个商品后,其他的商品也变成了这个商品的说明.

                      能不能头透漏下:修改金钱上限在哪?...dsu_plus_rewardpost_czw
作者: jiahui5592986    时间: 2012-8-7 09:16
好吧,我承认,没人来,都睡觉呢?
作者: 幻想中的鸡蛋    时间: 2012-8-7 11:40
1 2个问题疑似你脚本109~113处……
$game_party.gold -= @item.price*@number 添加这样一行应该就能解决银两减少的问题,
$scene = Scene_Map.new这行删除应该就能解决自动退出商店的问题。渣脚本不知道删掉这行还会有什么后果……
问题3……跳过之。
问题4……@skin5.bitmap.draw_text(126, 344, 100, 32, $game_party.gold.to_s, 0)一句里最后的0改成别的数字试一下?找不到原函数定义不知道最后一个是不是色相……




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