public

Rpg Maker Developers Group

Simple enough for a child, powerful enough for a developer

2 Followers

VXACEdbchest's MenuStatus

BMM Archive · July 15, 2026

Preserved forum archive. This topic stores the original first post and locally mirrored RPG Maker Web attachments when available. It is posted by the BMMPlay archive account, not by the original creator.

Original Source

  • Original title: dbchest's MenuStatus
  • Original author: dbchest
  • Original date: October 5, 2013
  • Source thread: https://forums.rpgmakerweb.com/threads/dbchests-menustatus.18754/
  • Source forum path: Game Development Engines > Ruby Game System (RGSS) Scripts > RGSS3 Scripts (RMVX Ace)

Summary

Menu Status v1.1 by dbchest   Introduction

Archived First Post

Menu Status v1.1

by dbchest

 

Introduction

dbchest's Menu Status is an aesthetic enhancement to the engine's default menu status display. introducing this script to your project will not affect gameplay directly.

 

Features

- four layouts to choose from.
- aligned layout (presets 1 and 3).
- staggered layout (presets 2 and 4).
- animated actor charasets (presets 3 and 4).
- icon display depicting actor class (presets 3 and 4).
- additional rate gauges:
  -  experience needed to reach next level.
  -  current level in relation to maximum level. 

Screenshots











 

How to Use

plug and play

insert below default scripts, above main

 

Demo

link to official demo:

http://www.mediafire.com/download/uemhtwbflibn73b/dbchest's_Menu_Status_v1.1_(final).exe

 

Script

