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

Project1

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

[已经解决] 如何在事件中跳出物品栏?

[复制链接]

Lv1.梦旅人

梦石
0
星屑
50
在线时间
6 小时
注册时间
2015-3-10
帖子
6
跳转到指定楼层
1
发表于 2015-3-10 10:41:03 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
想要做一个道具的选项,对话后跳出物品栏并且不能关闭,选择使用一个道具后继续事件。

评分

参与人数 1星屑 +35 收起 理由
RyanBern + 35 手动认可奖励

查看全部评分

Lv5.捕梦者

梦石
0
星屑
33493
在线时间
5108 小时
注册时间
2012-11-19
帖子
4878

开拓者

2
发表于 2015-3-10 10:51:38 | 只看该作者
把默认脚本 Scene_Item 的 第 68 ~ 71 行删掉,在 事件—脚本 里写:$scene = Scene_Item.new
然后使用的物品关联 公共事件 即可
xp vx va mv  va mz 各类型脚本/插件定制
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
6 小时
注册时间
2015-3-10
帖子
6
3
 楼主| 发表于 2015-3-10 11:08:07 | 只看该作者
芯☆淡茹水 发表于 2015-3-10 10:51
把默认脚本 Scene_Item 的 第 68 ~ 71 行删掉,在 事件—脚本 里写:$scene = Scene_Item.new
然后使用的物 ...

试了一下,这样的话任何时候都关不掉物品栏,但我是希望只有这次关不掉,平时是正常的
回复 支持 反对

使用道具 举报

Lv5.捕梦者

梦石
0
星屑
33493
在线时间
5108 小时
注册时间
2012-11-19
帖子
4878

开拓者

