03-07-2008, 05:13 AM 
	
	
	Hud Menu
Version: 2.0
Version: 2.0
Introduction
A short script I did when I was bored. :P
Features
- Turn the Hud on and off by using a switch.
 
- Includes HP, SP, Exp and gradient bars.
 
- The feature to center the HUD.
 
- Now Lag and Bug free
 
![[Image: hud7dw.th.png]](http://img490.imageshack.us/img490/8831/hud7dw.th.png)
![[Image: hud23pg.th.png]](http://img490.imageshack.us/img490/2017/hud23pg.th.png)
![[Image: hud36yk.th.png]](http://img468.imageshack.us/img468/9720/hud36yk.th.png)
![[Image: hudcenter15bm.th.png]](http://img228.imageshack.us/img228/13/hudcenter15bm.th.png)
![[Image: hudcenter25ki.th.png]](http://img301.imageshack.us/img301/259/hudcenter25ki.th.png)
Script
 Content Hidden
  			Code:
#==============================================================================
# ** Hud Menu
#==============================================================================
# Raziel
# Version 2.0
# 2007-08-18
#------------------------------------------------------------------------------
#===============================================================================
# * Module Raz_Hud
#===============================================================================
module Raz_Hud
  #switch to show/hide the hud
  SWITCH_ID = 1 
  #set it to true to center the hud if there are less than four party members
  Center_hud = true
end
#==============================================================================
# ** Scene_Map
#------------------------------------------------------------------------------
#  This class performs map screen processing.
#==============================================================================
class Scene_Map 
  #----------------------------------------------------------------------------
  # * Alias Listings
  #----------------------------------------------------------------------------
  alias raz_hud_main main 
  alias raz_hud_update update 
  #--------------------------------------------------------------------------
  # * Main Processing
  #--------------------------------------------------------------------------
  def main 
    @hud_dummy = [] 
    for i in 0...$game_party.actors.size
      @hud_dummy[i] = Window_Dummy.new(i)
    end 
    @hud_window = Window_HUD.new
    raz_hud_main 
    @hud_window.dispose 
    @hud_dummy.each { |hud| hud.dispose }
  end 
  #--------------------------------------------------------------------------
  # * Frame Update
  #--------------------------------------------------------------------------
  def update 
    @hud_dummy.each {|hud| hud.visible = $game_switches[Raz_Hud::SWITCH_ID]}
    if @hud_dummy[$game_party.actors.size] != nil
      @hud_dummy.each{|hud| hud.dispose} 
      @hud_dummy = []
      for i in 0...$game_party.actors.size
        @hud_dummy[i] = Window_Dummy.new(i)
      end 
    end
    @hud_window.update 
    raz_hud_update 
  end 
end 
#===============================================================================
# * Window_HUD
#===============================================================================
class Window_HUD < Window_Base 
  #--------------------------------------------------------------------------
  # * Object Initialization
  #--------------------------------------------------------------------------
  def initialize 
    super(0, 0, 800, 600) 
    self.contents = Bitmap.new(width - 32, height - 32) 
    self.opacity = 0 
    self.visible = $game_switches[Raz_Hud::SWITCH_ID]
    refresh 
  end 
  #--------------------------------------------------------------------------
  # * Refresh
  #--------------------------------------------------------------------------
  def refresh 
    self.contents.clear 
    @old_hp, @old_sp, @old_exp, @old_size = [],[],[],$game_party.actors.size
    for actor in $game_party.actors
      @old_hp << actor.hp; @old_sp << actor.sp; @old_exp << actor.exp
      a = $game_party.actors.size - 1 
      center = Raz_Hud::Center_hud == true ? (240 - (a * 80)) : 0
      x = ($game_party.actors.index(actor) * 160 + 25) + center
      self.contents.font.size = 21 
      draw_actor_graphic(actor, x - 15, 445) 
      self.contents.font.color = normal_color 
      self.contents.draw_text(x - 25, 360, 100, 32, actor.name) 
      draw_slant_bar(x + 8, 396, actor.hp, actor.maxhp, 100, 6) 
      draw_slant_bar(x + 8, 416, actor.sp, actor.maxsp, 100, 6, Color.new(0, 0, 150), Color.new(60, 155, 155)) 
      now_exp = actor.level == 99 ? 1 : actor.now_exp
      next_exp = actor.level == 99 ? 1 : actor.next_exp
      draw_slant_bar(x + 8, 436, now_exp, next_exp, 100, 6, Color.new(0, 150, 0), Color.new(60, 255, 60)) 
      self.contents.font.size = 16 
      draw_actor_state(actor, x + 45, 360) 
      self.contents.font.color = normal_color 
      self.contents.font.bold = true 
      self.contents.font.color = actor.hp == 0 ? knockout_color : actor.hp <= actor.maxhp / 4 ? crisis_color : normal_color 
      self.contents.draw_text(x + 16, 382, 100, 32, "#{actor.hp}/#{actor.maxhp}", 1) 
      self.contents.font.color = actor.sp == 0 ? crisis_color : actor.sp <= actor.maxsp / 4 ? crisis_color : normal_color 
      self.contents.draw_text(x + 16, 402, 100, 32, "#{actor.sp}/#{actor.maxsp}", 1) 
      self.contents.font.color = system_color 
      self.contents.font.size = 20 
      self.contents.font.bold = false 
      self.contents.draw_text(x, 384, 50, 32, $data_system.words.hp) 
      self.contents.draw_text(x, 404, 50, 32, $data_system.words.sp) 
      self.contents.draw_text(x, 424, 50, 32, "Exp") 
    end 
  end 
  #--------------------------------------------------------------------------
  # * Frame Update
  #--------------------------------------------------------------------------
  def update 
    refresh if @old_size != $game_party.actors.size
    @old_hp.each_with_index {|hp, index| refresh if hp != $game_party.actors[index].hp}    
    @old_sp.each_with_index {|sp, index| refresh if sp != $game_party.actors[index].sp}    
    @old_exp.each_with_index {|exp, index| refresh if exp != $game_party.actors[index].exp}
    self.visible = $game_switches[Raz_Hud::SWITCH_ID]
  end 
end 
#===============================================================================
# * Window_Dummy
#===============================================================================
class Window_Dummy < Window_Base
  #--------------------------------------------------------------------------
  # * Object Initialization
  #   size: Party's size
  #--------------------------------------------------------------------------
  def initialize(size)
    @old_size = $game_party.actors.size
    x = Raz_Hud::Center_hud == true ? 240 - ($game_party.actors.size - 1) * 80 : 0
    super(160 * size + x, 372,160, 108)
    self.visible = $game_switches[Raz_Hud::SWITCH_ID]
    self.opacity = 200
  end
end
#==============================================================================
# ** Window_Base
#------------------------------------------------------------------------------
#  This class is for all in-game windows.
#==============================================================================
class Window_Base < Window 
  #--------------------------------------------------------------------------
  # * Draw Slant Bar (by SephirothSpawn)
  #--------------------------------------------------------------------------
  def draw_slant_bar(x, y, min, max, width = 152, height = 6, 
  bar_color = Color.new(150, 0, 0, 255), end_color = Color.new(255, 255, 60, 255)) 
    for i in 0..height 
      self.contents.fill_rect(x + i, y + height - i, width + 1, 1, Color.new(50, 50, 50, 255)) 
    end 
    for i in 1..(height - 1) 
      r = 100 * (height - i) / height + 0 * i / height 
      g = 100 * (height - i) / height + 0 * i / height 
      b = 100 * (height - i) / height + 0 * i / height 
      a = 255 * (height - i) / height + 255 * i / height 
      self.contents.fill_rect(x + i, y + height - i, width, 1, Color.new(r, b, g, a)) 
    end 
    for i in 1..( (min / max.to_f) * width - 1) 
      for j in 1..(height - 1) 
        r = bar_color.red * (width - i) / width + end_color.red * i / width 
        g = bar_color.green * (width - i) / width + end_color.green * i / width 
        b = bar_color.blue * (width - i) / width + end_color.blue * i / width 
        a = bar_color.alpha * (width - i) / width + end_color.alpha * i / width 
        self.contents.fill_rect(x + i + j, y + height - j, 1, 1, Color.new(r, g, b, a)) 
      end 
    end 
  end 
end 
#==============================================================================
# ** 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 
  #--------------------------------------------------------------------------
  # * Now Exp
  #--------------------------------------------------------------------------
  def now_exp 
    return @exp - @exp_list[@level] 
  end 
  #--------------------------------------------------------------------------
  # * Next Exp
  #--------------------------------------------------------------------------
  def next_exp 
    return @exp_list[@level+1] > 0 ? @exp_list[@level+1] - @exp_list[@level] : 0 
  end 
endInstructions
Turn the HUD on/off by using a switch. Turn the HUD off, turn the switch to off, to turn the HUD on, change the switch to on. The default switch is 1. To change it, just change the 1 in SWITCH_ID = 1 to the number of the switch you want to use.
To center the HUD just turn Center_hud to true. Turn it off when you don't want to center the HUD.
FAQ
Awaiting questions.
Credits and Thanks
Thanks and credits to SephirothSpawn for the gradient bars.
Thanks to Trickster for pushing me to update it. (I did it, are you happy now? :P)
Author's Notes
Enjoy.

 
 
 Hud Menu
 Hud Menu 
