赞 | 2 |
VIP | 0 |
好人卡 | 0 |
积分 | 6 |
经验 | 0 |
最后登录 | 2024-6-9 |
在线时间 | 32 小时 |
Lv2.观梦者
- 梦石
- 0
- 星屑
- 630
- 在线时间
- 32 小时
- 注册时间
- 2012-1-13
- 帖子
- 17
|
6楼
楼主 |
发表于 2023-8-26 03:29:55
|
只看该作者
本帖最后由 flashfox 于 2023-8-26 23:50 编辑
问题解决了。出在数据错误上。下面在代码中标记出来。后边给出正确代码。
# 生成事件对象实例
@drop_event = RPG::Event.new(0, 0) #创建事件实例时,系统默认会new一个RPG::Event::Page实例在pages属性中。
@drop_event.pages.push(RPG::Event::Page.new) #因此,这里不需要new新的RPG::Event::Page实例。也就是说需要删掉这行。
@drop_event.pages[0].graphic.character_name = "Graphics/Characters/剧情使用-2.png" #这里的参数错误,只需要给出文件名即可,不需要路径。即删除Graphics/Characters/
@drop_event.pages[0].walk_anime = false
@drop_event.pages[0].step_anime = true
@drop_event.pages[0].through = true
@drop_event.pages[0].list.push(RPG::EventCommand.new(101, 0, [""])) #这里同样因为默认newRPG::Event::Page实例时,会new一个RPG::EventCommand实例在list属性中。因此,不需要push一个新的项进数组,直接给list[0]赋值即可。
@drop_event.pages[0].list.push(RPG::EventCommand.new(101, 0, [""]))
@drop_event.pages[0].list.push(RPG::EventCommand.new(250, 0, ['GainItem', 100, 100])) #这里的参数错误,需要new一个RPG::AudioFile对象来传递参数。
@drop_event.pages[0].list.push(RPG::EventCommand.new(126, 0, [1, 0, 0, 1]))
@drop_event.pages[0].list.push(RPG::EventCommand.new(101, 0, [""]))
@drop_event.pages[0].list.push(RPG::EventCommand.new(123, "A", 0))
@drop_event.pages.push(RPG::Event::Page.new)
@drop_event.pages[1].trigger = 4
@drop_event.pages[1].condition.self_switch_valid = true
# 修改事件对象实例及其子对象实例的参数(@item是一个MRXP原生脚本定义的物品\武器\护具对象)
@drop_event.x = $game_player.x
@drop_event.y = $game_player.y
@drop_event.pages[0].list[0].parameters[2] = "仔细寻找……"
@drop_event.pages[0].list[1].parameters[2] = "发现了" + @item.name + "。"
case @item
when RPG::Item
code = 126
when RPG::Weapon
code = 127
when RPG::Armor
code = 128
end
@drop_event.pages[0].list[3].code = code
@drop_event.pages[0].list[3].parameters[0] = @item.id
@drop_event.pages[0].list[4].parameters[2] = "\i[" + @item.name + "]*1*"
# 生成地图事件
# 如果之前生成过事件实例,移除旧实例数据,以实现只能捡起最后一个舍弃的物品。 这部分有问题,暂时取消了。
if $game_variables[22] >0 and $game_variables[23] != nil
drop_map = Game_Map.new
drop_map.setup($game_variables[22])
drop_map.events.delete($game_variables[23])
end
# 当前地图的ID,存储在variables[22]中,用于处理已有的事件实例 这部分有问题,暂时取消了。
$game_variables[22] = $game_map.map_id
# 升序测试,获得最小的未被添加到地图事件Hash表中的Key值
k = 1
while $game_map.events.include?(k)
k += 1
end
# 修订事件实例的ID,并存储在variables[23]中,用于处理已有的事件实例 这部分有问题,暂时取消了。
$game_variables[23] = @drop_event.id = k
# 将新的事件实例添加到当前地图的事件Hash表中
$game_map.events[k] = Game_Event.new($game_map.map_id, @drop_event)
# 刷新当前地图 这里不需要刷新地图,重新加载地图的时候会刷新。
$game_map.refresh
正确的代码在下边
- # 生成事件对象实例
- @drop_event = RPG::Event.new(0, 0)
- @drop_event.pages[0].graphic.character_name = "剧情使用-2.png" #这里是地面上显示物品位置Character动画。
- @drop_event.pages[0].walk_anime = false
- @drop_event.pages[0].step_anime = true
- @drop_event.pages[0].through = true
- @drop_event.pages[0].list[0] = (RPG::EventCommand.new(101, 0, [""]))
- @drop_event.pages[0].list.push(RPG::EventCommand.new(101, 0, [""]))
- @drop_event.pages[0].list.push(RPG::EventCommand.new(250, 0, [RPG::AudioFile.new('GainItem', 100, 100)])) #这里是获得物品时的提示音se
- @drop_event.pages[0].list.push(RPG::EventCommand.new(126, 0, [1, 0, 0, 1]))
- @drop_event.pages[0].list.push(RPG::EventCommand.new(101, 0, [""]))
- @drop_event.pages[0].list.push(RPG::EventCommand.new(123, "A", 0))
- @drop_event.pages[0].list.push(RPG::EventCommand.new)
- @drop_event.pages.push(RPG::Event::Page.new)
- @drop_event.pages[1].trigger = 4
- @drop_event.pages[1].condition.self_switch_valid = true
- # 修改事件对象实例及其子对象实例的参数(@item是一个MRXP原生脚本定义的物品\武器\护具对象)
- @drop_event.x = $game_player.x
- @drop_event.y = $game_player.y
- @drop_event.pages[0].list[0].parameters[2] = "仔细寻找……"
- @drop_event.pages[0].list[1].parameters[2] = "发现了" + @item.name + "。"
- case @item
- when RPG::Item
- code = 126
- when RPG::Weapon
- code = 127
- when RPG::Armor
- code = 128
- end
- @drop_event.pages[0].list[3].code = code
- @drop_event.pages[0].list[3].parameters[0] = @item.id
- @drop_event.pages[0].list[4].parameters[2] = "获得了" + @item.name + "。" <font color="SeaGreen">#</font><font color="SeaGreen">这里的提示信息跟我的message处理逻辑有关,改成了通用信息。</font>
- # 升序测试,获得最小的未被添加到地图事件Hash表中的Key值
- k = 1
- while $game_map.events.include?(k)
- k += 1
- end
- # 修订事件实例的ID
- @drop_event.id = k
- # 将新的事件实例添加到当前地图的事件Hash表中
- $game_map.events[k] = Game_Event.new($game_map.map_id, @drop_event)
复制代码 |
|