Project1

标题: 如何制作战斗中一个敌人死了再出现一个? [打印本页]

作者: 爆焰    时间: 2011-8-30 20:43
标题: 如何制作战斗中一个敌人死了再出现一个?
  就是说,第一个死了,第二个才出现。什么中途出现,敌人增援脚本我都试过了,就是不行,杀了一个就直接结束战斗了,
请问有什么好办法?dsu_plus_rewardpost_czw
作者: 龙腾天下    时间: 2011-8-30 21:36
这个可以不用脚本。
事件:在队伍里弄成这样

再在事件中找到


当然,不要忘记了加上中途出现。。(记住,一定要对号入座)


你要选什么出现,在右边里可以选。

作者: 亿万星辰    时间: 2011-8-30 21:47
本帖最后由 亿万星辰 于 2011-8-30 22:47 编辑

哎呀,点评错人了……
请“龙腾天下”同学自己去实验一下看看,那个中途加入的幽灵是否会出现呢……
以及在什么情况下就可以实现呢?
作者: darkscout3000    时间: 2011-8-30 22:52
这个⋯⋯可能要改胜利条件的判定⋯⋯具体是什么来着⋯⋯交给楼下了⋯⋯
作者: 龙腾天下    时间: 2011-8-30 22:56
本帖最后由 龙腾天下 于 2011-8-30 23:12 编辑

试试我的附件吧。
在数据库中队伍战斗。
另外,亿万大人没有点评错,我也的确没有测试过,这一点,我先道歉,

还有我漏做一步(就是战斗敌人不能少于3个,连中途出现那个也算进去。)

令LZ误解,我再道歉。

但以下这个附件完全可行,

但是,如果你想突破“战斗敌人不能少于3个”,

需要再定义一个东西(脚本应该不难,但再无法帮助LZ,因为上学,星期六吧。。),(以下均为思路)

在Scene_Battle 1 中的 100行 找到
  1. #--------------------------------------------------------------------------
  2.   # ● 胜负判定
  3. #--------------------------------------------------------------------------
  4.   def judge
  5.     # 全灭判定是真、并且同伴人数为 0 的情况下
  6.     if $game_party.all_dead? or $game_party.actors.size == 0
  7.       # 允许失败的情况下
  8.       if $game_temp.battle_can_lose
  9.         # 还原为战斗开始前的 BGM
  10.         $game_system.bgm_play($game_temp.map_bgm)
  11.         [color=Red]# 战斗结束
  12.         battle_end(2)[/color]        
  13.       # 返回 true
  14.         return true
  15.       end
  16.       # 设置游戏结束标志
  17.       $game_temp.gameover = true
  18.       # 返回 true
  19.       return true
  20.     end

复制代码
在红色字下改(应该是这样吧。。脚本不过关啊。)

加上
  1. for enemy in $game_troop.enemies

  2.           enemy.hidden  == false

  3.           end
  4.    
  5.           make_action_orders   

  6.          start_phase3
复制代码
理想中应该是这样子吧。。先测试。。

附件: Project8.rar (190.68 KB, 下载次数: 30) (注:附件不包含脚本。)


龙腾天下于2011-8-30 23:19补充以下内容:
还有,还有一种更简单的方法,用事件

只要把变量叠加就好了,

当变量到了一定的数

然后条件分歧,

出现敌人……
出现敌人……
(至多一起出现7个,当然,你也要在队伍中设“中途出现”)

作者: 亿万星辰    时间: 2011-8-31 07:11
  1.   #--------------------------------------------------------------------------
  2.   # ● 胜负判定
  3.   #--------------------------------------------------------------------------
  4.   def judge
  5.     # 全灭判定是真、并且同伴人数为 0 的情况下
  6.     if $game_party.all_dead? or $game_party.actors.size == 0
  7.       # 允许失败的情况下
  8.       if $game_temp.battle_can_lose
  9.         # 还原为战斗开始前的 BGM
  10.         $game_system.bgm_play($game_temp.map_bgm)
  11.         # 战斗结束
  12.         battle_end(2)
  13.         # 返回 true
  14.         return true
  15.       end
  16.       # 设置游戏结束标志
  17.       $game_temp.gameover = true
  18.       # 返回 true
  19.       return true
  20.     end
  21.     # 如果存在任意 1 个敌人就返回 false
  22.     for enemy in $game_troop.enemies
  23.       if enemy.exist?
  24.         return false
  25.       end
  26.     end
  27.     result = true
  28.     # 若队伍中存在还未中途加入的怪物且活着,则全部现身
  29.     for enemy in $game_troop.enemies
  30.       if enemy.hidden and enemy.hp > 0
  31.         enemy.hidden = false
  32.         result = false
  33.       end
  34.     end
  35.     unless result
  36.       return false
  37.     end
  38.     # 开始结束战斗回合 (胜利)
  39.     start_phase5
  40.     # 返回 true
  41.     return true
  42.   end
复制代码
试着重新定义了一下judge的的方法,在全胜的情况下再检查一边是否存在活着的还未出现的中途加入的怪物,如果存在,统统现身~不知道和队伍中的战斗事件是否会冲突~待考证~




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