Project1

标题: 用了下面敌人显示信息脚本,把兵力字体改大结果.兵力和兵... [打印本页]

作者: ding___1    时间: 2013-10-23 19:10
标题: 用了下面敌人显示信息脚本,把兵力字体改大结果.兵力和兵...
用了下面敌人显示信息脚本,把兵力字体改大结果.兵力和兵力数值就上面和下面看不见了如下图:











#==============================================================================

# 本脚本来自www.66RPG.com,使用和转载请保留此信息

#==============================================================================

# ■ エネミーHP&SP(ver 0.98)


# □ カスタマイズポイント

#==============================================================================

module PLAN_HPSP_DRAW

FONT_NAME         = ["黑体", "楷体", "宋体"]    # フォント

FONT_SIZE         =  22                               # フォントサイズ

FONT_BOLD         = false#true                              # 太字

FONT_ITALIC       = false#true                              # 斜体


DRAW_NAME         = false                             # 名前の描画

DRAW_HP           = true                              # HP の描画

DRAW_SP           = false                            # SP の描画


DRAW_WIDTH        =  80                               # 描画幅

DRAW_HEIGHT       = 3*4                            # 描画高さ

DRAW_SPACE        =   0                               # 行間

DRAW_Y            =  1                              # Y 座標修正値


HEIGHT = 200 #这里设置你要的血条高度

end



#==============================================================================

# ■ Sprite_Battler

#==============================================================================


class Sprite_Battler < RPG::Sprite

#--------------------------------------------------------------------------

# ● オブジェクト初期化

#--------------------------------------------------------------------------

alias plan_enemy_hpsp_draw_initialize initialize

def initialize(viewport, battler = nil)

   # 元のメソッドに戻す

   plan_enemy_hpsp_draw_initialize(viewport, battler)

   # エネミーの場合

   if @battler.is_a?(Game_Enemy)

     width = PLAN_HPSP_DRAW::DRAW_WIDTH + 32

     height = PLAN_HPSP_DRAW::DRAW_HEIGHT + 32

     x = @battler.screen_x - width / 2

     y = @battler.screen_y - height + 32 + PLAN_HPSP_DRAW::DRAW_Y

     @enemy_hpsp_window = Window_Base.new(x, y, width, height)

     @enemy_hpsp_window.contents = Bitmap.new(width - 32, height - 32)

     @enemy_hpsp_window.contents.font.name = PLAN_HPSP_DRAW::FONT_NAME

     @enemy_hpsp_window.contents.font.size = PLAN_HPSP_DRAW::FONT_SIZE

     @enemy_hpsp_window.contents.font.bold = PLAN_HPSP_DRAW::FONT_BOLD

     @enemy_hpsp_window.contents.font.italic = PLAN_HPSP_DRAW::FONT_ITALIC

     y = 0

     @old_enemy_hpsp = []

     one_line = ((PLAN_HPSP_DRAW::FONT_SIZE * 100 / 28) * 32) / 100

     if PLAN_HPSP_DRAW::DRAW_NAME

       @enemy_hpsp_window.draw_actor_name(@battler, 0, y, width - 32)

       y += one_line + PLAN_HPSP_DRAW::DRAW_SPACE

       @old_enemy_hpsp.push(@battler.name)

     end

     if PLAN_HPSP_DRAW::DRAW_HP

       @enemy_hpsp_window.draw_actor_hp2222(@battler, 0, y, width - 32)

       y += one_line + PLAN_HPSP_DRAW::DRAW_SPACE

       @old_enemy_hpsp.push(@battler.hp)

     end

     if PLAN_HPSP_DRAW::DRAW_SP

       @enemy_hpsp_window.draw_actor_sp2222(@battler, 0, y, width - 32)

       @old_enemy_hpsp.push(@battler.sp)

     end

     @enemy_hpsp_window.opacity = 0

     @enemy_hpsp_window.contents_opacity = 0

     @enemy_hpsp_window.z = -2

   end

