Project1

标题: 本菜鸡继续给RM的逗比执行逻辑探底…… [打印本页]

作者: nfsq6h    时间: 2022-3-28 19:25
标题: 本菜鸡继续给RM的逗比执行逻辑探底……
这顺序执行的指令还能出并行错误,我是真没想到2333333
先看这两组事件命令,感觉毫无区别对吧?
(1)
场所移动:{更改操作角色-地图ID} ({更改操作角色-事件X},{更改操作角色-事件Y})(淡入淡出:无)
脚本:$gameMap.event($gameVariables.value(30)).setDirection($gameVariables.value(23))
(2)
脚本:$gameMap.event($gameVariables.value(30)).setDirection($gameVariables.value(23))
场所移动:{更改操作角色-地图ID} ({更改操作角色-事件X},{更改操作角色-事件Y})(淡入淡出:无)

然而实际执行就是会有问题……
目前在做一个小队合作冒险的事件+脚本实现,功能是:
小队中共有三个角色,编号分别为1、2、3。
当输入键盘按键1、2、3时,将主角切换为对应编号的角色,移动到那个角色所在的位置,同时把一个和主角原本扮演的角色长得一样的事件A挪过来,占用主角原本所在的位置。
换句话说,可以实现按哪个键就操作哪个角色的功能,未被操作的角色在原地待机。
为了实现最好的模拟效果,需要在换人时调整玩家和事件的朝向,用事件实现起来过于屎山,我是用脚本实现的……

然后,问题就来了。
上面那两组命令,重点是那个脚本,效果是把事件A的朝向调整到与主角相同。
然而,(1)命令执行是没错的,(2)命令执行后,角色的朝向却永远都是朝右……不带变的……
具体实现效果可以看这两张图。
(1)

(2)

就很囧。

然后我是怎么发现这问题的呢?
其实一开始以为是事件设定成固定朝向的了,信心满满调了下,差点没气炸。
然后想着可能是变量设错了什么的,插了个文本框显示一下变量23(即事件A预定的朝向)。
结果发现:有文本框会延时一下,就工作正常,去掉文本框,问题立刻重新出现。
233333333333333333333333
于是想了想,不就是缺个延时的问题嘛,就把脚本操作放到了原本就会卡一下的场所移动命令后面。
结果果然正常了233333333333333333333333
怎么我这么菜的操作都能探到引擎的底,哭了……

话说,想问大佬一句,这个大概是并行或者说时序的问题,到底是JS语言的问题、RMMZ的问题还是并行公共事件的问题?
我能想到的也就这三个问题源头了。
反正解决了就行吧,虽然解决方案极度丑陋23333333333
作者: 新耀012478    时间: 2022-3-28 20:47
你是想说异步?一般代码是同步执行,就是按顺序下去,差不多相当于我一个人完成所有操作。
异步就是我把一部分工作交给另一个人去完成,我自己去完成其它的工作。所以就会有些完成的快有些完成的慢。
场所移动正是异步,我看过,它仅仅只是设置了要移动的地图相关的参数,然后把移动开始的开关打开了而已。然后就结束了。
具体负责移动的是其它的东西,应该是update。所以就异步了
作者: HM495    时间: 2022-3-28 20:51
这两者并不完全等同
我之前也有过类似的问题,是用脚本去调用公共事件的
https://rpg.blue/thread-488739-1-1.html

RM自带的那部分事件指令写在Game_Interpreter.prototype.commandXXX那儿
其中会牵扯到事件的时序 或者判断下一个事件 之类的逻辑
并不是简单能用一行脚本直接代替的
作者: ryuki13    时间: 2022-3-28 22:16
相信我,要插个空文本才能正常进行事件不是RM的专利....
作者: nfsq6h    时间: 2022-3-29 22:58
ryuki13 发表于 2022-3-28 22:16
相信我,要插个空文本才能正常进行事件不是RM的专利....

感谢。哭了2333333




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1