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.

NeoABS HUD edit/add-on

Hello!

I´m creating a game and I´m using UCoders NeoABS. The script is great and fun to use, and the built in HUD is nice and minimalistic, just the way I want it! But... earlier I used Mr.Mo´s old ABS and I think that the NeoABS HUD is better, but there is one thing about the old HUD that I miss. The thing I miss in the new NeoABS HUD is the possibility to show States on-screen!

In my game I use alot of magic and abilities that involves States. Basically, what I need is the States to be displayed as Icons and State Name to the left on the screen, just below the items. Like so:



This is the actual script:

#===============================================================================
# ** NeoABS HUD - www.unknowncoders.com
#-------------------------------------------------------------------------------
# Author    Mr.Mo "Muhammet Sivri"
# Version  1.0
# Date      11/25/07 (m/d/y)
#===============================================================================
# Credit to Trickster for his gradient bars!
#===============================================================================
module UCoders
class NeoABS_HUD < Window_Base
  UCoders.include('NeoABS_HUD', ['Mr.Mo','1.0'])
  #--------------------------------------------------------------------------
  # * Object Initialization
  #--------------------------------------------------------------------------
  def initialize(on=false)
    super(0, 0, 640, 480)
    # Set old stuff
    @items = @skills = {}
    @hp = @sp = @sneak = @dash = @weapon_id = @ammo = 0
    @actor = $game_party.actors[0]
    @run_timer = 0
    @run_displaying =  @defending = false
    # Create Bitmap
    self.contents = Bitmap.new(width - 32, height - 32)
    # Hide Window
    self.opacity = 0
    self.visible = on
    refresh
  end
  #--------------------------------------------------------------------------
  # * Refresh
  #--------------------------------------------------------------------------
  def refresh
    self.contents.clear
    self.contents.font.size = 18
    @actor = $game_party.actors[0]
    @items = $game_player.item_keys
    @skills = @actor.skill_keys
    @hp = @actor.hp
    @sp = @actor.sp
    @sneak = $game_player.sneak_min
    @dash = $game_player.dash_min
    @actor = $game_party.actors[0]
    @weapon_id = @actor.weapon_id
    @defending = (Input.press?(DEFEND_KEY))
    @ammo = $game_party.item_number(Range_Weapons[@actor.weapon_id][3]) if Range_Weapons.has_key?(@actor.weapon_id)
    # Show the HP
    self.contents.draw_text(0, -9, 100, 32, "Hälsa")
    draw_gradient_bar(50, 0, @actor.hp, @actor.maxhp, HP_BAR, 100, 8)
    # Show the SP
    self.contents.draw_text(0, 11, 100, 32, "Mana")
    draw_gradient_bar(50, 24, @actor.sp, @actor.maxsp, SP_BAR, 100,8)
    # Display Hotkeys
    xp = 0
    @actor.skill_keys.each { |key, value|
      # Skill
      skill = $data_skills[value.to_i]; next if skill.nil?
      # Icon
      bitmap = RPG::Cache.icon(skill.icon_name)
      self.contents.blt(160+(xp*48), 0, bitmap, Rect.new(0, 0, 24, 24))
      # Write Key
      self.contents.draw_text(192+(xp*48)-48/2, 24, 100, 32, Keys.name?(key))
      xp+=1
    }
    yp = 0
    # Display Items
    $game_player.item_keys.each { |key, value|
      # Item
      item = $data_items[value.to_i]; next if item.nil?
      # Icon
      bitmap = RPG::Cache.icon(item.icon_name)
      self.contents.blt(0, 50 + (yp*32), bitmap, Rect.new(0, 0, 24, 24))
      # Write Key
      self.contents.draw_text(26, 50 + (yp*32) - 8, 100, 32, Keys.name?(key))
      yp+=1
    }
    # Display if using
    if @run_displaying
      # Display Dash
      draw_gradient_bar(510, 425-28, $game_player.dash_min, $NeoABS.dash_lenght*10, "025-SoftBlue01", 100,8)
      contents.draw_text(446, 416-32, 100, 32, "Springa")
      # Display Sneak
      draw_gradient_bar(510, 449-32, $game_player.sneak_min, $NeoABS.sneak_lenght*10, "029-SoftGreens01", 100,8)
      contents.draw_text(446, 436-32, 100, 32, "Smyga")
      @run_timer = 0
    end
    # Item
    item = $data_weapons[@actor.weapon_id]
    # Icon
    bitmap = RPG::Cache.icon(item.icon_name) unless item.nil?
    self.contents.blt(64, 36, bitmap, Rect.new(0, 0, 24, 24)) unless item.nil?
    # Display Ammo if weapon is a Ranged Weapon
    if Range_Weapons.has_key?(@actor.weapon_id)
      self.contents.font.size = 20
      contents.draw_text(90, 36, 100, 32, "#{@ammo}")
    end
    # Display Shield if defending
    if @defending && CAN_DEFEND
      # Icon
      bitmap = RPG::Cache.icon("009-Shield01")
      self.contents.blt(125, 36, bitmap, Rect.new(0, 0, 24, 24))
    end
  end
  #--------------------------------------------------------------------------
  # * Update
  #--------------------------------------------------------------------------
  def update
    refresh if something_changed?
    @run_timer < 50 ? @run_timer += 1 : @run_timer += 0
    # Sneak And Dash Display
    if @run_timer >= 100 and @run_displaying
      @run_timer -= 1
      @run_timer = 0 if @dash == $game_player.dash_min && @sneak == $game_player.sneak_min
      @run_timer <= 0 ? @run_displaying = false : @run_displaying = true
      refresh if !@run_displaying
    end
  end
  #--------------------------------------------------------------------------
  # * Something Changed?
  #--------------------------------------------------------------------------
  def something_changed?
    return true if @actor != $game_party.actors[0]
    return true if @hp != @actor.hp or @sp != @actor.sp
    return true if $game_player.item_keys.to_s != @items.to_s or @actor.skill_keys.to_s != @skills.to_s
    return true if @weapon_id != @actor.weapon_id || (Range_Weapons.has_key?(@actor.weapon_id) && $game_party.item_number(Range_Weapons[@actor.weapon_id][3]) != @ammo)
    return @run_displaying = true if @dash != $game_player.dash_min or @sneak != $game_player.sneak_min
    return true if @defending != Input.press?(DEFEND_KEY)
    return false
  end
