Envision, Create, Share

Welcome to HBGames, a leading amateur game development forum and Discord server. All are welcome, and amongst our ranks you will find experts in their field from all aspects of video game design and development.

i need help with a script that i have...

MaxXx

Member

I have a custom hud script but i need someone to add some features to it.

INCLUDING
-Centering it so if i only have 1-3 ppl in my party.
-And makin a switch so when i press 1 the hud turns off/on.

Here's the script:

Code:
class Scene_Map
  
  alias raz_hud_main main
  alias raz_hud_update update
  
  def main
    @size = $game_party.actors.size
    raz_hud_main
    @hud_window.dispose
    @hud_dummy[0].dispose
    @hud_dummy[1].dispose
    @hud_dummy[2].dispose
    @hud_dummy[3].dispose
  end
  
  def update
  if @size != $game_party.actors.size
     @hud_window.refresh
      show_window
    end
  if @hud == true
      else
    main_window
  end
  
    @hud_window.update
    raz_hud_update
  end
  
  def show_window
    @size = $game_party.actors.size
    if $game_party.actors[0] == nil
      @hud_dummy[0].visible = false
      else
      @hud_dummy[0].visible = true
    end
    
    if $game_party.actors[1] == nil
      @hud_dummy[1].visible = false
      else
      @hud_dummy[1].visible = true
    end

    if $game_party.actors[2] == nil
      @hud_dummy[2].visible = false
      else
      @hud_dummy[2].visible = true
    end

    if $game_party.actors[3] == nil
      @hud_dummy[3].visible = false
      else
      @hud_dummy[3].visible = true
    end
  end
  
  def main_window
    @opacity = 200
    @hud_dummy = []
    @hud_dummy[0] = Window_Base.new(0, 372,160, 108)
    @hud_dummy[1] = Window_Base.new(160, 372,160, 108)
    @hud_dummy[2] = Window_Base.new(320, 372,160, 108)
    @hud_dummy[3] = Window_Base.new(480, 372,160, 108)
    @hud_dummy[0].opacity = @opacity
    @hud_dummy[1].opacity = @opacity
    @hud_dummy[2].opacity = @opacity
    @hud_dummy[3].opacity = @opacity
    @hud_window = Window_HUD.new
    if $game_party.actors[0] == nil
      @hud_dummy[0].visible = false
      else
      @hud_dummy[0].visible = true
    end
    
    if $game_party.actors[1] == nil
      @hud_dummy[1].visible = false
      else
      @hud_dummy[1].visible = true
    end

    if $game_party.actors[2] == nil
      @hud_dummy[2].visible = false
      else
      @hud_dummy[2].visible = true
    end

    if $game_party.actors[3] == nil
      @hud_dummy[3].visible = false
      else
      @hud_dummy[3].visible = true
    end
    @hud = true
  end
  
  def turn_hud_off
    for i in 0...$game_party.actors.size
    @hud_window.visible, @hud_dummy[i].visible = false, false
    end
    return
  end
  
  def turn_hud_on
    for i in 0...$game_party.actors.size
    @hud_window.visible, @hud_dummy[i].visible = true, true
    end
    return
  end
  
end

  
class Window_HUD < Window_Base
  def initialize
    super(0, 0, 800, 600)
    self.contents = Bitmap.new(width - 32, height - 32)
    self.opacity = 0
    unless $game_party.actors[0] == nil
    @old_hp1 = $game_party.actors[0].hp
    @old_sp1 = $game_party.actors[0].sp
    @old_exp1 = $game_party.actors[0].now_exp
    end
    unless $game_party.actors[1] == nil
    @old_hp2 = $game_party.actors[1].hp
    @old_sp2 = $game_party.actors[1].sp
    @old_exp2 = $game_party.actors[1].now_exp
    end
    unless $game_party.actors[2] == nil
    @old_hp3 = $game_party.actors[2].hp
    @old_sp3 = $game_party.actors[2].sp
    @old_exp3 = $game_party.actors[2].now_exp
    end
    unless $game_party.actors[3] == nil
    @old_hp4 = $game_party.actors[3].hp
    @old_sp4 = $game_party.actors[3].sp
    @old_exp4 = $game_party.actors[3].now_exp
    end

    refresh
  end
  
  def refresh
    self.contents.clear
    for i in 0...$game_party.actors.size
    actor = $game_party.actors[i]
    x = 25 + i * 160
    self.contents.font.size = 18
    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, width = 100, height = 6, bar_color = Color.new(150, 0, 0, 255), end_color = Color.new(155, 155, 60, 255))
    draw_slant_bar(x + 8, 416, actor.sp, actor.maxsp, width = 100, height = 6, bar_color = Color.new(0, 0, 150, 255), end_color = Color.new(60, 155, 155, 255))
    unless actor.level == 99
    draw_slant_bar(x + 8, 436, actor.now_exp, actor.next_exp, width = 100, height = 6, bar_color = Color.new(0, 150, 0, 255), end_color = Color.new(60, 255, 60, 255))
  else
    draw_slant_bar(x + 8, 436, 1, 1, width = 100, height = 6, bar_color = Color.new(0, 150, 0, 255), end_color = Color.new(60, 255, 60, 255))
    end
    self.contents.font.size = 14
    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 = 16
    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

def update
  super
    unless $game_party.actors[0] == nil
  if @old_hp1 != $game_party.actors[0].hp or @old_sp1 != $game_party.actors[0].sp or @old_exp1 != $game_party.actors[0].now_exp
      refresh
      @old_hp1 = $game_party.actors[0].hp
      @old_sp1 = $game_party.actors[0].sp
      @old_exp1 = $game_party.actors[0].now_exp
    end
  end
  unless $game_party.actors[1] == nil
      if @old_hp2 != $game_party.actors[1].hp or @old_sp2 != $game_party.actors[1].sp or @old_exp2 != $game_party.actors[1].now_exp
      refresh
      @old_hp2 = $game_party.actors[1].hp
      @old_sp2 = $game_party.actors[1].sp
      @old_exp2 = $game_party.actors[1].now_exp
    end
  end
  unless $game_party.actors[2] == nil
  if @old_hp3 != $game_party.actors[2].hp or @old_sp3 != $game_party.actors[2].sp or @old_exp3 != $game_party.actors[2].now_exp
      refresh
      @old_hp3 = $game_party.actors[2].hp
      @old_sp3 = $game_party.actors[2].sp
      @old_exp3 = $game_party.actors[2].now_exp
    end
  end
  unless $game_party.actors[3] == nil
  if @old_hp4 != $game_party.actors[3].hp or @old_sp4 != $game_party.actors[3].sp or @old_exp4 != $game_party.actors[3].now_exp
      refresh
      @old_hp4 = $game_party.actors[3].hp
      @old_sp4 = $game_party.actors[3].sp
      @old_exp4 = $game_party.actors[3].now_exp
    end
    end

  end
end
    
class Window_Base < Window
  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

class Game_Actor
  def now_exp
    return @exp - @exp_list[@level]
  end
  def next_exp
    return @exp_list[@level+1] > 0 ? @exp_list[@level+1] - @exp_list[@level] : 0
  end
end
 

Thank you for viewing

HBGames is a leading amateur video game development forum and Discord server open to all ability levels. Feel free to have a nosey around!

Discord

Join our growing and active Discord server to discuss all aspects of game making in a relaxed environment. Join Us

Content

  • Our Games
  • Games in Development
  • Emoji by Twemoji.
    Top