Galv’s Explorer’s HUD V.2.0

Demo – Version 1.7 > (Demo uses old version)
This demo uses Tsukihime’s Rotate Formation script found here.

#------------------------------------------------------------------------------#
#  Galv's Explorer's HUD
#------------------------------------------------------------------------------#
#  For: RPGMAKER VX ACE
#  Version 2.0
#------------------------------------------------------------------------------#
#  2013-01-31 - Version 2.0 - Fixed a bug with not drawing TP in battle option
#  2013-01-30 - Version 1.9 - Missed some things fixing the no actors crash
#  2013-01-24 - Version 1.8 - Fixed crash if no actors in party
#  2012-11-07 - Version 1.7 - some optimisation thanks to Niclas
#  2012-11-06 - Version 1.6 - more bug fixes
#  2012-11-06 - Version 1.5 - fixed so HUD doesn't appear in battle
#  2012-11-06 - Version 1.4 - added tp option and functionality
#  2012-11-06 - Version 1.3 - added options to disable windows
#  2012-11-06 - Version 1.2 - fixed map name bug not updating
#  2012-11-06 - Version 1.1 - changed z values of HUD
#  2012-11-06 - Version 1.0 - release
#------------------------------------------------------------------------------#
#  A HUD that displays information that might be useful for an RPG with a lot of
#  exploring. Can toggle it on or off when needed with a button. The info
#  displayed is the actor leading the party, so it works well with a script
#  such as Tsukihime's Rotate Formation to switch the lead actor with the press
#  of a button.
#------------------------------------------------------------------------------#
#  Visit: http://xtsukihime.wordpress.com/rmvxa-scripts/
#  To find latest versions of Tsukihime's scripts.
#------------------------------------------------------------------------------#

($imported ||= {})["Galv_Explorers_Hud"] = true

module Galvs_Hud
  
#------------------------------------------------------------------------------#
#  SCRIPT SETUP OPTIONS
#------------------------------------------------------------------------------#

  # GENERAL
  
  TOGGLE_SWITCH = 1       # Switch ID. When ON, hud is visible. When OFF its not

  ACTIVATE_BUTTON = :Z    # Button to toggle hud visibility switch. (:Z is "D")
                          # to disable make ACTIVATE_BUTTON = nil
                          
  HUD_SKIN = "Window"    # A windowskin to apply to the HUD. Located in
                          # /Graphics/System/
                          # Change to "Window" to use normal skin.

  SHOW_EQUIP = 0          # The equipment piece shown. This is the slot ID.
                          # 0 = weapon
                          # 1 = shield
                          # 2 = head
                          # 3 = body
                          # 4 = accessory

  SHOW_TP = true          # Show TP in top bar.
  

  # BOTTOM BAR
  
  SHOW_GOLD = true        # display gold in bottom bar
  SHOW_MAPNAME = true     # display map display name in bottom bar
  SHOW_COORDS = true      # display x,y coordinates in bottom bar
  
  REMOVE_WINDOWS = false  # This applies for above options that are set to false
                          # true = windows removed. false = windows blank
                          

#------------------------------------------------------------------------------#
#  SCRIPT SETUP OPTIONS
#------------------------------------------------------------------------------#
                          
end

class Scene_Map < Scene_Base
  
  alias galv_hud_create_spriteset create_spriteset
  def create_spriteset
    galv_hud_create_spriteset
    create_hud
  end
  
  alias galv_hud_update update
  def update
    galv_hud_update
    check_trigger
    update_hud if !@galv_hud.nil? && !scene_changing?
  end
  
  def update_hud
    @galv_hud.update
  end
  
  def create_hud
    @galv_hud = Galv_Hud.new(@viewport2)
  end  
  
  def check_trigger
    if Input.trigger?(Galvs_Hud::ACTIVATE_BUTTON)
      $game_switches[Galvs_Hud::TOGGLE_SWITCH] ^= true
    end
  end
  
  alias galv_hud_dispose_spriteset dispose_spriteset
  def dispose_spriteset
    galv_hud_dispose_spriteset
    @galv_hud.dispose
  end
  
end


