Project1

标题: 敌人死亡前执行事件 [打印本页]

作者: fbeds    时间: 2016-10-22 16:24
标题: 敌人死亡前执行事件
如何在战斗时设置一个事件,当某个敌人hp为0即将死亡前执行,执行完后敌人再死亡?
作者: RaidenInfinity    时间: 2016-10-22 18:09
我不知道你有没有用其他影响界面的脚本系统,所以我基于默认系统来写。

使用这段脚本:

RUBY 代码复制
  1. class Window_BattleLog < Window_Selectable
  2.  
  3.   def display_added_states(target)
  4.     target.result.added_state_objects.each do |state|
  5.       state_msg = target.actor? ? state.message1 : state.message2
  6.       $game_troop.setup_battle_event
  7.       if state.id == target.death_state_id
  8.           $game_troop.setup_battle_event
  9.           SceneManager.scene.update_for_interpreter while $game_troop.interpreter.running?
  10.           target.perform_collapse_effect
  11.       end
  12.       next if state_msg.empty?
  13.       replace_text(target.name + state_msg)
  14.       wait
  15.       wait_for_effect
  16.     end
  17.   end
  18.  
  19. end
  20.  
  21. class Scene_Battle < Scene_Base
  22.  
  23.   def update_for_interpreter
  24.     update_basic
  25.     $game_troop.interpreter.update
  26.   end
  27.  
  28. end


然后就可以在敌群的事件设置使用体力值等于0%来触发你要的效果。

作者: fbeds    时间: 2016-10-22 21:40
RaidenInfinity 发表于 2016-10-22 18:09
我不知道你有没有用其他影响界面的脚本系统,所以我基于默认系统来写。

使用这段脚本:

大部分事件可以执行,但在即将死去的敌人身上显示动画却显示不出来是怎么回事?
作者: RaidenInfinity    时间: 2016-10-22 22:17
本帖最后由 RaidenInfinity 于 2016-10-23 10:15 编辑

默认的战斗动画播放指令会检测敌人是否存活。
因此,需要用事件脚本指令来手动执行。

RUBY 代码复制
  1. iterate_enemy_index(敌人序列 - 1) do |enemy|
  2. enemy.animation_id = 动画ID
  3. a = $data_animations[enemy.animation_id]
  4. (a.frame_max  * 4).times do Fiber.yield end
  5. end
  6.  
  7. #如果要第3个敌人,那就写
  8. #iterate_enemy_index(2)
  9. #以此类推


用法: (例子:在第4个敌人身上播放1号动画)

*注:脚本已经修正,请以上列脚本为准。
作者: fbeds    时间: 2016-10-23 08:55
RaidenInfinity 发表于 2016-10-22 22:17
默认的战斗动画播放指令会检测敌人是否存活。
因此,需要用事件脚本指令来手动执行。

不行啊,在即将死去的敌人身上显示动画前敌人就会消失了,动画也只会有声音。




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