08-10-2013, 08:10 PM
Code:
#==============================================================================
# Add-On: HP/SP/EXP Meter
# by Atoa
#==============================================================================
# Adds HP/SP/EXP Meters
# Remove this Add-On if you wish to use custom HP/SP/EXP bars
# This Add-On must be always bellow 'ACBS | Battle Windows'
# if you are using it
#==============================================================================module Atoa
HP_Meter = 'HPMeter' # Name of the HP meter graphic file
SP_Meter = 'SPMeter' # Name of the SP meter graphic file
EXP_Meter = 'EXPMeter' # Name of the EXP meter graphic file
# Bars position adjust
# [x, y]
HP_Pos_Adjust = [-28, -45]
SP_Pos_Adjust = [0, -3]
EXP_Pos_Adjust = [0, 0]
end#==============================================================================
# ** Atoa Module
#==============================================================================
$atoa_script = {} if $atoa_script.nil?
$atoa_script['HP-SP-EXP Bars'] = true#==============================================================================
# ** 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
#--------------------------------------------------------------------------
# * Set Current EXP
#--------------------------------------------------------------------------
def now_exp
return @exp - @exp_list[@level]
end
#--------------------------------------------------------------------------
# * Set next level 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
#--------------------------------------------------------------------------
# * Include Settings Module
#--------------------------------------------------------------------------
include Atoa
#--------------------------------------------------------------------------
# * Draw HP
# actor : actor
# x : draw spot x-coordinate
# y : draw spot y-coordinate
# width : draw spot width
#--------------------------------------------------------------------------
alias draw_actor_hp_bar draw_actor_hp
def draw_actor_hp(actor, x, y, width = 144)
bar_x = HP_Pos_Adjust[0] + x
bar_y = HP_Pos_Adjust[1] + y + (Font.default_size * 2 /3)
@skin = RPG::Cache.windowskin(HP_Meter)
@width = @skin.width
@height = @skin.height / 3
src_rect = Rect.new(0, 0, @width, @height)
self.contents.blt(bar_x, bar_y, @skin, src_rect)
@line = (actor.hp == actor.maxhp ? 2 : 1)
@amount = actor.hp.to_f / actor.maxhp.to_f
src_rect2 = Rect.new(0, @line * @height, @width * @amount, @height)
self.contents.blt(bar_x, bar_y, @skin, src_rect2)
draw_actor_hp_bar(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_bar draw_actor_sp
def draw_actor_sp(actor, x, y, width = 144)
bar_x = SP_Pos_Adjust[0] + x
bar_y = SP_Pos_Adjust[1] + y + (Font.default_size * 2 /3)
@skin = RPG::Cache.windowskin(SP_Meter)
@width = @skin.width
@height = @skin.height / 3
src_rect = Rect.new(0, 0, @width, @height)
self.contents.blt(bar_x, bar_y, @skin, src_rect)
@line = (actor.sp == actor.maxsp ? 2 : 1)
@amount = (actor.maxsp == 0 ? 0 : actor.sp.to_f / actor.maxsp.to_f)
src_rect2 = Rect.new(0, @line * @height, @width * @amount, @height)
self.contents.blt(bar_x, bar_y, @skin, src_rect2)
draw_actor_sp_bar(actor, x, y, width)
end
#--------------------------------------------------------------------------
# * Draw EXP
# actor : actor
# x : draw spot x-coordinate
# y : draw spot y-coordinate
#--------------------------------------------------------------------------
alias draw_actor_exp_bar draw_actor_exp
def draw_actor_exp(actor, x, y)
bar_x = EXP_Pos_Adjust[0] + x
bar_y = EXP_Pos_Adjust[1] + y + (Font.default_size * 2 /3)
@skin = RPG::Cache.windowskin(EXP_Meter)
@width = @skin.width
@height = @skin.height / 3
src_rect = Rect.new(0, 0, @width, @height)
self.contents.blt(bar_x, bar_y, @skin, src_rect)
@line = (actor.now_exp == actor.next_exp ? 2 : 1)
@amount = (actor.next_exp == 0 ? 1 : actor.now_exp.to_f / actor.next_exp.to_f)
src_rect2 = Rect.new(0, @line * @height, @width * @amount, @height)
self.contents.blt(bar_x, bar_y, @skin, src_rect2)
draw_actor_exp_bar(actor, x, y)
end
end
Thank you to take a look ^^ !