查看: 860|回复: 4

[有事请教] 问问,怎么让全队MP为0时触发某段剧情或者结局

[复制链接]
梦石
0
星屑
72
在线时间
12 小时
注册时间
2025-5-16
回帖
2
发表于 2026-5-19 21:57:54 | 显示全部楼层 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有账号?注册会员

×
如题,想做那种无论在哪张地图,只要mp归0时就触发一段剧情的效果
试过用插件让mp为0时附加状态效果,然后通过状态触发公共事件......但触发不了,遂来请教怎么做orz
梦石
0
星屑
42235
在线时间
6017 小时
注册时间
2006-11-10
回帖
6966
发表于 2026-5-20 09:57:33 | 显示全部楼层
最简单的方法是建个并行处理的公共事件, 用开关a控制, 然后公共事件用 条件分歧: $gameParty.members().reduce((a, c) => Math.max(a, c.mp), 0) < 1 套起来, 满足的时候去处理, 不满足的时候关闭开关A

然后就是想办法打开开关A了,  因为MP一般情况下不会消耗, 只有打开菜单使用技能,战斗 和事件处理三种情况下会让MP归0, 那么在这些地方打开开关A即可(让AI帮你写个打开菜单、战斗结束的时候打开开关A的插件, 这种简单的脚本应该很容易吧)

当然, 想省事的话, 就一直保持并行的公共事件开启状态, 取消不满足的时候关闭开关A, 直到触发后再关闭开关A,  我个人并不建议这样做, 并行处理会影响游戏的流畅度,能少则少

如果你除了以上三种情况外, 还有其他消耗MP的情况, 比如状态持续掉MP,地形伤害掉MP什么的, 那就让并行处理持续打开吧, 笑
回复 1 0

使用道具 举报

梦石
0
星屑
6334
在线时间
287 小时
注册时间
2018-1-22
回帖
207
发表于 2026-5-20 10:25:31 | 显示全部楼层
也可以对Actor类override gainMp函数,HP、TP同理

  1. Game_Actor.prototype.gainMp = function(value) {
  2.     Game_Battler.prototype.gainMp.call(this, value);
  3.     if ($gameParty.members().every((actor) => actor.mp == 0))
  4.         $gameTemp.reserveCommonEvent(公共事件ID);
  5. };
复制代码
自分自身の神様になること
回复

使用道具 举报

梦石
0
星屑
72
在线时间
12 小时
注册时间
2025-5-16
回帖
2
 楼主| 发表于 2026-5-24 02:19:03 | 显示全部楼层
灯笼菜刀王 发表于 2026-5-20 09:57
最简单的方法是建个并行处理的公共事件, 用开关a控制, 然后公共事件用 条件分歧: $gameParty.members().red ...

感谢大佬!!解决了!谢谢!
回复

使用道具 举报

梦石
0
星屑
72
在线时间
12 小时
注册时间
2025-5-16
回帖
2
 楼主| 发表于 2026-5-24 02:20:33 | 显示全部楼层
526396987 发表于 2026-5-20 10:25
也可以对Actor类override gainMp函数,HP、TP同理

原来如此!感谢..!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部