#==============================================================================# * dbchest's MenuStatus (v1.1)#==============================================================================# ** Credits (Freeware)#------------------------------------------------------------------------------# a list of credits for those involved in the production of said script. you# are responsible for crediting those mentioned. you do not have to credit my# special mentions. they are being thanked for their help now.#------------------------------------------------------------------------------# programmer: dbchest (none required, always appreciated)# special thanks: Riff (rpgmakervxace.net) # assisted in math equation# special thanks: Acebent (rpgmakervxace.net) # requested custom menu status# special thanks: Tsukihime (rpgmakervxace.net) # general help RGSS3#==============================================================================# * Details#------------------------------------------------------------------------------# dbchest's Menu Status is an aesthetic enhancement to the engine's default# menu status display. introducing this script to your project will not affect# gameplay directly.#==============================================================================# * Features#------------------------------------------------------------------------------# four layouts to choose from.# aligned layout (presets 1 and 3).# staggered layout (presets 2 and 4).# animated actor charasets (presets 3 and 4).# icon display depicting actor class (presets 3 and 4).# additional rate gauges:# - experience needed to reach next level.# - current level in relation to maximum level.#==============================================================================# * Installation Instructions (Plug and Play)#------------------------------------------------------------------------------# paste script in "Materials" section of the script editor.# no known compatibility issues.# no foreign script requirements.#==============================================================================# ** Author's Notes#------------------------------------------------------------------------------# if you experience errors, please contact me directly and / or make the error# known in the script's official thread. you can reach me via personal message# at the following locations: rpgmakerweb.com || rpgmakervxace.net#==============================================================================# * Module MenuStatus#------------------------------------------------------------------------------# PRESET # choose from existing preset layouts (0, 1, 2, 3)#==============================================================================module MenuStatus #---------------------------------------------------------------------------- # * Constants #---------------------------------------------------------------------------- PRESET = 0 # default is 0end#==============================================================================# ** Game_BattlerBase#------------------------------------------------------------------------------# This base class handles battlers. It mainly contains methods for calculating# parameters. It is used as a super class of the Game_Battler class.#==============================================================================class Game_BattlerBase #--------------------------------------------------------------------------- # * Get Percentage of LVL #--------------------------------------------------------------------------- def lvl_rate @level.to_f / max_level end #--------------------------------------------------------------------------- # * Get Percentage of EXP #--------------------------------------------------------------------------- def exp_rate equation1 = (exp.to_f - current_level_exp.to_f) equation2 = (next_level_exp.to_f - current_level_exp.to_f) equation1 / equation2 endend#==============================================================================# ** Scene_Menu#------------------------------------------------------------------------------# This class performs the menu screen processing.#==============================================================================class Scene_Menu < Scene_MenuBase #-------------------------------------------------------------------------- # * Create Status Window #-------------------------------------------------------------------------- alias dbchest_create_status_window create_status_window def create_status_window dbchest_create_status_window if MenuStatus:RESET == 2 || MenuStatus:RESET == 3 @status_window_anime = Window_CharAnime.new(@command_window.width, 0) end end #-------------------------------------------------------------------------- # * Formation [OK] #-------------------------------------------------------------------------- def on_formation_ok if @status_window.pending_index >= 0 $game_party.swap_order(@status_window.index, @status_window.pending_index) @status_window.pending_index = -1 @status_window.redraw_item(@status_window.index) else @status_window.pending_index = @status_window.index end @frame = 0 @anime_pose = 0 @status_window.refresh @status_window.activate endend#==============================================================================# ** Window_MenuStatus#------------------------------------------------------------------------------# This window displays party member status on the menu screen.#==============================================================================class Window_MenuStatus < Window_Selectable #---------------------------------------------------------------------------- # * Class Icon #---------------------------------------------------------------------------- # below is a method that you will need to adjust if you've opted to display # icons depicting your actor(s) class. the pattern is self explanitory, # simply follow the lead i've provided for you and declare an icon for each # class in your database. the else clause is a fail safe, designed only to # keep your system from crashing in the event that you failed to specify an # icon for one of your classes. memorize the icon you define here; if you # see it after changing classes, you made a mistake. #---------------------------------------------------------------------------- def class_icon(actor) case actor.class_id when 1 ; 144 when 2 ; 145 when 3 ; 146 when 4 ; 147 when 5 ; 148 when 6 ; 149 when 7 ; 150 when 8 ; 152 else ; 115 end end #-------------------------------------------------------------------------- # * Increase Font Size #-------------------------------------------------------------------------- def dbchest_make_font_bigger contents.font.size += 2 if contents.font.size <= 64 end #-------------------------------------------------------------------------- # * Decrease Font Size #-------------------------------------------------------------------------- def dbchest_make_font_smaller contents.font.size -= 2 if contents.font.size >= 16 end #--------------------------------------------------------------------------- # * Draw Level #--------------------------------------------------------------------------- def draw_actor_level(actor, x, y) draw_gauge(x, y, 124, actor.lvl_rate, text_color(17), text_color(6)) change_color(system_color) draw_text(x, y, 32, line_height, Vocab::level_a) change_color(normal_color) draw_text(x + 100, y, 24, line_height, actor.level, 2) end #--------------------------------------------------------------------------- # * Draw Level Alternate #--------------------------------------------------------------------------- def draw_actor_level_alt(actor, x, y, width = 100) draw_gauge(x, y, width, actor.lvl_rate, text_color(17), text_color(6)) change_color(system_color) draw_text(x, y, 32, line_height, Vocab::level_a) change_color(normal_color) dbchest_make_font_smaller draw_text(x + 84, y, 24, line_height, actor.level, 2) dbchest_make_font_bigger end #--------------------------------------------------------------------------- # * Draw Next Level #--------------------------------------------------------------------------- def draw_actor_nxtlevel(actor, x, y, width = 124) draw_gauge(x, y, width, actor.exp_rate, text_color(11), text_color(3)) next_level = actor.next_level_exp - actor.exp change_color(system_color) draw_text(x, y, 48, line_height, "NEXT") change_color(normal_color) draw_text(x + 64, y, 60, line_height, next_level, 2) end #--------------------------------------------------------------------------- # * Draw Next Level Alternate #--------------------------------------------------------------------------- def draw_actor_nxtlevel_alt(actor, x, y, width = 100) draw_gauge(x, y, width, actor.exp_rate, text_color(11), text_color(3)) next_level = actor.next_level_exp - actor.exp change_color(system_color) draw_text(x, y, 48, line_height, "NEXT") change_color(normal_color) dbchest_make_font_smaller draw_text(x + 48, y, 60, line_height, next_level, 2) dbchest_make_font_bigger end #-------------------------------------------------------------------------- # * Draw HP Alternate #-------------------------------------------------------------------------- def draw_actor_hp_alt(actor, x, y, width = 100) draw_gauge(x, y, width, actor.hp_rate, hp_gauge_color1, hp_gauge_color2) change_color(system_color) draw_text(x, y, 30, line_height, Vocab::hp_a) dbchest_make_font_smaller dbchest_draw_current_and_max_values(x + 4, y, width, actor.hp, actor.mhp, hp_color(actor), normal_color) dbchest_make_font_bigger end #-------------------------------------------------------------------------- # * Draw MP Alternate #-------------------------------------------------------------------------- def draw_actor_mp_alt(actor, x, y, width = 100) draw_gauge(x, y, width, actor.mp_rate, mp_gauge_color1, mp_gauge_color2) change_color(system_color) draw_text(x, y, 30, line_height, Vocab::mp_a) dbchest_make_font_smaller dbchest_draw_current_and_max_values(x + 4, y, width, actor.mp, actor.mmp, mp_color(actor), normal_color) dbchest_make_font_bigger end #-------------------------------------------------------------------------- # * Draw Current Value/Maximum Value in Fractional Format #-------------------------------------------------------------------------- def dbchest_draw_current_and_max_values(x, y, width, current, max, color1, color2) change_color(color1) xr = x + width if width < 96 draw_text(xr - 40 + 4, y, 42, line_height, current, 2) else draw_text(xr - 90 + 4, y, 42, line_height, current, 2) change_color(color2) draw_text(xr - 44, y, 12, line_height, "/", 2) draw_text(xr - 42 + 4, y, 42, line_height, max, 2) end end #--------------------------------------------------------------------------- # * Draw Item #--------------------------------------------------------------------------- def draw_item(index) mpad = standard_padding actor = $game_party.members[index] enabled = $game_party.battle_members.include?(actor) rect = item_rect(index) draw_item_background(index) case MenuStatus:RESET when 0 draw_actor_simple_status(actor, rect.x + mpad, rect.y + mpad) when 1 draw_actor_simple_status_alt1(actor, rect.x + mpad, rect.y + mpad) when 2 draw_actor_face(actor, rect.x + 1, rect.y + 1, enabled) draw_actor_simple_status_alt2(actor, rect.x + mpad, rect.y) when 3 draw_actor_face(actor, rect.x + 1, rect.y + 1, enabled) draw_actor_simple_status_alt3(actor, rect.x + mpad, rect.y) end end #--------------------------------------------------------------------------- # * Draw Simple Status (PRESET 0) #--------------------------------------------------------------------------- def draw_actor_simple_status(actor, x, y) pos = 188 mpad = standard_padding # medium padding (12 pixels) lpad = standard_padding * 2 # large padding (24 pixels) draw_actor_name(actor, x + lpad, y - mpad - 2) draw_actor_hp(actor, x + lpad, y + line_height * 1 - mpad - 4) draw_actor_mp(actor, x + lpad, y + line_height * 2 - mpad - 4) draw_actor_class(actor, x + pos, y - mpad - 2) draw_actor_level(actor, x + pos, y + line_height * 1 - mpad - 4) draw_actor_nxtlevel(actor, x + pos, y + line_height * 2 - mpad - 4) draw_actor_icons(actor, x + lpad, y + line_height * 3 - mpad) end #--------------------------------------------------------------------------- # * Draw Simple Status Alternate 1 (PRESET 1) #--------------------------------------------------------------------------- def draw_actor_simple_status_alt1(actor, x, y) pos = 188 mpad = standard_padding # medium padding (12 pixels) lpad = standard_padding * 2 # large padding (24 pixels) draw_actor_name(actor, x + mpad, y - mpad - 2) draw_actor_hp(actor, x + lpad, y + line_height * 1 - mpad - 4) draw_actor_mp(actor, x + mpad * 3, y + line_height * 2 - mpad - 4) draw_actor_class(actor, x + pos - mpad, y - mpad - 2) draw_actor_level(actor, x + pos, y + line_height * 1 - mpad - 4) draw_actor_nxtlevel(actor, x + pos + mpad, y + line_height * 2 - mpad - 4) draw_actor_icons(actor, x + lpad * 2, y + line_height * 3 - mpad) end #--------------------------------------------------------------------------- # * Draw Simple Status Alternate 2 (PRESET 2) #--------------------------------------------------------------------------- def draw_actor_simple_status_alt2(actor, x, y) face = 85 spad = standard_padding / 3 # small padding (4 pixels) mpad = standard_padding # medium padding (12 pixels) lpad = standard_padding * 2 # large padding (24 pixels) char_x = x + face char_y = y + line_height * 4 + 1 icon_x = char_x - mpad icon_y = y + line_height * 2 - spad * 2 #draw_actor_graphic(actor, char_x, char_y) draw_icon(class_icon(actor), icon_x, icon_y, true) draw_actor_name(actor, x + face + spad + mpad, y - 2) draw_actor_hp_alt(actor, x + face + spad + mpad, y + line_height * 1 - spad,) draw_actor_mp_alt(actor, x + face + spad + mpad, y + line_height * 2 - spad) draw_actor_class(actor, x + face + spad + 136, y - 2) draw_actor_level_alt(actor, x + face + spad + 136, y + line_height * 1 - spad) draw_actor_nxtlevel_alt(actor, x + face + spad + 136, y + line_height * 2 - spad) draw_actor_icons(actor, x + face + spad + mpad, y + line_height * 3) end #--------------------------------------------------------------------------- # * Draw Simple Status Alternate 3 (PRESET 3) #--------------------------------------------------------------------------- def draw_actor_simple_status_alt3(actor, x, y) face = 85 spad = standard_padding / 3 # small padding (4 pixels) mpad = standard_padding # medium padding (12 pixels) lpad = standard_padding * 2 # large padding (24 pixels) char_x = x + face char_y = y + line_height * 4 + 1 icon_x = char_x - mpad icon_y = y + line_height * 2 - spad * 2 #draw_actor_graphic(actor, char_x, char_y) draw_icon(class_icon(actor), icon_x, icon_y, true) draw_actor_name(actor, x + face + spad, y - 2) draw_actor_hp_alt(actor, x + face + spad + mpad, y + line_height * 1 - spad) draw_actor_mp_alt(actor, x + face + spad + lpad, y + line_height * 2 - spad) draw_actor_class(actor, x + face + spad + 124, y - 2) draw_actor_level_alt(actor, x + face + spad + 136, y + line_height * 1 - spad) draw_actor_nxtlevel_alt(actor, x + face + spad + 148, y + line_height * 2 - spad) draw_actor_icons(actor, x + face + spad + mpad * 3, y + line_height * 3) endend#==============================================================================# ** Window_CharAnime#------------------------------------------------------------------------------# This window displays party member charasets and animates them.#==============================================================================class Window_CharAnime < Window_Selectable #-------------------------------------------------------------------------- # * Public Instance Variables #-------------------------------------------------------------------------- attr_reader ending_index # Pending position (for formation) attr_accessor :frame attr_accessor :anime_pose #-------------------------------------------------------------------------- # * Object Initialization #-------------------------------------------------------------------------- def initialize(x, y) super(x, y, window_width, window_height) @pending_index = -1 @frame = 0 @anime_pose = 0 self.opacity = 0 refresh end #-------------------------------------------------------------------------- # * Get Window Width #-------------------------------------------------------------------------- def window_width Graphics.width - 160 end #-------------------------------------------------------------------------- # * Get Window Height #-------------------------------------------------------------------------- def window_height Graphics.height end #-------------------------------------------------------------------------- # * Get Number of Items #-------------------------------------------------------------------------- def item_max $game_party.members.size end #-------------------------------------------------------------------------- # * Get Item Height #-------------------------------------------------------------------------- def item_height (height - standard_padding * 2) / 4 end #-------------------------------------------------------------------------- # * Draw Character Graphic #-------------------------------------------------------------------------- def draw_character(character_name, character_index, x, y) return unless character_name bitmap = Cache.character(character_name) sign = character_name[/^[\!\$]./] if sign && sign.include?('$') cw = bitmap.width / 3 ch = bitmap.height / 4 else cw = bitmap.width / 12 ch = bitmap.height / 8 end n = character_index case @anime_pose when 0 ; src_rect = Rect.new((n%4*3+1)*cw, (n/4*4)*ch, cw, ch) when 1 ; src_rect = Rect.new((n%4*3)*cw, (n/4*4)*ch, cw, ch) when 2 ; src_rect = Rect.new((n%4*3+1)*cw, (n/4*4)*ch, cw, ch) when 3 ; src_rect = Rect.new((n%4*3+2)*cw, (n/4*4)*ch, cw, ch) when 4 ; src_rect = Rect.new((n%4*3+1)*cw, (n/4*4)*ch, cw, ch) end contents.blt(x - cw / 2, y - ch, bitmap, src_rect) end #-------------------------------------------------------------------------- # * Draw Item #-------------------------------------------------------------------------- def draw_item(index) actor = $game_party.members[index] enabled = $game_party.battle_members.include?(actor) rect = item_rect(index) face = 96 char_x = rect.x + face char_y = rect.y + line_height * 4 + 1 draw_actor_graphic(actor, rect.x + face, char_y) end #-------------------------------------------------------------------------- # * Frame Update #-------------------------------------------------------------------------- def update super update_frame update_anime_pose refresh if @frame == 10 reset_anime if @frame == 10 end #-------------------------------------------------------------------------- # * Update Animation Frame #-------------------------------------------------------------------------- def update_frame @frame += 1 end #-------------------------------------------------------------------------- # * Update Animation Pose #-------------------------------------------------------------------------- def update_anime_pose @anime_pose += 1 if @frame == 10 end #-------------------------------------------------------------------------- # * Reset Animation Count #-------------------------------------------------------------------------- def reset_anime @anime_pose = 0 if @anime_pose > 3 @frame = 0 endend
 