class Galv_Hud < Scene_Base

  def initialize(viewport)
    super(viewport)
    create_gold_window
    create_coords_window
    create_location_window
    create_status_window
    $game_temp.hud_update[4] = []
    $game_temp.hud_update[6] = ""
    $game_temp.hud_update[7] = 0 #$game_party.members[0].tp
  end

  def create_status_window
    @status_window = Window_HudStatus.new
    @status_window.x = 0
    @status_window.y = 0
    @status_window.z = @status_window.z - 10
    @status_window.hide if !$game_switches[Galvs_Hud::TOGGLE_SWITCH]
  end
  
  def create_gold_window
    @gold_window = Window_QuickGold.new
    @gold_window.x = 0
    @gold_window.y = Graphics.height - @gold_window.height
    @gold_window.z = @gold_window.z - 10
    @gold_window.hide if !$game_switches[Galvs_Hud::TOGGLE_SWITCH]
  end
  
  def dispose
    @location_window.dispose
    @gold_window.dispose
    @status_window.dispose
    @coords_window.dispose
  end
  
  def create_coords_window
    @coords_window = Window_Coords.new
    @coords_window.x = Graphics.width - @coords_window.width
    @coords_window.y = Graphics.height - @coords_window.height
    @coords_window.z = @coords_window.z - 10
    @coords_window.hide if !$game_switches[Galvs_Hud::TOGGLE_SWITCH]
  end
  
  def create_location_window
    @location_window = Window_Location.new
    @location_window.x = @gold_window.width
    @location_window.y = Graphics.height - @location_window.height
    @location_window.z = @location_window.z - 10
    @location_window.hide if !$game_switches[Galvs_Hud::TOGGLE_SWITCH]
  end
  
  def update
    check_need_refresh
    hide_windows if !$game_switches[Galvs_Hud::TOGGLE_SWITCH]
    show_windows if $game_switches[Galvs_Hud::TOGGLE_SWITCH]
    @coords_window.refresh if Galvs_Hud::SHOW_COORDS
  end
  
  def check_need_refresh
    a = $game_party.members[0]
    return if a.nil?
    if $game_temp.hud_update != [a.id,a.hp,a.mp,a.exp,a.state_icons,$game_party.gold,$game_map.display_name,a.tp]
      refresh_windows
    else
      return
    end
  end
  
  def refresh_windows
      @status_window.refresh
      @gold_window.refresh
      @location_window.refresh
      $game_temp.hud_update[5] = $game_party.gold
  end
  
  def hide_windows
    if @status_window.visible
      @gold_window.hide
      @location_window.hide
      @coords_window.hide
      @status_window.hide
    end
  end
  
  def show_windows
    if !@status_window.visible
      @gold_window.show
      @location_window.show
      @coords_window.show
      @status_window.show
    end
  end

end # Galv_Hud


class Window_Location < Window_Base

  def initialize
    super(0, 0, window_width, fitting_height(1))
    self.openness = 255
    self.windowskin = Cache.system(Galvs_Hud::HUD_SKIN)
    self.opacity = 0 if !Galvs_Hud::SHOW_MAPNAME && Galvs_Hud::REMOVE_WINDOWS
    refresh
  end

  def window_width
    return (Graphics.width - 130 - 130)
  end

  def refresh
    $game_temp.hud_update[6] = $game_map.display_name
    return if !Galvs_Hud::SHOW_MAPNAME
    contents.clear
    draw_text((contents.width / 2) - ((locate_text.length * 10) / 2), 0, Graphics.width / 2, line_height, locate_text)
    
  end
  
  def locate_text
    $game_map.display_name
  end
 
  def open
    refresh
    super
  end

end # Window_Location < Window_Base


class Window_Coords < Window_Base

  def initialize
    super(0, 0, window_width, fitting_height(1))
    self.openness = 255
    self.windowskin = Cache.system(Galvs_Hud::HUD_SKIN)
    self.opacity = 0 if !Galvs_Hud::SHOW_COORDS && Galvs_Hud::REMOVE_WINDOWS
    refresh
  end

  def window_width
    return 130
  end

  def refresh
    return if !Galvs_Hud::SHOW_COORDS
    contents.clear
    change_color(normal_color)
    draw_text(15, 0, contents.width, line_height, $game_player.x.to_s)
    draw_text(70, 0, contents.width, line_height, $game_player.y.to_s)
    change_color(system_color)
    draw_text(0, 0, window_width, line_height, "X")
    draw_text(55, 0, window_width, line_height, "Y")
  end

  def open
    refresh
    super
  end
  
end # Window_Coords < Window_Base


class Window_QuickGold < Window_Base

  def initialize
    super(0, 0, window_width, fitting_height(1))
    self.openness = 255
    self.windowskin = Cache.system(Galvs_Hud::HUD_SKIN)
    self.opacity = 0 if !Galvs_Hud::SHOW_GOLD && Galvs_Hud::REMOVE_WINDOWS
    refresh
  end

  def window_width
    return 130
  end

  def refresh
    return if !Galvs_Hud::SHOW_GOLD
    contents.clear
    draw_currency_value(value, currency_unit, 4, 0, contents.width - 8)
  end

  def value
    $game_party.gold
  end

  def currency_unit
    Vocab::currency_unit
  end

  def open
    refresh
    super
  end
  
