So I need a new HUD script, was wondering if anyone could help me with this?

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