Basically I need it to display the main characters (only 1, only ever the same character) Current HP, their status effects, and 2 variables. It will also have some icons.
I'd like it to be the least laggy as possible. If it helps the lag, I can have it be called only when there is a change to the HP/Status or ammo.

The 2 weapon icons I'd like to be set to a variable instead of a fixed type because it changes depending on what's equipped, but it doesn't change in battle at least.
If it helps, I have a previous script I was using but it is very laggy (It brings my FPS from 60 to 8) but it's there for a reference:
CODE
#============================================================================
# Jens009 Simple HP/SP/State HUD
# Version 2.0
# Release Date: August 11,2008
#============================================================================
# Modified by: OriginalWij
#============================================================================
# Description: Display an HP/SP and State HUD information in map.
# Compatibility: Should be compatible with any system
# Configuration:
# I. Turning off the HUD in game
# use the call script $game_system.show_hud = true/false
# true = show HUD, false = disable HUD
# II. Changing maximum information shown
# look at SHOW_MAX under JCONFIG, you can change the value to show
# how many of the actors in the party to display their information
# by default, it is set to show only 2 actors.
# III. Changing maximum information shown in game
# use the call script JCONFIG::SHOW_MAX = *integer*
# You can change the amount of actors displayed in the HUD in game.
# simply change integer to the value you want.
# IV. Changing Update methods
# if you want the HUD to always update, set ALWAYS_UPDATE_HUD to true
# but if you want to only update the HUD whenever you want to, set
# this to false.
# When $game_sysyem.always_update is false, you can update the hud
# manually in game using the call script $game_system.refresh_hud = true.
# this will refresh the hud information once.
# However, you can also switch between always updating the HUD and
# only updating the hud once during in game.
# Simply use the call script:
# $game_sysyem.always_update = true/false
# and to reupdate once
# $game_system.refresh_hud = true
#
# Optimization to achieve higher FPS
# 1) Set SHOW_MAX to a low value
# You can also:
# 2) Set $game_sysyem.always_update = false
# 2.1) Use $game_temp.refresh_hud = true to reupdate the hud manually.
#============================================================================
#=============================================================================
# Config
#=============================================================================
module JCONFIG
# By default, show 4 actor's information
SHOW_MAX = 1
# Bag icon
BAG_ICON = 206
# Skill1 icon
SKILL1_ICON = 208
# Skill2 icon
SKILL2_ICON = 209
# Bag variable ID
BAG_VAR = 216
# Gem icon
GEM_ICON = 207
# Gem variable ID
GEM_VAR = 217
# SP1 cost Variable ID
SP1_VAR = 214
# SP2 cost Variable ID
SP2_VAR = 215
# How far over to the right to display the above icons w/variables
ICON_X = 116
end
#=============================================================================
# Game_System
#=============================================================================
class Game_System
#--------------------------------------------------------------------------
# Public Instance Variables
#--------------------------------------------------------------------------
attr_accessor :refresh_hud
attr_accessor :show_hud
attr_accessor :always_update
#--------------------------------------------------------------------------
# Initialize
#--------------------------------------------------------------------------
alias jens009_initialize_hud initialize unless $@
def initialize
@show_hud = false
@always_update = false
@refresh_hud = false
jens009_initialize_hud
end
end
#=============================================================================
# Window_Hud
#=============================================================================
class Window_Hud < Window_Base
#--------------------------------------------------------------------------
# Initialize
#--------------------------------------------------------------------------
def initialize
# super(0,319,374,101)
super(0,-18,374,101)
# super(80,0,374,90)
self.opacity = 0
self.visible = $game_system.show_hud
refresh
end
#--------------------------------------------------------------------------
# Refresh
#--------------------------------------------------------------------------
def refresh
self.contents.clear
@item_max = JCONFIG::SHOW_MAX
@party_size = $game_party.members.size
# for actor in $game_party.members
actor = $game_party.members[0]
x = actor.index * 120
y = 0
draw_actor_information(actor, x, y) if actor.index < @item_max
# end
draw_icon($game_variables[JCONFIG::BAG_ICON], JCONFIG::ICON_X - 9, y + 37)
draw_icon($game_variables[JCONFIG::GEM_ICON], JCONFIG::ICON_X + 62, y + 37)
# draw_icon($game_variables[JCONFIG::SKILL1_ICON], JCONFIG::ICON_X - 9, y + 4)
# draw_icon($game_variables[JCONFIG::SKILL2_ICON], JCONFIG::ICON_X + 62, y + 4)
#Draw variables
# text = $game_variables[JCONFIG::SP1_VAR]
# self.contents.draw_text(JCONFIG::ICON_X + 30, y + 9, 200, WLH, text)
# text = $game_variables[JCONFIG::SP2_VAR]
# self.contents.draw_text(JCONFIG::ICON_X + 98, y + 9, 200, WLH, text)
if $game_switches[147] != true
text = $game_variables[JCONFIG::BAG_VAR]
self.contents.draw_text(JCONFIG::ICON_X + 30, y +41, 200, WLH, text)
end
if $game_switches[157] != true
text = $game_variables[JCONFIG::GEM_VAR]
self.contents.draw_text(JCONFIG::ICON_X + 98, y + 41, 200, WLH, text)
end
end
#--------------------------------------------------------------------------
# Draw Actor Info
#--------------------------------------------------------------------------
def draw_actor_information(actor, x, y)
# draw_actor_name(actor, x + 9, y - 2)
draw_actor_hp(actor, x + 4, y + 12, 75)
# draw_actor_mp(actor, x + 4, y + 33, 75)
draw_actor_state(actor, x - 2, y - 40 + 75)
end
#--------------------------------------------------------------------------
# Update
#--------------------------------------------------------------------------
def update
super
refresh
end
end
#=============================================================================
# Scene_Map
#=============================================================================
class Scene_Map
#--------------------------------------------------------------------------
# Aliases
#--------------------------------------------------------------------------
alias jens009_hud_main main unless $@
alias jens009_hud_update update unless $@
alias jens009_hud_terminate terminate unless $@
#--------------------------------------------------------------------------
# Main
#--------------------------------------------------------------------------
def main
@hud = Window_Hud.new
jens009_hud_main
end
#--------------------------------------------------------------------------
# Update
#--------------------------------------------------------------------------
def update
@hud.update if $game_system.show_hud and $game_system.always_update
if $game_system.refresh_hud == true
@hud.update
$game_system.refresh_hud = false
end
@hud.visible = $game_system.show_hud
jens009_hud_update
end
#--------------------------------------------------------------------------
# Terminate
#--------------------------------------------------------------------------
def terminate
jens009_hud_terminate
@hud.dispose
end
end
# Jens009 Simple HP/SP/State HUD
# Version 2.0
# Release Date: August 11,2008
#============================================================================
# Modified by: OriginalWij
#============================================================================
# Description: Display an HP/SP and State HUD information in map.
# Compatibility: Should be compatible with any system
# Configuration:
# I. Turning off the HUD in game
# use the call script $game_system.show_hud = true/false
# true = show HUD, false = disable HUD
# II. Changing maximum information shown
# look at SHOW_MAX under JCONFIG, you can change the value to show
# how many of the actors in the party to display their information
# by default, it is set to show only 2 actors.
# III. Changing maximum information shown in game
# use the call script JCONFIG::SHOW_MAX = *integer*
# You can change the amount of actors displayed in the HUD in game.
# simply change integer to the value you want.
# IV. Changing Update methods
# if you want the HUD to always update, set ALWAYS_UPDATE_HUD to true
# but if you want to only update the HUD whenever you want to, set
# this to false.
# When $game_sysyem.always_update is false, you can update the hud
# manually in game using the call script $game_system.refresh_hud = true.
# this will refresh the hud information once.
# However, you can also switch between always updating the HUD and
# only updating the hud once during in game.
# Simply use the call script:
# $game_sysyem.always_update = true/false
# and to reupdate once
# $game_system.refresh_hud = true
#
# Optimization to achieve higher FPS
# 1) Set SHOW_MAX to a low value
# You can also:
# 2) Set $game_sysyem.always_update = false
# 2.1) Use $game_temp.refresh_hud = true to reupdate the hud manually.
#============================================================================
#=============================================================================
# Config
#=============================================================================
module JCONFIG
# By default, show 4 actor's information
SHOW_MAX = 1
# Bag icon
BAG_ICON = 206
# Skill1 icon
SKILL1_ICON = 208
# Skill2 icon
SKILL2_ICON = 209
# Bag variable ID
BAG_VAR = 216
# Gem icon
GEM_ICON = 207
# Gem variable ID
GEM_VAR = 217
# SP1 cost Variable ID
SP1_VAR = 214
# SP2 cost Variable ID
SP2_VAR = 215
# How far over to the right to display the above icons w/variables
ICON_X = 116
end
#=============================================================================
# Game_System
#=============================================================================
class Game_System
#--------------------------------------------------------------------------
# Public Instance Variables
#--------------------------------------------------------------------------
attr_accessor :refresh_hud
attr_accessor :show_hud
attr_accessor :always_update
#--------------------------------------------------------------------------
# Initialize
#--------------------------------------------------------------------------
alias jens009_initialize_hud initialize unless $@
def initialize
@show_hud = false
@always_update = false
@refresh_hud = false
jens009_initialize_hud
end
end
#=============================================================================
# Window_Hud
#=============================================================================
class Window_Hud < Window_Base
#--------------------------------------------------------------------------
# Initialize
#--------------------------------------------------------------------------
def initialize
# super(0,319,374,101)
super(0,-18,374,101)
# super(80,0,374,90)
self.opacity = 0
self.visible = $game_system.show_hud
refresh
end
#--------------------------------------------------------------------------
# Refresh
#--------------------------------------------------------------------------
def refresh
self.contents.clear
@item_max = JCONFIG::SHOW_MAX
@party_size = $game_party.members.size
# for actor in $game_party.members
actor = $game_party.members[0]
x = actor.index * 120
y = 0
draw_actor_information(actor, x, y) if actor.index < @item_max
# end
draw_icon($game_variables[JCONFIG::BAG_ICON], JCONFIG::ICON_X - 9, y + 37)
draw_icon($game_variables[JCONFIG::GEM_ICON], JCONFIG::ICON_X + 62, y + 37)
# draw_icon($game_variables[JCONFIG::SKILL1_ICON], JCONFIG::ICON_X - 9, y + 4)
# draw_icon($game_variables[JCONFIG::SKILL2_ICON], JCONFIG::ICON_X + 62, y + 4)
#Draw variables
# text = $game_variables[JCONFIG::SP1_VAR]
# self.contents.draw_text(JCONFIG::ICON_X + 30, y + 9, 200, WLH, text)
# text = $game_variables[JCONFIG::SP2_VAR]
# self.contents.draw_text(JCONFIG::ICON_X + 98, y + 9, 200, WLH, text)
if $game_switches[147] != true
text = $game_variables[JCONFIG::BAG_VAR]
self.contents.draw_text(JCONFIG::ICON_X + 30, y +41, 200, WLH, text)
end
if $game_switches[157] != true
text = $game_variables[JCONFIG::GEM_VAR]
self.contents.draw_text(JCONFIG::ICON_X + 98, y + 41, 200, WLH, text)
end
end
#--------------------------------------------------------------------------
# Draw Actor Info
#--------------------------------------------------------------------------
def draw_actor_information(actor, x, y)
# draw_actor_name(actor, x + 9, y - 2)
draw_actor_hp(actor, x + 4, y + 12, 75)
# draw_actor_mp(actor, x + 4, y + 33, 75)
draw_actor_state(actor, x - 2, y - 40 + 75)
end
#--------------------------------------------------------------------------
# Update
#--------------------------------------------------------------------------
def update
super
refresh
end
end
#=============================================================================
# Scene_Map
#=============================================================================
class Scene_Map
#--------------------------------------------------------------------------
# Aliases
#--------------------------------------------------------------------------
alias jens009_hud_main main unless $@
alias jens009_hud_update update unless $@
alias jens009_hud_terminate terminate unless $@
#--------------------------------------------------------------------------
# Main
#--------------------------------------------------------------------------
def main
@hud = Window_Hud.new
jens009_hud_main
end
#--------------------------------------------------------------------------
# Update
#--------------------------------------------------------------------------
def update
@hud.update if $game_system.show_hud and $game_system.always_update
if $game_system.refresh_hud == true
@hud.update
$game_system.refresh_hud = false
end
@hud.visible = $game_system.show_hud
jens009_hud_update
end
#--------------------------------------------------------------------------
# Terminate
#--------------------------------------------------------------------------
def terminate
jens009_hud_terminate
@hud.dispose
end
end