4
发表于 2015-3-10 11:17:33 | 只看该作者
插入这个就可以了
  1. #==============================================================================
  2. class Game_Temp
  3.   #--------------------------------------------------------------------------
  4.   attr_accessor :back_menu
  5.   #--------------------------------------------------------------------------
  6. end
  7. #==============================================================================
  8. class Scene_Menu
  9.   #--------------------------------------------------------------------------
  10.   # ● 刷新画面 (命令窗口被激活的情况下)
  11.   #--------------------------------------------------------------------------
  12.   def update_command
  13.     # 按下 B 键的情况下
  14.     if Input.trigger?(Input::B)
  15.       # 演奏取消 SE
  16.       $game_system.se_play($data_system.cancel_se)
  17.       # 切换的地图画面
  18.       $scene = Scene_Map.new
  19.       return
  20.     end
  21.     # 按下 C 键的情况下
  22.     if Input.trigger?(Input::C)
  23.       # 同伴人数为 0、存档、游戏结束以外的场合
  24.       if $game_party.actors.size == 0 and @command_window.index < 4
  25.         # 演奏冻结 SE
  26.         $game_system.se_play($data_system.buzzer_se)
  27.         return
  28.       end
  29.       # 命令窗口的光标位置分支
  30.       case @command_window.index
  31.       when 0  # 物品
  32.         # 演奏确定 SE
  33.         $game_system.se_play($data_system.decision_se)
  34.         # 切换到物品画面
  35.         $game_temp.back_menu = true
  36.         $scene = Scene_Item.new
  37.       when 1  # 特技
  38.         # 演奏确定 SE
  39.         $game_system.se_play($data_system.decision_se)
  40.         # 激活状态窗口
  41.         @command_window.active = false
  42.         @status_window.active = true
  43.         @status_window.index = 0
  44.       when 2  # 装备
  45.         # 演奏确定 SE
  46.         $game_system.se_play($data_system.decision_se)
  47.         # 激活状态窗口
  48.         @command_window.active = false
  49.         @status_window.active = true
  50.         @status_window.index = 0
  51.       when 3  # 状态
  52.         # 演奏确定 SE
  53.         $game_system.se_play($data_system.decision_se)
  54.         # 激活状态窗口
  55.         @command_window.active = false
  56.         @status_window.active = true
  57.         @status_window.index = 0
  58.       when 4  # 存档
  59.         # 禁止存档的情况下
  60.         if $game_system.save_disabled
  61.           # 演奏冻结 SE
  62.           $game_system.se_play($data_system.buzzer_se)
  63.           return
  64.         end
  65.         # 演奏确定 SE
  66.         $game_system.se_play($data_system.decision_se)
  67.         # 切换到存档画面
  68.         $scene = Scene_Save.new
  69.       when 5  # 游戏结束
  70.         # 演奏确定 SE
  71.         $game_system.se_play($data_system.decision_se)
  72.         # 切换到游戏结束画面
  73.         $scene = Scene_End.new
  74.       end
  75.       return
  76.     end
  77.   end
  78. end
  79. #==============================================================================
  80. class Scene_Item
  81.   #--------------------------------------------------------------------------
  82.   # ● 刷新画面 (物品窗口被激活的情况下)
  83.   #--------------------------------------------------------------------------
  84.   def update_item
  85.     # 按下 B 键的情况下
  86.     if Input.trigger?(Input::B)
  87.       if $game_temp.back_menu
  88.         # 演奏取消 SE
  89.         $game_system.se_play($data_system.cancel_se)
  90.         # 切换到菜单画面
  91.         $game_temp.back_menu = false
  92.         $scene = Scene_Menu.new(0)
  93.         return
  94.       end
  95.     end
  96.     # 按下 C 键的情况下
  97.     if Input.trigger?(Input::C)
  98.       # 获取物品窗口当前选中的物品数据
  99.       @item = @item_window.item
  100.       # 不使用物品的情况下
  101.       unless @item.is_a?(RPG::Item)
  102.         # 演奏冻结 SE
  103.         $game_system.se_play($data_system.buzzer_se)
  104.         return
  105.       end
  106.       # 不能使用的情况下
  107.       unless $game_party.item_can_use?(@item.id)
  108.         # 演奏冻结 SE
  109.         $game_system.se_play($data_system.buzzer_se)
  110.         return
  111.       end
  112.       # 演奏确定 SE
  113.       $game_system.se_play($data_system.decision_se)
  114.       # 效果范围是我方的情况下
  115.       if @item.scope >= 3
  116.         # 激活目标窗口
  117.         @item_window.active = false
  118.         @target_window.x = (@item_window.index + 1) % 2 * 304
  119.         @target_window.visible = true
  120.         @target_window.active = true
  121.         # 设置效果范围 (单体/全体) 的对应光标位置
  122.         if @item.scope == 4 || @item.scope == 6
  123.           @target_window.index = -1
  124.         else
  125.           @target_window.index = 0
  126.         end
  127.       # 效果在我方以外的情况下
  128.       else
  129.         # 公共事件 ID 有效的情况下
  130.         if @item.common_event_id > 0
  131.           # 预约调用公共事件
  132.           $game_temp.common_event_id = @item.common_event_id
  133.           # 演奏物品使用时的 SE
  134.           $game_system.se_play(@item.menu_se)
  135.           # 消耗品的情况下
  136.           if @item.consumable
  137.             # 使用的物品数减 1
  138.             $game_party.lose_item(@item.id, 1)
  139.             # 再描绘物品窗口的项目
  140.             @item_window.draw_item(@item_window.index)
  141.           end
  142.           # 切换到地图画面
  143.           $scene = Scene_Map.new
  144.           return
  145.         end
  146.       end
  147.       return
  148.     end
  149.   end
  150. end
复制代码
xp vx va mv  va mz 各类型脚本/插件定制
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
6 小时
注册时间
2015-3-10
帖子
6
5
 楼主| 发表于 2015-3-10 12:05:01 | 只看该作者
芯☆淡茹水 发表于 2015-3-10 11:17
插入这个就可以了

虽然希望能不动脚本,不过还是太感谢了。
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
6 小时
注册时间
2015-3-10
帖子
6
6
 楼主| 发表于 2015-3-10 15:07:37 | 只看该作者
芯☆淡茹水 发表于 2015-3-10 11:17
插入这个就可以了


这么问吧,能否设置一个开关,当开启时取消键无效
回复 支持 反对

使用道具 举报

Lv4.逐梦者 (版主)

