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

Project1

 找回密码
 注册会员
搜索
查看: 3291|回复: 2

[已经解决] 现有的“跳过menu直接开关物品栏”方法全部无效该怎么办

[复制链接]

Lv3.寻梦者

梦石
0
星屑
1399
在线时间
147 小时
注册时间
2015-7-19
帖子
38
发表于 2020-10-3 19:42:17 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 水舞沨流 于 2020-10-3 19:44 编辑

关于这个系统我已经头痛了很久了,尝试过纯事件内添加脚本直接呼出item窗口的方法,但是按取消键(B)还是会回到主菜单。
后来有位前辈发布了一个脚本,将scene_Item中,按B回到menu菜单那条改成了直接回到map。
结果我把那个改过的脚本替换了自己的scene_Item脚本,发现在我这边还是会回到menu界面。
彻底开始头痛了,看了很多教程也没搞懂究竟是在我这边出了什么问题,希望能得到解答orz!!

附上那位前辈改过的脚本,详见71行:

  1. #==============================================================================
  2. # ■ Scene_Item
  3. #------------------------------------------------------------------------------
  4. #  处理物品画面的类。
  5. #==============================================================================

  6. class Scene_Item
  7.   #--------------------------------------------------------------------------
  8.   # ● 主处理
  9.   #--------------------------------------------------------------------------
  10.   def main
  11.     # 生成帮助窗口、物品窗口
  12.     @help_window = Window_Help.new
  13.     @item_window = Window_Item.new
  14.     # 关联帮助窗口
  15.     @item_window.help_window = @help_window
  16.     # 生成目标窗口 (设置为不可见・不活动)
  17.     @target_window = Window_Target.new
  18.     @target_window.visible = false
  19.     @target_window.active = false
  20.     # 执行过度
  21.     Graphics.transition
  22.     # 主循环
  23.     loop do
  24.       # 刷新游戏画面
  25.       Graphics.update
  26.       # 刷新输入信息
  27.       Input.update
  28.       # 刷新画面
  29.       update
  30.       # 如果画面切换就中断循环
  31.       if $scene != self
  32.         break
  33.       end
  34.     end
  35.     # 装备过渡
  36.     Graphics.freeze
  37.     # 释放窗口
  38.     @help_window.dispose
  39.     @item_window.dispose
  40.     @target_window.dispose
  41.   end
  42.   #--------------------------------------------------------------------------
  43.   # ● 刷新画面
  44.   #--------------------------------------------------------------------------
  45.   def update
  46.     # 刷新窗口
  47.     @help_window.update
  48.     @item_window.update
  49.     @target_window.update
  50.     # 物品窗口被激活的情况下: 调用 update_item
  51.     if @item_window.active
  52.       update_item
  53.       return
  54.     end
  55.     # 目标窗口被激活的情况下: 调用 update_target
  56.     if @target_window.active
  57.       update_target
  58.       return
  59.     end
  60.   end
  61.   #--------------------------------------------------------------------------
  62.   # ● 刷新画面 (物品窗口被激活的情况下)
  63.   #--------------------------------------------------------------------------
  64.   def update_item
  65.     # 按下 B 键的情况下
  66.     if Input.trigger?(Input::B)
  67.       # 演奏取消 SE
  68.       $game_system.se_play($data_system.cancel_se)
  69.       # 切换到菜单画面
  70.       $scene = Scene_Map.new
  71.       return
  72.     end
  73.     # 按下 C 键的情况下
  74.     if Input.trigger?(Input::C)
  75.       # 获取物品窗口当前选中的物品数据
  76.       @item = @item_window.item
  77.       # 不使用物品的情况下
  78.       unless @item.is_a?(RPG::Item)
  79.         # 演奏冻结 SE
  80.         $game_system.se_play($data_system.buzzer_se)
  81.         return
  82.       end
  83.       # 不能使用的情况下
  84.       unless $game_party.item_can_use?(@item.id)
  85.         # 演奏冻结 SE
  86.         $game_system.se_play($data_system.buzzer_se)
  87.         return
  88.       end
  89.       # 演奏确定 SE
  90.       $game_system.se_play($data_system.decision_se)
  91.       # 效果范围是我方的情况下
  92.       if @item.scope >= 3
  93.         # 激活目标窗口
  94.         @item_window.active = false
  95.         @target_window.x = (@item_window.index + 1) % 2 * 304
  96.         @target_window.visible = true
  97.         @target_window.active = true
  98.         # 设置效果范围 (单体/全体) 的对应光标位置
  99.         if @item.scope == 4 || @item.scope == 6
  100.           @target_window.index = -1
  101.         else
  102.           @target_window.index = 0
  103.         end
  104.       # 效果在我方以外的情况下
  105.       else
  106.         # 公共事件 ID 有效的情况下
  107.         if @item.common_event_id > 0
  108.           # 预约调用公共事件
  109.           $game_temp.common_event_id = @item.common_event_id
  110.           # 演奏物品使用时的 SE
  111.           $game_system.se_play(@item.menu_se)
  112.           # 消耗品的情况下
  113.           if @item.consumable
  114.             # 使用的物品数减 1
  115.             $game_party.lose_item(@item.id, 1)
  116.             # 再描绘物品窗口的项目
  117.             @item_window.draw_item(@item_window.index)
  118.           end
  119.           # 切换到地图画面
  120.           $scene = Scene_Map.new
  121.           return
  122.         end
  123.       end
  124.       return
  125.     end
  126.   end
  127.   #--------------------------------------------------------------------------
  128.   # ● 刷新画面 (目标窗口被激活的情况下)
  129.   #--------------------------------------------------------------------------
  130.   def update_target
  131.     # 按下 B 键的情况下
  132.     if Input.trigger?(Input::B)
  133.       # 演奏取消 SE
  134.       $game_system.se_play($data_system.cancel_se)
  135.       # 由于物品用完而不能使用的场合
  136.       unless $game_party.item_can_use?(@item.id)
  137.         # 再次生成物品窗口的内容
  138.         @item_window.refresh
  139.       end
  140.       # 删除目标窗口
  141.       @item_window.active = true
  142.       @target_window.visible = false
  143.       @target_window.active = false
  144.       return
  145.     end
  146.     # 按下 C 键的情况下
  147.     if Input.trigger?(Input::C)
  148.       # 如果物品用完的情况下
  149.       if $game_party.item_number(@item.id) == 0
  150.         # 演奏冻结 SE
  151.         $game_system.se_play($data_system.buzzer_se)
  152.         return
  153.       end
  154.       # 目标是全体的情况下
  155.       if @target_window.index == -1
  156.         # 对同伴全体应用物品使用效果
  157.         used = false
  158.         for i in $game_party.actors
  159.           used |= i.item_effect(@item)
  160.         end
  161.       end
  162.       # 目标是单体的情况下
  163.       if @target_window.index >= 0
  164.         # 对目标角色应用物品的使用效果
  165.         target = $game_party.actors[@target_window.index]
  166.         used = target.item_effect(@item)
  167.       end
  168.       # 使用物品的情况下
  169.       if used
  170.         # 演奏物品使用时的 SE
  171.         $game_system.se_play(@item.menu_se)
  172.         # 消耗品的情况下
  173.         if @item.consumable
  174.           # 使用的物品数减 1
  175.           $game_party.lose_item(@item.id, 1)
  176.           # 再描绘物品窗口的项目
  177.           @item_window.draw_item(@item_window.index)
  178.         end
  179.         # 再生成目标窗口的内容
  180.         @target_window.refresh
  181.         # 全灭的情况下
  182.         if $game_party.all_dead?
  183.           # 切换到游戏结束画面
  184.           $scene = Scene_Gameover.new
  185.           return
  186.         end
  187.         # 公共事件 ID 有效的情况下
  188.         if @item.common_event_id > 0
  189.           # 预约调用公共事件
  190.           $game_temp.common_event_id = @item.common_event_id
  191.           # 切换到地图画面
  192.           $scene = Scene_Map.new
  193.           return
  194.         end
  195.       end
  196.       # 无法使用物品的情况下
  197.       unless used
  198.         # 演奏冻结 SE
  199.         $game_system.se_play($data_system.buzzer_se)
  200.       end
  201.       return
  202.     end
  203.   end
  204. end
复制代码

Lv3.寻梦者

梦石
0
星屑
4578
在线时间
482 小时
注册时间
2017-7-7
帖子
139

R考场第七期纪念奖

发表于 2020-10-3 21:03:28 | 显示全部楼层
八成后面有其他脚本也动了物品栏覆盖了吧
全局搜索$scene = Scene_Menu.new(0)试试?

点评

破案了,是因为同步使用了【物品携带数量限制】脚本,感谢您!!  发表于 2020-10-3 21:06

评分

参与人数 1星屑 +50 收起 理由
RyanBern + 50 认可答案

查看全部评分

回复 支持 1 反对 0

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-3-29 13:11

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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