Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #------------------------------------------------------------------------------#
- # Galv's Explorer's HUD
- #------------------------------------------------------------------------------#
- # For: RPGMAKER VX ACE
- # Version 1.7
- #------------------------------------------------------------------------------#
- # 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 = "InfoHud" # 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] = $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]
- 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
- 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_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
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement