03-03-2009, 03:54 AM 
(This post was last modified: 09-02-2024, 05:59 PM by DerVVulfman.)
	
	
	L's Simple Custom Menu #2 VX ver.
Version: InitialBy: 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
(Demo includes my old CMS Edit)
Script
 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
endInstructions
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.

 
 
 L's Simple Custom Menu #2 VX ver
 L's Simple Custom Menu #2 VX ver
 

 
![[Image: rmvxcmstest021.png]](http://img13.imageshack.us/img13/4864/rmvxcmstest021.png)
 
 