查看: 1526|回复: 1

[已经过期] 战斗结束后角色名字与血条清除问题

[复制链接]
梦石
0
星屑
1556
在线时间
626 小时
注册时间
2010-8-5
回帖
317
发表于 2013-8-15 17:35:16 | 显示全部楼层 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有账号?注册会员

×
先附上脚本[pre lang="ruby" line="1"]#==============================================================================
# ■ Sprite_Battler
#------------------------------------------------------------------------------
#  战斗显示用活动块。Game_Battler 类的实例监视、
# 活动块的状态的监视。
#==============================================================================

class Sprite_Battler < RPG::Sprite
  #--------------------------------------------------------------------------
  # ● 定义实例变量
  #--------------------------------------------------------------------------
  attr_accessor :battler                  # 战斗者
  #--------------------------------------------------------------------------
  # ● 初始化对像
  #     viewport : 显示端口
  #     battler  : 战斗者 (Game_Battler)
  #--------------------------------------------------------------------------
  def initialize(viewport, battler = nil)
    super(viewport)
    @battler = battler
    @battler_visible = false
    @Number = 0
    @sprite_contens = Sprite.new#(viewport)
    @sprite_contens.x = 0
    @sprite_contens.y = 0
    @sprite_contens.z = 0
    @sprite_contens.bitmap = Bitmap.new(640,480)
  end
  #--------------------------------------------------------------------------
  # ● 释放
  #--------------------------------------------------------------------------
  def dispose
    if self.bitmap != nil
      self.bitmap.dispose
    end
    super
  end
  #--------------------------------------------------------------------------
  # ● 战斗中名字的描绘
  #--------------------------------------------------------------------------
  def draw_actor_name(actor, x, y)
    @sprite_contens.bitmap.font.color = Color.new(0, 230, 50, 255)
    @sprite_contens.bitmap.font.size = 16
    @sprite_contens.bitmap.draw_text(x, y, 60, 65, actor.name,1)
  end
  #--------------------------------------------------------------------------
  # ● 战斗血条描绘
  #--------------------------------------------------------------------------
  def draw_battle_hp(actor, x, y)
    # 底图描绘
    battle_hp_bitmap = RPG::Cache.picture("战斗条框")
    src_rect = Rect.new(0, 0, battle_hp_bitmap.width, battle_hp_bitmap.height)
    @sprite_contens.bitmap.blt(x, y, battle_hp_bitmap, src_rect)
    # 血条显示
    battle_hp_bitmap = RPG::Cache.picture("战斗血条")
    hp_width = battle_hp_bitmap.width * actor.hp / actor.maxhp
    src_rect = Rect.new(0, 0, hp_width, battle_hp_bitmap.height)
    @sprite_contens.bitmap.blt(x+1, y+1, battle_hp_bitmap, src_rect)
  end
  
  #--------------------------------------------------------------------------
  # ● 刷新画面
  #--------------------------------------------------------------------------
  def update
    super
   
      #刷新战斗血条
    if @battler.is_a?(Game_Actor)
      if not @sprite_contens.disposed?
        if @battler_hp == 0 and not @battler.dead?
          @sprite_contens.bitmap.clear
          @sprite_contens.x = @battler.screen_x
          @sprite_contens.y = @battler.screen_y
          @sprite_contens.z = @battler.screen_z + 10
          draw_actor_name(@battler, 0, 0)
          #draw_battle_sp(@battler, 0, 27)
          draw_battle_hp(@battler, 0, 0)
          @battler_hp = @battler.hp
        end
        if @wait_count.to_i != 0
          @sprite_contens.visible = false
        else
          @sprite_contens.visible = true
        end
      end
    elsif @battler.is_a?(Game_Enemy)
      unless @sprite_contens.disposed?
        if @battler.hp0?
          @sprite_contens.bitmap.clear
        end
      if @wait_count.to_i != 0
        @sprite_contens.visible = false
      else
        @sprite_contens.visible = true
      end
      end
    end


    # 战斗者为 nil 的情况下
    if @battler == nil
      self.bitmap = nil
      loop_animation(nil)
      return
    end
    # 文件名和色相与当前情况有差异的情况下
    if @battler.battler_name != @battler_name or
       @battler.battler_hue != @battler_hue
      # 获取、设置位图
      @battler_name = @battler.battler_name
      @battler_hue = @battler.battler_hue
      self.bitmap = RPG::Cache.battler(@battler_name, @battler_hue)
      @width = bitmap.width
      @height = bitmap.height
      self.ox = @width / 2
      self.oy = @height
      # 如果是战斗不能或者是隐藏状态就把透明度设置成 0
      if @battler.dead? or @battler.hidden
        self.opacity = 0
      end
    end
       if @battler.startactive == "移动" or @battler.startactive == "返回" or @battler.startactive == "挨打" or @battler.startactive == "防御" or @battler.startactive == "死亡"
      if Graphics.frame_count % 2 == 0
        unless BattlerName[@battler.name].nil?
          @number = (@number + 1) % BattlerName[@battler.name][@battler.startactive].size
          self.bitmap = RPG::Cache.battler(BattlerName[@battler.name][@battler.startactive][@number], @battler_hue)
          #Graphics.update
        end
      end
    else
      if Graphics.frame_count % 3 == 0
        unless BattlerName[@battler.name].nil?
          @number = (@number + 1) % BattlerName[@battler.name][@battler.startactive].size
          self.bitmap = RPG::Cache.battler(BattlerName[@battler.name][@battler.startactive][@number], @battler_hue)
        end
      end
    end

    x, y = Mouse.get_mouse_pos
    if x >= self.x - self.ox and x <= self.x + self.ox and y >= self.y - self.oy and y <= self.y and
        self.bitmap.get_pixel(x - self.x + self.ox + self.src_rect.x, y - self.y + self.oy + self.src_rect.y).alpha > 0
       self.tone.set(80, 80, 80)
       @sprite_contens.bitmap.font.color = Color.new(0,30, 50, 0)
     else
       self.tone.set(0, 0, 0)
      end
    # 动画 ID 与当前的情况有差异的情况下
    if @battler.damage == nil and
       @battler.state_animation_id != @state_animation_id
      @state_animation_id = @battler.state_animation_id
      loop_animation($data_animations[@state_animation_id])
    end
   
    # 不可见的情况下
    unless @battler_visible
    # 出现
      if not @battler.hidden and not @battler.dead? and
         (@battler.damage == nil or @battler.damage_pop)
        appear
        @battler_visible = true
      end
    end
    # 可见的情况下
    if @battler_visible
      # 逃跑
      if @battler.hidden
        $game_system.se_play($data_system.escape_se)
        escape
        @battler_visible = false
      end
      # 白色闪烁
      if @battler.white_flash
        whiten
        @battler.white_flash = false
      end
      # 动画
      if @battler.animation_id != 0
        animation = $data_animations[@battler.animation_id]
        animation(animation, @battler.animation_hit)
        @battler.animation_id = 0
      end
      # 伤害
      if @battler.damage_pop
        damage(@battler.damage, @battler.critical)
        @battler.damage = nil
        @battler.critical = false
        @battler.damage_pop = false
      end
      # korapusu★★★★★★★★★★★★★★★★★★★★★★★★★★★★
      if @battler.damage == nil and @battler.dead?
        if @battler.is_a?(Game_Enemy)
          $game_system.se_play($data_system.enemy_collapse_se)
          @battler.startactive = "静态"
        else
          $game_system.se_play($data_system.actor_collapse_se)
         @battler.startactive = "静态"
        end
        @battler_visible = false
      end
    end
# 设置活动块的坐标
    self.x = @battler.screen_x
    self.y = @battler.screen_y
    self.z = @battler.screen_z
    @mx = self.bitmap.height
    if @battler.is_a?(Game_Actor)
        @sprite_contens.bitmap.clear
        @sprite_contens.x = @battler.screen_x - 30
        @sprite_contens.y = @battler.screen_y  - @mx -  20
        @sprite_contens.z = self.z
        draw_actor_name(@battler, 0,@mx)
        draw_battle_hp(@battler, 0,0)
      elsif @battler.is_a?(Game_Enemy)
        @sprite_contens.bitmap.clear
        @sprite_contens.x = @battler.screen_x - 30
        @sprite_contens.y = @battler.screen_y - 20
        draw_actor_name(@battler, 0, 0)
      end
   end
   end
[/pre]

2.JPG

战斗结束后,角色名字和血条的清除,在线等回答。如果需要其他的脚本,请说下。

梦石
0
星屑
1556
在线时间
626 小时
注册时间
2010-8-5
回帖
317
 楼主| 发表于 2013-8-16 09:23:44 | 显示全部楼层
这是要沉???{:2_259:}
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部