Brewmeister
Sponsor
[VX] Single Actor Menu Version: 1.1
By: Brew
Introduction
Yes, I know there are a bunch of single actor menus available. If you like any of them better, use it. Won't hurt my feelings a bit. :scruff:
This was by request, is pretty plain & simple. I figured it could also be used as an example for budding script-writers, or as a starting point.
Features
Screenshots
Demo
http://hbgames.org/user_files/Single_Actor_Menu_VX.exe
Script
Window_Status
Scene_Menu
Scene_File, Scene_Equip, Scene_End
Instructions
Insert Scripts above Main in the ▼ Materials section
FAQ
Compatibility
Any script that aliases methods in Window_Status, Scene_Menu, Scene_File or Scene_Equip should be posted below these scripts.
Any script that modifies methods in those scripts could conflict with these scripts.
Credits and Thanks
Brewmeister
Terms and Conditions
Don't host this anywhere else. Don't claim credit for original script.
Other than that, pretty much anything you want to do.
Use for commercial/non-commercial, edit, modify, bend, spindle, mutilate, print it & wipe your ass with it, I don't care. :scruff:
Links to other single actor menus for those hunting
viewtopic.php?p=35091#p35091
viewtopic.php?f=12&t=60601
viewtopic.php?f=12&t=60943
viewtopic.php?f=11&t=61260
http://rmrk.net/index.php/topic,6408.0.html
viewtopic.php?f=12&p=642924
By: Brew
Introduction
Yes, I know there are a bunch of single actor menus available. If you like any of them better, use it. Won't hurt my feelings a bit. :scruff:
This was by request, is pretty plain & simple. I figured it could also be used as an example for budding script-writers, or as a starting point.
Features
- Add "Load" to menu
- Remove "Skills" from menu
- Eliminate Character Selection.
- Reformatted Status Window
Screenshots

