Project1

标题: 如何在全员死亡的情况下战斗不结束? [打印本页]

作者: 聪妖    时间: 2015-8-5 00:16
标题: 如何在全员死亡的情况下战斗不结束?
XP在一般的情况下,只要所有参战队员死亡就会战斗结束,也就是GAME OVER.
请问一下要怎么样才能做到即使全员死亡,战斗依然持续,而不是游戏结束.(可以用事件结束游戏或者战斗的前提下)
作者: jklpgh    时间: 2015-8-5 02:05
事件战斗处理那里,勾选失败的话继续,那里就可以设置了分歧失败了的场合和胜利的场合
作者: 未命名    时间: 2015-8-5 10:45
本帖最后由 未命名 于 2015-8-6 16:09 编辑

稍微这么做:

在Scene_Battle 1的116行 设置游戏结束标志 那里作如下修改:
将:
RUBY 代码复制
  1. # 设置游戏结束标志
  2.       $game_temp.gameover = true
  3.       # 返回 true
  4.       return true


改为:
RUBY 代码复制
  1. #$game_switches[x]里面的数字改成你想要的变量编号。
  2.       #第一个是打开战斗失败不结束战斗的开关。
  3.       if $game_switches[1] == false                                          #
  4.       $game_temp.gameover = true
  5.       # 返回 true
  6.       return true
  7.     else                                                                  #
  8.       #这个是执行事件的开关。
  9.         $game_switches[2] = true                                           #
  10.         return false                                                        #
  11.       end


然后在想要这么做的战斗中制作个条件为开关2(或者你想要的)打开,距离为“战斗”或“暂时”的战斗事件,
内容随意。
比如:


如果事件执行结束后还要继续战斗……请复活角色,要不然BUG。

记得之后把开关都关上,要不然下次又执行。

还有注意不要把脚本return true下面的end删掉……

———————————————————————————————————————————————————

好吧,如果希望战斗继续经过回合,同时又能在之后触发事件,把上面第一个开关一直开就好了(先前说是变量搞错了)。

但是如果角色全灭后还有没行动的人正好发动单体攻击就会报错,
所以:
在Scene_Battle 4中找到“行动方的战斗者是敌人的情况下”下面的
RUBY 代码复制
  1. if @active_battler.restriction == 3
  2.           target = $game_troop.random_target_enemy
  3.         elsif @active_battler.restriction == 2
  4.           target = $game_party.random_target_actor
  5.         else
  6.           index = @active_battler.current_action.target_index
  7.           target = $game_party.smooth_target_actor(index)
  8.         end


插入下面的脚本中。
RUBY 代码复制
  1. for actor in $game_party.actors
  2.           if actor.exist?
  3.  
  4.             #在这里插入。
  5.  
  6.             break
  7.           end
  8.         end


再下来一点的“设置对像方的战斗者序列”
RUBY 代码复制
  1. @target_battlers = [target]
  2.       # 应用通常攻击效果
  3.       for target in @target_battlers
  4.         target.attack_effect(@active_battler)
  5.       end

用下面的脚本包围
RUBY 代码复制
  1. if target != nil
  2.  
  3. #放在这。
  4.  
  5. end


最后是“设置物品或特技对像方的战斗者”下面的“敌单体”那有
RUBY 代码复制
  1. @target_battlers.push($game_party.smooth_target_actor(index))

变成
RUBY 代码复制
  1. for actor in $game_party.actors
  2.           if actor.exist?
  3.             @target_battlers.push($game_party.smooth_target_actor(index))
  4.             break
  5.           end
  6.         end

就完事了。

于是,在我方全灭后,战斗就不断地循环回合,我方动不了地方也不动,但是如果有战斗事件依然执行。
如果要加入些控制选项还要在窗口那改……
作者: 聪妖    时间: 2015-8-5 22:31
未命名 发表于 2015-8-5 10:45
稍微这么做:

在Scene_Battle 1的116行 设置游戏结束标志 那里作如下修改:

抱歉,这么晚才回信息.
那个,如果我不是特定的战斗,而是所有战斗都是这个效果要怎么改?
就是所有战斗就算灭团了战斗依然持续.不会直接结束战斗,其他保持不变(这个修改不影响我像默认那样随时用事件去中断战斗或者结束游戏)

作者: 聪妖    时间: 2015-8-5 22:39
jklpgh 发表于 2015-8-5 02:05
事件战斗处理那里,勾选失败的话继续,那里就可以设置了分歧失败了的场合和胜利的场合 ...

感谢回复帮忙.
但是那样做灭团之后战斗也直接结束了.
我的构思就算灭团了,战斗流程不会结束.
举例:所有角色都挂了.但不用事件中断战斗或者用事件结束游戏.这场战斗依然继续打下去,而不是直接输掉.
作者: 聪妖    时间: 2015-8-7 04:52
本帖最后由 聪妖 于 2015-8-7 04:55 编辑
未命名 发表于 2015-8-5 10:45
稍微这么做:

在Scene_Battle 1的116行 设置游戏结束标志 那里作如下修改:


恩,好像还是出问题了.当我方把对方全灭的情况下.战斗也会持续下去不会跳到胜利界面

当角色攻击已经挂掉的敌方时候(普通攻击,技能没测试)就会报错

也就是这段,本人脚本基础是零.会不会是我操作问题没修改好脚本?

作者: 未命名    时间: 2015-8-7 11:44
本帖最后由 未命名 于 2015-8-7 11:53 编辑
聪妖 发表于 2015-8-7 04:52
恩,好像还是出问题了.当我方把对方全灭的情况下.战斗也会持续下去不会跳到胜利界面

当角色攻击已经挂掉 ...


好吧,再编辑贴子就变得繁琐了……本来制作游戏就是繁琐。

这是一个范例,使用的是默认战斗系统。
如果系统改了,但是是基于默认战斗系统的,就寻找一样的地方改。

战斗全灭继续.rar (189.88 KB, 下载次数: 33)

一些注意事项:
1、全灭后复活不会再次触发全灭后的那个事件,因为我设计成触发距离是“战斗”。
    (你可以在脚本中在开一个开关[3]来判断是否触发过以免反复触发,复活之后关掉开关[3])
    (当然不设计事件就没有这个问题。)

2、只要队伍全灭,不论敌人是否全面都会继续。
作者: hmxyymyyc10    时间: 2015-8-7 23:02
其实有个最简单的办法:战斗处理事件把失败继续勾上,然后战斗失败的场合马上跟着一个“完全回复”的事件就不会结束游戏了




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