end
end
#===============================================================================
# * Scene_Map
#=============================================================================
class Scene_Map
  #--------------------------------------------------------------------------
  alias mrmo_hud_main main
  alias mrmo_keyhud_update update
  #--------------------------------------------------------------------------
  # * Main Draw
  #--------------------------------------------------------------------------
  def main
    UCoders::Object["NeoABS_HUD"] = UCoders::NeoABS_HUD.new($NeoABS.hud_showing)
    mrmo_hud_main
    $NeoABS.hud_showing = UCoders::Object["NeoABS_HUD"].visible
    UCoders::Object["NeoABS_HUD"].dispose
  end
  #--------------------------------------------------------------------------
  # * Turn HUD Show
  #--------------------------------------------------------------------------
  def hud_show
    $NeoABS.hud_showing = UCoders::Object["NeoABS_HUD"].visible = true
  end
  #--------------------------------------------------------------------------
  # * Turn HUD Hide
  #--------------------------------------------------------------------------
  def hud_hide
    $NeoABS.hud_showing = UCoders::Object["NeoABS_HUD"].visible = false
  end
  #--------------------------------------------------------------------------
  # * Update
  #--------------------------------------------------------------------------
  def update
    mrmo_keyhud_update
    UCoders::Object["NeoABS_HUD"].update
  end
end
#--------------------------------------------------------------------------
# * Load Gradient from RPG::Cache
#--------------------------------------------------------------------------
module RPG
  module Cache
    def self.gradient(filename, hue = 0)
      self.load_bitmap("Graphics/Gradients/", filename, hue)
    end
  end