Demo
http://hbgames.org/user_files/Single_Actor_Menu_VX.exe
Script
Window_Status
Code:
#==============================================================================
# ** Window_Status MOD
#------------------------------------------------------------------------------
# This window displays full status specs on the status screen.
#==============================================================================
class Window_Status < Window_Base
#--------------------------------------------------------------------------
# * Object Initialization
# actor : actor
#--------------------------------------------------------------------------
def initialize(actor)
super(160, 0, 384, 416)
@actor = actor
refresh
end
#--------------------------------------------------------------------------
# * Refresh
#--------------------------------------------------------------------------
def refresh
self.contents.clear
draw_actor_face(@actor, 8, 8)
draw_actor_name(@actor, 108, 0)
draw_actor_class(@actor, 236, 0)
draw_basic_info(108, 64)
draw_actor_state(@actor, 8, 128)
draw_parameters(8, 160)
draw_actor_level(@actor, 8, 288)
draw_exp_info(8, 320)
draw_equipments(128, 128)
end
#--------------------------------------------------------------------------
# * Draw Basic Information
# x : Draw spot X coordinate
# y : Draw spot Y coordinate
#--------------------------------------------------------------------------
def draw_basic_info(x, y)
draw_actor_hp(@actor, x, y)
draw_actor_mp(@actor, x + 108, y)
end
#--------------------------------------------------------------------------
# * Draw Parameters
# x : Draw spot X coordinate
# y : Draw spot Y coordinate
#--------------------------------------------------------------------------
def draw_parameters(x, y)
draw_actor_parameter(@actor, x, y + WLH * 0, 0)
draw_actor_parameter(@actor, x, y + WLH * 1, 1)
draw_actor_parameter(@actor, x, y + WLH * 2, 2)
draw_actor_parameter(@actor, x, y + WLH * 3, 3)
end
#--------------------------------------------------------------------------
# * Draw Experience Information
# x : Draw spot X coordinate
# y : Draw spot Y coordinate
#--------------------------------------------------------------------------
def draw_exp_info(x, y)
s1 = @actor.exp_s
s2 = @actor.next_rest_exp_s
s_next = sprintf(Vocab::ExpNext, Vocab::level)
self.contents.font.color = system_color
self.contents.draw_text(x, y + WLH * 0, 180, WLH, Vocab::ExpTotal)
self.contents.draw_text(x, y + WLH * 1, 180, WLH, s_next)
self.contents.font.color = normal_color
self.contents.draw_text(x + 128, y + WLH * 0, 180, WLH, s1, 0)
self.contents.draw_text(x + 128, y + WLH * 1, 180, WLH, s2, 0)
end
#--------------------------------------------------------------------------
# * Draw Equipment
# x : Draw spot X coordinate
# y : Draw spot Y coordinate
#--------------------------------------------------------------------------
def draw_equipments(x, y)
self.contents.font.color = system_color
self.contents.draw_text(x, y, 120, WLH, Vocab::equip)
for i in 0..4
draw_item_name(@actor.equips[i], x + 16, y + WLH * (i + 1))
end
end
#--------------------------------------------------------------------------
# * Draw Parameters
# actor : actor
# x : draw spot x-coordinate
# y : draw spot y-coordinate
# type : Type of parameters (0-3)
#--------------------------------------------------------------------------
def draw_actor_parameter(actor, x, y, type)
case type
when 0
parameter_name = Vocab::atk
parameter_value = actor.atk
when 1
parameter_name = Vocab::def
parameter_value = actor.def
when 2
parameter_name = Vocab::spi
parameter_value = actor.spi
when 3
parameter_name = Vocab::agi
parameter_value = actor.agi
end
self.contents.font.color = system_color
self.contents.draw_text(x, y, 48, WLH, parameter_name)
self.contents.font.color = normal_color
self.contents.draw_text(x + 48, y, 36, WLH, parameter_value, 2)
end
#--------------------------------------------------------------------------
# * Draw State
# actor : actor
# x : draw spot x-coordinate
# y : draw spot y-coordinate
# width : draw spot width
#--------------------------------------------------------------------------
def draw_actor_state(actor, x, y, width = 96)
count = 0
for state in actor.states
draw_icon(state.icon_index, x + 24 * count, y)
count += 1
break if (24 * count > width - 24)
end
if count == 0
self.contents.draw_text(x, y, 120, WLH, "[Normal]")
end
end
#--------------------------------------------------------------------------
# * Draw HP
# actor : actor
# x : draw spot x-coordinate
# y : draw spot y-coordinate
# width : Width
#--------------------------------------------------------------------------
def draw_actor_hp(actor, x, y, width = 100)
draw_actor_hp_gauge(actor, x, y, width)
self.contents.font.color = system_color
self.contents.draw_text(x, y, 30, WLH, Vocab::hp)
self.contents.font.color = hp_color(actor)
last_font_size = self.contents.font.size
xr = x + width
if width < 100
self.contents.draw_text(xr - 44, y, 44, WLH, actor.hp, 2)
else
self.contents.draw_text(x, y, width, WLH, actor.maxhp, 2)
maxw = self.contents.text_size(actor.maxhp).width
self.contents.draw_text(x, y, width - maxw, WLH, "/", 2)
self.contents.draw_text(x, y, width - maxw - 8, WLH, actor.hp, 2)
end
end
#--------------------------------------------------------------------------
# * Draw HP gauge
# actor : actor
# x : draw spot x-coordinate
# y : draw spot y-coordinate
# width : Width
#--------------------------------------------------------------------------
def draw_actor_hp_gauge(actor, x, y, width = 100)
gw = width * actor.hp / actor.maxhp
gc1 = hp_gauge_color1
gc2 = hp_gauge_color2
self.contents.fill_rect(x, y + WLH - 8, width, 6, gauge_back_color)
self.contents.gradient_fill_rect(x, y + WLH - 8, gw, 6, gc1, gc2)
end
#--------------------------------------------------------------------------
# * Draw MP
# actor : actor
# x : draw spot x-coordinate
# y : draw spot y-coordinate
# width : Width
#--------------------------------------------------------------------------
def draw_actor_mp(actor, x, y, width = 100)
draw_actor_mp_gauge(actor, x, y, width)
self.contents.font.color = system_color
self.contents.draw_text(x, y, 30, WLH, Vocab::mp)
self.contents.font.color = mp_color(actor)
last_font_size = self.contents.font.size
xr = x + width
if width < 100
self.contents.draw_text(xr - 44, y, 44, WLH, actor.mp, 2)
else
self.contents.draw_text(x, y, width, WLH, actor.maxmp, 2)
maxw = self.contents.text_size(actor.maxmp).width
self.contents.draw_text(x, y, width - maxw, WLH, "/", 2)
self.contents.draw_text(x, y, width - maxw - 8, WLH, actor.mp, 2)
end
end
#--------------------------------------------------------------------------
# * Draw MP Gauge
# actor : actor
# x : draw spot x-coordinate
# y : draw spot y-coordinate
# width : Width
#--------------------------------------------------------------------------
def draw_actor_mp_gauge(actor, x, y, width = 100)
gw = width * actor.mp / [actor.maxmp, 1].max
gc1 = mp_gauge_color1
gc2 = mp_gauge_color2
self.contents.fill_rect(x, y + WLH - 8, width, 6, gauge_back_color)
self.contents.gradient_fill_rect(x, y + WLH - 8, gw, 6, gc1, gc2)
end
end
Code:
#==============================================================================
# ** Scene_Menu MOD
#------------------------------------------------------------------------------
# This class performs the menu screen processing.
#==============================================================================
class Scene_Menu < Scene_Base
#--------------------------------------------------------------------------
# * Object Initialization
# menu_index : command cursor's initial position
#--------------------------------------------------------------------------
def initialize(menu_index = 0)
@menu_index = menu_index
## Change Font
@save_font = Font.default_name
Font.default_name = ["Verdana", "Arial"]
end
#--------------------------------------------------------------------------
# * Start processing
#--------------------------------------------------------------------------
def start
super
create_menu_background
create_command_window
@gold_window = Window_Gold.new(0, 360)
@status_window = Window_Status.new($game_party.members[0])
end
#--------------------------------------------------------------------------
# * Termination Processing
#--------------------------------------------------------------------------
def terminate
super
dispose_menu_background
@command_window.dispose
@gold_window.dispose
@status_window.dispose
Font.default_name = @save_font
end
#--------------------------------------------------------------------------
# * Frame Update
#--------------------------------------------------------------------------
def update
super
update_menu_background
@command_window.update
@gold_window.update
@status_window.update
update_command_selection
end
#--------------------------------------------------------------------------
# * Create Command Window
#--------------------------------------------------------------------------
def create_command_window
s1 = Vocab::item
s2 = Vocab::equip
s3 = Vocab::save
s4 = "Load"
s5 = Vocab::game_end
@command_window = Window_Command.new(160, [s1, s2, s3, s4, s5])
@command_window.index = @menu_index
if $game_party.members.size == 0 # If number of party members is 0
@command_window.draw_item(0, false) # Disable item
@command_window.draw_item(1, false) # Disable equipment
end
if $game_system.save_disabled # If save is forbidden
@command_window.draw_item(2, false) # Disable save
end
end
#--------------------------------------------------------------------------
# * Update Command Selection
#--------------------------------------------------------------------------
def update_command_selection
if Input.trigger?(Input::B)
Sound.play_cancel
$scene = Scene_Map.new
elsif Input.trigger?(Input::C)
if $game_party.members.size == 0 and @command_window.index < 4
Sound.play_buzzer
return
elsif $game_system.save_disabled and @command_window.index == 4
Sound.play_buzzer
return
end
Sound.play_decision
case @command_window.index
when 0 # Item
$scene = Scene_Item.new
when 1 # Skill, equipment, status
$scene = Scene_Equip.new(0)
when 2 # Save
$scene = Scene_File.new(true, false, false)
when 3
$scene = Scene_File.new(false, false, false)
when 4 # End Game
$scene = Scene_End.new
end
end
end
end
Code:
#==============================================================================
# ** Scene_File MOD
#------------------------------------------------------------------------------
# This class performs the save and load screen processing.
#==============================================================================
class Scene_File
#--------------------------------------------------------------------------
# * Return to Original Screen
#--------------------------------------------------------------------------
def return_scene
if @from_title
$scene = Scene_Title.new
elsif @from_event
$scene = Scene_Map.new
elsif @saving
$scene = Scene_Menu.new(2)
else
$scene = Scene_Menu.new(3)
end
end
end
#==============================================================================
# ** Scene_Equip Mod
#------------------------------------------------------------------------------
# This class performs the equipment screen processing.
#==============================================================================
class Scene_Equip < Scene_Base
#--------------------------------------------------------------------------
# * Return to Original Screen
#--------------------------------------------------------------------------
def return_scene
$scene = Scene_Menu.new(1)
end
end
#==============================================================================
# ** Scene_End
#------------------------------------------------------------------------------
# This class performs game end screen processing.
#==============================================================================
class Scene_End < Scene_Base
#--------------------------------------------------------------------------
# * Return to Original Screen
#--------------------------------------------------------------------------
def return_scene
$scene = Scene_Menu.new(4)
end
end
Instructions
Insert Scripts above Main in the ▼ Materials section
FAQ
Compatibility
Any script that aliases methods in Window_Status, Scene_Menu, Scene_File or Scene_Equip should be posted below these scripts.
Any script that modifies methods in those scripts could conflict with these scripts.
Credits and Thanks
Brewmeister
Terms and Conditions
Don't host this anywhere else. Don't claim credit for original script.
Other than that, pretty much anything you want to do.
Use for commercial/non-commercial, edit, modify, bend, spindle, mutilate, print it & wipe your ass with it, I don't care. :scruff:
Links to other single actor menus for those hunting
viewtopic.php?p=35091#p35091
viewtopic.php?f=12&t=60601
viewtopic.php?f=12&t=60943
viewtopic.php?f=11&t=61260
http://rmrk.net/index.php/topic,6408.0.html
viewtopic.php?f=12&p=642924