本帖最后由 蹲厕所的女孩 于 2023-11-16 18:38 编辑 回合制会执行两次是因为每次调用强制战斗行动时,角色并没有进行行动,而是将这次强制行动push进了角色的action数组里,到特定的时机了才会进行取出来行动,所以即使全部写进一条脚本指令了依然可以push两次action,所以对回合制没有影响。 至于为什么是先行动一次,再等所有角色行动结束了再行动一次,这个是你事件调用时机的问题,打个比方,这个事件是在回合结束时调用的,但那个角色行动速度是最快的,那么他就会最先行动一次,但这时只从action数组中取出了一次行动,所以回合结束时还会再行动一次,相反如果你的事件是在回合开始时调用的,但角色又是速度最慢的,那这个角色会直接最先行动两次,然后不行动了,这个是不确定的,跟你事件调用时机和角色的行动顺序有关。 |
回合制不清楚,即时制主要是因为场上的主体(_subject)只能有一个,连续行动会发生覆盖,被覆盖主体的战斗者虽然设定的行动还在,但是到ta的回合开始就被自动清空了,看不出来发生过什么。 RM为了解决这个问题,一次强制行动事件指令调用后会暂停事件执行,等到当前行动结束以后再继续下一条事件。 具体实现有两层, 一层为,一旦角色开始行动,系统进入一个新状态(action),该状态下事件不会从暂停中恢复,直到角色行动结束,系统回到了一个状态(turn),这个状态下事件才会继续。 另一层为,事件本身被标记为“等待强制行动结束”,直到场上没有强制行动的角色,才会继续执行。 脚本指令本身是一个整体,不能让一个脚本自行分为两条。可以试下写成两个脚本指令来解决这个问题。 |
站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作
GMT+8, 2024-11-29 03:48
Powered by Discuz! X3.1
© 2001-2013 Comsenz Inc.