end
class Window_Base < Window
  #--------------------------------------------------------------------------
  # * Constants Bar Types and Hues for parameters and parameter names
  #--------------------------------------------------------------------------
  HP_BAR = "014-Reds01"
  SP_BAR = "013-Blues01"
  EXP_BAR = "015-Greens01"
  ATK_BAR = "020-Metallic01"
  PDEF_BAR = "020-Metallic01"
  MDEF_BAR = "020-Metallic01"
  STR_BAR = "020-Metallic01"
  DEX_BAR = "020-Metallic01"
  AGI_BAR = "020-Metallic01"
  INT_BAR = "020-Metallic01"
  HUES = [150,180,60,30,270,350,320]
  STATS = ["atk","pdef","mdef","str","dex","agi","int"]
  # leave this alone if you don't know what you are doing
  OUTLINE = 1
  BORDER = 1
  #--------------------------------------------------------------------------
  # * Draw Gradient Bar
  #--------------------------------------------------------------------------
  def draw_gradient_bar(x, y, min, max, file, width = nil, height = nil, hue = 0, back = "Back", back2 = "Back2")
    bar = RPG::Cache.gradient(file, hue)
    back = RPG::Cache.gradient(back)
    back2 = RPG::Cache.gradient(back2)
    cx = BORDER
    cy = BORDER
    dx = OUTLINE
    dy = OUTLINE
    zoom_x = width != nil ? width : back.width
    zoom_y = height != nil ? height : back.height
    percent = min / max.to_f if max != 0
    percent = 0 if max == 0
    back_dest_rect = Rect.new(x,y,zoom_x,zoom_y)
    back2_dest_rect = Rect.new(x+dx,y+dy,zoom_x -dx*2,zoom_y-dy*2)
    bar_dest_rect = Rect.new(x+cx,y+cy,zoom_x * percent-cx*2,zoom_y-cy*2)
    back_source_rect = Rect.new(0,0,back.width,back.height)
    back2_source_rect = Rect.new(0,0,back2.width,back2.height)
    bar_source_rect = Rect.new(0,0,bar.width* percent,bar.height)
    self.contents.stretch_blt(back_dest_rect, back, back_source_rect)
    self.contents.stretch_blt(back2_dest_rect, back2, back2_source_rect)
    self.contents.stretch_blt(bar_dest_rect, bar, bar_source_rect)
  end 
 
  def draw_vertical_gradient_bar(x, y, min, max, file, width = nil, height = nil, hue = 0, back = "Back", back2 = "Back2")
    bar = RPG::Cache.gradient(file, hue)
    back = RPG::Cache.gradient(back)
    back2 = RPG::Cache.gradient(back2)
    cx = BORDER
    cy = BORDER
    dx = OUTLINE
    dy = OUTLINE
    zoom_x = width != nil ? width : back.width
    zoom_y = height != nil ? height : back.height
    percent = min / max.to_f if max != 0
    percent = 0 if max == 0
    bar_y = (zoom_y - zoom_y * percent).ceil
    source_y = bar.height - bar.height * percent
    back_dest_rect = Rect.new(x,y,zoom_x,zoom_y)
    back2_dest_rect = Rect.new(x+dx,y+dy,zoom_x -dx*2,zoom_y-dy*2)
    bar_dest_rect = Rect.new(x+cx,y+bar_y+cy,zoom_x-cx*2,(zoom_y * percent).to_i-cy*2)
    back_source_rect = Rect.new(0,0,back.width,back.height)
    back2_source_rect = Rect.new(0,0,back2.width,back2.height)
    bar_source_rect = Rect.new(0,source_y,bar.width,bar.height * percent)
    self.contents.stretch_blt(back_dest_rect, back, back_source_rect)
    self.contents.stretch_blt(back2_dest_rect, back2, back2_source_rect)
    self.contents.stretch_blt(bar_dest_rect, bar, bar_source_rect)
  end 
  #--------------------------------------------------------------------------
  # * Draw HP
  #    actor : actor
  #    x    : draw spot x-coordinate
  #    y    : draw spot y-coordinate
  #    width : draw spot width
  #--------------------------------------------------------------------------
  alias trick_draw_actor_hp draw_actor_hp
  def draw_actor_hp(actor, x, y, width = 144)
    # Calculate if there is draw space for MaxHP
    if width - 32 >= 108
      hp_x = x + width - 108
      flag = true
    elsif width - 32 >= 48
      hp_x = x + width - 48
      flag = false
    end
    width = hp_x - x
    width += $game_temp.in_battle ? 50 : 100
    # Draw HP
    draw_gradient_bar(x, y + 16, actor.hp, actor.maxhp, HP_BAR, width, 8)
    trick_draw_actor_hp(actor, x, y, width)
  end
  #--------------------------------------------------------------------------
  # * Draw SP
  #    actor : actor
  #    x    : draw spot x-coordinate
  #    y    : draw spot y-coordinate
  #    width : draw spot width
  #--------------------------------------------------------------------------
  alias trick_draw_actor_sp draw_actor_sp
  def draw_actor_sp(actor, x, y, width = 144)
    # Calculate if there is draw space for MaxHP
    if width - 32 >= 108
      sp_x = x + width - 108
      flag = true
    elsif width - 32 >= 48
      sp_x = x + width - 48
      flag = false
    end
    width = sp_x - x
    width += $game_temp.in_battle ? 50 : 100
    # Draw SP
    draw_gradient_bar(x, y + 16, actor.sp, actor.maxsp, SP_BAR, width, 8)
    trick_draw_actor_sp(actor, x, y, width)
  end
  #--------------------------------------------------------------------------
  # * Draw Exp
  #    actor : actor
  #    x    : draw spot x-coordinate
  #    y    : draw spot y-coordinate
  #--------------------------------------------------------------------------
  alias trick_bars_base_exp draw_actor_exp
  def draw_actor_exp(actor, x, y)
    min = actor.level == 99 ? 1 : actor.exp
    max = actor.level == 99 ? 1 : actor.next_exp_s.to_i
    draw_gradient_bar(x, y + 16, min, max, EXP_BAR, 192, 8)
    trick_bars_base_exp(actor, x, y)
  end
  #--------------------------------------------------------------------------
  # * Draw Parameter
  #    actor : actor
  #    x    : draw spot x-coordinate
  #    y    : draw spot y-coordinate
  #    type  : draw which parameter
  #--------------------------------------------------------------------------
  alias trick_bars_base_parameter draw_actor_parameter
  def draw_actor_parameter(actor, x, y, type)
    hue = HUES[type]
    stat = eval("actor.#{STATS[type]}")
    bar_type = eval("#{STATS[type].upcase}_BAR")
    draw_gradient_bar(x, y + 18, stat, 999, bar_type, 190, 8, hue)
    trick_bars_base_parameter(actor, x, y, type)
  end
