Project1
标题:
急求破解,在事件过程中无法触发物品的公共事件
[打印本页]
作者:
风清翔
时间:
2014-6-9 21:03
标题:
急求破解,在事件过程中无法触发物品的公共事件
本帖最后由 风清翔 于 2014-6-9 21:55 编辑
怎么说呢,我正在做一款类似《逆转裁判》的游戏,其中有一段是要在询问过程中(事件过程中)打开物品栏,使用该物品(也就是触发该物品的公共事件),从而达到反对的效果。
但是我在做的过程中发现一个严重的问题:在一个事件的执行过程中,使用脚本$scene = Scene_Item.new打开物品栏,使用某物品的时候,该物品的公共事件不能被触发!而是会继续目前事件的下一步。那样“反对”的效果根本就做不出了!
我鼓捣了很久,还是无法解决这个问题,特来请教。
我知道我描述得有点模糊,所以特地把工程上传了,请大神们来看一下,存档我都弄好了,就是第三个,进入后来到第四句证言,选择指证能打开物品栏,里面选择“尸检报告”,但是“尸检报告”的公共事件即使物品使用了也无法触发,问题就是这。
http://pan.baidu.com/s/1eQy2IwM
刚刚想到个小想法:在脚本里的物品使用那里,加上一行“将某变量变为使用的物品的ID”,然后再在后面判断变量是否为正确物品的ID,也许有用。
不过……有谁能告诉“将某变量变为使用的物品的ID”该怎么写……
作者:
moy
时间:
2014-6-9 23:13
#--------------------------------------------------------------------------
# ● 刷新画面 (物品窗口被激活的情况下)
#--------------------------------------------------------------------------
def update_item
# 按下 B 键的情况下
if Input.trigger?(Input::B)
# 演奏取消 SE
$game_system.se_play($data_system.cancel_se)
# 切换到菜单画面
$scene = Scene_Menu.new(0)
return
end
# 按下 C 键的情况下
if Input.trigger?(Input::C)
# 获取物品窗口当前选中的物品数据
@item = @item_window.item
# 不使用物品的情况下
unless @item.is_a?(RPG::Item)
# 演奏冻结 SE
$game_system.se_play($data_system.buzzer_se)
return
end
# 不能使用的情况下
unless $game_party.item_can_use?(@item.id)
# 演奏冻结 SE
$game_system.se_play($data_system.buzzer_se)
return
end
# 演奏确定 SE
$game_system.se_play($data_system.decision_se)
# 效果范围是我方的情况下
if @item.scope >= 3
# 激活目标窗口
@item_window.active = false
@target_window.x = (@item_window.index + 1) % 2 * 304
@target_window.visible = true
@target_window.active = true
# 设置效果范围 (单体/全体) 的对应光标位置
if @item.scope == 4 || @item.scope == 6
@target_window.index = -1
else
@target_window.index = 0
end
# 效果在我方以外的情况下
else
# 公共事件 ID 有效的情况下
if @item.common_event_id > 0
#------------------------------------------------
# 需要调用公共事件时就将物品id存入30号变量
$game_variables[30] = @item.id
#------------------------------------------------
# 预约调用公共事件
$game_temp.common_event_id = @item.common_event_id
# 演奏物品使用时的 SE
$game_system.se_play(@item.menu_se)
# 消耗品的情况下
if @item.consumable
# 使用的物品数减 1
$game_party.lose_item(@item.id, 1)
# 再描绘物品窗口的项目
@item_window.draw_item(@item_window.index)
end
# 切换到地图画面
$scene = Scene_Map.new
return
end
end
return
end
end
复制代码
修改Scene_Item的update_item可以轻松做到这点。注意你仍然需要为其设置公共事件,只不过事件页可以是空的。
作者:
风清翔
时间:
2014-6-10 17:55
moy 发表于 2014-6-9 23:13
修改Scene_Item的update_item可以轻松做到这点。注意你仍然需要为其设置公共事件,只不过事件页可以是空的 ...
多谢!其实把$game_variables[30] = @item.id放在切换地图画面的前一行就可以不设置公共事件了,总之多谢指导!
欢迎光临 Project1 (https://rpg.blue/)
Powered by Discuz! X3.1