end # Window_QuickGold < Window_Base


class Window_HudStatus < Window_Selectable
  def initialize
    super(0, 0, window_width, window_height)
    refresh if $game_party.leader
    self.openness = 255
    self.windowskin = Cache.system(Galvs_Hud::HUD_SKIN)
  end
  
  def window_width
    Graphics.width
  end
  
  def window_height
    fitting_height(visible_line_number)
  end

  def visible_line_number
    return 2
  end

  def item_max
    1
  end
  
  def refresh
    contents.clear
    draw_item(0)
    draw_equips($game_party.members[0].equips[Galvs_Hud::SHOW_EQUIP].id) unless $game_party.members[0].equips[Galvs_Hud::SHOW_EQUIP].nil?
  end

  def draw_item(index)
    actor = $game_party.battle_members[index]
    draw_basic_area(basic_area_rect(index), actor)
    draw_gauge_area(gauge_area_rect(index), actor)
    draw_face(actor.face_name, actor.face_index, x, y - 30, actor.hp > 0)
    draw_actor_level(actor, Graphics.width - 90, y + line_height * 1)
    $game_temp.hud_update[0] = $game_party.members[0].id
  end
  
  def draw_equips(index)
    if Galvs_Hud::SHOW_EQUIP <= 0
      item = $data_weapons[index]
    else
      item = $data_armors[index]
    end
    if item
      rect = item_rect(1)
      rect.width -= 4
      draw_item_name(item, rect.x + 100, rect.y, $game_party.members[0].hp > 0)
    end
  end
  
  def basic_area_rect(index)
    rect = item_rect_for_text(index)
    rect.width -= gauge_area_width + 10
    rect
  end

  def gauge_area_rect(index)
    rect = item_rect_for_text(index)
    rect.x += rect.width - gauge_area_width
    rect.width = gauge_area_width
    rect
  end

  def gauge_area_width
    return 220
  end

  def draw_basic_area(rect, actor)
    draw_actor_icons(actor, rect.x + 104, rect.y, rect.width - 104)
    $game_temp.hud_update[4] = $game_party.members[0].state_icons
  end

  def draw_gauge_area(rect, actor)
    if $data_system.opt_display_tp
      draw_gauge_area_with_tp(rect, actor)
    else
      draw_gauge_area_without_tp(rect, actor)
    end
  end

  def draw_gauge_area_with_tp(rect, actor)
    draw_actor_hp(actor, rect.x - 60, rect.y, 132)
    draw_actor_tp(actor, rect.x + 82, rect.y + 25, 64) unless !Galvs_Hud::SHOW_TP
    draw_actor_mp(actor, rect.x + 82, rect.y, 64)
    draw_actor_xp(actor, rect.x + 156, rect.y, 64)
    $game_temp.hud_update[1] = $game_party.members[0].hp
    $game_temp.hud_update[2] = $game_party.members[0].mp
    $game_temp.hud_update[3] = $game_party.members[0].exp
    $game_temp.hud_update[7] = $game_party.members[0].tp
  end
  
  def draw_gauge_area_without_tp(rect, actor)
    draw_actor_hp(actor, rect.x - 60, rect.y, 132)
    draw_actor_mp(actor, rect.x + 82, rect.y, 64)
    draw_actor_xp(actor, rect.x + 156, rect.y, 64)
    $game_temp.hud_update[1] = $game_party.members[0].hp
    $game_temp.hud_update[2] = $game_party.members[0].mp
    $game_temp.hud_update[3] = $game_party.members[0].exp
    $game_temp.hud_update[7] = $game_party.members[0].tp
  end

  def draw_actor_xp(actor, x, y, width = 124)
    draw_gauge(x, y, width, (actor.exp.to_f - actor.class.exp_for_level(actor.level)) / (actor.class.exp_for_level(actor.level + 1) - actor.class.exp_for_level(actor.level)), text_color(6), text_color(14))
    change_color(system_color)
    draw_text(x, y, 30, line_height, "EXP")
  end
  
end # Window_HudStatus < Window_Selectable



class Sprite_Timer < Sprite
  
  alias galv_hud_update_position update_position
  def update_position
    galv_hud_update_position
    self.y = 70 if $game_switches[Galvs_Hud::TOGGLE_SWITCH]
  end
end # Sprite_Timer < Sprite


class Window_MapName < Window_Base
  
  alias galv_hud_update update
  def update
    galv_hud_update
    update_position if $game_map.name_display
  end
  
  def update_position
    if $game_switches[Galvs_Hud::TOGGLE_SWITCH]
      self.y = 70
    else
      self.y = 0
    end
  end
  
end # Window_MapName < Window_Base


