HP & SP Bars on Map
Version: 1.0
Last Update
May 23, 2006.
Introduction
This is an updated and better version of my old HP bar script, this one will work faster and have some new features like the SP bar.
Features
#==============================================================================
# ** HP & SP Bars on Map
#------------------------------------------------------------------------------
# Slipknot
# 1.0
# 05.23.06
#==============================================================================
#------------------------------------------------------------------------------
# SDK Log
#------------------------------------------------------------------------------
SDK.log('HP & SP Bars on Map', 'Slipknot', 1.0, '05.23.06')
#------------------------------------------------------------------------------
# Begin SDK Enabled Check
#------------------------------------------------------------------------------
if SDK.state('HP & SP Bars on Map') == true
module MapBars_Settings
#--------------------------------------------------------------------------
HPBar = true
#--------------------------------------------------------------------------
SPBar = true
#--------------------------------------------------------------------------
LevelText = 'Lv: '
#--------------------------------------------------------------------------
AllowChange = true
#--------------------------------------------------------------------------
end
#------------------------------------------------------------------------------
# Begin Scene_Map Edit
#------------------------------------------------------------------------------
class Scene_Map
#--------------------------------------------------------------------------
# * Public Instance Variables
#--------------------------------------------------------------------------
attr_reader(:sprite_bars)
#--------------------------------------------------------------------------
# * Alias
#--------------------------------------------------------------------------
alias slipknot_mapbars_maindraw main_draw
alias slipknot_mapbars_updgraphics update_graphics
alias slipknot_mapbars_maindispose main_dispose
#--------------------------------------------------------------------------
# * Main Draw
#--------------------------------------------------------------------------
def main_draw
slipknot_mapbars_maindraw
@sprite_bars = Sprite_Bars.new
end
#--------------------------------------------------------------------------
# * Main Dispose
#--------------------------------------------------------------------------
def main_dispose
slipknot_mapbars_maindispose
@sprite_bars.dispose
end
#--------------------------------------------------------------------------
# * Update Graphics
#--------------------------------------------------------------------------
def update_graphics
slipknot_mapbars_updgraphics
@sprite_bars.update
end
end
#------------------------------------------------------------------------------
# End Scene_Map Edit
#------------------------------------------------------------------------------
#------------------------------------------------------------------------------
# Begin Interpreter Edit
#------------------------------------------------------------------------------
class Interpreter
#--------------------------------------------------------------------------
# * Public Instance Variables
#--------------------------------------------------------------------------
attr_reader(:hp_bar, :sp_bar, :bars_index)
attr_accessor(:bars_need_refresh)
#--------------------------------------------------------------------------
# * Alias
#--------------------------------------------------------------------------
alias slipknot_mapbars_initialize initialize
#--------------------------------------------------------------------------
# * Object Initialization
#--------------------------------------------------------------------------
def initialize(depth = 0, main = false)
slipknot_mapbars_initialize(depth, main)
if main
@bars_need_refresh = true
@hp_bar = MapBars_Settings::HPBar
@sp_bar = MapBars_Settings::SPBar
@bars_index = 0
end
end
#--------------------------------------------------------------------------
# * Bar's Actor Index
#--------------------------------------------------------------------------
def bars_index=(index)
if @bars_index != index
@bars_index = index
@bars_need_refresh = true
end
return true
end
def set_bars_index(index = 0)
self.bars_index = (index)
end
#--------------------------------------------------------------------------
# * Show HP Bar
#--------------------------------------------------------------------------
def show_hp_bar(value = true)
@hp_bar = value
@bars_need_refresh = true
end
#--------------------------------------------------------------------------
# * Show SP Bar
#--------------------------------------------------------------------------
def show_sp_bar(value = true)
@sp_bar = value
@bars_need_refresh = true
end
end
#------------------------------------------------------------------------------
# End Interpreter Edit
#------------------------------------------------------------------------------
#------------------------------------------------------------------------------
# Begin Spriteset_Map Edit
#------------------------------------------------------------------------------
class Spriteset_Map
#--------------------------------------------------------------------------
# * Alias
#--------------------------------------------------------------------------
alias slipknot_mapbars_updpicturesprites update_picture_sprites
#--------------------------------------------------------------------------
# * Update Picture Sprites
#--------------------------------------------------------------------------
def update_picture_sprites
@timer_sprite.x = ($game_system.map_interpreter.sp_bar ||
$game_system.map_interpreter.sp_bar) ? 400 : 552
slipknot_mapbars_updpicturesprites
end
end
#------------------------------------------------------------------------------
# End Spriteset_Map Edit
#------------------------------------------------------------------------------
class Sprite_Bars < Window_Base
#--------------------------------------------------------------------------
# * Object Initialization
#--------------------------------------------------------------------------
def initialize
@sprite = Sprite.new()
@sprite.bitmap = Bitmap.new(144, 82)
@sprite.x = 488
@sprite.y = 8
@old_hp = @old_sp = false
interpreter.bars_need_refresh = true
update
end
#--------------------------------------------------------------------------
# * Frame Update
#--------------------------------------------------------------------------
def update
if ! hp? && ! sp?
bitmap.clear
return
end
if MapBars_Settings::AllowChange && Input.press?(11)
if Input.repeat?(Input::L)
interpreter.bars_index = (interpreter.bars_index - 1) % $game_party.actors.size
end
if Input.repeat?(Input::R)
interpreter.bars_index = (interpreter.bars_index + 1) % $game_party.actors.size
end
end
actor = $game_party.actors[interpreter.bars_index]
if need_refresh?
bitmap.clear
lvt = MapBars_Settings::LevelText + actor.level.to_s
width = bitmap.text_size(lvt).width
draw_text(1, 0, 143 - width, 22, actor.name)
draw_text(143 - width, 0, width, 22, lvt)
end
if hp? && (need_refresh? || @old_hp != actor.hp)
draw_hp_bar(actor, 0, 22)
@old_hp = actor.hp
hp = true
end
if sp? && (need_refresh? || @old_sp != actor.sp)
y = hp != nil ? 30 : 0
draw_sp_bar(actor, 0, y + 22)
@old_sp = actor.sp
end
interpreter.bars_need_refresh = false
end
#--------------------------------------------------------------------------
# * @sprite.bitmap & $game_system.map_interpreter
#--------------------------------------------------------------------------
def bitmap
@sprite.bitmap
end
def interpreter
$game_system.map_interpreter
end
#--------------------------------------------------------------------------
# * Return Interpreter Variables
#--------------------------------------------------------------------------
def need_refresh?
interpreter.bars_need_refresh
end
def hp?
interpreter.hp_bar
end
def sp?
interpreter.sp_bar
end
#--------------------------------------------------------------------------
# * Dispose
#--------------------------------------------------------------------------
def dispose
@sprite.dispose
bitmap.dispose
end
#--------------------------------------------------------------------------
# * Draw HP Bar
#--------------------------------------------------------------------------
def draw_hp_bar(actor, x, y)
bitmap.fill_rect(x, y, 144, 30, Color.new(0, 0, 0, 0))
bitmap.font.color = system_color
draw_text(x, y, 32, 30, $data_system.words.hp)
hp_x = x + 36
x += 32
bitmap.fill_rect(x, y + 14, 112, 10, Color.new(0, 0, 0))
width = 112.0 * actor.hp / actor.maxhp
red = 144.0
step = 80.0 / (width - 2).to_f
for p in 0...(width - 2)
bitmap.fill_rect(x + p + 1, y + 15, 1, 8, Color.new(red, 64, 32))
red += step
end
bitmap.font.size -= 2
bitmap.font.color = actor.hp == 0 ? knockout_color :
actor.hp <= actor.maxhp / 4 ? crisis_color : normal_color
draw_text(hp_x, y, 48, 26, actor.hp.to_s, 2)
bitmap.font.color = normal_color
draw_text(hp_x + 48, y, 12, 26, '/', 1)
draw_text(hp_x + 60, y, 48, 26, actor.maxhp.to_s)
bitmap.font.size += 2
end
#--------------------------------------------------------------------------
# * Draw SP Bar
#--------------------------------------------------------------------------
def draw_sp_bar(actor, x, y)
bitmap.fill_rect(x, y, 144, 30, Color.new(0, 0, 0, 0))
self.bitmap.font.color = system_color
draw_text(x, y, 32, 30, $data_system.words.sp)
sp_x = x + 36
x += 32
bitmap.fill_rect(x, y + 14, 112, 10, Color.new(0, 0, 0))
width = 112.0 * actor.sp / actor.maxsp
blue = 144.0
step = 80.0 / (width - 2).to_f
for p in 0...(width - 2)
bitmap.fill_rect(x + p + 1, y + 15, 1, 8, Color.new(32, 64, blue))
blue += step
end
bitmap.font.size -= 2
bitmap.font.color = actor.sp == 0 ? knockout_color :
actor.sp <= actor.maxhp / 4 ? crisis_color : normal_color
draw_text(sp_x, y, 46, 26, actor.sp.to_s, 2)
bitmap.font.color = normal_color
draw_text(sp_x + 46, y, 10, 26, '/', 1)
draw_text(sp_x + 58, y, 46, 26, actor.maxsp.to_s)
bitmap.font.size += 2
end
#--------------------------------------------------------------------------
# * Draw Outline Text
#--------------------------------------------------------------------------
def draw_text(x, y, width, height, string, align = 0)
col = bitmap.font.color.dup
bitmap.font.color = Color.new(32, 32, 32, col.alpha)
bitmap.draw_text(x - 1, y, width, height, string, align)
bitmap.draw_text(x, y - 1, width, height, string, align)
bitmap.draw_text(x + 1, y, width, height, string, align)
bitmap.draw_text(x, y + 1, width, height, string, align)
bitmap.font.color = col
bitmap.draw_text(x, y, width, height, string, align)
end
end
#------------------------------------------------------------------------------
# End SDK Enabled Test
#------------------------------------------------------------------------------
end
Version: 1.0
Last Update
May 23, 2006.
Introduction
This is an updated and better version of my old HP bar script, this one will work faster and have some new features like the SP bar.
Features
- Display nice bars for the HP and SP.
- Allow the player change the current actor by pressing A (shift) and R or L (numpad).
- Display the name and level of the current actor.
- Changes the x position of the timer if the bars are showing.
#==============================================================================
# ** HP & SP Bars on Map
#------------------------------------------------------------------------------
# Slipknot
# 1.0
# 05.23.06
#==============================================================================
#------------------------------------------------------------------------------
# SDK Log
#------------------------------------------------------------------------------
SDK.log('HP & SP Bars on Map', 'Slipknot', 1.0, '05.23.06')
#------------------------------------------------------------------------------
# Begin SDK Enabled Check
#------------------------------------------------------------------------------
if SDK.state('HP & SP Bars on Map') == true
module MapBars_Settings
#--------------------------------------------------------------------------
HPBar = true
#--------------------------------------------------------------------------
SPBar = true
#--------------------------------------------------------------------------
LevelText = 'Lv: '
#--------------------------------------------------------------------------
AllowChange = true
#--------------------------------------------------------------------------
end
#------------------------------------------------------------------------------
# Begin Scene_Map Edit
#------------------------------------------------------------------------------
class Scene_Map
#--------------------------------------------------------------------------
# * Public Instance Variables
#--------------------------------------------------------------------------
attr_reader(:sprite_bars)
#--------------------------------------------------------------------------
# * Alias
#--------------------------------------------------------------------------
alias slipknot_mapbars_maindraw main_draw
alias slipknot_mapbars_updgraphics update_graphics
alias slipknot_mapbars_maindispose main_dispose
#--------------------------------------------------------------------------
# * Main Draw
#--------------------------------------------------------------------------
def main_draw
slipknot_mapbars_maindraw
@sprite_bars = Sprite_Bars.new
end
#--------------------------------------------------------------------------
# * Main Dispose
#--------------------------------------------------------------------------
def main_dispose
slipknot_mapbars_maindispose
@sprite_bars.dispose
end
#--------------------------------------------------------------------------
# * Update Graphics
#--------------------------------------------------------------------------
def update_graphics
slipknot_mapbars_updgraphics
@sprite_bars.update
end
end
#------------------------------------------------------------------------------
# End Scene_Map Edit
#------------------------------------------------------------------------------
#------------------------------------------------------------------------------
# Begin Interpreter Edit
#------------------------------------------------------------------------------
class Interpreter
#--------------------------------------------------------------------------
# * Public Instance Variables
#--------------------------------------------------------------------------
attr_reader(:hp_bar, :sp_bar, :bars_index)
attr_accessor(:bars_need_refresh)
#--------------------------------------------------------------------------
# * Alias
#--------------------------------------------------------------------------
alias slipknot_mapbars_initialize initialize
#--------------------------------------------------------------------------
# * Object Initialization
#--------------------------------------------------------------------------
def initialize(depth = 0, main = false)
slipknot_mapbars_initialize(depth, main)
if main
@bars_need_refresh = true
@hp_bar = MapBars_Settings::HPBar
@sp_bar = MapBars_Settings::SPBar
@bars_index = 0
end
end
#--------------------------------------------------------------------------
# * Bar's Actor Index
#--------------------------------------------------------------------------
def bars_index=(index)
if @bars_index != index
@bars_index = index
@bars_need_refresh = true
end
return true
end
def set_bars_index(index = 0)
self.bars_index = (index)
end
#--------------------------------------------------------------------------
# * Show HP Bar
#--------------------------------------------------------------------------
def show_hp_bar(value = true)
@hp_bar = value
@bars_need_refresh = true
end
#--------------------------------------------------------------------------
# * Show SP Bar
#--------------------------------------------------------------------------
def show_sp_bar(value = true)
@sp_bar = value
@bars_need_refresh = true
end
end
#------------------------------------------------------------------------------
# End Interpreter Edit
#------------------------------------------------------------------------------
#------------------------------------------------------------------------------
# Begin Spriteset_Map Edit
#------------------------------------------------------------------------------
class Spriteset_Map
#--------------------------------------------------------------------------
# * Alias
#--------------------------------------------------------------------------
alias slipknot_mapbars_updpicturesprites update_picture_sprites
#--------------------------------------------------------------------------
# * Update Picture Sprites
#--------------------------------------------------------------------------
def update_picture_sprites
@timer_sprite.x = ($game_system.map_interpreter.sp_bar ||
$game_system.map_interpreter.sp_bar) ? 400 : 552
slipknot_mapbars_updpicturesprites
end
end
#------------------------------------------------------------------------------
# End Spriteset_Map Edit
#------------------------------------------------------------------------------
class Sprite_Bars < Window_Base
#--------------------------------------------------------------------------
# * Object Initialization
#--------------------------------------------------------------------------
def initialize
@sprite = Sprite.new()
@sprite.bitmap = Bitmap.new(144, 82)
@sprite.x = 488
@sprite.y = 8
@old_hp = @old_sp = false
interpreter.bars_need_refresh = true
update
end
#--------------------------------------------------------------------------
# * Frame Update
#--------------------------------------------------------------------------
def update
if ! hp? && ! sp?
bitmap.clear
return
end
if MapBars_Settings::AllowChange && Input.press?(11)
if Input.repeat?(Input::L)
interpreter.bars_index = (interpreter.bars_index - 1) % $game_party.actors.size
end
if Input.repeat?(Input::R)
interpreter.bars_index = (interpreter.bars_index + 1) % $game_party.actors.size
end
end
actor = $game_party.actors[interpreter.bars_index]
if need_refresh?
bitmap.clear
lvt = MapBars_Settings::LevelText + actor.level.to_s
width = bitmap.text_size(lvt).width
draw_text(1, 0, 143 - width, 22, actor.name)
draw_text(143 - width, 0, width, 22, lvt)
end
if hp? && (need_refresh? || @old_hp != actor.hp)
draw_hp_bar(actor, 0, 22)
@old_hp = actor.hp
hp = true
end
if sp? && (need_refresh? || @old_sp != actor.sp)
y = hp != nil ? 30 : 0
draw_sp_bar(actor, 0, y + 22)
@old_sp = actor.sp
end
interpreter.bars_need_refresh = false
end
#--------------------------------------------------------------------------
# * @sprite.bitmap & $game_system.map_interpreter
#--------------------------------------------------------------------------
def bitmap
@sprite.bitmap
end
def interpreter
$game_system.map_interpreter
end
#--------------------------------------------------------------------------
# * Return Interpreter Variables
#--------------------------------------------------------------------------
def need_refresh?
interpreter.bars_need_refresh
end
def hp?
interpreter.hp_bar
end
def sp?
interpreter.sp_bar
end
#--------------------------------------------------------------------------
# * Dispose
#--------------------------------------------------------------------------
def dispose
@sprite.dispose
bitmap.dispose
end
#--------------------------------------------------------------------------
# * Draw HP Bar
#--------------------------------------------------------------------------
def draw_hp_bar(actor, x, y)
bitmap.fill_rect(x, y, 144, 30, Color.new(0, 0, 0, 0))
bitmap.font.color = system_color
draw_text(x, y, 32, 30, $data_system.words.hp)
hp_x = x + 36
x += 32
bitmap.fill_rect(x, y + 14, 112, 10, Color.new(0, 0, 0))
width = 112.0 * actor.hp / actor.maxhp
red = 144.0
step = 80.0 / (width - 2).to_f
for p in 0...(width - 2)
bitmap.fill_rect(x + p + 1, y + 15, 1, 8, Color.new(red, 64, 32))
red += step
end
bitmap.font.size -= 2
bitmap.font.color = actor.hp == 0 ? knockout_color :
actor.hp <= actor.maxhp / 4 ? crisis_color : normal_color
draw_text(hp_x, y, 48, 26, actor.hp.to_s, 2)
bitmap.font.color = normal_color
draw_text(hp_x + 48, y, 12, 26, '/', 1)
draw_text(hp_x + 60, y, 48, 26, actor.maxhp.to_s)
bitmap.font.size += 2
end
#--------------------------------------------------------------------------
# * Draw SP Bar
#--------------------------------------------------------------------------
def draw_sp_bar(actor, x, y)
bitmap.fill_rect(x, y, 144, 30, Color.new(0, 0, 0, 0))
self.bitmap.font.color = system_color
draw_text(x, y, 32, 30, $data_system.words.sp)
sp_x = x + 36
x += 32
bitmap.fill_rect(x, y + 14, 112, 10, Color.new(0, 0, 0))
width = 112.0 * actor.sp / actor.maxsp
blue = 144.0
step = 80.0 / (width - 2).to_f
for p in 0...(width - 2)
bitmap.fill_rect(x + p + 1, y + 15, 1, 8, Color.new(32, 64, blue))
blue += step
end
bitmap.font.size -= 2
bitmap.font.color = actor.sp == 0 ? knockout_color :
actor.sp <= actor.maxhp / 4 ? crisis_color : normal_color
draw_text(sp_x, y, 46, 26, actor.sp.to_s, 2)
bitmap.font.color = normal_color
draw_text(sp_x + 46, y, 10, 26, '/', 1)
draw_text(sp_x + 58, y, 46, 26, actor.maxsp.to_s)
bitmap.font.size += 2
end
#--------------------------------------------------------------------------
# * Draw Outline Text
#--------------------------------------------------------------------------
def draw_text(x, y, width, height, string, align = 0)
col = bitmap.font.color.dup
bitmap.font.color = Color.new(32, 32, 32, col.alpha)
bitmap.draw_text(x - 1, y, width, height, string, align)
bitmap.draw_text(x, y - 1, width, height, string, align)
bitmap.draw_text(x + 1, y, width, height, string, align)
bitmap.draw_text(x, y + 1, width, height, string, align)
bitmap.font.color = col
bitmap.draw_text(x, y, width, height, string, align)
end
end
#------------------------------------------------------------------------------
# End SDK Enabled Test
#------------------------------------------------------------------------------
end