江湖梦网游戏服务平台

 找回密码
 免费注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 2288|回复: 0

[搬运汉化] 死亡后不出现Gameover而是原地复活的方法

[复制链接]

449

帖子

41

精华

25

贡献

江湖英豪

检察者

Rank: 5Rank: 5Rank: 5

积分
7217
发表于 2020-1-10 23:48 | 显示全部楼层 |阅读模式

马上注册,享用更多精彩。

您需要 登录 才可以下载或查看,没有帐号?免费注册

x
在做一个游戏时候找了很久都没找到暗雷遇怪如何在人物死后原地复活的方法,本人又对脚本编写基本停留在大概能看懂的地步。
所以我只能硬着头皮去试着改改。原作者:mh40907895
原地址:https://rpg.blue/thread-478650-1-1.html
以下教程适合我这种对编写脚本头大的新人学习,对于论坛的各位dalao来说是小巫见大巫了undefined
======分割线=======
首先,要实现这个目的,事件是解决不了的了,必须要修改js文件,我们知道如果是事件遇怪的话,可以设置一个允许失败,设置以后的效果是死亡之后不出现Gameover界面,而是直接返回战斗之前的地图画面然后自动复活。那么,马上我们就应该想到,如果把这个效果拿去替换掉默认的死亡方式,那这个问题就迎刃而解了,说干就干。
第一步是如何找到这个死亡界面,这里我必须推荐Notepad++这个软件,真的很好用,而且有一个功能是搜索所有打开的文件,那么我们就把所有的自带的那些js都扔进去然后搜索gameover
然后能得到一堆搜索结果,但是不要急,一个一个看。
这时,要注意,我们要找的那一条是设置了选项的死亡方式,所以前后一定会有if这种语句,那么挨个看下来,在rpg_managers.js里面这一段很符合我们的要求。
  • 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;
  • };

[color=rgb(51, 102, 153) !important]复制代码

这一段中间的
  • $gameParty.reviveBattleMembers();
  • SceneManager.pop();

[color=rgb(51, 102, 153) !important]复制代码


  • SceneManager.goto(Scene_Gameover);

[color=rgb(51, 102, 153) !important]复制代码

看起来就是我们要找的东西,毕竟用初中英语也知道party有队伍的意思,revive是复活,第二句是什么不知道,不管他,第三句的goto和Scene_Gameover就更不用说了,然后,我们把第三句替换成前两句就得到了
  • 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;
  • };

[color=rgb(51, 102, 153) !important]复制代码

那么我们测试一下,emmm完美!直接返回了而且生命恢复了1,那么我们就该来看一眼上面说的SceneManager.pop();能不能简化,其实这很容易解决,原来ruby时候前面加个#就可以让这段变成注释,现在呢是用/**/把需要注释掉的句子包起来就行了,也就是说变成/*SceneManager.pop();*/,ok我们测试一下,显然运行出了问题,死亡以后卡在战斗界面回不去了,那么这一句即使不知道是什么意思我们也知道应该保留。但是你以为这样就完事了么!当然不是,虽然我不会写脚本,但是既然要做游戏我们就绝不能允许人物死亡以后就原地复活,连一句话都没有!
那么在复活那里就应该加一句来调用一个公共事件,这样事件党们就又可以为所欲为了!
很简单,加一句
  • $gameTemp.reserveCommonEvent(X);

[color=rgb(51, 102, 153) !important]复制代码

这里的X可以替换成任何你想变成的公共事件的编号。
好了,这个效果就算完成了~

QQ群:135474765游戏群 [img]http://img2.17getfun.com/FhlesUf3VWxvhVFuc0qdBwYuanyt?imageMogr2/auto-orient/thumbnail/1080x%3E/format/jpg/
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

QQ|手机版|Archiver|小黑屋|江湖梦网 ( 粤ICP备18126133号-1 )

GMT+8, 2024-4-20 02:44 , Processed in 0.238758 second(s), 25 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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