New account registrations are disabed. This website is now an archive. Read more here.

RPG Maker XP    Posted March 23, 2013 by diagostimo

Enemy HP and SP bars

Introduction

this script adds HP and SP bars below enemies while in battle, this enables you to see the current state of the enemy. this script will most likely be compatible with most custom battle systems that use Sprite_battler to display the battler, note that the size of the bars have been designed with the
default system in mind.

Features

Displays HP and SP bars below enemies
the bars graphic synchronize with the battlers graphic
HP and SP bars automaticaly update according to the state of the enemy

Downloads

enemy-hp-and-sp-bars-19396.zip

190.34KB, .zip

Download

License Terms

Attribution-NonCommercial 3.0 Unported - You must attribute the work in the manner specified by the author or licensor. The licensor permits others to copy, distribute and transmit the work. In return, licensees may not use the work for commercial purposes — unless they get the licensor's permission.

Instructions

see the demo for the script, to install it in your own project simply copy the script and place below all other default/custom scripts in your project, but above Main, the bars don’t need any configuration its just plug and play.

Compatibility

no known compatibility issues, please report any.

Version History

23/2/13

Credits & Thanks

Diagostimo for creating this wonderful script!

Terms & Conditions

Use for commercial use is prohibited unless otherwise stated.

Comments (10)

  • Hey, I'd like to use this but I tried to open the project to get the script and it says it's an older version of RPG Maker and can't be loaded. Is it possible for you to just paste the script somewhere? x:

  • Hello

    Quick question: How do I edit this so the bars also show on the actors? If i just comment out the "if" statements asking for Game_Enemy, there is an error on line 27:

    undefined method "screen_x" for nil:NilClass

    Changing the if statements to "if @battler.is_a?(Game_Enemy) or @battler.is_a?(Game_Actor)" returns an error on line 48: Same error, method "opacity".

    Do the actors not work the same as enemies in that regard? I only have a basic understanding of RGSS, so maybe what i tried is complete bulls***

    Thanks a lot.
    Simon

  • As far as I know that's not possible. Try to use something like this instead

    [code]#===========================================================================
    # *** HP/MP/ATB/LimitBreak bar Slanted Style Compatible with RTAB ***
    # *** Version 2.1
    #—————————————————————————
    # by Clive
    # based on Cogwheel's Bars and Sephiroth Spawn's Slanted Bars.
    #—————————————————————————
    # —– GREAT THANKS to DerVVulfman for solving the lag problem
    #——This is a plug and play script so it should work without any problem!
    #=============================================================================

    # If using with Limit Break, must paste BELOW the Limit Break script as it re-
    # writes the 'Gauge drawing' system. Will cause an error if not properly put.

    # If used with Trickster's STEAL SCRIPT version 6 R1 (revision 1), then the
    # height of RTAB's AT Bar (Draw Actor ATG) may not be smaller than 5 pixels
    # due to a float-to-float error. A height of 6 pixels is the smallest.

    #==============================================================================
    # ** Game_Actor
    #——————————————————————————
    # This class handles the actor. It's used within the Game_Actors class
    # ($game_actors) and refers to the Game_Party class ($game_party).
    #==============================================================================

    class Game_Actor < Game_Battler
    #————————————————————————–
    # * Get the current EXP
    #————————————————————————–
    def now_exp
    return @exp – @exp_list[@level]
    end
    #————————————————————————–
    # * Get the next level's EXP
    #————————————————————————–
    def next_exp
    return @exp_list[@level+1] > 0 ? @exp_list[@level+1] – @exp_list[@level] : 0
    end
    end

    #==============================================================================
    # ** Window_Base
    #——————————————————————————
    # This class is for all in-game windows.
    #==============================================================================

    class Window_Base < Window

    #==========================================================================
    # * Draw Slant Bar(by SephirothSpawn)
    #==========================================================================
    def draw_slant_bar(x, y, min, max, width = 152, height = 6,
    bar_color = Color.new(150, 0, 0, 255),
    end_color = Color.new(255, 255, 60, 255))
    # Draw Border
    for i in 0..height
    self.contents.fill_rect(x + i, y + height – i, width + 1, 1, Color.new(50, 50, 50, 255))
    end
    # Draw Background
    for i in 1..(height – 1)
    r = 100 * (height – i) / height + 0 * i / height
    g = 100 * (height – i) / height + 0 * i / height
    b = 100 * (height – i) / height + 0 * i / height
    a = 255 * (height – i) / height + 255 * i / height
    self.contents.fill_rect(x + i, y + height – i, width, 1, Color.new(r, b, g, a))
    end
    # Draws Bar
    for i in 1..( (min.to_f / max.to_f) * width – 1)
    for j in 1..(height – 1)
    r = bar_color.red * (width – i) / width + end_color.red * i / width
    g = bar_color.green * (width – i) / width + end_color.green * i / width
    b = bar_color.blue * (width – i) / width + end_color.blue * i / width
    a = bar_color.alpha * (width – i) / width + end_color.alpha * i / width
    self.contents.fill_rect(x + i + j, y + height – j, 1, 1, Color.new(r, g, b, a))
    end
    end
    end

    #==========================================================================
    # * Draw HP
    # actor : actor
    # x : draw spot x-coordinate
    # y : draw spot y-coordinate
    # width : draw spot width
    #==========================================================================
    alias :draw_actor_hp_hpsp :draw_actor_hp
    def draw_actor_hp(actor, x, y, width = 144)
    draw_slant_bar(x, y + 12, actor.hp, actor.maxhp, width, 6,
    bar_color = Color.new(150, 0, 0, 255),
    end_color = Color.new(255, 255, 60, 255))
    draw_actor_hp_hpsp(actor, x, y, width)
    end
    #==========================================================================
    # * Draw SP
    # actor : actor
    # x : draw spot x-coordinate
    # y : draw spot y-coordinate
    # width : draw spot width
    #==========================================================================
    alias :draw_actor_sp_hpsp :draw_actor_sp
    def draw_actor_sp(actor, x, y, width = 144)
    draw_slant_bar(x, y + 12, actor.sp, actor.maxsp, width, 6,
    bar_color = Color.new(0, 0, 155, 255),
    end_color = Color.new(255, 255, 255, 255))
    draw_actor_sp_hpsp(actor, x, y, width)
    end
    #==========================================================================
    # * Draw EXP
    # actor : actor
    # x : draw spot x-coordinate
    # y : draw spot y-coordinate
    #==========================================================================
    alias raz_bars_base_exp draw_actor_exp
    def draw_actor_exp(actor, x, y)
    if actor.level == 99
    draw_slant_bar(x, y + 18, 1, 1, 190, 6, bar_color = Color.new(0, 100, 0, 255), end_color = Color.new(0, 255, 0, 255))
    else
    draw_slant_bar(x, y + 18, actor.now_exp, actor.next_exp, 190, 6, bar_color = Color.new(0, 100, 0, 255), end_color = Color.new(255, 255, 255, 255))
    end
    raz_bars_base_exp(actor, x, y)
    end
    #==========================================================================
    # * Draw Parameter
    # actor : actor
    # x : draw spot x-coordinate
    # y : draw spot y-coordinate
    # type : parameter type (0-6)
    #==========================================================================
    alias raz_bars_base_parameter draw_actor_parameter
    def draw_actor_parameter(actor, x, y, type)
    case type
    when 0
    para_color1 = Color.new(100,0,0)
    para_color2 = Color.new(255,0,0)
    para_begin = actor.atk
    when 1
    para_color1 = Color.new(100,100,0)
    para_color2 = Color.new(255,255,0)
    para_begin = actor.pdef
    when 2
    para_color1 = Color.new(100,0,100)
    para_color2 = Color.new(255,0,255)
    para_begin = actor.mdef
    when 3
    para_color1 = Color.new(50,0,100)
    para_color2 = Color.new(50,0,255)
    para_begin = actor.str
    when 4
    para_color1 = Color.new(0,100,0)
    para_color2 = Color.new(0,255,0)
    para_begin = actor.dex
    when 5
    para_color1 = Color.new(50,0,50)
    para_color2 = Color.new(255,0,255)
    para_begin = actor.agi
    when 6
    para_color1 = Color.new(0,100,100)
    para_color2 = Color.new(0,255,255)
    para_begin = actor.int
    end
    draw_slant_bar(x, y + 18, para_begin, 999, 155, 4, bar_color = para_color1,
    end_color = para_color2)
    raz_bars_base_parameter(actor, x, y, type)
    end
    #=========================================================================
    # * Draw Actor ATG
    # actor : Actor
    # x : draw spot x-coordinate
    # y : draw spot y-coordinate
    # width : draw spot width
    #=========================================================================
    def draw_actor_atg(actor, x, y, width = 144, height = 6)
    if @at_gauge == nil
    # plus_x: revised x-coordinate
    # rate_x: revised X-coordinate as (%)
    # plus_y: revised y-coordinate
    # plus_width: revised width
    # rate_width: revised width as (%)
    # height: Vertical width
    # align1: Type 1 ( 0: left justify 1: center justify 2: right justify )
    # align2: Type 2 ( 0: Upper stuffing 1: Central arranging 2:Lower stuffing )
    # align3: Gauge type 0:Left justify 1: Right justify
    @plus_x = 0
    @rate_x = 0
    @plus_y = 16
    @plus_width = 0
    @rate_width = 100
    @width = @plus_width + width * @rate_width / 100
    @height = 6
    @align1 = 0
    @align2 = 1
    @align3 = 0
    # Gradation settings: grade1: Empty gauge grade2:Actual gauge
    # (0:On side gradation 1:Vertically gradation 2: Slantedly gradation)
    grade1 = 1
    grade2 = 0
    # Color setting. color1: Outermost framework, color2: Medium framework
    # color3: Empty framework dark color, color4: Empty framework light/write color
    color1 = Color.new(0, 0, 0)
    color2 = Color.new(255, 255, 192)
    color3 = Color.new(0, 0, 0, 192)
    color4 = Color.new(0, 0, 64, 192)
    # Color setting of gauge
    # Usually color setting of the time
    color5 = Color.new(0, 64, 80)
    color6 = Color.new(255, 255, 255)#(0, 128, 160)
    # When gauge is MAX, color setting
    color7 = Color.new(80, 0, 0)
    color8 = Color.new(255, 255,255) #(240,0,0)
    # Color setting at time of cooperation skill use
    color9 = Color.new(80, 64, 32)
    color10 = Color.new(255, 255, 255) #(240, 192, 96)
    # Color setting at time of skill permanent residence
    color11 = Color.new(80, 0, 64)
    color12 = Color.new(255,255, 255) #(240, 0, 192)
    # Drawing of gauge
    gauge_rect_at(@width, @height, @align3, color1, color2, color3, color4,
    color5, color6, color7, color8, color9, color10, color11, color12,
    grade1, grade2)
    end
    # Variable at substituting the width of the gauge which is drawn
    if actor.rtp == 0
    at = (width + @plus_width) * actor.atp * @rate_width / 10000
    else
    at = (width + @plus_width) * actor.rt * @rate_width / actor.rtp / 100
    end
    # AT Width Check
    if at > width
    at = width
    end
    # Revision such as the left stuffing central posture of gauge
    case @align1
    when 1
    x += (@rect_width – width) / 2
    when 2
    x += @rect_width – width
    end
    case @align2
    when 1
    y -= @height / 2
    when 2
    y -= @height
    end
    # Draw Border
    for i in 0..height
    self.contents.fill_rect(x + 1.5 + i, y + 12 + height – i, width – 2 , 3,
    Color.new(50, 50, 50, 255))
    end
    # Draw Background
    for i in 1..(height – 1)
    r = 100 * (height – i) / height + 0 * i / height
    g = 100 * (height – i) / height + 0 * i / height
    b = 100 * (height – i) / height + 0 * i / height
    a = 255 * (height – i) / height + 255 * i / height
    self.contents.fill_rect(x + 1.5 + i, y + 12 + height – i, width – 3, 3,
    Color.new(r, b, g, a))
    end
    # Rect_X control
    if @align3 == 0
    rect_x = 0
    else
    x += @width – at – 1
    rect_x = @width – at – 1
    end

    # Color setting of gauge
    if at == width
    #Gauge drawing at the time of MAX
    for i in 0..height
    self.contents.blt(x + i + @plus_x + @width * @rate_x / 100, y -i +
    @plus_y, @at_gauge, Rect.new(rect_x, @height * 2, at, @height))
    end
    else
    if actor.rtp == 0
    for i in 0..height
    # Usually gauge drawing of the time
    self.contents.blt(x + i + @plus_x + @width * @rate_x / 100, y- i +
    @plus_y, @at_gauge,Rect.new(rect_x, @height, at, @height))
    end
    else
    if actor.spell == true
    for i in 0..height
    #Gauge drawing at time of cooperation skill use
    self.contents.blt(x + i + @plus_x + @width * @rate_x / 100, y – i +
    @plus_y, @at_gauge, Rect.new(rect_x, @height * 3, at, @height))
    end
    else
    for i in 0..height
    # Gauge drawing at time of skill permanent residence
    self.contents.blt(x + i + @plus_x + @width * @rate_x / 100, y – i +
    @plus_y, @at_gauge, Rect.new(rect_x, @height * 4, at, @height))
    end
    end
    end
    end
    end
    end
    [/code]

  • Yeah, well, I had a script which perfectly showed the bars in the Battle_Status Window. I would like the bars to appear under the characters (sprites), enemies and actors alike 🙁

    Thanks non the less, appreciate the efford!
    Simon

  • I also would like to know is there a way to alter this script so the bars update after the attack animation is finished (possibly wait until damage is displayed)?

  • Change the update method into this:
    [code] def update
    if @battler.damage_pop
    black = true
    end
    update_battle_bars
    if @battler.is_a?(Game_Enemy)
    if @battler.hp == @battler.maxhp
    update_bars
    end
    if black == true
    update_bars
    end
    if @battler.hp == 0
    @bars_sprite.opacity = self.opacity
    end
    end
    end
    [/code]
    Hope this solve your problem.

Leave a Reply

diagostimo

  • Posted about 12 years ago

  • Engine
    RPG Maker XP
  • Category
    Custom Battle Scripts
  • License
    Attribution-NonCommercial 3.0 Unported
  • Version
    1.0

Stats

9,427 views

10 comments

Tags

bars enemy health hp sp