L's Simple Custom Menu #2 VX ver.
Version: Initial
By: Landarma
Introduction
VX version of my Simple CMS #2('Retro') for XP.
Features
Screenshots
Demo
Download demo - 4Shared
Script
Instructions
This is basically 'copy & paste' script. For 'dummied' custom commands like 'party change' or 'option', you have to use other scripts for making it functional.
FAQ
Q: Huh? 'Order'?
A: Changing party members' order around. Unfortunately, it does not work. In XP, I used Yargovish's code, however in VX, dispite of no syntax error, I cannot make it work.
Compatibility
Of course, it does replace main menu, so it won't work with other CMS.
Credits and Thanks
Dubealex for gold display mini script.
And for other scripters for showing me how-to-do.
Authoress' Notes
Now that I'm away from the scene, maybe there won't be enough support for my scripts.
Terms and Conditions
Feel free to use. Credits would be fine.
Version: Initial
By: Landarma
Introduction
VX version of my Simple CMS #2('Retro') for XP.
Features
- 'System' Submenu
- Several pre-defined custom commands (Dummy, so you have to assign other custom scripts for them)
- I can't think of more...
Screenshots
Demo
Download demo - 4Shared
Script
Code:
Â
#============================================================================
# * L's Custom Menu #2 (RMVX ver.)
#
# Initial Release Date: 2009-03-03 (YYYY-MM-DD)
#
# Note: 'Order' command does not work.
#
#============================================================================
Â
module MenuCommand
 #Default menu commands +1
 Item   = 'Item'
 Skill   = 'Skill'
 Equip   = 'Equip'
 Status  = 'Status'
 Save   = 'Save'
 Load   = 'Load'
 End_Game = 'Exit'
 #Optional menu commands
 Order   = 'Order'
 Party   = 'Party'
 Option  = 'Option'
 Quest   = 'Quest'
 System  = 'System'
end
Â
#------------------------------------------------------------------------------
# Â Game_Map
#------------------------------------------------------------------------------
class Game_Map
#------------------------------------------------------------------------------
# Â Name
#------------------------------------------------------------------------------
 def name
  $map_infos[@map_id]
 end
end
Â
Â
#========================================
# Â Scene_Title
#--------------------------------------------------------------------------------
# Setting functions for the Title
#========================================
class Scene_Title
 $map_infos = load_data("Data/MapInfos.rvdata")
 for key in $map_infos.keys
  $map_infos[key] = $map_infos[key].name
 end
end
Â
Â
class Window_MapName < Window_Base
 def initialize(x, y)
  super(x, y, 240, 64)
  refresh
 end
 def refresh
  self.contents.clear
  self.contents.font.color = normal_color
  self.contents.draw_text(4, 0, 200, 32, $game_map.name.to_s, 1)
 end
