Project1
标题:
一个rgss1预设bug。与事件接触事件过度触发
[打印本页]
作者:
我为鱼肉
时间:
2022-7-14 11:14
标题:
一个rgss1预设bug。与事件接触事件过度触发
本帖最后由 我为鱼肉 于 2022-7-15 17:34 编辑
昨天在搞工程的时候,突然发现一个奇怪bug。我只开始还以为是我乱搞了什么东西,经过检查发现:如果地图坐标0,0有一个与事件接触的事件,那么该事件会自动触发。
大家可以新建个工程试一试,左上角0,0一个与事件接触事件然后随便显示个文章,直接开测,会发现自动显示文章而不需要接触。但奇怪的是有时候会触发但有时候却不会触发,目前还不知道为什么。有没有大佬排除该bug
不是与主角接触,记错了
作者:
纯属小虫
时间:
2022-7-15 22:42
我猜————我猜测哦!
可能XP里自带的传送机制是这样的——
传送到一个地图的时候,先是改变map_id,然后map初始化,此时初始化得到的角色的坐标是(0,0),在初始化完成之后,才会执行之前【场所移动】事件中的设置角色的XY坐标。
我猜测这个BUG可能是这样,改变地图,地图初始化之后,在移动角色的XY坐标之前,map中进行了事件的判定,于是就触发了(0,0)【与事件接触】的事件;
之所以【与主角接触】的事件在这种情况下不会触发,想必也是因为【与主角接触】的事件的触发条件是角色要【走】到该事件上才会执行。
你所谓的【有时候会触发,而有时候不会触发】我猜测可能是这样的:
1、之前执行的【场所移动】的那个事件,执行了【场所移动】之后还有其他的事件指令,所以阻止了更新地图后那个【与事件接触】的事件的触发(有事件正在执行的时候是不会立即执行新的事件的,除非是并行处理)
2、新的地图有【自动执行】的事件,且事件的id < (0,0)坐标【与事件接触】的那个事件的id;所以先执行了【自动执行】的事件,从而避免了(0,0)事件的触发
解决方法:
1、如果接下来的地图存在(0,0)【与事件接触】的事件;不要把【场所移动】的事件指令放在事件页的最后一行;可以在后面添加一行【中断事件处理】;or;等待X帧;or;也可以【设置角色移动】(空)(等待移动结束)......等等之类能够阻止新事件执行的指令!
2、根源上解决问题,不要把【与事件接触】的事件放在(0,0)
欢迎光临 Project1 (https://rpg.blue/)
Powered by Discuz! X3.1