| 
 
| 赞 | 1 |  
| VIP | 1 |  
| 好人卡 | 2 |  
| 积分 | 1 |  
| 经验 | 36245 |  
| 最后登录 | 2020-7-2 |  
| 在线时间 | 465 小时 |  
 Lv1.梦旅人 
	梦石0 星屑55 在线时间465 小时注册时间2011-4-13帖子174 | 
| 
随意做的一个预览视频,但是总觉得效果不是太理想……
x
加入我们,或者,欢迎回来。您需要 登录 才可以下载或查看,没有帐号?注册会员  对于必杀技有什么建议的尽管提
 这里奉上超级超级巨垃圾的源码……
 复制代码module OD_FourPointsExplosion
  def self.update
    case $odm.step_timer
    when 0
      $game_player.animation_id = 249
    when 10
      # 第一步
      step1
    when 20
      # 主角弹出命令
      $game_player.pop_damage_text("四点爆破")
    when 50
      # 第二步
      step2
    when 60
      # 第三步
      step3
    when 65
      # 第四步
      step4
    when 70
      $game_map.events[$game_system.friend_event_id[0]].animation_id = 251
    when 75
      $game_map.events[$game_system.friend_event_id[1]].animation_id = 251
    when 80
      $game_map.events[$game_system.friend_event_id[2]].animation_id = 251
    when 85
      $game_player.animation_id = 251
    when 120
      $game_player.shoot(46)
    when 800
      $game_player.pop_damage_text("干得漂亮")
      $game_temp.overdriving = false
      for i in $game_system.friend_event_id
        $game_map.events[i].aimovement_stand_by = false
      end
      $odm.fpe = false
      $odm.step_timer = 0
    end
  end
  def self.step1
    # 对于所有队友
    for i in $game_system.friend_event_id
      # 打开AI移动的待机开关(取消BFSMOVE对移动的控制)
      $game_map.events[i].aimovement_stand_by = true
      # 队友播放动画
      $game_map.events[i].animation_id = 250
      for q in 0..5
        $game_map.events[i].move_random
      end
      $game_map.events[i].turn_toward_player
    end
  end
  def self.step2   
    # 记录当前画面色调,准备必杀技特写
    @ori_tone = $game_screen.tone
    # 更改画面色调
    $game_screen.start_tone_change(Tone.new(-120,-120,-120), 5)
  end
  def self.step3
    # 创建特写精灵的查看端口
    @cuview = Viewport.new(0, 0, 640, 480)
    # 开始特写
    @s1 = Sprite_CloseUp.new(@cuview, $game_party.actors[0].name, 80)
    @s2 = Sprite_CloseUp.new(@cuview, $game_party.actors[1].name, 180)
    @s3 = Sprite_CloseUp.new(@cuview, $game_party.actors[2].name, 280)
    @s4 = Sprite_CloseUp.new(@cuview, $game_party.actors[3].name, 380)
    # 等待特写结束
    for i in 0..47
      @s1.update
      @s2.update
      @s3.update
      @s4.update
      Graphics.update
    end
  end
  def self.step4
    # 恢复原来的画面色调
    $game_screen.start_tone_change(Tone.new(0,0,0), 5)
  end
end
#==============================================================================
# ■ OD_Manager
#------------------------------------------------------------------------------
#  监控必杀技发动条件的实时对象(实例为$odm)
#==============================================================================
class OD_Manager
  attr_accessor :fpe
  attr_accessor :step_timer
  def initialize
    @step_timer = 0
    @fpe = false
  end
  # 实时监控必杀技发动条件
  def update
    if $game_temp.overdriving
      @step_timer += 1
    end
    if Input.trigger?(Input::SHIFT)
      return if $game_temp.overdriving
      # 四点爆破使用中——临时标志
      @fpe = true
      # 必杀技使用中——临时标志
      $game_temp.overdriving = true      
    end
    # 刷新——四点爆破
    OD_FourPointsExplosion.update if @fpe
  end
end
#==============================================================================
# ■ Sprite_CloseUp
#------------------------------------------------------------------------------
#  为BFS创作——特写精灵
#   使用方法:
#   图像:角色名称 + "_OD" 存放在Pictures文件夹内
#   调用:
#   Sprite_CloseUp.new(查看端口(请自行创建), 角色名称, Y坐标)
#==============================================================================
class Sprite_CloseUp < Sprite
  def initialize(viewport, actor_name, y = 0)
    super(viewport)
    @frame_count = 0
    @bg_image = RPG::Cache.picture(actor_name + "_OD")
    @bg_bitmap = Bitmap.new(@bg_image.width,@bg_image.height)
    @bg_sprite = Sprite.new
    @bg_sprite.bitmap = @bg_bitmap
    @bg_src_rect_back = Rect.new(0, 0,@bg_image.width, @bg_image.height)
    @bg_bitmap.blt(0,0, @bg_image, @bg_src_rect_back)      
    @bg_sprite.z = 999
    @bg_sprite.x = 640
    @bg_sprite.y = y
    @bg_sprite.zoom_y = 0.1
    @bg_sprite.tone = Tone.new(255, 255, 255)
  end
  def update
    @frame_count += 1
    case @frame_count
    when 0..10
      @bg_sprite.x -= 64
    when 11..19
      @bg_sprite.zoom_y += 0.1
      @bg_sprite.tone.red -= 28
      @bg_sprite.tone.green -= 28
      @bg_sprite.tone.blue -= 28
    when 20
      @bg_sprite.tone = Tone.new(0, 0, 0)
    when 28
      @bg_sprite.flash(Color.new(255,255,255),11)
    when 29..37
      @bg_sprite.zoom_y -= 0.1
    when 38..46
      @bg_sprite.x -= 64
    when 47
      dispose
    end
  end
  def dispose
    @bg_sprite.bitmap.dispose
    @bg_sprite.bitmap = nil
    @bg_sprite.dispose
    @bg_sprite = nil    
    @bg_bitmap.dispose
    @bg_bitmap = nil  
  end
end
 | 
 |