end

#--------------------------------------------------------------------------

# ● 解放

#--------------------------------------------------------------------------

alias plan_enemy_hpsp_draw_dispose dispose

def dispose

   # エネミーの場合

   if @battler.is_a?(Game_Enemy)

     @enemy_hpsp_window.dispose

   end

   # 元のメソッドに戻す

   plan_enemy_hpsp_draw_dispose

end

#--------------------------------------------------------------------------

# ● フレーム更新

#--------------------------------------------------------------------------

alias plan_enemy_hpsp_draw_update update

def update

   # 元のメソッドに戻す

   plan_enemy_hpsp_draw_update

   # エネミーの場合

   if @battler.is_a?(Game_Enemy)

     @enemy_hpsp_window.visible = @battler_visible

   # スプライトの座標を設定

     width = PLAN_HPSP_DRAW::DRAW_WIDTH + 32

     @enemy_hpsp_window.x = self.x - width / 2

     @now_enemy_hpsp = []

     if PLAN_HPSP_DRAW::DRAW_NAME

       @now_enemy_hpsp.push(@battler.name)

     end

     if PLAN_HPSP_DRAW::DRAW_HP

       @now_enemy_hpsp.push(@battler.hp)

     end

     if PLAN_HPSP_DRAW::DRAW_SP

       @now_enemy_hpsp.push(@battler.sp)

     end

     if @old_enemy_hpsp != @now_enemy_hpsp and $game_temp.enemy_hpsp_refresh

       @old_enemy_hpsp = @now_enemy_hpsp

       @enemy_hpsp_window.contents.clear

       y = 0

       width = PLAN_HPSP_DRAW::DRAW_WIDTH + 32

       one_line = ((PLAN_HPSP_DRAW::FONT_SIZE * 100 / 28) * 32) / 100

       if PLAN_HPSP_DRAW::DRAW_NAME

         @enemy_hpsp_window.draw_actor_name(@battler, 0, y, width - 32)

         y += one_line + PLAN_HPSP_DRAW::DRAW_SPACE

       end

       if PLAN_HPSP_DRAW::DRAW_HP

         @enemy_hpsp_window.draw_actor_hp2222(@battler, 0, y, width - 32)

         y += one_line + PLAN_HPSP_DRAW::DRAW_SPACE

       end

       if PLAN_HPSP_DRAW::DRAW_SP

         @enemy_hpsp_window.draw_actor_sp2222(@battler, 0, y, width - 32)

       end

       Graphics.frame_reset

     end

   end

end

#--------------------------------------------------------------------------

# ● visible の設定

#--------------------------------------------------------------------------

if !method_defined?("plan_enemy_hpsp_draw_visible=")

   alias plan_enemy_hpsp_draw_visible= visible=

end

def visible=(bool)

   # エネミーの場合

   if @battler.is_a?(Game_Enemy)

     @enemy_hpsp_window.visible = bool

   end

   # 元のメソッドに戻す

   self.plan_enemy_hpsp_draw_visible=(bool)

end

#--------------------------------------------------------------------------

# ● 不透明度の設定

#--------------------------------------------------------------------------

if !method_defined?("plan_enemy_hpsp_draw_opacity=")

   alias plan_enemy_hpsp_draw_opacity= opacity=

end

def opacity=(n)

   # 元のメソッドに戻す

   self.plan_enemy_hpsp_draw_opacity=(n)

   # エネミーの場合

   if @battler.is_a?(Game_Enemy)

     @enemy_hpsp_window.contents_opacity = n

   end

end

#--------------------------------------------------------------------------

# ● ダメージ

#--------------------------------------------------------------------------

