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

Project1

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

[已经解决] 500 求背包范例!!!

[复制链接]

Lv1.梦旅人

梦石
0
星屑
50
在线时间
130 小时
注册时间
2012-4-5
帖子
117
跳转到指定楼层
1
发表于 2012-4-28 08:25:17 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 344143370 于 2012-4-28 08:26 编辑

默认背包10 使用道具后.. 背包扩展20   求范例...我是脚本盲...
  1. .
  2. #==============================================================================
  3. # ■ 背包系统 —— by 水镜风生
  4. #------------------------------------------------------------------------------
  5. LOSE_ITEM_SE_NAME = "Evasion"         # 丢弃物品时播放的SE
  6. LOW_SPEED = 2                         # 背包塞满时的移动速度
  7. USUAL_SPEED = 4                       # 平时的移动速度
  8. WARING_STRING = "背包放的东西太多了。"  # 超重时的提示
  9. IM = 1                                # IM号系统变量决定物品种类的最大值
  10. #==============================================================================
  11. # ■ Scene_Item
  12. #------------------------------------------------------------------------------
  13. #  处理物品画面的类。
  14. #==============================================================================
  15. class Scene_Item < Scene_Base
  16.   #--------------------------------------------------------------------------
  17.   # ● 开始处理
  18.   #--------------------------------------------------------------------------
  19.   def start
  20.     super
  21.     create_menu_background
  22.     @viewport = Viewport.new(0, 0, 544, 416)
  23.     @help_window = Window_Help.new
  24.     @help_window.viewport = @viewport
  25.     @item_window = Window_Item.new(0, 67, 544, 280)
  26.     @item_window.viewport = @viewport
  27.     @item_window.help_window = @help_window
  28.     @item_window.active = false
  29.     @target_window = Window_MenuStatus.new(0, 0)
  30.     @max_window = Window_Item_Max.new
  31.     @max_window.viewport = @viewport
  32.     @number_window = Window_LoseNumber.new(142, 156)
  33.     @number_window.viewport = @viewport
  34.     @command_window = Window_Command.new(145, ["   使用","   丢弃"], 1, 2)
  35.     @command_window.x = 200
  36.     @command_window.y = 160
  37.     hide_command_window
  38.     hide_number_window
  39.     hide_target_window
  40.   end
  41.   #--------------------------------------------------------------------------
  42.   # ● 结束处理
  43.   #--------------------------------------------------------------------------
  44.   alias terminate2 terminate
  45.   def terminate
  46.     terminate2
  47.     @max_window.dispose
  48.     @command_window.dispose
  49.     @number_window.dispose
  50.   end
  51.   #--------------------------------------------------------------------------
  52.   # ● 回到原画面
  53.   #--------------------------------------------------------------------------
  54.   def return_scene
  55.     $scene = Scene_Menu.new(0)
  56.   end
  57.   #--------------------------------------------------------------------------
  58.   # ● 更新画面
  59.   #--------------------------------------------------------------------------
  60.   def update
  61.     super
  62.     update_menu_background
  63.     @help_window.update
  64.     @item_window.update
  65.     @target_window.update
  66.     @max_window.update
  67.     @command_window.update
  68.     @number_window.update
  69.     if @item_window.active
  70.       update_item_selection
  71.     elsif @target_window.active
  72.       update_target_selection
  73.     elsif @command_window.active
  74.       update_command_selection
  75.     elsif @number_window.active
  76.       update_number_selection
  77.     end
  78.   end
  79.   #--------------------------------------------------------------------------
  80.   # ● 更新物品选择
  81.   #--------------------------------------------------------------------------
  82.   def update_item_selection
  83.     if Input.trigger?(Input::B)
  84.       if  $game_party.items.size <= $game_variables[IM]# 如果物品种类没超过限制
  85.         $game_player.change_move_speed(USUAL_SPEED)
  86.       end
  87.         Sound.play_cancel
  88.         return_scene
  89.     elsif Input.trigger?(Input::C)
  90.       @item = @item_window.item
  91.       if @item != nil
  92.         $game_party.last_item_id = @item.id
  93.         Sound.play_decision
  94.           if $game_party.item_can_use?(@item)     # 物品是否可用
  95.             @command_window.draw_item(0,true)      
  96.           else  @command_window.draw_item(0,false) # 不可用的话【使用】选项颜色无效
  97.           end
  98.           if @item.price == 0                     # 物品价格是否为0   
  99.              @command_window.draw_item(1,false)    # 是的话【丢弃】选项无效
  100.           else  
  101.              @command_window.draw_item(1,true)
  102.           end
  103.              show_command_window
  104.        else
  105.          Sound.play_buzzer
  106.        end
  107.     end
  108.   end
  109.   #--------------------------------------------------------------------------
  110.   # ● 更新目标选择
  111.   #--------------------------------------------------------------------------
  112.   def update_target_selection
  113.     if Input.trigger?(Input::B)
  114.       Sound.play_cancel
  115.       if $game_party.item_number(@item) == 0    # 判断物品是否耗尽
  116.         @item_window.refresh                    # 刷新窗口内容      
  117.         @max_window.refresh                     # 刷新物品种类窗口
  118.       end
  119.       hide_target_window
  120.     elsif Input.trigger?(Input::C)
  121.       if not $game_party.item_can_use?(@item)
  122.         Sound.play_buzzer
  123.       else
  124.         determine_target
  125.       end
  126.     end
  127.   end
  128.   #--------------------------------------------------------------------------
  129.   # ★ 更新指令选择
  130.   #--------------------------------------------------------------------------
  131.   def update_command_selection
  132.     if Input.trigger?(Input::B)
  133.       Sound.play_cancel
  134.       hide_command_window
  135.     elsif Input.trigger?(Input::C)
  136.       if @command_window.index == 0
  137.         if $game_party.item_can_use?(@item)
  138.           Sound.play_decision
  139.           @command_window.active = false
  140.           @command_window.visible =false
  141.           determine_item
  142.         else
  143.           Sound.play_buzzer
  144.         end
  145.       elsif  @item == nil or @item.price == 0
  146.         Sound.play_buzzer
  147.       else
  148.         Sound.play_decision
  149.         @command_window.active = false
  150.         @command_window.visible =false        
  151.         max = $game_party.item_number(@item)
  152.         @number_window.set(@item, max)
  153.         show_number_window
  154.       end
  155.     end
  156.   end
  157.   #--------------------------------------------------------------------------
  158.   # ★ 更新数量输入
  159.   #--------------------------------------------------------------------------
  160.   def update_number_selection   
  161.     if Input.trigger?(Input::B)
  162.       Sound.play_cancel
  163.       hide_number_window
  164.     elsif Input.trigger?(Input::C)
  165.       Audio.se_play("Audio/SE/#{LOSE_ITEM_SE_NAME}", 80, 100)
  166.       $game_party.lose_item(@item, @number_window.number)
  167.       @item_window.refresh
  168.       @max_window.refresh  
  169.       hide_number_window
  170.     end  
  171.   end
  172.   #--------------------------------------------------------------------------
  173.   # ★ 显示指令选择窗口
  174.   #--------------------------------------------------------------------------
  175.   def show_command_window
  176.     @command_window.index = 0
  177.     @item_window.active = false
  178.     @command_window.visible = true
  179.     @command_window.active = true
  180.   end
  181.   #--------------------------------------------------------------------------
  182.   # ★ 显示数量窗口
  183.   #--------------------------------------------------------------------------
  184.   def show_number_window
  185.     @command_window.active = false
  186.     @number_window.visible = true
  187.     @number_window.active = true
  188.   end
  189.   #--------------------------------------------------------------------------
  190.   # ★ 隐藏指令选择窗口
  191.   #--------------------------------------------------------------------------
  192.   def hide_command_window
  193.     @item_window.active = true
  194.     @command_window.visible = false
  195.     @command_window.active = false
  196.     @viewport.rect.set(0, 0, 544, 416)
  197.     @viewport.ox = 0
  198.   end
  199.   #--------------------------------------------------------------------------
  200.   # ★ 隐藏数量窗口
  201.   #--------------------------------------------------------------------------
  202.   def hide_number_window
  203.     @item_window.active = true
  204.     @number_window.visible = false
  205.     @number_window.active = false
  206.     @viewport.rect.set(0, 0, 544, 416)
  207.     @viewport.ox = 0
  208.   end  
  209. end
  210. #==============================================================================
  211. # ■ Window_lost_item  
  212. #------------------------------------------------------------------------------
  213. #  显示物品丢弃数量的窗口,仿 Window_ShopNumber。
  214. #==============================================================================
  215. class Window_LoseNumber < Window_Base
  216.   #--------------------------------------------------------------------------
  217.   # ★ 初始化对像
  218.   #     x      : 窗口 X 座标
  219.   #     y      : 窗口 Y 座标
  220.   #--------------------------------------------------------------------------
  221.   def initialize(x, y)
  222.     super(x, y, 260, 104)
  223.     @item = nil
  224.     @max = 1
  225.     @number = 1
  226.   end
  227.   #--------------------------------------------------------------------------
  228.   # ★ 设置物品、最大数量
  229.   #--------------------------------------------------------------------------
  230.   def set(item, max)
  231.     @item = item
  232.     @max = max
  233.     @number = 1
  234.     refresh
  235.   end
  236.   #--------------------------------------------------------------------------
  237.   # ★ 设置数量输入
  238.   #--------------------------------------------------------------------------
  239.   def number
  240.     return @number
  241.   end
  242.   #--------------------------------------------------------------------------
  243.   # ★ 刷新
  244.   #--------------------------------------------------------------------------
  245.   def refresh
  246.     y = 24
  247.     self.contents.clear
  248.     draw_item_name(@item, 0, y)
  249.     self.contents.font.color = normal_color
  250.     self.contents.draw_text(164, y, 20, WLH, "×")
  251.     self.contents.draw_text(190, y, 20, WLH, @number, 2)
  252.     self.cursor_rect.set(186, y, 28, WLH)
  253.   end
  254.   #--------------------------------------------------------------------------
  255.   # ★ 更新画面
  256.   #--------------------------------------------------------------------------
  257.   def update
  258.     super
  259.     if self.active
  260.       last_number = @number
  261.       if Input.repeat?(Input::RIGHT) and @number < @max
  262.         @number += 1
  263.       end
  264.       if Input.repeat?(Input::LEFT) and @number > 1
  265.         @number -= 1
  266.       end
  267.       if Input.repeat?(Input::UP) and @number < @max
  268.         @number = [@number + 10, @max].min
  269.       end
  270.       if Input.repeat?(Input::DOWN) and @number > 1
  271.         @number = [@number - 10, 1].max
  272.       end
  273.       if @number != last_number
  274.         Sound.play_cursor
  275.         refresh
  276.       end
  277.     end
  278.   end
  279. end
  280. #==============================================================================
  281. # ■ Window_Item_Max
  282. #-----------------------------------------------------------------------------
  283. #   显示背包容量和当前物品数的窗口
  284. #============================================================================

  285. class Window_Item_Max < Window_Base
  286.   #--------------------------------------------------------------------------
  287.   # ★ 初始化对像
  288.   #--------------------------------------------------------------------------
  289.   def initialize
  290.     super(290, 360, 254, 56)
  291.     refresh
  292.   end
  293.   
  294.   #--------------------------------------------------------------------------
  295.   # ★ 刷新
  296.   #--------------------------------------------------------------------------  
  297.   def refresh
  298.     self.contents.clear
  299.     draw_icon(144, 0, 0)
  300.     self.contents.draw_text(36, 0, 100, 24, "背包容量:")
  301.     item = $game_party.items
  302.     string = item.size.to_s
  303.     self.contents.font.color = knockout_color if item.size > $game_variables[IM]
  304.     self.contents.draw_text(135, 0, 30, 24, string, 2)
  305.     self.contents.font.color = normal_color
  306.     string = "/ " + $game_variables[IM].to_s
  307.     self.contents.draw_text(173, 0, 100, 24, string )
  308.   end
  309. end
  310. #==============================================================================
  311. # ■ Window_Waring
  312. #-----------------------------------------------------------------------------
  313. #   显示超重警告的窗口
  314. #============================================================================
  315. class Window_Waring  < Window_Base
  316.   def initialize
  317.     width = WARING_STRING.size * 8
  318.     super(544 - width, 416 - 56, width, 56)
  319.     refresh
  320.   end
  321.   
  322.   def refresh
  323.     self.contents.clear
  324.     self.contents.draw_text(0, -4, width - 32, 32, WARING_STRING)
  325.   end
  326. end
  327. #==============================================================================
  328. # Game_Player 添加更改移动速度的方法
  329. #============================================================================
  330. class Game_Player   
  331.   def change_move_speed(n)
  332.     @move_speed = n
  333.   end
  334. end
  335. #==============================================================================
  336. # Scene_Map  添加在地图上显示警告窗口的处理
  337. #============================================================================
  338. class Scene_Map
  339.   #--------------------------------------------------------------------------
  340.   # ● 开始处理
  341.   #--------------------------------------------------------------------------
  342.   alias start2 start
  343.   def start
  344.     start2
  345.     @waring_window = Window_Waring.new
  346.     @waring_window.visible = false
  347.   end  
  348.   #--------------------------------------------------------------------------
  349.   # ● 结束处理
  350.   #--------------------------------------------------------------------------
  351.   alias terminate2 terminate
  352.   def terminate
  353.     @waring_window.dispose
  354.     terminate2
  355.   end
  356.   #--------------------------------------------------------------------------
  357.   # ● フレーム更新
  358.   #--------------------------------------------------------------------------
  359.   alias update2 update
  360.   def update
  361.     update2
  362.     update_over_item
  363.   end
  364.   #--------------------------------------------------------------------------
  365.   # ● 更新物品超限判定
  366.   #--------------------------------------------------------------------------  
  367.   def update_over_item
  368.     if $game_party.items.size > $game_variables[IM]
  369.       @waring_window.visible = true
  370.       $game_player.change_move_speed(LOW_SPEED)
  371.     else
  372.       @waring_window.visible = false
  373.     end
  374.   end
  375. end
复制代码

Lv4.逐梦者 (超级版主)

嗜谎者

梦石
2
星屑
17312
在线时间
3909 小时
注册时间
2010-9-12
帖子
9654

极短24评委极短23评委极短22评委极短21评委开拓者

2
发表于 2012-4-28 11:41:23 | 只看该作者
本帖最后由 Luciffer 于 2012-4-28 12:02 编辑

进入游戏先自动执行事件把一号变量=10了,这样默认背包大小就=10.
然后使用道具(背包中释放,施放对象无)后引发公共事件,事件内容:变量1=20.这样一来就完成了,就这么简单。
Project6.rar (248.66 KB, 下载次数: 665) 具体参考范例

点评

又分有动力。。。  发表于 2012-4-28 12:41
多谢!!!!  发表于 2012-4-28 12:22
回复

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
130 小时
注册时间
2012-4-5
帖子
117
3
 楼主| 发表于 2012-4-28 11:50:01 | 只看该作者
还是不懂...能不能给我个范例我看看....

点评

诺~范例~  发表于 2012-4-28 12:02
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-17 02:26

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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