class Game_Temp
  attr_accessor :hud_update
  
  alias galv_hud_initialize initialize
  def initialize
    galv_hud_initialize
    @hud_update = []
  end
  
end # Game_Temp
Advertisements

30 thoughts on “Galv’s Explorer’s HUD V.2.0

  1. Hackazer says:

    hey, it works great.
    but how to remove the top bar hud ?
    i only want to show the botton bar hud ( gold, mapname, and coordinates )

    thanks

    • Galv says:

      Removing the top bar is not part of the script functionality. You’ll need to edit the script to do that.

      • Hackazer says:

        can i make this as request for you ? or maybe could you give me some references for displaying only gold hud ?
        i really need that.

      • Galv says:

        Sorry, I’m very busy at the moment and not currently taking requests. I recommend requesting a script that does what you are after in one of the popular forums

  2. Wolf says:

    Hey galv, i need a help here, how do i disable the HUD to show when i teleport from one map to another ? i have a event that teleports my character, and the HUD keeps showing up. Thanks.

  3. Wolf says:

    There’s no way your HUD shows up when is teleporting or changing maps ? I couldnt understand well what you’ve said… I have an event that teleports my hero to another map, and the HUD shows up. I want to know if there’s some part of your script that disables it… Idk. I was looking in your script and found some refreshes variables but as i cant script i tried some stuff but ended up screwing your script lol. So i came here to ask you help ^^ Thanks. Waiting for answer !! =D

    • Galv says:

      In the script setup options:
      TOGGLE_SWITCH = 1 # Switch ID. When ON, hud is visible. When OFF its not

      It means if switch 1 in your game is ON then the hud is visible. If switch 1 in your game is OFF then the hud is not visible.

      Here’s a checklist of things to try to error trap your problem.
      https://galvs-scripts.com/errors-using-scripts/

      • Wolf says:

        Oh God, thanks Galv’s, thanks a lot ^^
        It’s solved now, i though this line was different. I mean, i though this would disable the HUD AT ALL, like, when i press D it would never shows up, and because of that i didnt tried to mess with it… But thanks a lot ^^

  4. kaukusaki says:

    I’m wracking my brain trying to change the box holding xy cords to show instead current skill equipped. any ideas? I been on this 16 hrs. btw the explorer hud is awesome. its been something I needed

  5. Yami Kitsune says:

    I put the script in, but nothing shows up in game. Was there something I was supposed to do? I’m not really using anything else that would counter your script.

    • Galv says:

      Need to read the instructions and settings :)
      TOGGLE_SWITCH = 1 # Switch ID. When ON, hud is visible. When OFF its not

      Choose a switch number in the settings to use Control Switches to turn it on or off.

  6. Tyler says:

    Hey, Galv. I have a question. I can’t seem to figure out how to display the actor’s name on the HUD, right above the weapon they have equipped. Is there some way to do that?

  7. xtomoki says:

    Hey Galv! I really like your scripts and customize them for my needs, but theres one thing i dont get working. I use this script and the Quick Weapon Swap script, if I switch my weapons with Q or W the HUD doesn’t update, until i open the menu or trigger something else, is there a way to update it the HUD in real time? Or everytime i press Q or W or something.

    • Galv says:

      Some changes I think would have to be made for that to work by the sound of it. I recommend asking in a forum, it’s easier to post code there and someone might get to it before I have time to look into it :D

  8. JooshTheDev says:

    Where to put script

  9. C. says:

    Your HUD turns itself back ON after battle, even when it was turned OFF before the battle.

  10. Mike says:

    Hi Galv!
    I got a syntax error on line 39 when using this script. Can you fix it?

    “Script “Galv Explorer HUD” line 39: SyntaxError occured.
    Unexpected tIDENTIFIER, expecting keyword_end
    …TOGGLE_SWITCH = 5 #Switch ID. When ON hud is…”

  11. Adam says:

    Amazing! 10/10! You can also edit the script to display just the gold when your in a town and then the full hud when you enter the wilderness. Thank you very much!

  12. Scott Evans says:

    This is going to sound like the biggest n00b question EVER, but how do I go about setting the switch for this script? where do I find the switch ID?

    • Galv says:

      When you use the ‘Control Switches’ event command, there is a number next to them. That’s the switch ID (but you don’t need to 00 before the number)

  13. Hey, Galv
    Really like the script
    But, I got a question
    Is there a way to put sound into the HUD being activated or Deactivated?
    For example:
    Player presses D, plays a sound effect, and the Hud opens up
    Player Presses D, plays a sound effect, and the HUDS shuts down.
    It’s not THAT big of deal if not, but I just wanted to ask.

    • Galv says:

      Very possible, you would have to modify the code, though. Unfortunately I do not have time to do this but I recommend asking in a forum for someone to add it for you

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s