def damage(value, critical)

   super(value, critical)

   bitmap = @_damage_sprite.bitmap

   @_damage_sprite.dispose

   @_damage_sprite = ::Sprite.new(Viewport.new(0, 0, 640, 480))

   @_damage_sprite.bitmap = bitmap

   @_damage_sprite.ox = 80

   @_damage_sprite.oy = 20

   @_damage_sprite.x = self.x

   @_damage_sprite.y = self.y - self.oy / 2

   @_damage_sprite.viewport.z = self.viewport.z + 1

   @_damage_sprite.z = 3000

   @_damage_duration = 40

end

#--------------------------------------------------------------------------

# ● ダメージ解放

#--------------------------------------------------------------------------

def dispose_damage

   if @_damage_sprite != nil

     @_damage_sprite.viewport.dispose

   end

   super

end

end






#==============================================================================

# ■ Game_Temp

#==============================================================================


class Game_Temp

#--------------------------------------------------------------------------

# ● 公開インスタンス変数

#--------------------------------------------------------------------------

attr_accessor :enemy_hpsp_refresh

#--------------------------------------------------------------------------

# ● オブジェクト初期化

#--------------------------------------------------------------------------

alias plan_enemy_hpsp_draw_initialize initialize

def initialize

   # 元のメソッドに戻す

   plan_enemy_hpsp_draw_initialize

   @enemy_hpsp_refresh = false

end

end


#==============================================================================

# ■ Scene_Battle

#==============================================================================


class Scene_Battle

#--------------------------------------------------------------------------

# ● プレバトルフェーズ開始 (エネミー名+アルファベット用)

#--------------------------------------------------------------------------

alias plan_enemy_hpsp_draw_start_phase1 start_phase1

def start_phase1

   $game_temp.enemy_hpsp_refresh = true

   # 元のメソッドに戻す

   plan_enemy_hpsp_draw_start_phase1

end

#--------------------------------------------------------------------------

# ● パーティコマンドフェーズ開始 (エネミー名+アルファベット用)

#--------------------------------------------------------------------------

alias plan_enemy_hpsp_draw_start_phase2 start_phase2

def start_phase2

   $game_temp.enemy_hpsp_refresh = false

   # 元のメソッドに戻す

   plan_enemy_hpsp_draw_start_phase2

end

#--------------------------------------------------------------------------

# ● フレーム更新 (メインフェーズ ステップ 5 : ダメージ表示)

#--------------------------------------------------------------------------

alias plan_enemy_hpsp_draw_update_phase4_step5 update_phase4_step5

def update_phase4_step5

   # 元のメソッドに戻す

   plan_enemy_hpsp_draw_update_phase4_step5

   $game_temp.enemy_hpsp_refresh = true

end

#--------------------------------------------------------------------------

# ● フレーム更新 (メインフェーズ ステップ 6 : リフレッシュ)

#--------------------------------------------------------------------------

alias plan_enemy_hpsp_draw_update_phase4_step6 update_phase4_step6

def update_phase4_step6

   # 元のメソッドに戻す

   plan_enemy_hpsp_draw_update_phase4_step6

   $game_temp.enemy_hpsp_refresh = false

end

end



#==============================================================================

# ■ Window_Base

#==============================================================================


class Window_Base < Window

#--------------------------------------------------------------------------

# ● 名前の描画

#--------------------------------------------------------------------------

def draw_actor_name(actor, x, y, width = 120, align = 0)

   self.contents.font.color = normal_color

   align = 1 if $scene.is_a?(Scene_Battle)

   self.contents.draw_text(x, y, width, 32, actor.name, align)

end

#--------------------------------------------------------------------------

# ● ステートの描画

#--------------------------------------------------------------------------

def draw_actor_state(actor, x, y, width = 120)

   # 元のメソッドに戻す

   text = make_battler_state_text(actor, width, true)

   self.contents.draw_text(x, y, width, 32, text, 1)

end

end



#==============================================================================

# 本脚本来自www.66RPG.com,使用和转载请保留此信息

#==============================================================================


