Project1

标题: HP或者其它变量归零后返家事件怎么做 [打印本页]

作者: zmj945    时间: 2017-10-16 18:21
标题: HP或者其它变量归零后返家事件怎么做
本帖最后由 zmj945 于 2017-10-16 18:45 编辑

我知道这个问题很弱,但我真的解决不了(摊手)


就是主角在HP归零,或者另一个变量为0(比如设定为体力值)的时候自动移动到某地图点(住宅)。这个事件怎么做?

我的想法是用公共事件。
加个分歧条件:≤0场所移动到家;其它不管



触发条件为:并行处理....但是,一测试就卡到动不了。然后换成自动执行,也是卡到动不了...
额,还有个问题,就是设置并行处理还是自动执行呢?但无论是并行还是自动它后面还要选一个开关...不知道设置什么开关啊



就...不知道怎么写了...


作者: 梦想家大魔王    时间: 2017-10-16 18:33
  1. BattleManager.updateBattleEnd = function() {
  2.     if (this.isBattleTest()) {
  3.         AudioManager.stopBgm();
  4.         SceneManager.exit();
  5.     } else if (!this._escaped && $gameParty.isAllDead()) {
  6.         if (this._canLose) {
  7.             $gameParty.reviveBattleMembers();
  8.             SceneManager.pop();
  9.         } else {
  10.             SceneManager.goto(Scene_Gameover);
  11.         }
  12.     } else {
  13.         SceneManager.pop();
  14.     }
  15.     this._phase = null;
  16. };
复制代码

这一段是控制战斗结束后的流程的,你把它重定义一下就能随意控制战败后的去向。
作者: yang1zhi    时间: 2017-10-16 18:39
本帖最后由 yang1zhi 于 2017-10-16 18:40 编辑

卡到动不了。是因为,一直在执行这个内容。你可以在前面加个判断间隔,加个等待。
比如等待60自动执行是不行的,自动执行会一直在那执行,不可以操作的。
并行可以同时操作

作者: 梦想家大魔王    时间: 2017-10-16 21:40
  1. Scene_Base.prototype.checkGameover = function() {
  2.     if ($gameParty.isAllDead()) {
  3.         SceneManager.goto(Scene_Gameover);
  4.     }
  5. };
复制代码

这一段是通用的,你把那个Scene_Gameover改成任意别的场景就能实现自定义跳转。
重定义方法也不难,基本套路就是先给原方法另取一个名字保存起来,然后改写原方法的实现代码。这个你参考一下那些插件的代码就知道该怎么写了。
如果实在不愿/不会写,那就干脆用现成的插件吧。我知道的有俩可以自定义gameover行为。
Kath_GameOver.rar (3.46 KB, 下载次数: 68) SRD_GameOverCore.rar (4.82 KB, 下载次数: 83)
作者: SailCat    时间: 2017-10-17 00:54
这需求居然需要上脚本?

1. 将你的分歧里的内容设置为公共事件A,没有执行条件
2. 游戏开始时打开某开关(设为0100),然后设置另一个公共事件B:并行处理,条件为开关0100,内容如下
条件分歧:体力值 <= 0
    开关0100关闭
    公共事件:A
    开关0100打开
分歧结束
等待60帧

完了。

自动执行会卡住是因为本来自动执行就会阻塞所有其他不自动执行的东西
并行处理会卡住是因为你执行的脚本太长,需要处理时间,但这个区间超过了1帧(默认1帧刷一次公共事件条件),而处理过程中没有让他不刷新的开关,结果陷入了无穷刷新呗




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