05-23-2006, 01:00 PM
HP & SP Bars on Map
by Slipknot/Sheol
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
Script
Instructions
You need paste the code before Main, but below SDK.
To turn on the HP bar use in the call script command:
To turn it off use:
To turn on the SP bar use:
And to turn it off use:
To change the current actor use this:
You can also customize some aspects more, like start the game with or without any of the bars, change the text for the level and allow or disallow the player ability to change the actor just by changing the constants in the begin of the script.
FAQ
empty!
Compatibility
SDK compatible scripts.
Author's Notes
This script requires SDK to work, I tested it with the version 1.5.
Enjoy it, and report any bug!
by Slipknot/Sheol
Version: 1.0
This is a locked, single-post thread from Creation Asylum. Archived here to prevent its loss.
No support is given. If you are the owner of the thread, please contact administration.
No support is given. If you are the owner of the thread, please contact administration.
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.
Script
Script
Code:
#==============================================================================
# ** 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
Instructions
You need paste the code before Main, but below SDK.
To turn on the HP bar use in the call script command:
Code:
show_hp_bar
To turn it off use:
Code:
show_hp_bar(false)
To turn on the SP bar use:
Code:
show_sp_bar
And to turn it off use:
Code:
show_sp_bar(false)
To change the current actor use this:
Code:
set_bars_index(id)
You can also customize some aspects more, like start the game with or without any of the bars, change the text for the level and allow or disallow the player ability to change the actor just by changing the constants in the begin of the script.
FAQ
empty!
Compatibility
SDK compatible scripts.
Author's Notes
This script requires SDK to work, I tested it with the version 1.5.
Enjoy it, and report any bug!