end
=begin
#===============================================================================
# ** NeoABS HUD - www.unknowncoders.com
#-------------------------------------------------------------------------------
# Author    Mr.Mo "Muhammet Sivri"
# Version  1.2
# 10.16.06
#===============================================================================
# Credit to Trickster for his gradient bars!
#==============================================================================
UCoders.include("Enemy Bars",["1.2"])
class Enemy_Bars < Sprite
  #--------------------------------------------------------------------------
  # * Constants Bar Types and Hues for parameters and parameter names
  #--------------------------------------------------------------------------
  HP_BAR = "014-Reds01"
  # leave this alone if you don't know what you are doing
  OUTLINE = 1
  BORDER = 1
  HP_WIDTH = 30        # WIDTH of the HP Bar
  HP_HEIGHT = 5        # Height of the HP Bar
  #--------------------------------------------------------------------------
  # * Object Initialization
  #--------------------------------------------------------------------------
  def initialize(enemy, v)
    super(v)
    @enemy = enemy
    @old_hp = 0
    @old_x = 0
    @old_y = 0
    self.bitmap = Bitmap.new(HP_WIDTH, HP_HEIGHT)
    update   
  end
  #--------------------------------------------------------------------------
  # * Refresh
  #--------------------------------------------------------------------------
  def refresh
    #First move it
    @old_x = @enemy.event.screen_x-10
    @old_y = @enemy.event.screen_y
    self.x = @old_x
    self.y = @old_y
    #HP Bar Check
    return if @old_hp == @enemy.hp
    self.bitmap.clear
    @old_hp = @enemy.hp
    #Show the bar
    draw_gradient_bar(0,0,@enemy.hp,@enemy.maxhp,HP_BAR,HP_WIDTH,HP_HEIGHT)
  end 
  #--------------------------------------------------------------------------
  # * Something Changed?
  #--------------------------------------------------------------------------
  def something_changed?
    return dispose if @enemy.dead? or $NeoABS.enemies[@enemy.event_id].nil?
    return true if @old_hp != @enemy.hp
    return true if @old_x != @enemy.event.screen_x-10
    return true if @old_y != @enemy.event.screen_y
    return false
  end
  #--------------------------------------------------------------------------
  # * Update
  #--------------------------------------------------------------------------
  def update
    refresh if something_changed?
  end
  #--------------------------------------------------------------------------
  # * Draw Gradient Bar
  #--------------------------------------------------------------------------
  def draw_gradient_bar(x, y, min, max, file, width = nil, height = nil, hue = 0, back = "Back", back2 = "Back2")
    bar = RPG::Cache.gradient(file, hue)
    back = RPG::Cache.gradient(back)
    back2 = RPG::Cache.gradient(back2)
    cx = BORDER
    cy = BORDER
    dx = OUTLINE
    dy = OUTLINE
    zoom_x = width != nil ? width : back.width
    zoom_y = height != nil ? height : back.height
    percent = min / max.to_f if max != 0
    percent = 0 if max == 0
    back_dest_rect = Rect.new(x,y,zoom_x,zoom_y)
    back2_dest_rect = Rect.new(x+dx,y+dy,zoom_x -dx*2,zoom_y-dy*2)
    bar_dest_rect = Rect.new(x+cx,y+cy,zoom_x * percent-cx*2,zoom_y-cy*2)
    back_source_rect = Rect.new(0,0,back.width,back.height)
    back2_source_rect = Rect.new(0,0,back2.width,back2.height)
    bar_source_rect = Rect.new(0,0,bar.width* percent,bar.height)
    self.bitmap.stretch_blt(back_dest_rect, back, back_source_rect)
    self.bitmap.stretch_blt(back2_dest_rect, back2, back2_source_rect)
    self.bitmap.stretch_blt(bar_dest_rect, bar, bar_source_rect)
  end 
