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

Project1

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

[已经解决] 谁帮改下Scene_Item,增加“使用,图鉴,丢弃,取消”选项

[复制链接]

Lv1.梦旅人

梦石
0
星屑
50
在线时间
95 小时
注册时间
2010-10-22
帖子
18
跳转到指定楼层
1
发表于 2012-9-21 16:52:42 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
RT,图鉴链接我自己写就行了。




手快了,没点求助

Lv3.寻梦者

梦石
0
星屑
2802
在线时间
2028 小时
注册时间
2012-4-25
帖子
141
2
发表于 2012-9-21 18:34:55 | 只看该作者
RUBY 代码复制
  1. #==============================================================================
  2. # ■ Scene_Item
  3. #------------------------------------------------------------------------------
  4. #  处理物品画面的类。
  5. #==============================================================================
  6.  
  7. class Scene_Item
  8.   #--------------------------------------------------------------------------
  9.   # ● 主处理
  10.   #--------------------------------------------------------------------------
  11.   def main
  12.     # 生成选项类的窗口==================灵感于title的选项
  13.     s1 = "使用"
  14.     s2 = "图鉴"
  15.     s3 = "丢弃"
  16.     s4 = "取消"
  17.     @item_command_window = Window_Command.new(192, [s1, s2, s3, s4])
  18.     @item_command_window.visible = false
  19.     @item_command_window.active = false
  20.     @item_command_window.x = 0
  21.     @item_command_window.y = 200
  22.     @item_command_window.z = 9999
  23.     #------------------------------------------------------------
  24.     # 生成帮助窗口、物品窗口
  25.     @help_window = Window_Help.new
  26.     @item_window = Window_Item.new
  27.     # 关联帮助窗口
  28.     @item_window.help_window = @help_window
  29.     # 生成目标窗口 (设置为不可见・不活动)
  30.     @target_window = Window_Target.new
  31.     @target_window.visible = false
  32.     @target_window.active = false
  33.     # 执行过度
  34.     Graphics.transition
  35.     # 主循环
  36.     loop do
  37.       # 刷新游戏画面
  38.       Graphics.update
  39.       # 刷新输入信息
  40.       Input.update
  41.       # 刷新画面
  42.       update
  43.       # 如果画面切换就中断循环
  44.       if $scene != self
  45.         break
  46.       end
  47.     end
  48.     # 装备过渡
  49.     Graphics.freeze
  50.     # 释放窗口
  51.     @help_window.dispose
  52.     @item_window.dispose
  53.     @target_window.dispose
  54.   end
  55.   #--------------------------------------------------------------------------
  56.   # ● 刷新画面
  57.   #--------------------------------------------------------------------------
  58.   def update
  59.     # 刷新窗口
  60.     @help_window.update
  61.     @item_window.update
  62.     @target_window.update
  63.     # 物品窗口被激活的情况下: 调用 update_item
  64.     if @item_window.active
  65.       update_item
  66.       return
  67.     end
  68.     # 目标窗口被激活的情况下: 调用 update_target
  69.     if @target_window.active
  70.       update_target
  71.       return
  72.     end
  73.     # 选项类窗口激活时
  74.     if @item_command_window.active
  75.       update_item_command_window
  76.       return
  77.     end
  78.   end
  79.   #--------------------------------------------------------------------------
  80.   # ● 刷新画面 (物品窗口被激活的情况下)
  81.   #--------------------------------------------------------------------------
  82.   def update_item
  83.     # 按下 B 键的情况下
  84.     if Input.trigger?(Input::B)
  85.       # 演奏取消 SE
  86.       $game_system.se_play($data_system.cancel_se)
  87.       # 切换到菜单画面
  88.       $scene = Scene_Menu.new(0)
  89.       return
  90.     end
  91.     # 按下 C 键的情况下
  92.     if Input.trigger?(Input::C)
  93.       # 获取物品窗口当前选中的物品数据
  94.       @item = @item_window.item
  95.       #-----------------------------------------------
  96.       # 打开窗口
  97.       #------------------------------------------------
  98.       $game_system.se_play($data_system.decision_se)
  99.        @item_command_window.x = (@item_window.index + 1) % 2 * 304
  100.       @item_command_window.visible = true
  101.       @item_command_window.active = true
  102.       @item_window.active = false        
  103.     end  
  104.   end
  105.   #--------------------------------------------------------------------------
  106.   # ● 刷新画面 (目标窗口被激活的情况下)
  107.   #--------------------------------------------------------------------------
  108.   def update_target
  109.     # 按下 B 键的情况下
  110.     if Input.trigger?(Input::B)
  111.       # 演奏取消 SE
  112.       $game_system.se_play($data_system.cancel_se)
  113.       # 由于物品用完而不能使用的场合
  114.       unless $game_party.item_can_use?(@item.id)
  115.         # 再次生成物品窗口的内容
  116.         @item_window.refresh
  117.       end
  118.       # 删除目标窗口
  119.       @item_window.active = true
  120.       @target_window.visible = false
  121.       @target_window.active = false
  122.       return
  123.     end
  124.     # 按下 C 键的情况下
  125.     if Input.trigger?(Input::C)
  126.       # 如果物品用完的情况下
  127.       if $game_party.item_number(@item.id) == 0
  128.         # 演奏冻结 SE
  129.         $game_system.se_play($data_system.buzzer_se)
  130.         return
  131.       end
  132.       # 目标是全体的情况下
  133.       if @target_window.index == -1
  134.         # 对同伴全体应用物品使用效果
  135.         used = false
  136.         for i in $game_party.actors
  137.           used |= i.item_effect(@item)
  138.         end
  139.       end
  140.       # 目标是单体的情况下
  141.       if @target_window.index >= 0
  142.         # 对目标角色应用物品的使用效果
  143.         target = $game_party.actors[@target_window.index]
  144.         used = target.item_effect(@item)
  145.       end
  146.       # 使用物品的情况下
  147.       if used
  148.         # 演奏物品使用时的 SE
  149.         $game_system.se_play(@item.menu_se)
  150.         # 消耗品的情况下
  151.         if @item.consumable
  152.           # 使用的物品数减 1
  153.           $game_party.lose_item(@item.id, 1)
  154.           # 再描绘物品窗口的项目
  155.           @item_window.draw_item(@item_window.index)
  156.         end
  157.         # 再生成目标窗口的内容
  158.         @target_window.refresh
  159.         # 全灭的情况下
  160.         if $game_party.all_dead?
  161.           # 切换到游戏结束画面
  162.           $scene = Scene_Gameover.new
  163.           return
  164.         end
  165.         # 公共事件 ID 有效的情况下
  166.         if @item.common_event_id > 0
  167.           # 预约调用公共事件
  168.           $game_temp.common_event_id = @item.common_event_id
  169.           # 切换到地图画面
  170.           $scene = Scene_Map.new
  171.           return
  172.         end
  173.       end
  174.       # 无法使用物品的情况下
  175.       unless used
  176.         # 演奏冻结 SE
  177.         $game_system.se_play($data_system.buzzer_se)
  178.       end
  179.       return
  180.     end
  181.   end
  182.   #----------------------------------------------------------
  183.   # 更新选项窗口类型
  184.   #----------------------------------------------------------
  185.   def update_item_command_window
  186.      @item_command_window.update
  187.     if Input.trigger?(Input::B)
  188.       $game_system.se_play($data_system.cancel_se)
  189.       @item_command_window.active = false
  190.       @item_command_window.visible = false
  191.       @item_window.active = true
  192.     end
  193.     if Input.trigger?(Input::C)
  194.       # 命令窗口的光标位置的分支
  195.       case @item_command_window.index
  196.       when 0  # 使用
  197.         use_item
  198.       when 1  # 图鉴
  199.         p "打开图鉴"
  200.       when 2  # 丢弃
  201.         lost_item
  202.       when 3  # 取消  
  203.         $game_system.se_play($data_system.cancel_se)
  204.         @item_command_window.active = false
  205.         @item_command_window.visible = false
  206.         @item_window.active = true
  207.       end
  208.     end
  209.   end  
  210.   #====================================================
  211.   # 重新定义使用道具
  212.   #0-------------------------------------------------
  213.   def use_item
  214.     unless @item.is_a?(RPG::Item)
  215.         # 演奏冻结 SE
  216.         $game_system.se_play($data_system.buzzer_se)
  217.         return
  218.       end
  219.       # 不能使用的情况下
  220.       unless $game_party.item_can_use?(@item.id)
  221.         # 演奏冻结 SE
  222.         $game_system.se_play($data_system.buzzer_se)
  223.         return
  224.       end
  225.       # 演奏确定 SE
  226.       $game_system.se_play($data_system.decision_se)
  227.       # 效果范围是我方的情况下
  228.       if @item.scope >= 3
  229.         # 激活目标窗口
  230.         @item_command_window.active = false
  231.         @item_command_window.visible = false
  232.         @target_window.x = (@item_window.index + 1) % 2 * 304
  233.         @target_window.visible = true
  234.         @target_window.active = true
  235.         # 设置效果范围 (单体/全体) 的对应光标位置
  236.         if @item.scope == 4 || @item.scope == 6
  237.           @target_window.index = -1
  238.         else
  239.           @target_window.index = 0
  240.         end
  241.       # 效果在我方以外的情况下
  242.       else
  243.         # 公共事件 ID 有效的情况下
  244.         if @item.common_event_id > 0
  245.           # 预约调用公共事件
  246.           $game_temp.common_event_id = @item.common_event_id
  247.           # 演奏物品使用时的 SE
  248.           $game_system.se_play(@item.menu_se)
  249.           # 消耗品的情况下
  250.           if @item.consumable
  251.             # 使用的物品数减 1
  252.             $game_party.lose_item(@item.id, 1)
  253.             # 再描绘物品窗口的项目
  254.             @item_window.draw_item(@item_window.index)
  255.           end
  256.           # 切换到地图画面
  257.           $scene = Scene_Map.new
  258.           return
  259.         end
  260.       end
  261.       return
  262.     end  
  263.   #====================================================
  264.   def lost_item
  265.     $game_system.se_play($data_system.decision_se)
  266.      $game_party.lose_item(@item.id, 1)
  267.       # 再描绘物品窗口的项目
  268.       @item_window.draw_item(@item_window.index)
  269.       return
  270.   end  
  271.   #------------------------------------------------
  272. end

觉得如果图鉴能自己写的话= =。。这个做起来也不难吧。。。。我表示图鉴不会写。。这个倒是可以应付。。
剩下自己修改下应该不难、、、
上工程 Project1.rar (188.44 KB, 下载次数: 86)
回复

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
95 小时
注册时间
2010-10-22
帖子
18
3
 楼主| 发表于 2012-9-21 23:06:52 | 只看该作者
嗯,谢谢了,和我想的有点出入,修改中,是这个思路
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-24 02:32

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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