求助RPG Maker MV的SRPG插件:事件单位墓地

你好,我目前在处理多潘斯(Dopans)制作的事件单位墓碑时遇到了一些问题,需要关于插件本身的帮助。

我把这个插件应用到了我的SRPG游戏中进行测试。看起来它对敌人是有效的,因为一旦敌人的生命值降为0,敌人就会正确地进入事件状态。然而,每当第二个敌人被击杀时,我就会收到以下错误信息:

当只有一个盟友倒下时,也会出现同样的情况。

是我哪里做错了吗?

由于我没有你的项目来进行测试,但我查看了该插件。这个崩溃是因为查找返回为空,而不是因为坟墓被破坏。当地图上没有任何匹配项时,$gameTemp.enemyGrave() 返回 0,而 $gameMap.event(0) 是未定义的,因此下一行请求 _erased 的代码就是你遇到问题的地方。第 669 行是敌人分支,第 661 行是角色侧的相同逻辑,这也符合盟友执行该操作的情况。

匹配是基于单位 ID 而不是敌人 ID。这来自敌人单位事件上的 <unit:x>,并且代码以小写形式读取 meta.unit。插件帮助文档中的某处将其写为 <Unit:x>(大写 U),这种拼写方式将无法被识别。每个敌人事件也需要有一个唯一的数字,因为克隆体共享同一个敌人 ID。

你能发布你的敌人单位事件的注释吗?我在想第二个事件是否缺少该标签或将其大写,这会导致它没有匹配项,而第一个事件则正常工作。

在坟墓地图上,<actorgrave:x> 使用角色 ID,<enemygrave:x> 使用敌人 ID,因此所有需要减少的 ID 都需要在那里有自己的坟墓事件。你的截图显示的是 <actorgrave:3>,所以值得检查一下掉落物品的盟友是否是角色 3 还是其他角色。

问题出在这里:我确实把角色墓碑和敌人墓碑指定为了数字。敌人那边运行完全正常,但角色墓碑却莫名其妙地不起作用。

如图所示,我已经指定了一个角色。我不明白为什么敌人指定能正常工作,但角色指定却不行。

好的,我重新调整了单位标签,现在看起来运行正常了。

1 个赞

当我想要复活盟友时该怎么做?具体流程是什么?

通过此插件进行复活时,会调用其专用的脚本命令,而不是通过选中已死亡的单位来实现。在事件脚本命令中:

this.unitRaise(eventID);

该命令可以复活战斗者并删除对应的墓碑。其帮助文档建议使用此命令替代核心自带的 this.unitRevive(eventID),因为后者只会复活单位,而墓碑仍会留在地图上。

你也不必硬编码事件 ID。对于角色(Actor):

this.unitRaise($gameSystem.ActorToEvent(3));

对于敌人,则使用其 <unit:x> 编号:

this.unitRaise($gameSystem.EnemyUnit(1));

单位在死亡期间,其关联的事件会被删除。因此,我认为针对已故盟友使用的物品在地图上找不到可选择的对象,这或许就是无法选中该单位的原因。如果你希望物品能执行复活操作,我建议让物品调用一个公共事件,并在其中运行上述脚本命令。

类似这样的通用复活队友事件?

对,这就是我想要的结构。每个分支都会检查角色的死亡状态,而脚本调用会将角色 ID 转换为对应的事件,所以我认为按原样就能正常工作。

需要注意的是,按目前的写法,它会一次性复活所有倒下的角色,也就是说一次使用就能让全部四人复活。如果你希望如此,那就没问题。如果你更希望逐个复活,我建议为每个角色创建一个独立的事件(或在分支前添加“显示选项”),并将每个事件绑定到各自的物品上。

如果是通过物品来调用这个功能,我建议将物品的范围设置为“无”,这样就不需要选择目标即可使用,因为倒下的盟友不会出现在地图上供你选择。