[XP]{Simple}Hud

Started by Tazero, January 19, 2010, 03:50:55 am

Previous topic - Next topic

Tazero

Hi, I need a hud for 4 people at once displaying the first frame of their charaset.

and external images so i can customize the look, Please and thank you.


If you were a fish...

nathmatt

Join Dead Frontier
Sorry, I will no longer be scripting for RMXP. I may or may not give support for my scripts. I don't have the will to script in RGSS anymore.
My script


Eternal

All credit goes to Raziel. It was posted here and it's gotten 5/5 stars.
Quote from: RazielIntroduction

A short script I did when I was bored.

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

Instructions

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.

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?

Authors Notes

Enjoy.

Spoiler: ShowHide
#==============================================================================
# ** 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
end

Jackolas

QuoteAll credit goes to Raziel. It was posted here and it's gotten 5/5 stars.

first of all.. it got 5 stars because only 1 person voted fr it.. and its Raziel...... so that says crap.

QuoteHi, I need a hud for 4 people at once displaying the first frame of their charaset.

plzz make a mock-up.. like a drawing how you would like to see it.

Eternal

yeah i was gonna say it was only one person who'd voted, but i'd like it for me to look like i had found an extremely uhmazing script lol xD