end
#============================================================================
# * Scene Map
#============================================================================
class Scene_Map
  #--------------------------------------------------------------------------
  alias mrmo_hpeny_scene_map_update update
  alias mrmo_hpeny_scene_map_main main
  #--------------------------------------------------------------------------
  # * Main Draw
  #--------------------------------------------------------------------------
  def main
    @enemys_hp = {}
    #Get Enemies
    $NeoABS.enemies.each_value { |e| e.bar_showing = false }
    mrmo_hpeny_scene_map_main
  end
  #--------------------------------------------------------------------------
  # * Update
  #--------------------------------------------------------------------------
  def update
    #Get Enemies
    $NeoABS.enemies.each_value { |e| next if e.nil?
      #if in screen
      if e.in_range?($game_player, 5) && !e.bar_showing && e.attacking_id > -1
        @enemys_hp[e.event.id] = Enemy_Bars.new(e,@spriteset.viewport3)
        e.bar_showing = true
      elsif e.bar_showing && !@enemys_hp[e.event.id].nil? && !(e.in_range?($game_player, 5) or e.attacking_id > -1)
        @enemys_hp[e.event.id].dispose unless @enemys_hp[e.event.id].disposed?
        @enemys_hp[e.event.id] = nil
        e.bar_showing = false
      end
    }
    #Update HP BARS
    @enemys_hp.each_value { |bar| bar.update if !bar.nil? && !bar.disposed? }
    mrmo_hpeny_scene_map_update
  end
end
#============================================================================
# * ABS Enemy
#============================================================================
class ABS_Enemy < Game_Battler
  #--------------------------------------------------------------------------
  attr_accessor :bar_showing
  #--------------------------------------------------------------------------
  alias mrmo_hpeny_abs_enemy_initialize initialize
  #--------------------------------------------------------------------------
  # * Object Initialization
  #--------------------------------------------------------------------------
  def initialize(enemy_id,e)
    mrmo_hpeny_abs_enemy_initialize(enemy_id,e)
    @bar_showing = false
  end
end
#==============================================================================
# ** Spriteset_Map
#------------------------------------------------------------------------------
#  This class brings together map screen sprites, tilemaps, etc.
#  It's used within the Scene_Map class.
#==============================================================================
class Spriteset_Map
  attr_accessor :viewport3
end
=end

And this is a link to Mr.Mo´s topic:

http://www.rmxp.org/forums/index.php?topic=36268.0


I would be really thankful if anyone could find the time to help me out!

Cheers
 
Anyone?

By the way, this is the old HUD from Mr.Mo ABS EVE (made by Mr.Mo and Axerax):

