设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 2970|回复: 3
打印 上一主题 下一主题

[已经过期] 想让暗雷战斗失败后,不会进入游戏失败页面

[复制链接]

Lv4.逐梦者 (版主)

梦石
1
星屑
6906
在线时间
2650 小时
注册时间
2013-8-23
帖子
2315

开拓者

跳转到指定楼层
1
发表于 2017-5-30 12:47:34 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

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

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

x
本帖最后由 鑫晴 于 2017-5-30 15:46 编辑

默认情况下,在暗雷战斗中,如果队伍成员在战斗中都附加了“战斗不能”的状态,游戏结束。

我想要角色能在战斗失败后保留“战斗不能”状态,即使团灭也不会结束游戏,
而是以“战斗不能”状态和HP=1,返回地图场景。


换了种解决方式,算是解决了
团灭后调用公共事件
$gameTemp.reserveCommonEvent(1);  


但有个新的问题出现了。。。
我想在这个时机调用公共事件(失败信息关闭后,战斗场景还存在时)



矛盾历史




JAVASCRIPT 代码复制下载
  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.             this._canLose = true;
  11.             this.endBattle(2);
  12.             $gameParty.reviveBattleMembers();
  13.             $gameTemp.reserveCommonEvent(1);   /* 调用公共事件  */
  14.             SceneManager.pop();   /*SceneManager.goto(Scene_Map); */
  15.  
  16.             /*SceneManager.goto(Scene_Gameover);*/
  17.         }
  18.     } else {
  19.         SceneManager.pop();
  20.     }
  21.     this._phase = null;
  22. };


想要的效果:
暗雷战斗失败后,不会进入“GameOver”页面,而是像设置了“允许失败”的战斗一样,战斗结束后返回战斗前的位置。“战斗不能”的状态也不会因为战斗结束而消失。(默认“允许失败”的战斗结束后没有“战斗不能”的状态)。


在RMXP中,可以这样实现想要的效果

RUBY 代码复制
  1. # 游戏结束的情况下
  2.     if $game_temp.gameover  
  3.       $game_temp.battle_can_lose = true
  4.       battle_end(1)
  5.       $game_temp.gameover = false
  6.       $game_system.bgm_play(nil)
  7.       $game_system.bgs_play(nil)
  8.       return
  9.     end

Lv2.观梦者

梦石
0
星屑
440
在线时间
679 小时
注册时间
2014-3-15
帖子
292

开拓者

2
发表于 2017-5-30 13:44:13 | 只看该作者
一个比较菜鸟的办法,在需要canlose的时候,地图脚本编辑器代码BattleManager._canLose = true这样的话战斗失败直接退出战斗继续剧情。需要的时候BattleManager._canLose = false来取消效果。

点评

但是没有允许失败的话,战斗结束没有“战斗不能”的状态  发表于 2017-5-30 13:54

评分

参与人数 1星屑 +66 收起 理由
鑫晴 + 66 塞糖

查看全部评分

回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1409
在线时间
962 小时
注册时间
2012-4-30
帖子
1475

开拓者

3
发表于 2017-5-30 14:18:39 | 只看该作者
本帖最后由 铅笔描绘的思念 于 2017-5-30 14:44 编辑

isAllDead()只是一个有返回值的方法罢了。。所以 $gameParty.isAllDead = false; 肯定出错啊。。
我的想法是if…… then break 就好
或者在给isAllDead()加个访问器 但isAllDead()其实也是返回别的方法的值罢了 所以麻烦又没必要


break错了并没有什么区别
类似canlose的话
JAVASCRIPT 代码复制
  1. if (条件) {SceneManager.pop();}

但pop到上个scene的话 因为scene_base有checkGameover所以还要
JAVASCRIPT 代码复制
  1. Scene_Base.prototype.checkGameover = function() {
  2.     if ($gameParty.isAllDead()&&条件) {
  3.         SceneManager.goto(Scene_Gameover);
  4.     }
  5. };
类似这样的可以用一个开关来加条件

评分

参与人数 1星屑 +66 收起 理由
鑫晴 + 66 认可答案

查看全部评分

回复 支持 反对

使用道具 举报

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

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-12-28 22:09

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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