Compact Menu System
Version: 1.0
Author: Rubymattt
Description
This script is a very compact CMS, similar to the one I used in castorvian legends - but for VX! The script was basically to get me into RGSS2 more than anything so I can start makin' some VX scripts.
Screenshot
(https://rmrk.net/proxy.php?request=http%3A%2F%2Fshadowruby.co.uk%2Fvxcompactmenu.PNG&hash=f4ad89c858dd31ec4f3c2c75d5d9bcfb4f37d1b7)
Instructions / Notes
You have to have at least one person in the party at any time, or the scriipt will fail. To be honest, I wouldn't see the point in a menu if there was nobody in the party, so make sure menu is DISABLED at all times if you ever, for some reason, end up in this situation.
That's all there is. Place above main, below Materials. No need for a demo, it really is that simple to install.
Script
#==============================================================================
# Compact Custom Menu System
# RMVX Version
# v1.0
# by Rubymatt
#==============================================================================
#==============================================================================
# ** NEW Window_Gold
#==============================================================================
class Window_Gold < Window_Base
def initialize(x, y)
super(x, y, 224, WLH + 32)
refresh
end
def refresh
self.contents.clear
draw_currency_value($game_party.gold, 4, 0, 184)
end
end
#==============================================================================
# ** NEW Window_MenuStatus
#==============================================================================
class Window_NewMenuStatus < Window_Selectable
def initialize(x, y)
super(0, 0, 64, $game_party.members.size * 36 + 32)
self.contents = Bitmap.new(width - 32, height - 32)
refresh
self.active = false
self.index = -1
end
def refresh
self.contents.clear
@item_max = $game_party.members.size
for actor in $game_party.members
x = 66
y = actor.index * 36
draw_actor_graphic(actor, x - 51, y + 32)
end
end
def update_cursor
if @index < 0
self.cursor_rect.empty
else
self.cursor_rect.set(-2, @index * 36 - 2, 36, 36)
end
end
end
#==============================================================================
# ** NEW Scene_Menu
#==============================================================================
class Scene_Menu < Scene_Base
def initialize(menu_index = 0)
@menu_index = menu_index
end
def start
super
create_menu_background
create_command_window
@gold_window = Window_Gold.new(160, 248)
@status_window = Window_NewMenuStatus.new(160, 0)
@status_window.x = 320
if $game_party.members.size == 4
@status_window.y = 72
elsif $game_party.members.size == 3
@status_window.y = 88
elsif $game_party.members.size == 2
@status_window.y = 104
elsif $game_party.members.size == 1
@status_window.y = 120
else
@status_window.y = 72
end
end
def terminate
super
dispose_menu_background
@command_window.dispose
@gold_window.dispose
@status_window.dispose
end
def update
super
update_menu_background
@command_window.update
@gold_window.update
@status_window.update
if @command_window.active
update_command_selection
elsif @status_window.active
update_actor_selection
end
end
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.x = 160
@command_window.y = 72
@command_window.height = 176
@command_window.index = @menu_index
if $game_party.members.size == 0
@command_window.draw_item(0, false)
@command_window.draw_item(1, false)
@command_window.draw_item(2, false)
@command_window.draw_item(3, false)
end
if $game_system.save_disabled
@command_window.draw_item(4, false)
end
end
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
$scene = Scene_Item.new
when 1,2,3
start_actor_selection
when 4
$scene = Scene_File.new(true, false, false)
when 5
$scene = Scene_End.new
end
end
end
def start_actor_selection
@command_window.active = false
@status_window.active = true
if $game_party.last_actor_index < @status_window.item_max
@status_window.index = $game_party.last_actor_index
else
@status_window.index = 0
end
end
def end_actor_selection
@command_window.active = true
@status_window.active = false
@status_window.index = -1
end
def update_actor_selection
if Input.trigger?(Input::B)
Sound.play_cancel
end_actor_selection
elsif Input.trigger?(Input::C)
$game_party.last_actor_index = @status_window.index
Sound.play_decision
case @command_window.index
when 1
$scene = Scene_Skill.new(@status_window.index)
when 2
$scene = Scene_Equip.new(@status_window.index)
when 3
$scene = Scene_Status.new(@status_window.index)
end
end
end
endAuthor's Notes / Credit
Not much else to say really. Give credit, and enjoy.
Nice work, simple and clean. ;D
Classic and simple. Clean-looking too.
Good job, rubymatt. ;8
Yeah, it is a tidy little menu. Good job.
=3
It's tiny and cute and it fits in with the chibi little sprites.
This is pretty Awesome. Is there a way I could put the menu in the upper-left corner and not have the actual game in the back all faded?
this thing rules. good work. i shall be using.
@Jeffrey: To get the position you want, just mess around with the x and y values in all the windows. I can't really give you exact numbers, since I don't know what position in the top left you want it (Pressed up against the side, or with a gap...)
Thanks for teh comments. Makes it all worthwile =D
Good work! I'll use it! :D
the screenshot didn't load...?
Love it, thanks man.
can someone upload a screen shot of this, since the pic. wont load... plz :)
Nobody else probably would, because it's over two years old, but lucky for you I'm in a non-strangly mood.
(https://rmrk.net/proxy.php?request=http%3A%2F%2Fimg593.imageshack.us%2Fimg593%2F3100%2Fcmsa.jpg&hash=52d09d4aa9cf9ad2d4fc6067b3282c2cd80bdc18)
Pretty much.
Don't really see why you needed a screenie if it's a plug-and-play script that is in code tags...