Introduction
Has this ever happened to you? You're making an RPG Maker XP game, and suddenly you cringe at how unorganised the default status screen looks. It's awful! Just a bunch of stats scattered on top of a boring-looking window. Haven't you had enough of it?
Well cringe no more! For I have a solution! Introducing the Better Status Menu! (imaginative name right?)
This script will take the status menu that you know and hate, and make it more organised, with windows surrounding important details, and lo and behold, a bio section for each character! (which you can turn off if you don't want it)
I am glad to announce that this script has absolutely no prerequisites.
In other words, you don't need any other script to get it to work.
What're you waiting for? Copy the script below and stop suffering! And also... start looking at the status menu for an eternity because it looks so good, I don't know. Whatever floats your boat.
Screenshots
Script
Script
Code:
# ***** BETTER STATUS WINDOW *****
# A script by Travis F.
# (c) 2018 Zetaform Games / Travis F.
#
# Feel free to use this script in any game you want.
# No, seriously. Any game. Even if it goes commercial!
# (Though a bit of credit would be nice in that case...)
#==============================================================================
#
#
# This script will organise the status screen into different windows,
# so that it'll look neater. It also adds a profile section, called the
# Bio in this script, that you can turn off if you wish.
# Install this script above Main.
#
# Configuration:
# This switch will enable/disable
# the bio at the bottom of the status screen.
SHOWBIO = true
# Now configure the bio entries here.
def get_actor_bio()
case
when @actor.name == "Aluxes" then
l0 = "Age 30"
l1 = "An excellent fighter."
l2 = "Wards off the undead with his"
l3 = "expertly-crafted blade."
when @actor.name == "Basil" then
l0 = "Age 32"
l1 = "Having worked as a castle"
l2 = "guard before, his skills"
l3 = "are the best of the best."
when @actor.name == "Gloria" then
l0 = "Age 26"
l1 = "A reliable cleric."
l2 = "Very confident about what"
l3 = "she gets herself into."
when @actor.name == "Hilda" then
l0 = "Age 36"
l1 = "She's been trained in"
l2 = "using magic attacks."
l3 = "They do lots of damage!"
end
self.contents.draw_text(64, 0, 192, 24, l0, 2)
self.contents.draw_text(0, 24, 320, 32, l1)
self.contents.draw_text(0, 48, 320, 32, l2)
self.contents.draw_text(0, 72, 320, 32, l3)
end
# That's it! You're done!
# This status window will display basic stats about the current actor.
# It will be on the left side.
#==============================================================================
# ** Window_Status
#------------------------------------------------------------------------------
# This window displays full status specs on the status screen.
#==============================================================================
#==============================================================================
# This status window displays the EXP of the current actor.
# It will be in the upper right corner.
#==============================================================================
# ** Window_Status
#------------------------------------------------------------------------------
# This window displays full status specs on the status screen.
#==============================================================================
#==============================================================================
# This status window displays equipped items of the current actor.
# It will be to the right centre.
# If the Bio is disabled, it will take up the rest of the vertical space.
#==============================================================================
# ** Window_Status
#------------------------------------------------------------------------------
# This window displays full status specs on the status screen.
#==============================================================================
#==============================================================================
# This window will display the bio, if enabled.
# Configure bio entries here.
#==============================================================================
# ** Window_Status
#------------------------------------------------------------------------------
# This window displays full status specs on the status screen.
#==============================================================================
class Window_StatusBio < Window_Base
#--------------------------------------------------------------------------
# * Object Initialization
# actor : actor
#--------------------------------------------------------------------------
def initialize(actor)
super(320, 336, 320, 144)
self.contents = Bitmap.new(width - 32, height - 32)
@actor = actor
refresh
end
#--------------------------------------------------------------------------
# * Refresh
#--------------------------------------------------------------------------
def refresh
self.contents.clear
self.contents.font.color = system_color
self.contents.draw_text(0, 0, 48, 24, "Bio:")
self.contents.font.color = normal_color
get_actor_bio()
end
end
#==============================================================================
# Replace the Status Scene to fit the new windows.
#==============================================================================
# ** Scene_Status
#------------------------------------------------------------------------------
# This class performs status screen processing.
#==============================================================================
class Scene_Status
#--------------------------------------------------------------------------
# * Object Initialization
# actor_index : actor index
#--------------------------------------------------------------------------
def initialize(actor_index = 0, equip_index = 0)
@actor_index = actor_index
end
#--------------------------------------------------------------------------
# * Main Processing
#--------------------------------------------------------------------------
def main
# Get actor
@actor = $game_party.actors[@actor_index]
# Make status window
@status_window = Window_Status.new(@actor)
@status_window_top = Window_StatusTop.new(@actor)
if SHOWBIO == true
@status_window_bio = Window_StatusBio.new(@actor)
end
@status_window_bottom = Window_StatusBottom.new(@actor)
# Execute transition
Graphics.transition
# Main loop
loop do
# Update game screen
Graphics.update
# Update input information
Input.update
# Frame update
update
# Abort loop if screen is changed
if $scene != self
break
end
end
# Prepare for transition
Graphics.freeze
# Dispose of windows
@status_window.dispose
@status_window_top.dispose
if SHOWBIO == true
@status_window_bio.dispose
end
@status_window_bottom.dispose
end
#--------------------------------------------------------------------------
# * Frame Update
#--------------------------------------------------------------------------
def update
# If B button was pressed
if Input.trigger?(Input::B)
# Play cancel SE
$game_system.se_play($data_system.cancel_se)
# Switch to menu screen
$scene = Scene_Menu.new(3)
return
end
# If R button was pressed
if Input.trigger?(Input::R)
# Play cursor SE
$game_system.se_play($data_system.cursor_se)
# To next actor
@actor_index += 1
@actor_index %= $game_party.actors.size
# Switch to different status screen
$scene = Scene_Status.new(@actor_index)
return
end
# If L button was pressed
if Input.trigger?(Input::L)
# Play cursor SE
$game_system.se_play($data_system.cursor_se)
# To previous actor
@actor_index += $game_party.actors.size - 1
@actor_index %= $game_party.actors.size
# Switch to different status screen
$scene = Scene_Status.new(@actor_index)
return
end
end
end
Instructions
Simply place this script above Main. That's it!
Terms and Conditions
This script is completely free to use in any game. Yes, even commercial!
(Just give credit if you're going commercial... please? Too many people steal my stuff.)
RE: Soul's Better Status Screen - Kain Nobel - 12-16-2018
I like how you arranged everything. Mini biography and age are neat additions. It looks like you might be able to adjust the two windows a bit and add one additional line to the bio. Would that cause the icon for the Accessory slot to be obscured? Either way, this is a lot better than the default status window, very cool!
(12-16-2018, 11:15 AM)Kain Nobel Wrote: I like how you arranged everything. Mini biography and age are neat additions. It looks like you might be able to adjust the two windows a bit and add one additional line to the bio. Would that cause the icon for the Accessory slot to be obscured? Either way, this is a lot better than the default status window, very cool!
Thank you for your feedback! As for the bio window, originally the impetus for this script was one of my games, which used a much larger font. So when I ported it to the standard RTP, everything became smaller. Maybe I could adjust some things to add a fourth bio line? I'll see what I can do!
Alternatively, I've been toying around with placement and discovered a way to create even longer bios than this, by using the entire bottom of the screen. How do you feel about this? Maybe I could add an option to switch between the two styles?
(12-16-2018, 11:15 AM)Kain Nobel Wrote: I like how you arranged everything. Mini biography and age are neat additions. It looks like you might be able to adjust the two windows a bit and add one additional line to the bio. Would that cause the icon for the Accessory slot to be obscured? Either way, this is a lot better than the default status window, very cool!
Thank you for your feedback! As for the bio window, originally the impetus for this script was one of my games, which used a much larger font. So when I ported it to the standard RTP, everything became smaller. Maybe I could adjust some things to add a fourth bio line? I'll see what I can do!
Alternatively, I've been toying around with placement and discovered a way to create even longer bios than this, by using the entire bottom of the screen. How do you feel about this? Maybe I could add an option to switch between the two styles?
(12-16-2018, 07:28 PM)SoulZetaformGames Wrote: (Snipped to avoid using a giant quote box)
Alternatively, I've been toying around with placement and discovered a way to create even longer bios than this, by using the entire bottom of the screen. How do you feel about this? Maybe I could add an option to switch between the two styles?
Potentially alternate design? (No borders)
I absolutely LOVE the alternate design!
Thanks for your feedback! I'll polish this up a bit and see where this design goes, then.
RE: Soul's Better Status Screen - kyonides - 12-17-2018
I dunno, it still looks quite RTP-ish so a refreshing design or data distribution would be ideal in my humble opinión, not like I were any master designer...
Bump! Very minor update to the script: now you configure the bios at the top of the script rather than at the bottom. Not sure why I didn't set it up to be that way earlier, but better three years late than never.
RE: Soul's Better Status Screen - kyonides - 11-11-2021
Have you ever considered letting the game developers set the actual coordinates of the three windows to the right?
You could create a module and place your only Constant and the get_actor_bio method there as well.
As an implicit rule, any rubyist avoids creating CONSTANTS that would behave just like $global variables by defining them outside of any specific module or class. By the way, the get_actor_bio method is globally accessible as well. That usually means it is a real memory monger!
TIPS
Don't end a when condition with then. You only use it if you are writing one line of code there, immediately followed by another when condition.
Methods that pass NO argument alias parameter don't need empty parentheses () at the end of their names. In Python or C and C++ you need them but never in Ruby and RGSS.
By the way, don't worry, SoulZeta! It's normal to revisit a script or two every so often.