FAQ

you may contact me directly with any questions, comments, or concerns
 

Credit and Thanks

- programmer: dbchest (none required, always appreciated)

- special thanks: Riff (rpgmakervxace.net) assisted with a mathematical equation

- special thanks: Acebent (rpgmakervxace.net) made the request

- special thanks: Tsukihime (rpgmakervxace.net) general help RGSS3

Features Mentioned

  • four layouts to choose from.
  • aligned layout (presets 1 and 3).
  • staggered layout (presets 2 and 4).
  • animated actor charasets (presets 3 and 4).
  • icon display depicting actor class (presets 3 and 4).
  • additional rate gauges:
  •   -  experience needed to reach next level.
  •   -  current level in relation to maximum level. 

Downloads / Referenced Files

Log in to download

Log in, then follow the RPG Maker Developers Group to see these download links.

Log in to download

License / Terms Note

#==============================================================================# * dbchest's MenuStatus (v1.1)#==============================================================================# ** Credits (Freeware)#------------------------------------------------------------------------------# a list of credits for those involved in the production of said script. you# are responsible for crediting those mentioned. you do not have to credit my# special mentions. they are being thanked for their help now.#------------------------------------------------------------------------------# programmer: dbchest (none required, always appreciated)# special thanks: Riff (rpgmakervxace.net) # assisted in math equation# special thanks: Acebent (rpgmakervxace.net) # requested custom menu status# special thanks: Tsukihime (rpgmakervxace.net) # general help RGSS3#==============================================================================# * Details#------------------------------------------------------------------------------# dbchest's...

Referenced Images / Attachments

Screenshot1_zps27dcb2eb.png
Screenshot1_zps27dcb2eb.png
Screenshot2_zps128a1ffa.png
Screenshot2_zps128a1ffa.png
Creator Claims / Removal

If you are the original creator and want this listing reassigned, edited, or removed, join BMMPlay and contact the moderators with proof that matches the original RPG Maker Web profile, linked GitHub, itch.io page, or another public creator identity.

#039#draw_actor_graphic#rgss3#script-archive

Replies (0)

No replies yet.

0 replies 1 view

Log in to reply.

User Avatar