#==============================================================================
# ** HUD
#------------------------------------------------------------------------------
# Mr.Mo "Muhammet Sivri" & Axerax
# Version 1.8
# 10.01.06
# Credit: Prexus for the Original Background. Axerax for edited HUD Background.
# Axerax for HUD Display,Mini-Map Backdrop HUD, and Hotkeys HUD.
# Notes: Be sure you have the Selwyn Passability Mini-Map before trying to use
# this version of the HUD. As well follow steps provided by Selwyn in his script
# to display the Mini-Map itself, my HUD will not display it for you, it is only
# a backdrop that displays the name of the map you are currently on.
#==============================================================================
#-------------------------------------------------------------------------------
# Begin SDK Enabled Check
#-------------------------------------------------------------------------------
if SDK.enabled?("Mr.Mo's ABS")
#--------------------------------------------------------------------------
# * Constants - MAKE YOUR EDITS HERE
#--------------------------------------------------------------------------
HP_X = 54            # X POS of the HP Bar
HP_Y = 3              # Y POS of the HP Bar
HP_WIDTH = 55        # WIDTH of the HP Bar
HP_HEIGHT = 5        # Height of the HP Bar
#--------------------------------------------------------------------------
SP_X = 54            # X POS of the SP Bar
SP_Y = 22            # Y POS of the SP Bar
SP_WIDTH = 55        # WIDTH of the SP Bar
SP_HEIGHT = 5        # Height of the SP Bar
#--------------------------------------------------------------------------
EXP_X = 55            # X POS of the EXP Bar
EXP_Y = 42            # Y POS of the EXP Bar
EXP_WIDTH = 60        # WIDTH of the EXP Bar
EXP_HEIGHT = 5        # Height of the EXP Bar
#--------------------------------------------------------------------------
STATES_SHOW = true    # Show states?
STATES_X = 170        # States X display
STATES_Y = 430        # States Y display
#--------------------------------------------------------------------------
HOTKEYS_SHOW = true  #Show hotkeys?
HOTKEYS_X = 180      #Hotkeys X Display
HOTKEYS_Y = 440      #Hotkeys Y Display
#--------------------------------------------------------------------------
SHOW_DASH = true      # Show dash bar?
DASH_X = 95          # X POS of the DASH Bar
DASH_Y = 430          # Y POS of the DASH Bar
DASH_WIDTH = 55      # WIDTH of the DASH Bar
DASH_HEIGHT = 5      # Height of the DASH Bar
DASH_BAR = "018-Simple03" # The file used for gradient
#--------------------------------------------------------------------------
SHOW_SNEAK = true      # Show SNEAK bar?
SNEAK_X = 95          # X POS of the SNEAK Bar
SNEAK_Y = 445          # Y POS of the SNEAK Bar
SNEAK_WIDTH = 55      # WIDTH of the SNEAK Bar
SNEAK_HEIGHT = 5      # Height of the SNEAK Bar
SNEAK_BAR = "019-Simple04" # The file used for gradient
#--------------------------------------------------------------------------
LOW_HP = 150          # What HP should the low HP icon be shown?
#--------------------------------------------------------------------------
HP_ITEMID = 1        # POTION ITEM ID
SP_ITEMID = 4        # SP Increase Item ID
#--------------------------------------------------------------------------
CAN_TOGGLE = true
TOGGLE_KEY = Input::Letters["E"]
#--------------------------------------------------------------------------
MINI_MAP = true      # Display Mini-Map?
#--------------------------------------------------------------------------
class Window_MrMo_HUD < Window_Base
  #--------------------------------------------------------------------------
  # * Object Initialization
  #--------------------------------------------------------------------------
  def initialize
    super(-16, -16, 700, 700)
    #Record Old Data
    @actor = $game_party.actors[0]
    @old_hp = @actor.hp
    @old_sp = @actor.sp
    @old_exp = @actor.exp
    @level = @actor.level
    @hp_n = $game_party.item_number(HP_ITEMID)
    @sp_n = $game_party.item_number(SP_ITEMID)
    @gold_n = $game_party.gold
    @states = @actor.states.to_s
    @dash = $ABS.dash_min
    @sneak = $ABS.sneak_min
    #Create Bitmap
    self.contents = Bitmap.new(width - 32, height - 32)
    #Hide Window
    self.opacity = 0
    #Refresh
    refresh
  end
  #--------------------------------------------------------------------------
  # * Refresh
  #--------------------------------------------------------------------------
  def refresh
    self.contents.clear
    self.contents.font.color = system_color
    self.contents.font.color = normal_color
    self.contents.font.size = 12
    #Record new data
    @actor = $game_party.actors[0]
    @old_hp = @actor.hp
    @old_sp = @actor.sp
    @old_exp = @actor.exp
    @level = @actor.level
    @hp_n = $game_party.item_number(HP_ITEMID)
    @sp_n = $game_party.item_number(SP_ITEMID)
    @gold_n = $game_party.gold
    @states = @actor.states.to_s
    @dash = $ABS.dash_min
    @sneak = $ABS.sneak_min
    @time = game_time
    @time = $kts.time.to_s if $kts != nil
    #Show the Pictures
    bitmap = RPG::Cache.picture("HUD Graphic")
    self.contents.blt(0, 0, bitmap, Rect.new(0, 10, 175, 175))
    bitmap = RPG::Cache.picture("HUD Display")
    self.contents.blt(15, 380, bitmap, Rect.new(0, 0, 175, 175))
    bitmap = RPG::Cache.picture("HUD Time Display")
    self.contents.blt(553.5, 338.5, bitmap, Rect.new(0, 0, 175, 175))
    bitmap = RPG::Cache.picture("Hotkeys HUD")
    self.contents.blt(250, -10, bitmap, Rect.new(0, 0, 400, 80))
    if MINI_MAP
      bitmap = RPG::Cache.picture("Mini-Map HUD")
      self.contents.blt(493, 362.5, bitmap, Rect.new(0, 0, 175, 175))
      #Show Map Name
      map_infos = load_data("Data/MapInfos.rxdata")
      name = map_infos[$game_map.map_id].name.to_s
      self.contents.draw_text(520, 455, 400, 32, name.to_s)
    end
    #Show the HP Symbol
    bitmap = RPG::Cache.icon("HP Symbol")
    self.contents.blt(0, -2, bitmap, Rect.new(0, 0, 24, 24))
    self.contents.draw_text(35, -9, 640, 32, "HP")
    #Draw the HP BAR
    draw_gradient_bar(HP_X, HP_Y, @actor.hp, @actor.maxhp, HP_BAR, HP_WIDTH, HP_HEIGHT)
    #Show the SP Symbol
    bitmap = RPG::Cache.icon("SP Symbol")
    self.contents.blt(0, 18, bitmap, Rect.new(0, 0, 24, 24))
    self.contents.draw_text(35, 11, 640, 32, "SP")
    #Draw the SP Bar
    draw_gradient_bar(SP_X, SP_Y, @actor.sp, @actor.maxsp, SP_BAR, SP_WIDTH, SP_HEIGHT)
    #Show the EXP Symbol
    bitmap = RPG::Cache.icon("EXP Symbol")
    self.contents.blt(0, 37, bitmap, Rect.new(0, 0, 24, 24))
    self.contents.draw_text(35, 30, 640, 32, "EXP")
    #Draw the EXP Bar
    min = @actor.level == 99 ? 1 : @actor.now_exp
    max = @actor.level == 99 ? 1 : @actor.next_exp
    draw_gradient_bar(EXP_X, EXP_Y, min, max, EXP_BAR, EXP_WIDTH, EXP_HEIGHT)
    #Show Hero Icon
    bitmap = RPG::Cache.icon("Hero")
    self.contents.blt(2, 59, bitmap, Rect.new(0, 0, 24, 24))
    self.contents.draw_text(35, 49, 640, 32, "Hero:")
    self.contents.draw_text(30, 59, 640, 32, @actor.name.to_s)
    #Show Level Icon
    bitmap = RPG::Cache.icon("Level")
    self.contents.blt(2, 81, bitmap, Rect.new(0, 0, 24, 24))
    self.contents.draw_text(33, 72, 640, 32, "Level:")
    self.contents.draw_text(43, 82, 640, 32, @actor.level.to_s)
    #Show Gold Icon
    bitmap = RPG::Cache.icon("Gold")
    self.contents.blt(35, 390, bitmap, Rect.new(0, 0, 24, 24))
    self.contents.draw_text(30, 400, 640, 32, $game_party.gold.to_s)
    #Show Clock
    self.contents.font.color = system_color
    self.contents.font.color = normal_color
    self.contents.font.size = 14
    self.contents.draw_text(570, 270, 175, 175, @time.to_s)
    #If the HP is too low
    if @actor.hp.to_i <= LOW_HP
      bitmap = RPG::Cache.icon("Skull")
      self.contents.blt(130, 0, bitmap, Rect.new(0, 0, 24, 24))
    end
    #If the SP Item is more then 0
    if $game_party.item_number(SP_ITEMID) > 0
      bitmap = RPG::Cache.icon("SP Potion")
      self.contents.blt(110, 20, bitmap, Rect.new(0, 0, 24, 24))
    end
    #if the HP Item is more then 0
    if $game_party.item_number(HP_ITEMID) > 0
      bitmap = RPG::Cache.icon("HP Potion")
      self.contents.blt(110, 0, bitmap, Rect.new(0, 0, 24, 24))
    end
    if STATES_SHOW
      begin
        #Draw States Background
        n = -2
        for id in @actor.states
          state = $data_states[id]
          next if state == nil
          bitmap = RPG::Cache.picture("States Display")
          x = (n*40) + 185
          self.contents.blt(x, 50, bitmap, Rect.new(0, 0, 49, 58))
          n += 1
        end
        #Draw States
        n = -2
        for id in @actor.states
          state = $data_states[id]
          next if state == nil
          bitmap = RPG::Cache.icon(state.name+"_Icon")
          x = (n*40) + +195
          self.contents.blt(x, 65, bitmap, Rect.new(0, 0, 24, 24))
          self.contents.draw_text(x, 66.5, 49, 58, state.name.to_s)
          n += 1
        end
      rescue
        print "#{$!} - Don't ask Mr.Mo for it!!!"
      end
    end
    if HOTKEYS_SHOW
      #Draw Hotkeys
      count = 0
      #Make a loop to get all the ideas that are Hotkeyed
      @actor.skill_keys.each {|key, id|
        #Skip NIL values
        next if id == nil
        x = (count*32) + 280
        #Get skill
        skill = $data_skills[id]
        # Next if skill is nil
        next if skill.nil?
        #Get Icon
        icon = RPG::Cache.icon(skill.icon_name)
        self.contents.blt(x, 27, icon, Rect.new(0, 0, 200, 100))
        #self.contents.draw_text(x, 33, 49, 58, skill.name.to_s)
        n = Keys.name?(key)
        self.contents.draw_text(x+10, 33, 49, 58, "#{n}")
        #Increase Count
        count += 1
      }
    end
    #Change font size
    self.contents.font.size = 20
    #Dash Bar
    self.contents.draw_text(DASH_X - 40, DASH_Y-10, 40, 32, "") if SHOW_DASH
    draw_gradient_bar(DASH_X, DASH_Y, $ABS.dash_min, $ABS.dash_max, DASH_BAR, DASH_WIDTH, DASH_HEIGHT) if SHOW_DASH
    #SNEAK Bar
    self.contents.draw_text(SNEAK_X - 40, SNEAK_Y-10, 40, 32, "") if SHOW_SNEAK
    draw_gradient_bar(SNEAK_X, SNEAK_Y, $ABS.sneak_min, $ABS.sneak_max, SNEAK_BAR, SNEAK_WIDTH, SNEAK_HEIGHT) if SHOW_SNEAK
  end
  #--------------------------------------------------------------------------
  # * Update
  #--------------------------------------------------------------------------
  def update
    refresh if something_changed?
  end
  #--------------------------------------------------------------------------
  # * Something Changed?
  #--------------------------------------------------------------------------
  def something_changed?
    return false if Graphics.frame_count % 30 != 0
    return true if @actor != $game_party.actors[0]
    return true if @old_hp != @actor.hp or @old_sp != @actor.sp or @old_exp != @actor.exp
    return true if @level != @actor.level
    return true if @hp_n != $game_party.item_number(HP_ITEMID) or @sp_n != $game_party.item_number(SP_ITEMID)
    return true if @gold_n != $game_party.gold
    return true if @states.to_s != @actor.states.to_s
    return true if @dash != $ABS.dash_min or @sneak != $ABS.sneak_min
    return true if $kts != nil and @time != $kts.time.to_s
    return true if $kts == nil and @time != game_time
    return false
  end
  #--------------------------------------------------------------------------
  # * Game Time
  #--------------------------------------------------------------------------
  def game_time
    total_sec = Graphics.frame_count / Graphics.frame_rate
    hour = total_sec / 60 / 60
    min = total_sec / 60 % 60
    sec = total_sec % 60
    text = sprintf("%02d:%02d:%02d", hour, min, sec)
    return text
  end
  #--------------------------------------------------------------------------
  def CAN_TOGGLE
    return CAN_TOGGLE
  end
  #--------------------------------------------------------------------------
  def TOGGLE_KEY
    return TOGGLE_KEY
  end
