查看: 1510|回复: 0

[已经过期] 怎么改伤害数字的位置

[复制链接]
梦石
0
星屑
50
在线时间
51 小时
注册时间
2012-8-16
回帖
40
发表于 2012-8-21 15:28:05 | 显示全部楼层 |阅读模式

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

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

×
[pre lang="ruby" line="1"]# ダメージ表示改造(RTAB用) ver 1.02
# 配布元・サポートURL
# http://members.jcom.home.ne.jp/cogwheel/

class Scene_Battle
  alias :atb_setup_original :atb_setup
  def atb_setup
    for path in ["num", "critical", "miss", "levelup", "newskill", "learning"]
      RPG::Cache.numeric(path)
    end
    atb_setup_original
  end
end

module RPG
  class Sprite < ::Sprite
    WIDTH = 18                  # 文字幅
    HEIGHT = 20                 # クリティカルの文字・高さ
    def damage(value, critical, type = 0)
      if value.is_a?(Numeric)
        damage_string = value.abs.to_s
      else
        damage_string = value.to_s
      end
      if value.is_a?(Numeric) and value >= 0
        if type == 0
          if critical
            d_bitmap = draw_damage(value, 1)
          else
            d_bitmap = draw_damage(value, 0)
          end
        else
          d_bitmap = draw_damage(value, 2)
        end
      else
        if type == 0
          d_bitmap = draw_damage(value, 3)
        else
          d_bitmap = draw_damage(value, 4)
        end
      end
      if type == 2
        d_bitmap = draw_damage(value, 5)
      end
      num = @_damage.size
      if type != 2
        @_damage.push([::Sprite.new, 40, 0, rand(40) - 20, rand(30) + 50])
      else
        @_damage.push([::Sprite.new, 40, 0, rand(20) - 10, rand(20) + 60])
      end
      @_damage[num][0].bitmap = d_bitmap
      @_damage[num][0].ox = d_bitmap.width / 2
      @_damage[num][0].oy = d_bitmap.height / 2
      if self.battler.is_a?(Game_Actor)
        @_damage[num][0].ox = d_bitmap.width / 2 + 200
        @_damage[num][0].x = self.x + self.viewport.ox        
        @_damage[num][0].y = self.y - self.oy / 2
      else
        @_damage[num][0].x = self.x + self.viewport.rect.x -
                            self.ox + self.src_rect.width / 2
        @_damage[num][0].y = self.y - self.oy * self.zoom_y / 2 +
                            self.viewport.rect.y
        @_damage[num][0].zoom_x = self.zoom_x
        @_damage[num][0].zoom_y = self.zoom_y
        @_damage[num][0].z = 3000
      end
    end
    def draw_damage(value, element)
      width = 0
      if value.is_a?(Numeric)
        value = value.abs
        fig = value.to_s.size - 1
        file = RPG::Cache.numeric("num")
        d_width = WIDTH * fig + file.rect.width / 10
        if element == 1
          critical = RPG::Cache.numeric("critical")
          d_width = [d_width, critical.rect.width].max
          d_bitmap = Bitmap.new(d_width+36, HEIGHT + file.rect.height / 5)
          d_x = 0#(width - critical.rect.width / 10) / 2
          d_bitmap.blt(d_x+fig*(fig/1.6), 0, critical, critical.rect)
         # 会心一击表现效果强化
          Audio.se_play("Audio/SE/"+"Clip10",100,100)
      $game_screen.start_flash(Color.new(255,255,255),10)
       $game_screen.start_shake(3,9,10)
        else
          d_bitmap = Bitmap.new(d_width, HEIGHT + file.rect.height / 5)
        end
        d_x = ((d_width) - (WIDTH * fig + file.rect.width / 10)) / 2
        while fig >= 0
          d_bitmap.blt(d_x, HEIGHT, file, Rect.new((value / (10 ** fig)) *
            file.rect.width / 10, element * file.rect.height / 5,
            file.rect.width / 10, file.rect.height / 5))
          d_x += WIDTH
          value %= 10 ** fig
          fig -= 1
        end
      else
        case value
        when "Miss"
          file = RPG::Cache.numeric("miss")
        when "等级提升!"
          file = RPG::Cache.numeric("levelup")
        when "New Skill!"
          file = RPG::Cache.numeric("newskill")
        when "Learning!"
          file = RPG::Cache.numeric("learning")
        else
          return Bitmap.new(1, 1)
        end
        d_bitmap = file
      end
      return d_bitmap
    end
  end
  module Cache
    def self.numeric(filename)
      self.load_bitmap("Graphics/String/", filename)
    end
  end
end
[/pre]
您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

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

在本版发帖返回顶部