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.
ScreenshotInstructions / 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
end
Author's Notes / Credit
Not much else to say really. Give credit, and enjoy.