扫描二维码关注官方公众号
返回列表
+ 发新帖
查看: 180|回复: 0

[转载发布] 死亡后不出现Gameover而是原地复活的方法

[复制链接]
累计送礼:
0 个
累计收礼:
0 个
  • TA的每日心情
    开心
    2025-3-29 03:52
  • 签到天数: 127 天

    连续签到: 11 天

    [LV.7]常住居民III

    2350

    主题

    420

    回帖

    1万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9

    VIP
    6
    卡币
    11311
    OK点
    16
    推广点
    0
    同能卷
    0
    积分
    14109

    灌水之王

    发表于 2024-3-6 09:42:51 | 显示全部楼层 |阅读模式
    在做一个游戏时候找了很久都没找到暗雷遇怪如何在人物死后原地复活的方法,本人又对脚本编写基本停留在大概能看懂的地步。
    所以我只能硬着头皮去试着改改。
    以下教程适合我这种对编写脚本头大的新人学习,对于论坛的各位dalao来说是小巫见大巫了
    ======分割线=======
    首先,要实现这个目的,事件是解决不了的了,必须要修改js文件,我们知道如果是事件遇怪的话,可以设置一个允许失败,设置以后的效果是死亡之后不出现Gameover界面,而是直接返回战斗之前的地图画面然后自动复活。那么,马上我们就应该想到,如果把这个效果拿去替换掉默认的死亡方式,那这个问题就迎刃而解了,说干就干。
    第一步是如何找到这个死亡界面,这里我必须推荐Notepad++这个软件,真的很好用,而且有一个功能是搜索所有打开的文件,那么我们就把所有的自带的那些js都扔进去然后搜索gameover
    然后能得到一堆搜索结果,但是不要急,一个一个看。
    这时,要注意,我们要找的那一条是设置了选项的死亡方式,所以前后一定会有if这种语句,那么挨个看下来,在rpg_managers.js里面这一段很符合我们的要求。
    1. BattleManager.updateBattleEnd = function() {    if (this.isBattleTest()) {        AudioManager.stopBgm();        SceneManager.exit();    } else if (!this._escaped && $gameParty.isAllDead()) {        if (this._canLose) {            $gameParty.reviveBattleMembers();            SceneManager.pop();        } else {            SceneManager.goto(Scene_Gameover);        }    } else {        SceneManager.pop();    }    this._phase = null;};复制代码
    复制代码
    这一段中间的
    1. $gameParty.reviveBattleMembers();SceneManager.pop();复制代码
    复制代码
    1. SceneManager.goto(Scene_Gameover);复制代码
    复制代码
    看起来就是我们要找的东西,毕竟用初中英语也知道party有队伍的意思,revive是复活,第二句是什么不知道,不管他,第三句的goto和Scene_Gameover就更不用说了,然后,我们把第三句替换成前两句就得到了
    1. BattleManager.updateBattleEnd = function() {    if (this.isBattleTest()) {        AudioManager.stopBgm();        SceneManager.exit();    } else if (!this._escaped && $gameParty.isAllDead()) {        if (this._canLose) {            $gameParty.reviveBattleMembers();            SceneManager.pop();        } else {            $gameParty.reviveBattleMembers();            SceneManager.pop();        }    } else {        SceneManager.pop();    }    this._phase = null;};复制代码
    复制代码
    那么我们测试一下,emmm完美!直接返回了而且生命恢复了1,那么我们就该来看一眼上面说的SceneManager.pop();能不能简化,其实这很容易解决,原来ruby时候前面加个#就可以让这段变成注释,现在呢是用/**/把需要注释掉的句子包起来就行了,也就是说变成/*SceneManager.pop();*/,ok我们测试一下,显然运行出了问题,死亡以后卡在战斗界面回不去了,那么这一句即使不知道是什么意思我们也知道应该保留。但是你以为这样就完事了么!当然不是,虽然我不会写脚本,但是既然要做游戏我们就绝不能允许人物死亡以后就原地复活,连一句话都没有!
    那么在复活那里就应该加一句来调用一个公共事件,这样事件党们就又可以为所欲为了!
    很简单,加一句
    1. $gameTemp.reserveCommonEvent(X);复制代码
    复制代码
    这里的X可以替换成任何你想变成的公共事件的编号。
    好了,这个效果就算完成了~
    我要滚去做游戏啦~

                本帖来自P1论坛作者mh40907895,因Project1站服务器在国外有时候访问缓慢不方便作者交流学习,经联系P1站长fux2同意署名转载一起分享游戏制作经验,共同为国内独立游戏作者共同创造良好交流环境,原文地址:https://rpg.blue/forum.php?mod=viewthread&tid=478650  若有侵权,发帖作者可联系底部站长QQ在线咨询功能删除,谢谢。
    天天去同能,天天有童年!
    回复 送礼论坛版权

    使用道具 举报

    文明发言,和谐互动
    文明发言,和谐互动
    高级模式
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    关闭

    幸运抽奖

    社区每日抽奖来袭,快来试试你是欧皇还是非酋~

    立即查看

    聊天机器人
    Loading...

    QQ|Archiver|手机版|小黑屋|同能RPG制作大师 ( 沪ICP备12027754号-3 )

    GMT+8, 2025-4-20 22:13 , Processed in 0.133348 second(s), 50 queries .

    Powered by Discuz! X3.4

    Copyright © 2001-2020, Tencent Cloud.

    快速回复 返回顶部 返回列表