Chaos Project

RPG Maker => RPG Maker Scripts => Script Requests => Topic started by: Tazero on January 19, 2010, 03:50:55 am

Title: [XP]{Simple}Hud
Post by: Tazero on January 19, 2010, 03:50:55 am
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.
Title: Re: [XP]{Simple}Hud
Post by: nathmatt on January 19, 2010, 07:17:02 am
layout would help
Title: Re: [XP]{Simple}Hud
Post by: Eternal on February 03, 2010, 08:09:59 am
All credit goes to Raziel. It was posted here (http://www.rmxpunlimited.net/index.php/rmxp/rgss1-scripts/item/huds-and-bars/hud-menu.html) 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
Title: Re: [XP]{Simple}Hud
Post by: Jackolas on February 03, 2010, 08:48:57 am
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.
Title: Re: [XP]{Simple}Hud
Post by: Eternal on February 04, 2010, 10:24:45 am
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