Project1

标题: 【深夜讨论】如何让角色不加入战斗 [打印本页]

作者: 工藤~新一じ    时间: 2016-6-22 00:07
标题: 【深夜讨论】如何让角色不加入战斗
本帖最后由 工藤~新一じ 于 2016-6-22 12:27 编辑

如题,每到晚上就会构思很多小功能。
于是,我想到要实现一个效果  ——  空战。
假如玩家在空中,进入战斗的话按道理来说,不具备飞行能力的角色是不加入战斗的。
我就在想,实现这个功能,要怎么做。
步骤如下:
①进入战斗时,用变量记录1、2、3、4号角色的id。
②让不具备飞行能力的角色全部离开队伍。
③战斗结束后,让所有角色离开队伍,并依次让进入战斗时,记录的1号角色、2号角色、3号角色、4号角色加入队伍。

对于不懂脚本的我来说,这是最笨的办法。
但这样做有瑕疵,情况如下:
楼主用了角色跟随脚本。
设队伍中角色有2位,1号和2号,1号不具备飞行能力,2号具备。
跟随的角色是1号角色。
在执行①的时候没有问题
执行②的时候,1号角色会离开队伍,此时,2号角色就变成了跟随的角色。
战斗结束后,执行③,跟随的角色又改成了1号角色。

楼主还是个渣渣,确实想不出办法解决~求方法!

作者: 工藤~新一じ    时间: 2016-6-22 00:22
https://rpg.blue/forum.php?mod=viewthread&tid=89741
作者: 工藤~新一じ    时间: 2016-6-22 00:23
找到了08年的帖子,似乎有人解决了这个问题。但是当年的链接已经打不开了
https://rpg.blue/forum.php?mod=viewthread&tid=89741
作者: 工藤~新一じ    时间: 2016-6-22 00:26
也找到了另外一个脚本,这个脚本可以实现单个在队伍的角色不参战
https://rpg.blue/forum.php?mod=viewthread&tid=217048

作者: 工藤~新一じ    时间: 2016-6-22 01:52
在论坛又找到了一份脚本,新建了工程测试,会报错

  1. #======================================================
  2. # 某些角色不参与战斗,柳柳@66rpg.com
  3. #======================================================
  4. class Scene_Battle
  5.   #====================================================
  6.   # 不参与战斗的编号写在这里
  7.   #====================================================
  8.     I_AM_NPC = [4, 5, 3]
  9.   # 不参与战斗的角色,进入战斗的时候临时轰走
  10.   alias o_start start unless $@
  11.   def start
  12.     @no_fight = []
  13.     for aid in I_AM_NPC
  14.       if $game_party.members.include?($game_actors[aid])
  15.         @no_fight.push(aid)
  16.         $game_party.remove_actor(aid)
  17.       end
  18.     end
  19.     o_start
  20.   end
  21.   
  22.   # 被轰走的角色,结束战斗的时候叫回来
  23.   alias o_terminate terminate unless $@
  24.   def terminate
  25.     o_terminate
  26.     for aid in @no_fight
  27.       $game_party.add_actor(aid)
  28.     end
  29.   end
  30.   
  31. end
复制代码

QQ截图20160622015237.png (21.23 KB, 下载次数: 14)

QQ截图20160622015237.png

作者: 英顺的马甲    时间: 2016-6-22 15:51
全员离队后先让二号入队不久行了?
作者: 工藤~新一じ    时间: 2016-6-22 18:09
英顺的马甲 发表于 2016-6-22 15:51
全员离队后先让二号入队不久行了?

可以啊,但是跟随的人物会改变。
你觉得怎么解决这个问题好?
作者: wxlhj860    时间: 2016-6-23 09:25
恕在下有点不懂,因为执行②的时候,应该已经处于战斗时,那么跟随系统的问题何在?
作者: 英顺的马甲    时间: 2016-6-23 10:45
  1. $__ORG_SBATTLE = Scene_Battle.clone unless $__ORG_SBATTLE
  2. class Scene_Battle < $__ORG_SBATTLE
  3.   def main
  4.     @orig_actors = $game_party.actors.clone
  5.     # 请在下面区域内进行调整
  6.     #====================================================
  7.     if $game_switches[1] # 设定一个开关作为条件啥的
  8.       $game_party.actors.keep_if do |a|
  9.         [1,2,4,5].include?(a.id) # 需要保留的角色的判定在此
  10.       end
  11.     end
  12.     #====================================================
  13.     super
  14.     $game_party.actors.clear
  15.     $game_party.actors << @orig_actors
  16.     $game_party.actors.flatten!
  17.   end
  18. end
复制代码
用这个脚本试试?
作者: 工藤~新一じ    时间: 2016-6-23 23:51
英顺的马甲 发表于 2016-6-23 10:45
用这个脚本试试?

报错啦。
这是前天晚上的小构思,其实我现在已经放弃这个想法了~设置的工作量有点大,而且效果也不太好~

报错.png (24.37 KB, 下载次数: 14)

报错.png





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