One Person Menu
Version: 1.1.0
Author: DoctorTodd
Date: 02/19/2012
Version History
- Version 1.1.0 2012/02/19 - Window skin option
- Version 1.0.1 2012/02/19 - Fixed scene error
- Version 1.0.0 2012/02/19 - Original Release
Planned Future Versions
Version 1.1.0 - The ability to use pictures instead of windows Just use my picture menu script.
Description
A menu that is modified to work as if you are only using one
actor.
Features
- Goes to first actor, no actor selection
- Detailed status
- Simple
Screenshots
(Click to enlarge).
(https://rmrk.net/proxy.php?request=http%3A%2F%2Fwww.freeimagehosting.net%2Ft%2Fo63m9.jpg&hash=93b51dc74e80220679e38b68c7a927e3eb905eba) (http://www.freeimagehosting.net/o63m9)
Instructions
Paste above main.
Script
#===============================================================================
#
# DT's One Person Menu
# Author: DoctorTodd
# Date (02/19/2012)
# Type: (Menu)
# Version: (1.1.0)
# Level: (Simple)
# Email: BeaconGames2011@gmail.com
#
#===============================================================================
#
# Description: A menu that is modified to work as if you are only using one
# actor.
#
# Credits: Me (DoctorTodd)
#
#===============================================================================
#
# Instructions
# Paste above main.
#
#===============================================================================
#
# Editing begins 30 and ends 32.
#
#===============================================================================
module DTOPM
#Window skin to use, place in system.
WINDOW = ('Window')
end
class Scene_Menu < Scene_Base
include DTOPM
#--------------------------------------------------------------------------
# * Object Initialization
# menu_index : command cursor's initial position
#--------------------------------------------------------------------------
def initialize(menu_index = 0)
@menu_index = menu_index
end
#--------------------------------------------------------------------------
# * Start processing
#--------------------------------------------------------------------------
def start
super
create_menu_background
create_command_window
@status_window = Window_MenuStatus.new (200, 75)
@status_window.windowskin = Cache.system(DTOPM::WINDOW)
@gold_window = Window_Gold.new(40, 250)
@gold_window.windowskin = Cache.system(DTOPM::WINDOW)
end
#--------------------------------------------------------------------------
# * Termination Processing
#--------------------------------------------------------------------------
def terminate
super
dispose_menu_background
@command_window.dispose
@gold_window.dispose
@status_window.dispose
end
#--------------------------------------------------------------------------
# * Frame Update
#--------------------------------------------------------------------------
def update
super
update_menu_background
@command_window.update
@gold_window.update
@status_window.update
if @command_window.active
update_command_selection
end
end
#--------------------------------------------------------------------------
# * Create Command Window
#--------------------------------------------------------------------------
def create_command_window
s1 = Vocab::item
s2 = Vocab::skill
s3 = Vocab::equip
s4 = Vocab::status
s5 = Vocab::save
s6 = Vocab::game_end
@command_window = Window_Command.new(160, [s1, s2, s3, s4, s5, s6])
@command_window.index = @menu_index
@command_window.x = 40
@command_window.y = 75
@command_window.windowskin = Cache.system(DTOPM::WINDOW)
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 skill
@command_window.draw_item(2, false) # Disable equipment
@command_window.draw_item(3, false) # Disable status
end
if $game_system.save_disabled # If save is forbidden
@command_window.draw_item(4, 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
@actor = $game_party.members[1]
$scene = Scene_Skill.new
when 2 # Equip
@actor = $game_party.members[1]
$scene = Scene_Equip.new
when 3 # Status
@actor = $game_party.members[1]
$scene = Scene_Status.new
when 4 # Save
$scene = Scene_File.new(true, false, false)
when 5 # End Game
$scene = Scene_End.new
end
end
end
#==============================================================================
# ** Window_MenuStatus
#------------------------------------------------------------------------------
# This window displays the characters status on the menu screen.
#==============================================================================
class Window_MenuStatus < Window_Base
#--------------------------------------------------------------------------
# * Object Initialization
# x : window X coordinate
# y : window Y coordinate
#--------------------------------------------------------------------------
def initialize(x, y)
super(x, y, 300, 231)
refresh
end
#--------------------------------------------------------------------------
# * Refresh
#--------------------------------------------------------------------------
def refresh
self.contents.clear
@actor = $game_party.members[0]
draw_actor_face(@actor, 0, 0)
draw_actor_name(@actor, 110, 5)
draw_actor_level(@actor, 190, 5)
draw_actor_hp(@actor, 110 ,40)
draw_actor_mp(@actor, 110 , 65)
draw_actor_parameter(@actor, 0, 100, 0)
draw_actor_parameter(@actor, 0, 124, 1)
draw_actor_parameter(@actor, 0, 148, 2)
draw_actor_parameter(@actor, 0, 172, 3)
draw_actor_graphic(@actor, 220, 160)
draw_actor_state(@actor, 190, 180, width = 96)
end
end
end
Credit
Support
Post here for quickest support, or send an email to BeaconGames2011@gmail.com
Known Compatibility Issues
None known so far, but overwrites Scene_Menu and Window_MenuStatus. So won't work with anything that uses that.
Demo
Pointless
Author's Notes
I decided to write this script because long before I knew anything about scripting I always wanted a menu like this but never requested it.
Restrictions
Free for non-commercial and commercial games. You
must credit me! If you use this in a commercial game I expect a free copy.
That's a pretty design DoctorTodd.
Thanks :)
I remember someone requested this kind of script recently.
Looks like we can tell them where to find it now.
Keep it up DT ;)
Nice design, DT!
Again, there are some things that don't need to be there, and some things that could've been aliased, but a good job nonetheless.
Would you mind if I included this design in PAC MM? You would, of course, be credited.
QuoteI remember someone requested this kind of script recently.
Looks like we can tell them where to find it now.
I think it was me!
This is exactly what I needed, my warmest thanks and compliments DoctorTodd!!
EDIT
I think i found a little error in the script:
when 1 # Skill
@actor = $game_party.members[1]
$scene = Scene_Skill.new
when 2 # Equip
@actor = $game_party.members[1]
$scene = Scene_Skill.newplacing Scene_Equip.new instead of the second Scene_Skill.new seems to fix it :)
@Pacman: sure that's fine :)
@Xabaras: Oops sorry about that once I'm back on my computer I'll upload the fixed version.
1.1! You now have the option to choose what window skin you wish to use.
#===============================================================================
#
# DT's One Person Menu
# Author: DoctorTodd
# Date (02/19/2012)
# Type: (Menu)
# Version: (1.1.0)
# Level: (Simple)
# Email: BeaconGames2011@gmail.com
#
#===============================================================================
#
# Description: A menu that is modified to work as if you are only using one
# actor.
#
# Credits: Me (DoctorTodd)
#
#===============================================================================
#
# Instructions
# Paste above main.
#
#===============================================================================
#
# Editing begins 30 and ends 32.
#
#===============================================================================
module DTOPM
#Window skin to use, place in system.
WINDOW = ('Window')
end
class Scene_Menu < Scene_Base
include DTOPM
#--------------------------------------------------------------------------
# * Object Initialization
# menu_index : command cursor's initial position
#--------------------------------------------------------------------------
def initialize(menu_index = 0)
@menu_index = menu_index
end
#--------------------------------------------------------------------------
# * Start processing
#--------------------------------------------------------------------------
def start
super
create_menu_background
create_command_window
@status_window = Window_MenuStatus.new (200, 75)
@status_window.windowskin = Cache.system(DTOPM::WINDOW)
@gold_window = Window_Gold.new(40, 250)
@gold_window.windowskin = Cache.system(DTOPM::WINDOW)
end
#--------------------------------------------------------------------------
# * Termination Processing
#--------------------------------------------------------------------------
def terminate
super
dispose_menu_background
@command_window.dispose
@gold_window.dispose
@status_window.dispose
end
#--------------------------------------------------------------------------
# * Frame Update
#--------------------------------------------------------------------------
def update
super
update_menu_background
@command_window.update
@gold_window.update
@status_window.update
if @command_window.active
update_command_selection
end
end
#--------------------------------------------------------------------------
# * Create Command Window
#--------------------------------------------------------------------------
def create_command_window
s1 = Vocab::item
s2 = Vocab::skill
s3 = Vocab::equip
s4 = Vocab::status
s5 = Vocab::save
s6 = Vocab::game_end
@command_window = Window_Command.new(160, [s1, s2, s3, s4, s5, s6])
@command_window.index = @menu_index
@command_window.x = 40
@command_window.y = 75
@command_window.windowskin = Cache.system(DTOPM::WINDOW)
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 skill
@command_window.draw_item(2, false) # Disable equipment
@command_window.draw_item(3, false) # Disable status
end
if $game_system.save_disabled # If save is forbidden
@command_window.draw_item(4, 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
@actor = $game_party.members[1]
$scene = Scene_Skill.new
when 2 # Equip
@actor = $game_party.members[1]
$scene = Scene_Equip.new
when 3 # Status
@actor = $game_party.members[1]
$scene = Scene_Status.new
when 4 # Save
$scene = Scene_File.new(true, false, false)
when 5 # End Game
$scene = Scene_End.new
end
end
end
#==============================================================================
# ** Window_MenuStatus
#------------------------------------------------------------------------------
# This window displays the characters status on the menu screen.
#==============================================================================
class Window_MenuStatus < Window_Base
#--------------------------------------------------------------------------
# * Object Initialization
# x : window X coordinate
# y : window Y coordinate
#--------------------------------------------------------------------------
def initialize(x, y)
super(x, y, 300, 231)
refresh
end
#--------------------------------------------------------------------------
# * Refresh
#--------------------------------------------------------------------------
def refresh
self.contents.clear
@actor = $game_party.members[0]
draw_actor_face(@actor, 0, 0)
draw_actor_name(@actor, 110, 5)
draw_actor_level(@actor, 190, 5)
draw_actor_hp(@actor, 110 ,40)
draw_actor_mp(@actor, 110 , 65)
draw_actor_parameter(@actor, 0, 100, 0)
draw_actor_parameter(@actor, 0, 124, 1)
draw_actor_parameter(@actor, 0, 148, 2)
draw_actor_parameter(@actor, 0, 172, 3)
draw_actor_graphic(@actor, 220, 160)
draw_actor_state(@actor, 190, 180, width = 96)
end
end
end
Marc: Salaam. :)
Something that I wanted to note regarding both this script and your battle status script... it would be positively wonderful if the scripts could check for the size of the party, and display the "single member" versions upon returning a single party member while retaining the original style for parties of a larger size. Hopefully this is functionality you could consider adding in the future. ;)
I would also like to add that these scripts are very aesthetically pleasing, and are quite nice for those of us making games with a single character. Keep it up, they can be very useful. :)
(Oh, and on a separate note: you do not need to include the module DTOPM if you are referencing its contents with the DTOPM::Window syntax. Just for future reference. :))
I'll make sure to keep that in mind about the syntax thing. Also that's a good a idea, I might try that at one point. Thanks for your feedback. ;)
Quote from: DoctorTodd on March 07, 2012, 02:55:29 AM
I'll make sure to keep that in mind about the syntax thing. Also that's a good a idea, I might try that at one point. Thanks for your feedback. ;)
Marc: Of course. :)
I was also assuming that you would like ideas about how to improve upon your scripts and better acquaint yourself with scripting in general, thus my suggestion. I believe figuring out how to do that adequately would provide an interesting and (hopefully) helpful task.
Good luck. :)
As soon as I finish my game (March 14th) I'll try that.
This and the other one-actor scripts just gave me a game idea...
:blizj:
Awesome
:blizj: :blizj: :blizj: