你好,我目前在处理多潘斯(Dopans)制作的事件单位墓碑时遇到了一些问题,需要关于插件本身的帮助。
我把这个插件应用到了我的SRPG游戏中进行测试。看起来它对敌人是有效的,因为一旦敌人的生命值降为0,敌人就会正确地进入事件状态。然而,每当第二个敌人被击杀时,我就会收到以下错误信息:
当只有一个盟友倒下时,也会出现同样的情况。
是我哪里做错了吗?
你好,我目前在处理多潘斯(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 还是其他角色。
好的,我重新调整了单位标签,现在看起来运行正常了。
当我想要复活盟友时该怎么做?具体流程是什么?
通过此插件进行复活时,会调用其专用的脚本命令,而不是通过选中已死亡的单位来实现。在事件脚本命令中:
this.unitRaise(eventID);
该命令可以复活战斗者并删除对应的墓碑。其帮助文档建议使用此命令替代核心自带的 this.unitRevive(eventID),因为后者只会复活单位,而墓碑仍会留在地图上。
你也不必硬编码事件 ID。对于角色(Actor):
this.unitRaise($gameSystem.ActorToEvent(3));
对于敌人,则使用其 <unit:x> 编号:
this.unitRaise($gameSystem.EnemyUnit(1));
单位在死亡期间,其关联的事件会被删除。因此,我认为针对已故盟友使用的物品在地图上找不到可选择的对象,这或许就是无法选中该单位的原因。如果你希望物品能执行复活操作,我建议让物品调用一个公共事件,并在其中运行上述脚本命令。
对,这就是我想要的结构。每个分支都会检查角色的死亡状态,而脚本调用会将角色 ID 转换为对应的事件,所以我认为按原样就能正常工作。
需要注意的是,按目前的写法,它会一次性复活所有倒下的角色,也就是说一次使用就能让全部四人复活。如果你希望如此,那就没问题。如果你更希望逐个复活,我建议为每个角色创建一个独立的事件(或在分支前添加“显示选项”),并将每个事件绑定到各自的物品上。
如果是通过物品来调用这个功能,我建议将物品的范围设置为“无”,这样就不需要选择目标即可使用,因为倒下的盟友不会出现在地图上供你选择。