梦石
0
星屑
9532
在线时间
5073 小时
注册时间
2013-6-21
帖子
3580

开拓者贵宾剧作品鉴家

7
发表于 2015-3-10 20:11:34 | 只看该作者
tyughvbnsi 发表于 2015-3-10 15:07
这么问吧,能否设置一个开关,当开启时取消键无效

RUBY 代码复制
  1. class Game_System
  2.   def menu_disabled
  3.     @menu_disabled || $game_switches[1] # 方括号里面的数字代表开关编号
  4.   end
  5. end

点评

最近眼神不太好  发表于 2015-3-10 21:26
非也,不是禁止打开菜单,是某种情况下禁止取消键关闭菜单。  发表于 2015-3-10 20:56
回复 支持 反对

使用道具 举报

Lv5.捕梦者

梦石
0
星屑
33493
在线时间
5108 小时
注册时间
2012-11-19
帖子
4878

开拓者

8
发表于 2015-3-10 21:02:20 | 只看该作者
  1. #==============================================================================
  2. class Scene_Item
  3. #禁止关闭菜单的开关ID
  4. BAN_CLOSED_SW_ID = 10
  5.   #--------------------------------------------------------------------------
  6.   # ● 刷新画面 (物品窗口被激活的情况下)
  7.   #--------------------------------------------------------------------------
  8.   def update_item
  9.     # 按下 B 键的情况下
  10.     if Input.trigger?(Input::B)
  11.       unless $game_switches[BAN_CLOSED_SW_ID]
  12.         # 演奏取消 SE
  13.         $game_system.se_play($data_system.cancel_se)
  14.         # 切换到菜单画面
  15.         $scene = Scene_Menu.new(0)
  16.         return
  17.       end
  18.     end
  19.     # 按下 C 键的情况下
  20.     if Input.trigger?(Input::C)
  21.       # 获取物品窗口当前选中的物品数据
  22.       @item = @item_window.item
  23.       # 不使用物品的情况下
  24.       unless @item.is_a?(RPG::Item)
  25.         # 演奏冻结 SE
  26.         $game_system.se_play($data_system.buzzer_se)
  27.         return
  28.       end
  29.       # 不能使用的情况下
  30.       unless $game_party.item_can_use?(@item.id)
  31.         # 演奏冻结 SE
  32.         $game_system.se_play($data_system.buzzer_se)
  33.         return
  34.       end
  35.       # 演奏确定 SE
  36.       $game_system.se_play($data_system.decision_se)
  37.       # 效果范围是我方的情况下
  38.       if @item.scope >= 3
  39.         # 激活目标窗口
  40.         @item_window.active = false
  41.         @target_window.x = (@item_window.index + 1) % 2 * 304
  42.         @target_window.visible = true
  43.         @target_window.active = true
  44.         # 设置效果范围 (单体/全体) 的对应光标位置
  45.         if @item.scope == 4 || @item.scope == 6
  46.           @target_window.index = -1
  47.         else
  48.           @target_window.index = 0
  49.         end
  50.       # 效果在我方以外的情况下
  51.       else
  52.         # 公共事件 ID 有效的情况下
  53.         if @item.common_event_id > 0
  54.           # 预约调用公共事件
  55.           $game_temp.common_event_id = @item.common_event_id
  56.           # 演奏物品使用时的 SE
  57.           $game_system.se_play(@item.menu_se)
  58.           # 消耗品的情况下
  59.           if @item.consumable
  60.             # 使用的物品数减 1
  61.             $game_party.lose_item(@item.id, 1)
  62.             # 再描绘物品窗口的项目
  63.             @item_window.draw_item(@item_window.index)
  64.           end
  65.           # 切换到地图画面
  66.           $scene = Scene_Map.new
  67.           return
  68.         end
  69.       end
  70.       return
  71.     end
  72.   end
  73. end
复制代码

点评

非常感谢,问题已经解决了  发表于 2015-3-10 21:45

评分

参与人数 1梦石 +1 收起 理由
myownroc + 1 认可答案

查看全部评分

xp vx va mv  va mz 各类型脚本/插件定制
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-29 05:22

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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