03-08-2008, 06:03 AM 
	
	
	L's Simple Main Menu #3: 1-Person Menu
This is a menu for 1-person. Not so compact, but maybe useful for Action RPG. 'Variable' is for user-made value, like fame point, score, or in-game date, anything. Originally for someone else's game, but released for public, also posted on rmxp.org.
 Screenshot
  			![[Image: rmxpcmstest03cv6.png]](http://img138.imageshack.us/img138/2205/rmxpcmstest03cv6.png)
 Script (Older)
  			Code:
class Window_Base < Window
  SYSTEM_WORD_EVA = "Evade" #
  #--------------------------------------------------------------------------
  # * Draw Parameter
  #     actor : actor
  #     x     : draw spot x-coordinate
  #     y     : draw spot y-coordinate
  #     type  : parameter type (0-6)
  #--------------------------------------------------------------------------
  def draw_actor_parameter(actor, x, y, type)
    case type
    when 0
      parameter_name = $data_system.words.atk
      parameter_value = actor.atk
    when 1
      parameter_name = $data_system.words.pdef
      parameter_value = actor.pdef
    when 2
      parameter_name = $data_system.words.mdef
      parameter_value = actor.mdef
    when 3
      parameter_name = $data_system.words.str
      parameter_value = actor.str
    when 4
      parameter_name = $data_system.words.dex
      parameter_value = actor.dex
    when 5
      parameter_name = $data_system.words.agi
      parameter_value = actor.agi
    when 6
      parameter_name = $data_system.words.int
      parameter_value = actor.int
    when 7 #
      parameter_name = SYSTEM_WORD_EVA #
      parameter_value = actor.eva #
    end
    self.contents.font.color = system_color
    self.contents.draw_text(x, y, 120, 32, parameter_name)
    self.contents.font.color = normal_color
    self.contents.draw_text(x + 120, y, 36, 32, parameter_value.to_s, 2)
  end
end
#============================================================================== 
# ? Game_Map 
#============================================================================== 
class Game_Map    
  def name
     $map_infos[@map_id]
  end   
end
#========================================
#? Scene_Title
#--------------------------------------------------------------------------------
# Setting functions for the Title
#========================================
class Scene_Title
  $map_infos = load_data("Data/MapInfos.rxdata")
  for key in $map_infos.keys
    $map_infos[key] = $map_infos[key].name
  end
end
#==============================================================================
# InfoWindow
#==============================================================================
class Window_Info < Window_Base
  #--------------------------------------------------------------------------
  # * Object Initialization 
  #--------------------------------------------------------------------------
  def initialize
    super(0, 384, 640, 96)
    #Create Bitmap
    self.contents = Bitmap.new(width - 32, height - 32)
    self.contents.font.size = 22
    #Z-Pos
    self.z = 100
    #Refresh and add the contents to window
    refresh
  end
  #--------------------------------------------------------------------------
  # * Refresh 
  #--------------------------------------------------------------------------
  def refresh
    #Clear Bitmap
    self.contents.clear
    #Add Contents
    self.contents.font.color = system_color
    self.contents.draw_text(4,0,120,32,'Location')
    self.contents.font.color = normal_color
    self.contents.draw_text(96,0,360,32,$game_map.name.to_s)
    
    #Draw Steps
    self.contents.font.color = system_color
    self.contents.draw_text(4,32,120,32,'Steps')
    self.contents.font.color = normal_color
    self.contents.draw_text(48,32, 120, 32, $game_party.steps.to_s, 2)
    
    #Draw Play Time
    self.contents.font.color = system_color
    self.contents.draw_text(200,32,120,32,'Play Time')
    @total_sec = Graphics.frame_count / Graphics.frame_rate
    hour = @total_sec / 60 / 60
    min = @total_sec / 60 % 60
    sec = @total_sec % 60
    text = sprintf("%02d:%02d:%02d", hour, min, sec)
    self.contents.font.color = normal_color
    self.contents.draw_text(310, 32, 120, 32, text)
    
    #Draw Gold
    #Advanced Gold Display mini-script by Dubealex.
    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.words.gold.to_s + " :"
    cx = contents.text_size(gold_word).width
    cx2=contents.text_size(gold.to_s).width
    self.contents.draw_text(412,32,120-cx-2,32,gold_word)
    self.contents.font.color = normal_color
    self.contents.draw_text(600-cx2+2, 32, cx2, 32, gold.to_s, 2)
    
    #Draw Variable
    self.contents.font.color = system_color
    self.contents.draw_text(412,0,120,32,'Variable Name')
    self.contents.font.color = normal_color
    self.contents.draw_text(540,0,120,32,'Variable')
  end
  #--------------------------------------------------------------------------
  # * Frame Update
  #--------------------------------------------------------------------------
  def update
    super
    if Graphics.frame_count / Graphics.frame_rate != @total_sec
      refresh
    end
  end
end
#==============================================================================
# MenuStatus
#==============================================================================
class Window_NewMenuStatus < Window_Base
  #--------------------------------------------------------------------------
  # * Object Initialization 
  #--------------------------------------------------------------------------
  def initialize
    super(160, 0, 480, 320)
    #Create Bitmap
    self.contents = Bitmap.new(width - 32, height - 32)
    self.contents.font.size = 22
    #Z-Pos
    self.z = 100
    #Refresh and add the contents to window
    refresh
  end
  #--------------------------------------------------------------------------
  # * Refresh 
  #--------------------------------------------------------------------------
  def refresh
    #Clear Bitmap
    self.contents.clear
    actor = $game_party.actors[0]
    draw_actor_graphic(actor, 32, 64)
    draw_actor_name(actor, 75, 0)
    draw_actor_class(actor, 240, 0)
    draw_actor_level(actor, 75, 32)
    draw_actor_state(actor, 240, 32)
    draw_actor_exp(actor, 75, 64)
    draw_actor_hp(actor, 32,100)
    draw_actor_sp(actor, 240,100)
    draw_actor_parameter(actor, 32, 150, 0)
    draw_actor_parameter(actor, 32, 182, 1)
    draw_actor_parameter(actor, 32, 214, 2)
    draw_actor_parameter(actor, 32, 246, 7) #Evade
    draw_actor_parameter(actor, 240, 150, 3)
    draw_actor_parameter(actor, 240, 182, 4)
    draw_actor_parameter(actor, 240, 214, 5)
    draw_actor_parameter(actor, 240, 246, 6)
  end
end
#==============================================================================
# Scene_Menu
#==============================================================================
class Scene_Menu
  def initialize(menu_index = 0)
    @menu_index = menu_index
    commands_init
  end
  #--------------------------------------------------------------------------
  # * Set Commands
  #--------------------------------------------------------------------------
  def commands_init
    # MenuCommand
    @commands = []
    s1='Item'
    s2='Skill'
    s3='Equip'
    s4='Player'
    s5='Option'
    s6='System'
    @commands.push(s1, s2, s3, s4, s5, s6).flatten!
    
    @player_commands = []
    z1='Status'
    z2='Quest Log'
    @player_commands.push(z1, z2).flatten!
    
    @system_commands = []
    o1='Save'
    o2='Load'
    o3='Exit'
    @system_commands.push(o1, o2, o3).flatten!
  end
  #--------------------------------------------------------------------------
  # * Main - Handles drawing/disposing windows and the main loop 
  #--------------------------------------------------------------------------
  def main
    #Draw Windows
    main_command_window
    player_command_window
    system_command_window
    main_draw
    #Execute transition
    Graphics.transition
    #Main Loop
    loop do
      #Main Loop
      main_loop
      break if main_scenechange?
    end
    #Prepare for transition
    Graphics.freeze
    #Dispose Windows
    main_dispose
  end
  #--------------------------------------------------------------------------
  # * Main Command Window
  #--------------------------------------------------------------------------
  def main_command_window
    @command_window = Window_Command.new(160,@commands)
    @command_window.back_opacity = 160
    @command_window.index = @menu_index
    # If number of party members is 0
    if $game_party.actors.size == 0
      # Disable items, skills, equipment, and status
      @command_window.disable_item(0)
      @command_window.disable_item(1)
      @command_window.disable_item(2)
      @command_window.disable_item(3)
    end
  end
  def player_command_window
    @player_command_window = Window_Command.new(160,@player_commands)
    @player_command_window.back_opacity = 160
    @player_command_window.visible = false
    @player_command_window.active = false
    @player_command_window.x = 100
    @player_command_window.y = 120
  end
  def system_command_window
    @sys_command_window = Window_Command.new(128,@system_commands)
    @sys_command_window.back_opacity = 160
    @sys_command_window.visible = false
    @sys_command_window.active = false
    @sys_command_window.x=100
    @sys_command_window.y=180
    if $game_system.save_disabled
      @sys_command_window.disable_item(0)
    end
  end
  #--------------------------------------------------------------------------
  # * Main Draw - Handles drawing windows
  #--------------------------------------------------------------------------
  def main_draw
    #Draw Background
    @background = Spriteset_Map.new
    
    #Draw Windows
    # InfoWindow
    @info_window = Window_Info.new
    @info_window.back_opacity = 160
    # MenuStatus
    @status_window = Window_NewMenuStatus.new
    @status_window.back_opacity = 160
  end
  #--------------------------------------------------------------------------
  # * Main Scene Change 
  #--------------------------------------------------------------------------
  def main_scenechange?
    # Abort loop if screen is changed
    if $scene != self
      return true
    end
    return false
  end
  #--------------------------------------------------------------------------
  # * Main Dispose 
  #--------------------------------------------------------------------------
  def main_dispose
    #Dispose Background
    @background.dispose
    
    # Dispose All Windows
    # Dispose InfoWindow
    @info_window.dispose
    # Dispose MenuStatus
    @status_window.dispose
    # Dispose MenuCommand
    @command_window.dispose
    @player_command_window.dispose
    @sys_command_window.dispose
  end
  #--------------------------------------------------------------------------
  # * Main Loop 
  #--------------------------------------------------------------------------
  def main_loop
    # Update game screen
    Graphics.update
    # Update input information
    Input.update
    # Frame update
    update
  end
  #--------------------------------------------------------------------------
  # * Update 
  #--------------------------------------------------------------------------
  def update
    # Update Windows
    update_windows
    
    if @player_command_window.active
      @player_command_window.z = +500
    end
    
    if @sys_command_window.active
      @sys_command_window.z = +500
    end
    
    # If command window is active: call update_command
    if @command_window.active
      update_command
      return
    end
    # If player menu window is active: call update_player_command
    if @player_command_window.active
      update_player_command
      return
    end
    # If system menu window is active: call update_sys_command
    if @sys_command_window.active
      update_sys_command
      return
    end
  end
  #--------------------------------------------------------------------------
  # * Window Update 
  #--------------------------------------------------------------------------
  def update_windows
    # Update MenuCommand
    @command_window.update if @command_window.visible
    @player_command_window.update if @player_command_window.visible
    @sys_command_window.update if @sys_command_window.visible
    @info_window.update
    @status_window.update
  end
  #--------------------------------------------------------------------------
  # * Update Menu Command 
  #--------------------------------------------------------------------------
  def update_command
    # If B button was pressed
    if Input.trigger?(Input::B)
      # Play cancel SE
      $game_system.se_play($data_system.cancel_se)      
      # Switch to map screen
      $scene = Scene_Map.new
      return
    end
    # If C button was pressed
    if Input.trigger?(Input::C)# If command other than save or end game, and party members = 0
      if $game_party.actors.size == 0 and @command_window.index < 4
        # Play buzzer SE
        $game_system.se_play($data_system.buzzer_se)
        return
      end
      # Branch by command window cursor position
      case @command_window.index
      when 0 # Item
        # Play decision SE
        $game_system.se_play($data_system.decision_se)
        # Switch to item screen
        $scene = Scene_Item.new
      when 1 # Skill
        # If this actor's action limit is 2 or more
        if $game_party.actors[0].restriction >= 2
          # Play buzzer SE
          $game_system.se_play($data_system.buzzer_se)
          return
        end
        # Play decision SE
        $game_system.se_play($data_system.decision_se)
        # Switch to skill screen
        $scene = Scene_Skill.new
      when 2 # Equip
        # Play decision SE
        $game_system.se_play($data_system.decision_se)
        # Switch to equipment screen
        $scene = Scene_Equip.new
      when 3 # Player
        $game_system.se_play($data_system.decision_se)
        @player_command_window.active = true
        @player_command_window.visible = true
        @command_window.active = false
      when 4 # Option
        #$game_system.se_play($data_system.decision_se)
        #Put your Option Scene
      when 5 # System
        $game_system.se_play($data_system.decision_se)
        @sys_command_window.active = true
        @sys_command_window.visible = true
        @command_window.active = false
      end
    end
  end
  #--------------------------------------------------------------------------
  # * Update PlayerCommand Window
  #--------------------------------------------------------------------------
  def update_player_command
    if Input.trigger?(Input::B)
      $game_system.se_play($data_system.cancel_se)
      @command_window.active = true
      @player_command_window.active = false
      @player_command_window.visible = false
      @player_command_window.index = 0
      @player_command_window.z = 0
      return
    end  
    
    if Input.trigger?(Input::C)
      case @player_command_window.index      
      when 0 #Status
        # Play decision SE
        $game_system.se_play($data_system.decision_se)
        # Switch to status screen
        $scene = Scene_Status.new
      when 1 #Quest Log
        # Play decision SE
        #$game_system.se_play($data_system.decision_se)
        #Put your Quest Scene
      end
      return
    end
  end
  #--------------------------------------------------------------------------
  # * Update SysCommand Window
  #--------------------------------------------------------------------------
  def update_sys_command
    if Input.trigger?(Input::B)
      $game_system.se_play($data_system.cancel_se)
      @command_window.active = true
      @sys_command_window.active = false
      @sys_command_window.visible = false
      @sys_command_window.index = 0
      @sys_command_window.z = 0
      return
    end  
    
    if Input.trigger?(Input::C)
      case @sys_command_window.index      
      when 0 #Save
        # If saving is forbidden
        if $game_system.save_disabled
          # Play buzzer SE
          $game_system.se_play($data_system.buzzer_se)
          return
        end
        # Play decision SE
        $game_system.se_play($data_system.decision_se)
        # Switch to save screen
        $scene = Scene_Save.new
      when 1 #Load
        # Play decision SE
        $game_system.se_play($data_system.decision_se)
        # Switch to load screen
        $scene = Scene_Load.new
      when 2 #Exit  
        # Play decision SE
        $game_system.se_play($data_system.decision_se)
        # Switch to end game screen
        $scene = Scene_End.new
      end
      return
    end
  end
end SDK2 version
  			Code:
#==============================================================================
#L's Custom Menu #3: Simple 1-person CMS - SDK2 ver.
#--------------------------------------------------------------------------
#==============================================================================
#--------------------------------------------------------------------------
# * Begin SDK Log
#--------------------------------------------------------------------------
SDK.log("L's 1-person CMS", 'L', '1.01', '2007-05-31')
#--------------------------------------------------------------------------
# * Begin SDK Requirement Check
#--------------------------------------------------------------------------
SDK.check_requirements(2.0, [1])
#--------------------------------------------------------------------------
# * Begin SDK Enable Test
#--------------------------------------------------------------------------
if SDK.enabled?("L's 1-person CMS")
module SDK::Scene_Commands
  #============================================================================
  # ** Scene_Menu
  #============================================================================
  module Scene_Menu
    Item     = 'Item'
    Skill    = 'Skill'
    Equip    = 'Equip'
    Status   = 'Status'
    Save     = 'Save'
    Load     = 'Load'
    End_Game = 'Exit'
    
    Order    = 'Order'
    Party    = 'Party'
    Player   = 'Player'
    Option   = 'Option'
    Quest    = 'Quest'
    System   = 'System'
    
    Menu_Commands = [Item, Skill, Equip, Player, Option, System]
    Player_Commands = [Status, Quest]
    System_Commands = [Save, Load, End_Game]
  end
end
class Window_Base < Window
  SYSTEM_WORD_EVA = "Evade" #
  #--------------------------------------------------------------------------
  # * Draw Parameter
  #     actor : actor
  #     x     : draw spot x-coordinate
  #     y     : draw spot y-coordinate
  #     type  : parameter type (0-6)
  #--------------------------------------------------------------------------
  def draw_actor_parameter(actor, x, y, type)
    case type
    when 0
      parameter_name = $data_system.words.atk
      parameter_value = actor.atk
    when 1
      parameter_name = $data_system.words.pdef
      parameter_value = actor.pdef
    when 2
      parameter_name = $data_system.words.mdef
      parameter_value = actor.mdef
    when 3
      parameter_name = $data_system.words.str
      parameter_value = actor.str
    when 4
      parameter_name = $data_system.words.dex
      parameter_value = actor.dex
    when 5
      parameter_name = $data_system.words.agi
      parameter_value = actor.agi
    when 6
      parameter_name = $data_system.words.int
      parameter_value = actor.int
    when 7 #
      parameter_name = SYSTEM_WORD_EVA #
      parameter_value = actor.eva #
    end
    self.contents.font.color = system_color
    self.contents.draw_text(x, y, 120, 32, parameter_name)
    self.contents.font.color = normal_color
    self.contents.draw_text(x + 120, y, 36, 32, parameter_value.to_s, 2)
  end
end
#============================================================================== 
# ? Game_Map 
#============================================================================== 
class Game_Map    
  def name
     $map_infos[@map_id]
  end   
end
#========================================
#? Scene_Title
#--------------------------------------------------------------------------------
# Setting functions for the Title
#========================================
class Scene_Title
  $map_infos = load_data("Data/MapInfos.rxdata")
  for key in $map_infos.keys
    $map_infos[key] = $map_infos[key].name
  end
end
#==============================================================================
# InfoWindow
#==============================================================================
class Window_Info < Window_Base
  #--------------------------------------------------------------------------
  # * Object Initialization 
  #--------------------------------------------------------------------------
  def initialize
    super(0, 384, 640, 96)
    #Create Bitmap
    self.contents = Bitmap.new(width - 32, height - 32)
    self.contents.font.size = 22
    #Z-Pos
    self.z = 100
    #Refresh and add the contents to window
    refresh
  end
  #--------------------------------------------------------------------------
  # * Refresh 
  #--------------------------------------------------------------------------
  def refresh
    #Clear Bitmap
    self.contents.clear
    #Add Contents
    self.contents.font.color = system_color
    self.contents.draw_text(4,0,120,32,'Location')
    self.contents.font.color = normal_color
    self.contents.draw_text(96,0,360,32,$game_map.name.to_s)
    
    #Draw Steps
    self.contents.font.color = system_color
    self.contents.draw_text(4,32,120,32,'Steps')
    self.contents.font.color = normal_color
    self.contents.draw_text(48,32, 120, 32, $game_party.steps.to_s, 2)
    
    #Draw Play Time
    self.contents.font.color = system_color
    self.contents.draw_text(200,32,120,32,'Play Time')
    @total_sec = Graphics.frame_count / Graphics.frame_rate
    hour = @total_sec / 60 / 60
    min = @total_sec / 60 % 60
    sec = @total_sec % 60
    text = sprintf("%02d:%02d:%02d", hour, min, sec)
    self.contents.font.color = normal_color
    self.contents.draw_text(310, 32, 120, 32, text)
    
    #Draw Gold
    #Advanced Gold Display mini-script by Dubealex.
    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.words.gold.to_s + " :"
    cx = contents.text_size(gold_word).width
    cx2=contents.text_size(gold.to_s).width
    self.contents.draw_text(412,32,120-cx-2,32,gold_word)
    self.contents.font.color = normal_color
    self.contents.draw_text(600-cx2+2, 32, cx2, 32, gold.to_s, 2)
    
    #Draw Variable
    self.contents.font.color = system_color
    self.contents.draw_text(412,0,120,32,'Variable Name')
    self.contents.font.color = normal_color
    self.contents.draw_text(540,0,120,32,'Variable')
  end
  #--------------------------------------------------------------------------
  # * Frame Update
  #--------------------------------------------------------------------------
  def update
    super
    if Graphics.frame_count / Graphics.frame_rate != @total_sec
      refresh
    end
  end
end
#==============================================================================
# MenuStatus
#==============================================================================
class Window_NewMenuStatus < Window_Base
  #--------------------------------------------------------------------------
  # * Object Initialization 
  #--------------------------------------------------------------------------
  def initialize
    super(160, 0, 480, 320)
    #Create Bitmap
    self.contents = Bitmap.new(width - 32, height - 32)
    self.contents.font.size = 22
    #Z-Pos
    self.z = 100
    #Refresh and add the contents to window
    refresh
  end
  #--------------------------------------------------------------------------
  # * Refresh 
  #--------------------------------------------------------------------------
  def refresh
    #Clear Bitmap
    self.contents.clear
    actor = $game_party.actors[0]
    draw_actor_graphic(actor, 32, 64)
    draw_actor_name(actor, 75, 0)
    draw_actor_class(actor, 240, 0)
    draw_actor_level(actor, 75, 32)
    draw_actor_state(actor, 240, 32)
    draw_actor_exp(actor, 75, 64)
    draw_actor_hp(actor, 32,100)
    draw_actor_sp(actor, 240,100)
    draw_actor_parameter(actor, 32, 150, 0)
    draw_actor_parameter(actor, 32, 182, 1)
    draw_actor_parameter(actor, 32, 214, 2)
    draw_actor_parameter(actor, 32, 246, 7) #Evade
    draw_actor_parameter(actor, 240, 150, 3)
    draw_actor_parameter(actor, 240, 182, 4)
    draw_actor_parameter(actor, 240, 214, 5)
    draw_actor_parameter(actor, 240, 246, 6)
  end
end
#==============================================================================
# ** Scene_Menu
#------------------------------------------------------------------------------
#  This class performs menu screen processing.
#==============================================================================
class Scene_Menu
  #--------------------------------------------------------------------------
  # * Object Initialization
  #     menu_index : command cursor's initial position
  #--------------------------------------------------------------------------
  def initialize(menu_index = 0)
    @menu_index = menu_index
  end
  #--------------------------------------------------------------------------
  # * Main Processing : Spriteset Initialization
  #--------------------------------------------------------------------------
  def main_spriteset  
    #Draw Background
    @background = Spriteset_Map.new
  end
  #--------------------------------------------------------------------------
  # * Main Processing : Window Initialization
  #--------------------------------------------------------------------------
  def main_window
    #Draw Windows
    main_command_window
    player_command_window
    system_command_window
    #Draw Windows
    # InfoWindow
    @info_window = Window_Info.new
    @info_window.back_opacity = 160
    # MenuStatus
    @status_window = Window_NewMenuStatus.new
    @status_window.back_opacity = 160    
  end
  #--------------------------------------------------------------------------
  # * Main Command Window
  #--------------------------------------------------------------------------
  def main_command_window
    commands = SDK::Scene_Commands::Scene_Menu::Menu_Commands.dup
    @command_window = Window_Command.new(160, commands)
    @command_window.back_opacity = 160
    @command_window.index = @menu_index
    # If number of party members is 0
    if $game_party.actors.size == 0
      # Disable items, skills, equipment, and status
      @command_window.disable_item(0)
      @command_window.disable_item(1)
      @command_window.disable_item(2)
      @command_window.disable_item(3)
    end
  end
  #--------------------------------------------------------------------------
  # * Player Command Window
  #--------------------------------------------------------------------------
  def player_command_window
    player_commands = SDK::Scene_Commands::Scene_Menu::Player_Commands.dup
    @player_command_window = Window_Command.new(160, player_commands)
    @player_command_window.back_opacity = 160
    @player_command_window.visible = false
    @player_command_window.active = false
    @player_command_window.x = 100
    @player_command_window.y = 120
  end
  #--------------------------------------------------------------------------
  # * System Command Window
  #--------------------------------------------------------------------------
  def system_command_window
    system_commands = SDK::Scene_Commands::Scene_Menu::System_Commands.dup
    @sys_command_window = Window_Command.new(128, system_commands)
    @sys_command_window.back_opacity = 160
    @sys_command_window.visible = false
    @sys_command_window.active = false
    @sys_command_window.x=100
    @sys_command_window.y=180
    check_save_available
    check_load_available
  end
  #-----------------
  def check_save_available
    # If save is forbidden
    if $game_system.save_disabled
      # Disable save
      @sys_command_window.disable_item(0)
    end
  end
  #-----------------
  def check_load_available
    #Check if saved file exists
    @load_enabled = false
    for i in 0..3
      if (FileTest.exist?("Save#{i+1}.rxdata"))        
        @load_enabled = true
      end
    end  
    if !@load_enabled
      #Put your @command_window.disable_item(index)
      @sys_command_window.disable_item(1)
    end
  end
  #--------------------------------------------------------------------------
  # * Update 
  #--------------------------------------------------------------------------
  def update
    super
    
    if @player_command_window.active
      @player_command_window.z = +500
    end
    
    if @sys_command_window.active
      @sys_command_window.z = +500
    end
    
    # If command window is active: call update_command
    if @command_window.active
      update_command
      return
    end
    # If player menu window is active: call update_player_command
    if @player_command_window.active
      update_player_command
      return
    end
    # If system menu window is active: call update_sys_command
    if @sys_command_window.active
      update_sys_command
      return
    end
  end
  #--------------------------------------------------------------------------
  # * Update Menu Command 
  #--------------------------------------------------------------------------
  def update_command
    # If B button was pressed
    if Input.trigger?(Input::B)
      # Play cancel SE
      $game_system.se_play($data_system.cancel_se)      
      # Switch to map screen
      $scene = Scene_Map.new
      return
    end
    # If C button was pressed
    if Input.trigger?(Input::C)
      # Return if Disabled Command
      if disabled_main_command?
        # Play buzzer SE
        $game_system.se_play($data_system.buzzer_se)
        return
      end
      # Command Input
      main_command_input
      return
    end
  end
  #--------------------------------------------------------------------------
  # * Update SysCommand Window
  #--------------------------------------------------------------------------
  def update_sys_command
    if Input.trigger?(Input::B)
      $game_system.se_play($data_system.cancel_se)
      @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
    end  
    # If C button was pressed
    if Input.trigger?(Input::C)
      # Return if Disabled Command
      if disabled_main_command?
        # Play buzzer SE
        $game_system.se_play($data_system.buzzer_se)
        return
      end
      # Command Input
      sys_command_input
      return
    end
  end
  #--------------------------------------------------------------------------
  # * Update Player Command Window
  #--------------------------------------------------------------------------
  def update_player_command
    if Input.trigger?(Input::B)
      $game_system.se_play($data_system.cancel_se)
      @command_window.active = true
      @player_command_window.active = false
      @player_command_window.visible = false
      @player_command_window.index = 0
      @player_command_window.z -= 500
      return
    end  
    # If C button was pressed
    if Input.trigger?(Input::C)
      # Return if Disabled Command
      if disabled_main_command?
        # Play buzzer SE
        $game_system.se_play($data_system.buzzer_se)
        return
      end
      # Command Input
      player_command_input
      return
    end    
  end
  #--------------------------------------------------------------------------
  # * Disabled Main Command? Test
  #--------------------------------------------------------------------------
  def disabled_main_command?
    # Gets Current Command
    command = @command_window.command
    sys_command = @sys_command_window.command
    player_command = @player_command_window.command
    # Gets SDK Scene_Menu Commands
    c = SDK::Scene_Commands::Scene_Menu
    # If 0 Party Size
    if $game_party.actors.size == 0
      # If Item, Skill, Equip or Status Selected
      if [c::Item, c::Skill, c::Equip, c::Status].include?(command)
        return true
      end
      if [c::Status].include?(player_command)
        return true
      end
    end
    if [c::Skill].include?(command)
      # If this actor's action limit is 2 or more
      if $game_party.actors[0].restriction >= 2
        return true
      end
    end
    # If Save Disabled && Command is Save
    return true if $game_system.save_disabled && sys_command == c::Save
    # If Load Disabled && Command is Load
    return true if !@load_enabled && sys_command == c::Load
    return false
  end
  #--------------------------------------------------------------------------
  # * Main Command Input
  #--------------------------------------------------------------------------
  def main_command_input
    # Play decision SE
    $game_system.se_play($data_system.decision_se)
    # Branch by command window cursor position
    case @command_window.command
    when SDK::Scene_Commands::Scene_Menu::Item      # item
      command_item
    when SDK::Scene_Commands::Scene_Menu::Skill     # skill
      command_skill
    when SDK::Scene_Commands::Scene_Menu::Equip     # equipment
      command_equip
    when SDK::Scene_Commands::Scene_Menu::Player    # Call Player Menu
      $game_system.se_play($data_system.decision_se)
      @player_command_window.active = true
      @player_command_window.visible = true
      @command_window.active = false
    when SDK::Scene_Commands::Scene_Menu::Option    #option
      command_option
    when SDK::Scene_Commands::Scene_Menu::System  # call system menu      
      $game_system.se_play($data_system.decision_se)
      @sys_command_window.active = true
      @sys_command_window.visible = true
      @command_window.active = false   
    end
  end
  #--------------------------------------------------------------------------
  # * Player Command Input
  #--------------------------------------------------------------------------
  def player_command_input
    # Play decision SE
    $game_system.se_play($data_system.decision_se)
    case @player_command_window.command
    when SDK::Scene_Commands::Scene_Menu::Status    # status
      command_status
    when SDK::Scene_Commands::Scene_Menu::Quest    # quest
      command_quest
    end
  end
  #--------------------------------------------------------------------------
  # * System Command Input
  #--------------------------------------------------------------------------
  def sys_command_input
    # Play decision SE
    $game_system.se_play($data_system.decision_se)
    # Branch by command window cursor position
    case @sys_command_window.command
    when SDK::Scene_Commands::Scene_Menu::Save  #save
      command_save
    when SDK::Scene_Commands::Scene_Menu::Load  #load
      command_load
    when SDK::Scene_Commands::Scene_Menu::End_Game  #end game
      command_endgame
    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
  end
  #--------------------------------------------------------------------------
  # * Command : Equip
  #--------------------------------------------------------------------------
  def command_equip
    # Switch to equipment screen
    $scene = Scene_Equip.new
  end
  #--------------------------------------------------------------------------
  # * Command : Status
  #--------------------------------------------------------------------------
  def command_status
    # Switch to status screen
    $scene = Scene_Status.new
  end
  #--------------------------------------------------------------------------
  # * Command : Option
  #--------------------------------------------------------------------------
  def command_option
    # Switch to option screen
    #Put your Option Scene here
  end
  #--------------------------------------------------------------------------
  # * Command : Quest
  #--------------------------------------------------------------------------
  def command_quest
    # Switch to quest screen
    #Put your Quest Scene here
  end
  #--------------------------------------------------------------------------
  # * Command : Save
  #--------------------------------------------------------------------------
  def command_save
    # Switch to save screen
    $scene = Scene_Save.new
  end
  #--------------------------------------------------------------------------
  # * Command : Load
  #--------------------------------------------------------------------------
  def command_load
    # Switch to load screen
    $scene = Scene_Load.new
  end
  #--------------------------------------------------------------------------
  # * Command : End Game
  #--------------------------------------------------------------------------
  def command_endgame
    # Switch to end game screen
    $scene = Scene_End.new
  end
end
#--------------------------------------------------------------------------
# * End SDK Enable Test
#--------------------------------------------------------------------------
end
 
 
 L's Simple Main Menu #3 - 1-person
 L's Simple Main Menu #3 - 1-person
 