class Window_Base < Window

  def draw_actor_hp2222(actor, x, y, width = 100, height=8)

    y+=3

    olx = x

    oly = y

    w = width * actor.hp / [actor.maxhp,1].max

    hp_color_1 = Color.new(255, 0, 0, 192)

    hp_color_2 = Color.new(255, 255, 0, 192)

    self.contents.fill_rect(x+8, y+4, width, (PLAN_HPSP_DRAW::HEIGHT).floor, Color.new(0, 0, 0, 128))

    draw_line(x, y, x + w, y, hp_color_1, (PLAN_HPSP_DRAW::HEIGHT).floor, hp_color_2)

    x -= 1

    y += (height/4).floor

    self.contents.fill_rect(x+8, y+4, width, (PLAN_HPSP_DRAW::HEIGHT).ceil , Color.new(0, 0, 0, 128))

    draw_line(x, y, x + w, y, hp_color_1, (PLAN_HPSP_DRAW::HEIGHT).ceil , hp_color_2)

    x -= 1

    y += (height/4).ceil

    self.contents.fill_rect(x+8, y+4, width, (PLAN_HPSP_DRAW::HEIGHT).ceil , Color.new(0, 0, 0, 128))

    draw_line(x, y, x + w, y, hp_color_1, (PLAN_HPSP_DRAW::HEIGHT).ceil , hp_color_2)

    x -= 1

    y += (height/4).ceil

    self.contents.fill_rect(x+8, y+4, width, (PLAN_HPSP_DRAW::HEIGHT).floor, Color.new(0, 0, 0, 128))

    draw_line(x, y, x + w, y, hp_color_1, (PLAN_HPSP_DRAW::HEIGHT).floor, hp_color_2)

    x = olx

    y = oly-14   

    # 描绘字符串 "HP"

    self.contents.font.color = system_color

    self.contents.draw_text(x, y, 32, 32, $data_system.words.hp)

    # 计算描绘 MaxHP 所需的空间

    if width - 32 >= 108

      hp_x = x + width - 108

      flag = true

    elsif width - 32 >= 48

      hp_x = x + width - 48

      flag = false

    end

    # 描绘 HP

    self.contents.font.color = actor.hp == 0 ? knockout_color :

      actor.hp <= actor.maxhp / 4 ? crisis_color : normal_color

    self.contents.draw_text(hp_x, y, 48, 32, actor.hp.to_s, 2)

    # 描绘 MaxHP

    if flag

      self.contents.font.color = normal_color

      self.contents.draw_text(hp_x + 48, y, 12, 32, "/", 1)

      self.contents.draw_text(hp_x + 60, y, 48, 32, actor.maxhp.to_s)

    end   

  end

  def draw_actor_sp2222(actor, x, y, width = 100, height = 8)

    y+=3

    olx = x

    oly = y

    w = width * actor.sp / [actor.maxsp,1].max

    hp_color_1 = Color.new( 0, 0, 255, 192)

    hp_color_2 = Color.new( 0, 255, 255, 192)

    self.contents.fill_rect(x+8, y+4, width, (PLAN_HPSP_DRAW::HEIGHT).floor, Color.new(0, 0, 0, 128))

    draw_line(x, y, x + w, y, hp_color_1, (PLAN_HPSP_DRAW::HEIGHT).floor, hp_color_2)

    x -= 1

    y += (height/4).floor

    self.contents.fill_rect(x+8, y+4, width, (PLAN_HPSP_DRAW::HEIGHT).ceil , Color.new(0, 0, 0, 128))

    draw_line(x, y, x + w, y, hp_color_1, (PLAN_HPSP_DRAW::HEIGHT).ceil , hp_color_2)

    x -= 1

    y += (height/4).ceil

    self.contents.fill_rect(x+8, y+4, width, (PLAN_HPSP_DRAW::HEIGHT).ceil , Color.new(0, 0, 0, 128))

    draw_line(x, y, x + w, y, hp_color_1, (PLAN_HPSP_DRAW::HEIGHT).ceil , hp_color_2)

    x -= 1

    y += (height/4).ceil

    self.contents.fill_rect(x+8, y+4, width, (PLAN_HPSP_DRAW::HEIGHT).floor, Color.new(0, 0, 0, 128))

    draw_line(x, y, x + w, y, hp_color_1, (PLAN_HPSP_DRAW::HEIGHT).floor, hp_color_2)

    x = olx

    y = oly-14

    # 描绘字符串 "SP"

    self.contents.font.color = system_color

    self.contents.draw_text(x, y, 32, 32, $data_system.words.sp)

    # 计算描绘 MaxSP 所需的空间

    if width - 32 >= 108

      sp_x = x + width - 108

      flag = true

    elsif width - 32 >= 48

      sp_x = x + width - 48

      flag = false

    end

    # 描绘 SP

    self.contents.font.color = actor.sp == 0 ? knockout_color :

      actor.sp <= actor.maxsp / 4 ? crisis_color : normal_color

    self.contents.draw_text(sp_x, y, 48, 32, actor.sp.to_s, 2)

    # 描绘 MaxSP

    if flag

      self.contents.font.color = normal_color

      self.contents.draw_text(sp_x + 48, y, 12, 32, "/", 1)

      self.contents.draw_text(sp_x + 60, y, 48, 32, actor.maxsp.to_s)

    end   

  end

  #--------------------------------------------------------------------------

  # ● ライン描画 by 桜雅 在土

  #--------------------------------------------------------------------------

  def draw_line(start_x, start_y, end_x, end_y, start_color, width = 1, end_color = start_color)

    # 描写距離の計算。大きめに直角時の長さ。

    distance = (start_x - end_x).abs + (start_y - end_y).abs

    # 描写開始

    if end_color == start_color

      for i in 1..distance

        x = (start_x + 1.0 * (end_x - start_x) * i / distance).to_i

        y = (start_y + 1.0 * (end_y - start_y) * i / distance).to_i

        if width == 1

          self.contents.set_pixel(x, y, start_color)

        else

          self.contents.fill_rect(x, y, width, width, start_color)

        end

      end

    else

      for i in 1..distance

        x = (start_x + 1.0 * (end_x - start_x) * i / distance).to_i

        y = (start_y + 1.0 * (end_y - start_y) * i / distance).to_i

        r = start_color.red * (distance-i)/distance + end_color.red * i/distance

        g = start_color.green * (distance-i)/distance + end_color.green * i/distance

        b = start_color.blue * (distance-i)/distance + end_color.blue * i/distance

        a = start_color.alpha * (distance-i)/distance + end_color.alpha * i/distance

        if width == 1

          self.contents.set_pixel(x, y, Color.new(r, g, b, a))

        else

          self.contents.fill_rect(x, y, width, width, Color.new(r, g, b, a))

        end

      end

    end

  end

end

#==============================================================================

# 本脚本来自www.66RPG.com,使用和转载请保留此信息

#==============================================================================
QQ截图20131023190250.png (5.8 KB, 下载次数: 0)

作者: 艾拉梅德    时间: 2013-10-24 00:19
噗,因为字体对显示窗口来说太大,所以只能显示在可以显示范围内的部分了.
这是height的问题。
兵刀……噗
作者: ding___1    时间: 2013-10-24 06:41
艾拉梅德 发表于 2013-10-24 00:19
噗,因为字体对显示窗口来说太大,所以只能显示在可以显示范围内的部分了.
这是height的问题。
兵刀……噗 ...

哦,也就是说没办法了是吧...
作者: 艾拉梅德    时间: 2013-10-24 11:39
ding___1 发表于 2013-10-23 23:41
哦,也就是说没办法了是吧...

有办法的……{:2_276:}

1.把字体调小1-2号
2.全局找height,把height也就是高度有关的指令看一遍,扩大一下看看
作者: ding___1    时间: 2013-10-24 18:37
艾拉梅德 发表于 2013-10-24 11:39
有办法的……

1.把字体调小1-2号

非常感谢 我试下




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