end
Â
Â
#==============================================================================
# Window_Gold
#==============================================================================
Â
class Window_Gold < Window_Base
 #--------------------------------------------------------------------------
 # * Object Initialization
 #--------------------------------------------------------------------------
 def initialize(x, y)
  super(x, y, 200, 64)
  #Refresh and add the contents to window
  refresh
 end
 #--------------------------------------------------------------------------
 # * Refresh
 #--------------------------------------------------------------------------
 def refresh
  #Advanced Gold Display mini-script by Dubealex.
  self.contents.clear  Â
  case $game_party.gold
  when 0..9999
   gold = $game_party.gold
  when 10000..99999
   gold = $game_party.gold.to_s
   array = gold.split(//)
   gold = array[0].to_s+array[1].to_s+","+array[2].to_s+array[3].to_s+array[4].to_s
  when 100000..999999
   gold = $game_party.gold.to_s
   array = gold.split(//)
   gold = array[0].to_s+array[1].to_s+array[2].to_s+","+array[3].to_s+array[4].to_s+array[5].to_s
  when 1000000..9999999
   gold = $game_party.gold.to_s
   array = gold.split(//)
   gold = array[0].to_s+","+array[1].to_s+array[2].to_s+array[3].to_s+","+array[4].to_s+array[5].to_s+array[6].to_s
  end
Â
  self.contents.font.color = system_color
  gold_word = $data_system.terms.gold.to_s + " /"
  cx = contents.text_size(gold_word).width
  cx2=contents.text_size(gold.to_s).width
  self.contents.draw_text(4, 0, 160-cx-2, 32, gold_word)
  self.contents.font.color = text_color(0)
  self.contents.draw_text(164-cx2+2, 0, cx2, 32, gold.to_s, 2)
 end
end
Â
Â
#==============================================================================
# ** Window_MenuStatus
#------------------------------------------------------------------------------
# Â This window displays party member status on the menu screen.
#==============================================================================
Â
class Window_MenuStatus < Window_Selectable
 #--------------------------------------------------------------------------
 # * Object Initialization
 #   x : window X coordinate
 #   y : window Y coordinate
 #--------------------------------------------------------------------------
 def initialize(x, y)
  $game_party.members.size < 4 ? i = 14 : i = 0
  $game_party.members.size == 1 ? i = WLH : i = i
  super(x, y, 384, ($game_party.members.size * 72)+i)
  refresh
  self.active = false
  self.index = -1
 end
 #--------------------------------------------------------------------------
 # * Refresh
 #--------------------------------------------------------------------------
 def refresh
  self.contents.clear
  @item_max = $game_party.members.size
  for actor in $game_party.members
   x = 16
   y = actor.index*64
   draw_actor_name(actor, x, y)
   draw_actor_class(actor, x + 120, y)
   draw_actor_level(actor, x, y + WLH * 1)
   draw_actor_state(actor, x + 220, y)
   draw_actor_hp(actor, x + 72, y + WLH * 1)
   draw_actor_mp(actor, x + 200, y + WLH * 1)
  end
 end
 #--------------------------------------------------------------------------
 # * Update cursor
 #--------------------------------------------------------------------------
 def update_cursor
  if @index < 0        # No cursor
   self.cursor_rect.empty
  elsif @index < @item_max   # Normal
   self.cursor_rect.set(0, @index * 64, contents.width, 64)
  elsif @index >= 100     # Self
   self.cursor_rect.set(0, (@index - 100) * 64, contents.width, 64)
  else             # All
   self.cursor_rect.set(0, 0, contents.width, @item_max * 64)
  end
 end
end
Â
Â
Â
#==============================================================================
# ** Scene_Menu
#------------------------------------------------------------------------------
# Â 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
  commands_init
  @changer = 0 #Change Party Order by Yargovish
  @where = 0 #
  @checker = 0  #
 end
 #--------------------------------------------------------------------------
 # * Set Commands
 #--------------------------------------------------------------------------
 def commands_init
  @commands = []
  s1 = MenuCommand::Item
  s2 = MenuCommand::Skill
  s3 = MenuCommand::Equip
  s4 = MenuCommand::Status
  s5 = MenuCommand::Party
  s6 = MenuCommand::System
  @commands.push(s1, s2, s3, s4, s5, s6).flatten!
 Â
  @sys_commands = []
  o1 = MenuCommand::Option
  o2 = MenuCommand::Save
  o3 = MenuCommand::Load
  o4 = MenuCommand::End_Game
  @sys_commands.push(o1, o2, o3, o4).flatten!
 end
 #--------------------------------------------------------------------------
 # * Start processing
 #--------------------------------------------------------------------------
 def start
  super
  create_menu_background
  create_command_window
  create_system_window
  @gold_window = Window_Gold.new(344, 352)
  @status_window = Window_MenuStatus.new(160, 0)
  @mapname_window = Window_MapName.new(0, 352)
 end
 #--------------------------------------------------------------------------
 # * Termination Processing
 #--------------------------------------------------------------------------
 def terminate
  super
  dispose_menu_background
  @command_window.dispose
  @sys_command_window.dispose
  @gold_window.dispose
  @status_window.dispose
  @mapname_window.dispose
 end
 #--------------------------------------------------------------------------
 # * Frame Update
 #--------------------------------------------------------------------------
 def update
  super
  update_menu_background
  @command_window.update
  @sys_command_window.update
  @gold_window.update
  @status_window.update
  @mapname_window.update
  if @command_window.active
   update_command_selection
  elsif @sys_command_window.active
   @sys_command_window.z = +500
   update_sys_command_selection
  elsif @status_window.active
   update_actor_selection
  end
 end
 #--------------------------------------------------------------------------
 # * Create Command Window
 #--------------------------------------------------------------------------
 def create_command_window
  @command_window = Window_Command.new(160, @commands)
  @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 skill
   @command_window.draw_item(2, false)   # Disable equipment
   @command_window.draw_item(3, false)   # Disable status
  end Â
  #if $game_party.members.size <= 1
  #  @command_window.draw_item(4, false)   # Disable ordering
  #end
 end
 #--------------------------------------------------------------------------
 # * Create System Command Window
 #--------------------------------------------------------------------------
 def create_system_window
  @sys_command_window = Window_Command.new(128, @sys_commands)
  @sys_command_window.visible = false
  @sys_command_window.active = false
  @sys_command_window.x = 100
  @sys_command_window.y = 130
  @sys_command_window.z = 0
  check_save_available
  check_load_available
 end
 #-----------------
 def check_save_available
  if $game_system.save_disabled       # If save is forbidden
   @sys_command_window.draw_item(1, false)   # Disable save
  end
 end
 #-----------------
 def check_load_available
  #Check if saved file exists
  @load_enabled = (Dir.glob('Save*.rvdata').size > 0)
  if !@load_enabled
   #Put your @command_window.draw_item(index, false) to disable load
   @sys_command_window.draw_item(2, false)
  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)
   # Return if Disabled Command
   if disabled_main_command?
    # Play buzzer SE
    Sound.play_buzzer
    return
   end
   main_command_input
  end
 end
 #--------------------------------------------------------------------------
 # * Update Command Selection
 #--------------------------------------------------------------------------
 def update_sys_command_selection
  if Input.trigger?(Input::B)
   Sound.play_cancel
   @command_window.active = true
   @sys_command_window.active = false
   @sys_command_window.visible = false
   @sys_command_window.index = 0
   @sys_command_window.z = -500
   return
  elsif Input.trigger?(Input::C)
   # Return if Disabled Command
   if disabled_main_command?
    # Play buzzer SE
    Sound.play_buzzer
    return Â
   end
   sys_command_input
  end
 end
 #--------------------------------------------------------------------------
 # * Disabled Main Command? Test
 #--------------------------------------------------------------------------
 def disabled_main_command?
  # Gets Current Command
  command = @commands[@command_window.index]
  sys_command = @sys_commands[@sys_command_window.index]
  # Gets Menu Commands
  c = MenuCommand
  # If 0 Party Size
  if $game_party.members.size == 0
   # If Item, Skill, Equip or Status Selected
   if [c::Item, c::Skill, c::Equip, c::Status].include?(command)
    return true
   end
  elsif $game_party.members.size <= 1
   # If the command is changing member order
   if [c::Order].include?(command)
    return true
   end
  end
  # If Save Disabled && Command is Save
  return true if $game_system.save_disabled and sys_command == c::Save
  # If Load Disabled && Command is Load
  return true if !@load_enabled && sys_command == c::Load
  return false
 end
 #--------------------------------------------------------------------------
 # * Update Command Check
 #--------------------------------------------------------------------------
 def main_command_input
  # Loads Current Command
  command = @commands[@command_window.index]
  # Play decision SE
  Sound.play_decision
  # Checks Commands
  case command
  when MenuCommand::Item  #item
   command_item
  when MenuCommand::Skill, MenuCommand::Equip, MenuCommand::Status #skill, equip, status
   start_actor_selection Â
  when MenuCommand::Order #order
   command_order
  when MenuCommand::Party
   command_party
  when MenuCommand::System  #call system submenu
   @sys_command_window.active = true
   @sys_command_window.visible = true
   @command_window.active = false   Â
  end
 end
 #--------------------------------------------------------------------------
 # * Update System Command Check
 #--------------------------------------------------------------------------
 def sys_command_input
  # Loads Current Command
  sys_command = @sys_commands[@sys_command_window.index]
  # Play decision SE
  Sound.play_decision
  # Checks Commands
  case sys_command
  when MenuCommand::Option  #option
   command_option
  when MenuCommand::Save  #save
   command_save
  when MenuCommand::Load  #load
   command_load
  when MenuCommand::End_Game  #exit
   command_endgame
  end
 end
 #--------------------------------------------------------------------------
 # * Start Actor Selection
 #--------------------------------------------------------------------------
 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
 #--------------------------------------------------------------------------
 # * End Actor Selection
 #--------------------------------------------------------------------------
 def end_actor_selection
  @command_window.active = true
  @status_window.active = false
  @status_window.index = -1
 end
 #--------------------------------------------------------------------------
 # * Update Actor Selection
 #--------------------------------------------------------------------------
 def update_actor_selection
  # Loads Current Command
  command = @commands[@command_window.index]
  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
   when MenuCommand::Skill  # skill
    command_skill
   when MenuCommand::Equip  # equipment
    command_equip
   when MenuCommand::Status  # status
    command_status
   end
  end
 end
 #--------------------------------------------------------------------------
 # * Command Item
 #--------------------------------------------------------------------------
 def command_item
  # Switch to item screen
  $scene = Scene_Item.new
 end
 #--------------------------------------------------------------------------
 # * Command Skill
 #--------------------------------------------------------------------------
 def command_skill
  # Switch to skill screen
  $scene = Scene_Skill.new(@status_window.index)
 end
 #--------------------------------------------------------------------------
 # * Command Equip
 #--------------------------------------------------------------------------
 def command_equip
  # Switch to equipment screen
  $scene = Scene_Equip.new(@status_window.index)
 end
 #--------------------------------------------------------------------------
 # * Command Status
 #--------------------------------------------------------------------------
 def command_status
  # Switch to status screen
  $scene = Scene_Status.new(@status_window.index)
 end
 #--------------------------------------------------------------------------
 # * Command Order
 #--------------------------------------------------------------------------
 def command_order
  # If Main Command Active
  if @command_window.active
   # Activate Status Window
   start_actor_selection
   @checker = 0
   return
  end
  #Change Party Order by Yargovish
  if @checker == 0
   @changer = $game_party.members[@status_window.index]
   @where = @status_window.index
   @checker = 1
  else
   $game_party.members[@where] = $game_party.members[@status_window.index]
   $game_party.members[@status_window.index] = @changer
   @checker = 0
   @status_window.refresh
   $game_player.refresh #
  end   Â
 end
 #--------------------------------------------------------------------------
 # * Command Party
 #--------------------------------------------------------------------------
 def command_party
  # Switch to party change screen
  #Put your Party Change Scene here
 end
 #--------------------------------------------------------------------------
 # * Command Option
 #--------------------------------------------------------------------------
 def command_option
  # Switch to party change screen
  #Put your Option Scene here
 end
 #--------------------------------------------------------------------------
 # * Command Quest
 #--------------------------------------------------------------------------
 def command_quest
  # Switch to party change screen
  #Put your Quest Scene here
 end
 #--------------------------------------------------------------------------
 # * Command Save
 #--------------------------------------------------------------------------
 def command_save
  # Switch to save screen
  $scene = Scene_File.new(true, false, false)
 end
 #--------------------------------------------------------------------------
 # * Command Load
 #--------------------------------------------------------------------------
 def command_load
  # Switch to load screen
  $scene = Scene_File.new(false, false, false)
 end
 #--------------------------------------------------------------------------
 # * Command End Game
 #--------------------------------------------------------------------------
 def command_endgame
  # Switch to end game screen
  $scene = Scene_End.new
 end
end
Â
Instructions
This is basically 'copy & paste' script. For 'dummied' custom commands like 'party change' or 'option', you have to use other scripts for making it functional.
FAQ
Q: Huh? 'Order'?
A: Changing party members' order around. Unfortunately, it does not work. In XP, I used Yargovish's code, however in VX, dispite of no syntax error, I cannot make it work.
Compatibility
Of course, it does replace main menu, so it won't work with other CMS.
Credits and Thanks
Dubealex for gold display mini script.
And for other scripters for showing me how-to-do.
Authoress' Notes
Now that I'm away from the scene, maybe there won't be enough support for my scripts.
Terms and Conditions
Feel free to use. Credits would be fine.