It's a great script and exactly what I am looking for. I just want that window to stay put and have battle messages show up at the top in a dimmed window is all. I have tried a few scripts that do put the battle messages up top, but when the messages go up top, the bottom HUD window disappears until the end of the round.
Battle HUD:
#===============================================================================
#
# Battler HUD
# Version 3.0
# By Pacman (rmrk.net)
# Description: There are a lot of battle scripts for VX out there, and they're
# mostly fantastic. However, they all require so much configuration. This script
# is the ultimate plug-and-play battle HUD: all you have to do is put it in the
# editor and alter one thing if you really want to. This script simply puts the
# actor's defined face into the battle window along with their HP and MP.
# There is now also a HUD for the enemy selection part of battle. It contains
# the enemies' names, HPs, MPs and states. You can prevent the HUD from drawing
# these values buy placing certain tags in the enemy's notebox:
#
# UNKNOWN_STATUS - Nothing is drawn.
# UNKNOWN_STATE - The states are not drawn.
# UNKNOWN_NAME - The name is not drawn.
# UNKNOWN_HP - The HP is not drawn.
# UNKNOWN_MP - The MP is not drawn.
#
# Instructions: Put this script under materials and above main in the script
# editor. Change CharOpa to the desired opactiy if you wish, and let the
# script do the rest. You can also change the font type, size and colour in the
# configuration.
#
# Support: I reside almost ever-presently at rmrk.net.
#
#===============================================================================
module PacBFH # <- Do not touch
#-------------------------------------------------------------------------------
# EDITING SECTION
#-------------------------------------------------------------------------------
USE_ACTOR = true # Use actor HUD?
USE_ENEMY = true # Use enemy HUD?
CharOpa = 150 # Default 150
ORIG_COLOURS = true # Use original HP/MP colours or my new colours?
Colour = [255, 255, 255] # RGB(A) values, separated by commas.
Size = 17 # Size of the name text
Font = "Verdana" # Font of the name text
HPMP_SIZE = false # Does 'size' apply to the drawing of HP and MP?
#-------------------------------------------------------------------------------
# END EDITING SECTION
#-------------------------------------------------------------------------------
end
if PacBFH::USE_ACTOR
#==============================================================================
# ** Window_BattleStatus
#------------------------------------------------------------------------------
# This window displays the status of all party members on the battle screen.
#==============================================================================
class Window_BattleStatus < Window_Selectable
#--------------------------------------------------------------------------
# Alias listing
#--------------------------------------------------------------------------
alias pacman_WBS_ini initialize
#--------------------------------------------------------------------------
# * Object Initialization
#--------------------------------------------------------------------------
def initialize
super(0, 0, 416, 128, 1)
@column_max = $game_party.members.size
refresh
self.active = false
self.opacity = 255
self.cursor_rect.set(0, self.index * 96, 90, 90)
end
#--------------------------------------------------------------------------
# * Draw Item
# index : Item number
#--------------------------------------------------------------------------
def draw_item(index)
rect = item_rect(index)
rect.x += 4
rect.width -= 8
rect.height = 96
self.contents.clear_rect(rect)
self.contents.font.color = Color.new(*PacBFH::Colour)
self.contents.font.size = PacBFH::Size
self.contents.font.name = PacBFH::Font
actor = $game_party.members[index]
draw_actor_face2(actor, index * 96,0,80)
draw_actor_name(actor, index * 96 + 8, 0)
draw_actor_state(actor, index * 96 + 4, 32, 20)
self.contents.font.size = PacBFH::HPMP_SIZE ? PacBFH::Size : 14
draw_hp_and_mp(actor, index * 96, 50, 90)
self.contents.font.color = Font.default_color
self.contents.font.name = Font.default_name
self.contents.font.size = Font.default_size
end
#--------------------------------------------------------------------------
# * Frame update for cursor
#--------------------------------------------------------------------------
def update_cursor
if @index < 0
self.cursor_rect.empty
else
self.cursor_rect.set(index*96, 0, 90, 96)
end
end
end
#==============================================================================
# ** Window_Base
#------------------------------------------------------------------------------
# This is a superclass of all windows in the game.
#==============================================================================
class Window_Base < Window
#--------------------------------------------------------------------------
# * Secondary Method of drawing actor face
# actor : actor
# x : draw spot x-coordinate
# y : draw spot y-coordinate
# width : width of box
# height: height of box
#--------------------------------------------------------------------------
def draw_actor_face2(actor, x, y, width = 96, height = 96)
draw_face2(actor.face_name, actor.face_index, x, y, width, height)
end
#--------------------------------------------------------------------------
# * Secondary Method of drawing face graphics
# face_name : Face graphic filename
# face_index : Face graphic index
# x : draw spot x-coordinate
# y : draw spot y-coordinate
# width : width of box
# height : height of box
#--------------------------------------------------------------------------
def draw_face2(face_name, face_index, x, y, width = 96, height = 96)
bitmap = Cache.face(face_name)
rect = Rect.new(0, 0, 0, 0)
rect.x = face_index % 4 * 96 + (96 - width) / 2
rect.y = face_index / 4 * 96 + (96 - height) / 2
rect.width = width
rect.height = height -10
self.contents.blt(x + 5, y + 5, bitmap, rect, PacBFH::CharOpa)
bitmap.dispose
end
#--------------------------------------------------------------------------
# * Draw Actor HP and MP
# actor : actor whose stats are to be drawn
# x : draw spot x-coordinate
# y : draw spot y_coordinate
# width : width of draw spot
#--------------------------------------------------------------------------
def draw_hp_and_mp(actor, x, y, width)
if PacBFH::ORIG_COLOURS
back_color = gauge_back_color
hp_color1 = hp_gauge_color1
hp_color2 = hp_gauge_color2
mp_color1 = mp_gauge_color1
mp_color2 = mp_gauge_color2
else
back_color = Color.new(39, 58, 83, 255)
hp_color1 = Color.new(66, 114, 164, 255)
hp_color2 = Color.new(122, 175, 229, 255)
mp_color1 = Color.new(93, 50, 158, 255)
mp_color2 = Color.new(145, 122, 229, 255)
end
self.contents.fill_rect(x + 5, y + 15, width - 10, 7, back_color)
self.contents.gradient_fill_rect(x + 7, y + 17, (width - 14) * actor.hp /
actor.maxhp, 3, hp_color1, hp_color2)
self.contents.draw_text(x + 5, y, width - 10, 20, Vocab::hp, 0)
self.contents.draw_text(x + 5, y, width - 10, 20, actor.hp.to_s + "/" +
actor.maxhp.to_s, 2)
self.contents.fill_rect(x + 5, y + 35, width - 10, 7, back_color)
if actor.maxmp != 0
self.contents.gradient_fill_rect(x + 7, y + 37, (width - 14) * actor.mp /
actor.maxmp, 3, mp_color1, mp_color2)
else
self.contents.gradient_fill_rect(x + 7, y + 37, (width - 14) * actor.mp,
3, mp_color1, mp_color2)
end
self.contents.draw_text(x + 5, y + 20, width - 10, 20, Vocab::mp, 0)
self.contents.draw_text(x + 5, y + 20, width - 10, 20,
actor.mp.to_s + "/" + actor.maxmp.to_s, 2)
end
end
end
if PacBFH::USE_ENEMY
#==============================================================================
# ** Window_TargetEnemy
#------------------------------------------------------------------------------
# Window for selecting the enemy who is the action target on the battle
# screen.
#==============================================================================
class Window_TargetEnemy < Window_Command
#--------------------------------------------------------------------------
# * Object Initialization
#--------------------------------------------------------------------------
def initialize
@enemies = []
commands = []
$game_troop.members.each do |enemy|
next unless enemy.exist?
@enemies.push(enemy)
commands.push(enemy.name)
end
super(416, commands)
self.height = 128
end
#--------------------------------------------------------------------------
# * Get Enemy Object
#--------------------------------------------------------------------------
def enemy
return @enemies[@index]
end
#--------------------------------------------------------------------------
# * Draw Item
# index : item number
#--------------------------------------------------------------------------
def draw_item(index)
rect = item_rect(index)
rect.x += 4
rect.width -= 8
self.contents.clear_rect(rect)
self.contents.font.color = normal_color
actor = @enemies[index]
unless actor.stat_note?('UNKNOWN_STATUS')
draw_actor_name(actor, 4, rect.y) unless actor.stat_note?('UNKNOW_NAME')
unless actor.stat_note?('UNKNOWN_STATUS')
draw_actor_state(actor, 114, rect.y, 48)
end
unless actor.stat_note?('UNKNOWN_HP')
draw_actor_hp(actor, 174, rect.y, 120)
end
unless actor.stat_note?('UNKNOWN_MP')
draw_actor_mp(actor, 310, rect.y, 70)
end
end
end
end
#==============================================================================
# ** Game_Enemy
#------------------------------------------------------------------------------
# This class handles enemy characters. It's used within the Game_Troop class
# ($game_troop).
#==============================================================================
class Game_Enemy < Game_Battler
#--------------------------------------------------------------------------
# Public Instance Variables
#--------------------------------------------------------------------------
attr_reader :status_note
#--------------------------------------------------------------------------
# Alias listing
#--------------------------------------------------------------------------
alias pac_unstat_ini initialize
#--------------------------------------------------------------------------
# * Object Initialization
#--------------------------------------------------------------------------
def initialize(*args)
pac_unstat_ini(*args)
@status_note = enemy.note
end
#--------------------------------------------------------------------------
# * Get tag from enemy note
#--------------------------------------------------------------------------
def stat_note?(note)
return @status_note.include?(note)
end
end
end
#===============================================================================
#
# END OF SCRIPT
#
#===============================================================================
[\code]
Battle Message Script:
#==============================================================================
# ** Window_BattleMessage
#------------------------------------------------------------------------------
# Message window displayed during battle. In addition to the normal message
# window functions, it also has a battle progress narration function.
#==============================================================================
class Window_BattleMessage < Window_Message
#--------------------------------------------------------------------------
# * Object Initialization
#--------------------------------------------------------------------------
def initialize
super
self.openness = 255
@lines = []
refresh
end
#--------------------------------------------------------------------------
# * Dispose
#--------------------------------------------------------------------------
def dispose
super
end
#--------------------------------------------------------------------------
# * Frame Update
#--------------------------------------------------------------------------
def update
super
end
#--------------------------------------------------------------------------
# * Open Window (disabled)
#--------------------------------------------------------------------------
def open
end
#--------------------------------------------------------------------------
# * Close Window (disabled)
#--------------------------------------------------------------------------
def close
end
#--------------------------------------------------------------------------
# * Set Window Background and Position
#--------------------------------------------------------------------------
def reset_window
@background = 0
@position = 0
if @background == 255 # Normal window
self.opacity = 255
else # Dim Background and Make it Transparent
self.opacity = 0
end
case @position
when 0 # Top
self.y = 0
when 1 # Middle
self.y = 144
when 2 # Bottom
self.y = 288
end
end
#--------------------------------------------------------------------------
# * Clear
#--------------------------------------------------------------------------
def clear
@lines.clear
refresh
end
#--------------------------------------------------------------------------
# * Get Row Count
#--------------------------------------------------------------------------
def line_number
return @lines.size
end
#--------------------------------------------------------------------------
# * Go Back One Line
#--------------------------------------------------------------------------
def back_one
@lines.pop
refresh
end
#--------------------------------------------------------------------------
# * Return to Designated Line
# line_number : Line number
#--------------------------------------------------------------------------
def back_to(line_number)
while @lines.size > line_number
@lines.pop
end
refresh
end
#--------------------------------------------------------------------------
# * Add Text
# text : Text to be added
#--------------------------------------------------------------------------
def add_instant_text(text)
@lines.push(text)
refresh
end
#--------------------------------------------------------------------------
# * Replace Text
# text : Text to be replaced
# Replaces the last line with different text.
#--------------------------------------------------------------------------
def replace_instant_text(text)
@lines.pop
@lines.push(text)
refresh
end
#--------------------------------------------------------------------------
# * Get Text From Last Line
#--------------------------------------------------------------------------
def last_instant_text
return @lines[-1]
end
#--------------------------------------------------------------------------
# * Refresh
#--------------------------------------------------------------------------
def refresh
self.contents.clear
for i in 0...@lines.size
draw_line(i)
end
end
#--------------------------------------------------------------------------
# * Draw Line
# index : Line number
#--------------------------------------------------------------------------
def draw_line(index)
rect = Rect.new(0, 0, 0, 0)
rect.x += 4
rect.y += index * WLH
rect.width = contents.width - 8
rect.height = WLH
self.contents.clear_rect(rect)
self.contents.font.color = normal_color
self.contents.draw_text(rect, @lines[index])
end
end
[\code]