end
#==============================================================================
# * Scene_Map
#==============================================================================
class Scene_Map
  #--------------------------------------------------------------------------
  alias mrmo_hud_main_window main_window
  alias mrmo_keyhud_update update
  #--------------------------------------------------------------------------
  # * Main Draw
  #--------------------------------------------------------------------------
  def main_window
    @mrmo_hud = Window_MrMo_HUD.new
    mrmo_hud_main_window
  end
  #--------------------------------------------------------------------------
  # * Turn HUD Show
  #--------------------------------------------------------------------------
  def hud_show
    @mrmo_hud.visible = true
  end
  #--------------------------------------------------------------------------
  # * Turn HUD Hide
  #--------------------------------------------------------------------------
  def hud_hide
    @mrmo_hud.visible = false
  end
  #--------------------------------------------------------------------------
  # * Update
  #--------------------------------------------------------------------------
  def update
    mrmo_keyhud_update
    if @mrmo_hud.CAN_TOGGLE and Input.trigger?(@mrmo_hud.TOGGLE_KEY)
      return @mrmo_hud.visible = true if !@mrmo_hud.visible
      return @mrmo_hud.visible = false if @mrmo_hud.visible
    end
  end
end
#--------------------------------------------------------------------------
# * SDK End
#--------------------------------------------------------------------------
end
class Game_Actor
  #--------------------------------------------------------------------------
  # * Get the current EXP
  #--------------------------------------------------------------------------
  def now_exp
    return @exp - @exp_list[@level]
  end
  #--------------------------------------------------------------------------
  # * Get the next level's EXP
  #--------------------------------------------------------------------------
  def next_exp
    exp = @exp_list[@level+1] > 0 ? @exp_list[@level+1] - @exp_list[@level] : 0
    return exp
  end
end

Does that help?
 

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