Envision, Create, Share

Welcome to HBGames, a leading amateur game development forum and Discord server. All are welcome, and amongst our ranks you will find experts in their field from all aspects of video game design and development.

[VX] Custom Commands

I have updated the script to version 1.5
This version now supports commands substitutes. it works exactly like the classes "custom skill command name" feature but for ANY command.
Search for
Code:
class RPG::Class
and edit the @commands array.

Take care!
-Dargor
 
I found a glitch.

For character class 4 (Magician) I renamed skill to Magic (using the new command substitute thingy).  Now, i can't select it when battling.

Code:
    #Magician's Class, use Magic instead of skills
    @commands[4] = {
                      Vocab::skill => 'Magic'
                   }
Thats the edit I made.
 
Dargor":nwcs7tbi said:
Don't replace the skill command with the script. Instead, use the class skill command feature, directly from the database.
Oh, I never noticed that.  Thanks :)

Also, I am having a bit trouble with a custom command, maybe I am not seeing it.  I am basing this one off of your bestiary script for the (Woratana's) mix skills system.

Code:
# Vocabulary
Vocab::MixSkills = 'Skill Combine'

#==============================================================================
# ** Scene_Menu
#------------------------------------------------------------------------------
#  This class performs the menu screen processing.
#==============================================================================

class Scene_Menu < Scene_Base
  #--------------------------------------------------------------------------
  # * Alias Listing
  #--------------------------------------------------------------------------
  alias woratana_vx_mixskills_menu_create_command_window create_command_window
  alias woratana_vx_mixskills_menu_update_command_selection update_command_selection
  #--------------------------------------------------------------------------
  # * Create Command Window
  #--------------------------------------------------------------------------
  def create_command_window
    commands = $game_system.menu_commands
    index = commands.index(Vocab::save)
    $game_system.add_menu_command(index, Vocab::MixSkills)
    dargor_vx_cmcbestiary_menu_create_command_window
  end
  #--------------------------------------------------------------------------
  # * Update Command Selection
  #--------------------------------------------------------------------------
  def update_command_selection
    woratana_vx_mixskills_menu_update_command_selection
    command = @command_window.selection
    if Input.trigger?(Input::C)
      Sound.play_decision
      case @command_window.selection
      when Vocab::MixSkills
        $scene = Scene_Mixskill.new(true)
      end
    end
  end
end
#==============================================================================
# ** Scene_Bestiary
#------------------------------------------------------------------------------
#  This class performs the bestiary screen processing.
#==============================================================================

class Scene_Mixskillsystem < Scene_Base
  #--------------------------------------------------------------------------
  # * Alias Listing
  #--------------------------------------------------------------------------
  alias woratana_vx_mixskills_update_list_selection update_list_selection
  #--------------------------------------------------------------------------
  # * Object Initialization
  #--------------------------------------------------------------------------
  def initialize(from_menu=false)
    @from_menu = from_menu
  end
  #--------------------------------------------------------------------------
  # * Update List Selection
  #--------------------------------------------------------------------------
  def update_list_selection
    if Input.trigger?(Input::B)
      Sound.play_cancel
      if @from_menu
        index = $game_system.menu_commands.index(Vocab::MixSkills)
        $scene = Scene_Menu.new(index)
      else
        $scene = Scene_Map.new
      end
      return
    end
    woratana_vx_mixskills_update_list_selection
  end
end

But when I run it, it gives me this error:

Script 'Add Mix Skills to Menu' line 57: NameError occurred.
undefined method 'update list selection' for class
'Scene_Mixskillsystem'

Now, what might be causing it, is that in Woratana's script, its already defined as Scene_Mixskillsystem.  But, I don't really know how to fix it.
 
You did at least 2 mistakes.
  alias woratana_vx_mixskills_menu_create_command_window create_command_window
  alias woratana_vx_mixskills_menu_update_command_selection update_command_selection
  #--------------------------------------------------------------------------
  # * Create Command Window
  #--------------------------------------------------------------------------
  def create_command_window
    commands = $game_system.menu_commands
    index = commands.index(Vocab::save)
    $game_system.add_menu_command(index, Vocab::MixSkills)
    dargor_vx_cmcbestiary_menu_create_command_window
      ***You kept the aliased method of the beatisry script
            use woratana_vx_mixskills_menu_create_command_window instead ***

  end
  #--------------------------------------------------------------------------
  # * Update Command Selection
  #--------------------------------------------------------------------------
  def update_command_selection
    woratana_vx_mixskills_menu_update_command_selection
    command = @command_window.selection
    if Input.trigger?(Input::C)
      Sound.play_decision
      case @command_window.selection
      when Vocab::MixSkills
        $scene = Scene_Mixskill.new(true)
          ***Isn't that supposed to be Scene_Mixskillsystem ???***

      end
    end
  end
end

class Scene_Mixskillsystem < Scene_Base
  *** ...or maybe the class name is supposed to be Scene_Mixskill ???***

  (...)

Besides that, everything is fine.
 
Ah yeah... I figured it out now.

For anyone who wants to use it, here it is:
For Woratana's mix skill system
Code:
#==============================================================================
# ** Custom Commands (by Dargor) - Woratana's Mix Skills System
#------------------------------------------------------------------------------
#  Addon by Psymastr
#  June 11th, 2008
#==============================================================================

# Vocabulary
Vocab::MixSkills = 'Mix Skills'

#==============================================================================
# ** Scene_Menu
#------------------------------------------------------------------------------
#  This class performs the menu screen processing.
#==============================================================================

class Scene_Menu < Scene_Base
  #--------------------------------------------------------------------------
  # * Alias Listing
  #--------------------------------------------------------------------------
  alias dargor_vx_cmcskillsup_menu_create_command_window create_command_window
  alias dargor_vx_cmcskillsup_menu_update_command_selection update_command_selection
  #--------------------------------------------------------------------------
  # * Create Command Window
  #--------------------------------------------------------------------------
  def create_command_window
    commands = $game_system.menu_commands
    index = commands.index(Vocab::save)
    $game_system.add_menu_command(index, Vocab::MixSkills)
    dargor_vx_cmcskillsup_menu_create_command_window
  end
  #--------------------------------------------------------------------------
  # * Update Command Selection
  #--------------------------------------------------------------------------
  def update_command_selection
    dargor_vx_cmcskillsup_menu_update_command_selection
    command = @command_window.selection
    if Input.trigger?(Input::C)
      Sound.play_decision
      case @command_window.selection
      when Vocab::MixSkills
        $scene = Scene_Mixskill.new
      end
    end
  end
end
 
I keep getting a problem when I test it where it tells me:
'no implicit conversion from nil to integer' on line 223.

I haven't touched the script, and its the topmost script above Main. Any reason it could be doing this? I haven't been able to figure this out for a couple days now so I thought I'd ask.

Thanks in advance.
 

Reliez

Member

van helblaze":17n6lwii said:
I still can't remove save from the main menu

Now, correct me if I'm wrong (since I'm a complete script newbie), but this should get rid of the save feature from the main menu:

#==============================================================================
# ** Custom Commands
#------------------------------------------------------------------------------
#  © Dargor, 2008
#  08/06/08
#  Version 1.5
#------------------------------------------------------------------------------
#  VERSION HISTORY:
#  - 1.0  (09/03/08), Initial release
#  - 1.1  (15/03/08), Added support for Party Commands
#  - 1.2  (15/03/08), Added support for Actor Commands
#  - 1.2.1 (15/03/08), Bug fixed with Selectable Window's contents
#  - 1.3  (24/03/08), Added the 'Selection' method to Window_Selectable
#  - 1.4  (08/05/08), Works with the 'Selection' method
#  - 1.5  (08/06/08), Added support for command substitution based
#                        on an actor's class ID
#------------------------------------------------------------------------------
#  INSTRUCTIONS:
#    1) Place this script above all custom scripts and below all
#        default scripts
#    2) To change the default menu commands, use:
#          - $game_system.menu_commands = [string1, string2...]
#              or
#          - $game_system.add_menu_command(index, command)
#              or
#          - $game_system.remove_menu_command(command)
#    3) To change the default party commands, use:
#          - $game_system.party_commands = [string1, string2...]
#              or
#          - $game_system.add_party_command(index, command)
#              or
#          - $game_system.remove_party_command(command)
#    4) To change an actor's battle commands, use:
#          - $game_actors[id].commands = [string1, string2...]
#              or
#          - $game_actors[id].add_command(index, command)
#              or
#          - $game_actors[id].remove_command(command)
#------------------------------------------------------------------------------
#  NOTES:
#    1) When using the following methods:
#            > $game_system.add_menu_command(index, command)
#            > $game_system.remove_menu_command(command)
#            > $game_system.add_party_command(index, command)
#            > $game_system.remove_party_command(command)
#            > $game_actors[id].add_command(index, command)
#            > $game_actors[id].remove_command(command)
#      'command' can be a String or an Array
#    2) This script overides the following methods:
#            > Window_PartyCommand
#              <> initialize
#            > Window_ActorCommand
#              <> initialize
#              <> setup
#            > Scene_Menu
#              <> create_command_window
#              <> update_command_selection
#              <> update_actor_selection
#            > Scene_Battle
#              <> update_party_command_selection
#              <> update_actor_command_selection
#        This script will be incompatible with any other scripts
#        modifying these methodsunless they are based on the
#        Custom Commands script methods.
#==============================================================================
       
#==============================================================================
# ** RPG::Class
#------------------------------------------------------------------------------
#  This class handles actors classes.
#==============================================================================

class RPG::Class
  #--------------------------------------------------------------------------
  # * Command Name
  # Returns a substitute to command_name.
  # Returns the original command name if no substitues are found.
  #    command_name : command name
  #--------------------------------------------------------------------------
  def command_name(command)
    # Commands Substitution Array
    @commands = []
    # SYNTAX: @commands[class_ID] = { original_command => substitute }
    @commands[1] = {
                    Vocab::attack => 'Strike',
                    Vocab::item  => 'Things'
                  }
    @commands[2] = {
                    Vocab::guard => 'Protect',
                    Vocab::item  => 'Stuff'
                  }
    # Get command substitute
    if @commands[@id].nil? or @commands[@id][command].nil?
      return command
    end
    return @commands[@id][command]
  end
end

#==============================================================================
# ** Game_System
#------------------------------------------------------------------------------
#  This class handles system-related data. Also manages vehicles and BGM, etc.
# The instance of this class is referenced by $game_system.
#==============================================================================

class Game_System
  #--------------------------------------------------------------------------
  # * Public Instance Variables
  #--------------------------------------------------------------------------
  attr_accessor :menu_commands
  attr_accessor :party_commands
  #--------------------------------------------------------------------------
  # * Alias Listing
  #--------------------------------------------------------------------------
  alias dargor_vx_cmc_system_initialize initialize
  #--------------------------------------------------------------------------
  # * Object Initialization
  #--------------------------------------------------------------------------
  def initialize
    dargor_vx_cmc_system_initialize
    s1 = Vocab::item
    s2 = Vocab::skill
    s3 = Vocab::equip
    s4 = Vocab::status
    s5 = Vocab::game_end
    @menu_commands = [s1, s2, s3, s4, s5]
    s1 = Vocab::fight
    s2 = Vocab::escape
    @party_commands = [s1, s2]
  end
  #--------------------------------------------------------------------------
  # * Add Menu Command
  #--------------------------------------------------------------------------
  def add_menu_command(index, command)
    return if @menu_commands.include?(command)
    if command.is_a?(String)
      @menu_commands.insert(index, command)
    elsif command.is_a?(Array)
      for i in 0...command.size
        @menu_commands.insert(index+i, command)
      end
    end
  end
  #--------------------------------------------------------------------------
  # * Add Party Command
  #--------------------------------------------------------------------------
  def add_party_command(index, command)
    return if @party_commands.include?(command)
    if command.is_a?(String)
      @party_commands.insert(index, command)
    elsif command.is_a?(Array)
      for i in 0...command.size
        @party_commands.insert(index+i, command)
      end
    end
  end
  #--------------------------------------------------------------------------
  # * Remove Menu Command
  #--------------------------------------------------------------------------
  def remove_menu_command(command)
    if command.is_a?(String)
      @menu_commands.delete(command)
    elsif command.is_a?(Array)
      for i in command
        @menu_commands.delete(i)
      end
    end
  end
  #--------------------------------------------------------------------------
  # * Remove Party Command
  #--------------------------------------------------------------------------
  def remove_party_command(command)
    if command.is_a?(String)
      @party_commands.delete(command)
    elsif command.is_a?(Array)
      for i in command
        @party_commands.delete(i)
      end
    end
  end
end

#==============================================================================
# ** Game_Actor
#------------------------------------------------------------------------------
#  This class handles actors. It's used within the Game_Actors class
# ($game_actors) and referenced by the Game_Party class ($game_party).
#==============================================================================

class Game_Actor < Game_Battler
  #--------------------------------------------------------------------------
  # * Public Instance Variables
  #--------------------------------------------------------------------------
  attr_reader  :commands                  # battle commands
  #--------------------------------------------------------------------------
  # * Public Instance Variables
  #--------------------------------------------------------------------------
  alias dargor_vx_battle_commands_actor_setup setup
  #--------------------------------------------------------------------------
  # * Setup
  #    actor_id : actor ID
  #--------------------------------------------------------------------------
  def setup(actor_id)
    dargor_vx_battle_commands_actor_setup(actor_id)
    actor = $data_actors[actor_id]
    s1 = self.class.command_name(Vocab::attack)
    s2 = self.class.command_name(Vocab::skill)
    s3 = self.class.command_name(Vocab::guard)
    s4 = self.class.command_name(Vocab::item)
    if self.class.skill_name_valid    # Skill command name is valid?
      s2 = self.class.skill_name      # Replace command name
    end
    @commands = [s1, s2, s3, s4]
  end
  #--------------------------------------------------------------------------
  # * Add Command
  #--------------------------------------------------------------------------
  def add_command(index, command)
    return if @commands.include?(command)
    if command.is_a?(String)
      @commands.insert(index, command)
    elsif command.is_a?(Array)
      for i in 0...command.size
        @commands.insert(index+i, command)
      end
    end
  end
  #--------------------------------------------------------------------------
  # * Remove Command
  #--------------------------------------------------------------------------
  def remove_command(command)
    if command.is_a?(String)
      @commands.delete(command)
    elsif command.is_a?(Array)
      for i in command
        @commands.delete(i)
      end
    end
  end
end

#==============================================================================
# ** Window_Selectable
#------------------------------------------------------------------------------
#  This window contains cursor movement and scroll functions.
#==============================================================================

class Window_Selectable < Window_Base
  #--------------------------------------------------------------------------
  # * Selection
  #--------------------------------------------------------------------------
  def selection
    return @commands[self.index]
  end
end

#==============================================================================
# ** Window_PartyCommand
#------------------------------------------------------------------------------
#  This window is used to select whether to fight or escape on the battle
# screen.
#==============================================================================

class Window_PartyCommand < Window_Command
  #--------------------------------------------------------------------------
  # * Object Initialization
  #--------------------------------------------------------------------------
  def initialize
    @commands = $game_system.party_commands
    super(128, @commands, 1, 0)
    draw_item(0, true)
    draw_item(1, $game_troop.can_escape)
    self.active = false
    self.height = 128
  end
end

#==============================================================================
# ** Window_ActorCommand
#------------------------------------------------------------------------------
#  This window is used to select actor commands, such as "Attack" or "Skill".
#==============================================================================

class Window_ActorCommand < Window_Command
  #--------------------------------------------------------------------------
  # * Object Initialization
  #--------------------------------------------------------------------------
  def initialize
    super(128, [], 1, 4)
    self.active = false
  end
  #--------------------------------------------------------------------------
  # * Setup
  #    actor : actor
  #--------------------------------------------------------------------------
  def setup(actor)
    @commands = actor.commands
    @item_max = @commands.size
    height = @item_max * 24
    self.contents = Bitmap.new(width - 32, height)
    refresh
    self.index = 0
  end
end

#==============================================================================
# ** Scene_Menu
#------------------------------------------------------------------------------
#  This class performs the menu screen processing.
#==============================================================================

class Scene_Menu < Scene_Base
  #--------------------------------------------------------------------------
  # * Create Command Window
  #--------------------------------------------------------------------------
  def create_command_window
    @command_window = Window_Command.new(160, $game_system.menu_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
  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)
      command = @command_window.selection
      if $game_party.members.size == 0 and (command == Vocab::item or
                                            command == Vocab::skill or
                                            command == Vocab::equip or
                                            command == Vocab::status)
        Sound.play_buzzer
        return
      elsif $game_system.save_disabled and command == Vocab::save
        Sound.play_buzzer
        return
      end
      Sound.play_decision
      case @command_window.selection
      when Vocab::item
        $scene = Scene_Item.new
      when Vocab::skill,Vocab::equip,Vocab::status
        start_actor_selection
      when Vocab::game_end
        $scene = Scene_End.new
      end
    end
  end
  #--------------------------------------------------------------------------
  # * Update Actor Selection
  #--------------------------------------------------------------------------
  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.selection
      when Vocab::skill  # skill
        $scene = Scene_Skill.new(@status_window.index)
      when Vocab::equip  # equipment
        $scene = Scene_Equip.new(@status_window.index)
      when Vocab::status  # status
        $scene = Scene_Status.new(@status_window.index)
      end
    end
  end
end

#==============================================================================
# ** Scene_Battle
#------------------------------------------------------------------------------
#  This class performs battle screen processing.
#==============================================================================

class Scene_Battle < Scene_Base
  #--------------------------------------------------------------------------
  # * Update Party Command Selection
  #--------------------------------------------------------------------------
  def update_party_command_selection
    if Input.trigger?(Input::C)
      case @party_command_window.selection
      when Vocab::fight  # Fight
        Sound.play_decision
        @status_window.index = @actor_index = -1
        next_actor
      when Vocab::escape  # Escape
        if $game_troop.can_escape == false
          Sound.play_buzzer
          return
        end
        Sound.play_decision
        process_escape
      end
    end
  end
  #--------------------------------------------------------------------------
  # * Update Actor Command Selection
  #--------------------------------------------------------------------------
  def update_actor_command_selection
    skill = Vocab::skill
    if @active_battler.class.skill_name_valid
      skill = @active_battler.class.skill_name
    end
    if Input.trigger?(Input::B)
      Sound.play_cancel
      prior_actor
    elsif Input.trigger?(Input::C)
      case @actor_command_window.selection
      when @active_battler.class.command_name(Vocab::attack)  # Attack
        Sound.play_decision
        @active_battler.action.set_attack
        start_target_enemy_selection
      when skill # Skill
        Sound.play_decision
        start_skill_selection
      when @active_battler.class.command_name(Vocab::guard)  # Guard
        Sound.play_decision
        @active_battler.action.set_guard
        next_actor
      when @active_battler.class.command_name(Vocab::item)  # Item
        Sound.play_decision
        start_item_selection
      end
    end
  end
end


Basically, you just get rid of the vocabulary from the main menu.
So it's the very same script, but with the mentions of save removed.
If you want to bring up the save feature, just call it up with an event. :]
Hope that helps!
 
That didn't work I get this error.

Code:
Script 'Custom Commands' line 138 TypeError occured.

no implicit conversion from nil to integer
------------------
EDIT:
Reliez":3c940kwo said:
van helblaze":3c940kwo said:
I still can't remove save from the main menu

Now, correct me if I'm wrong (since I'm a complete script newbie), but this should get rid of the save feature from the main menu:

#==============================================================================
# ** Custom Commands
#------------------------------------------------------------------------------
#  © Dargor, 2008
#  08/06/08
#  Version 1.5
#------------------------------------------------------------------------------
#  VERSION HISTORY:
#   - 1.0   (09/03/08), Initial release
#   - 1.1   (15/03/08), Added support for Party Commands
#   - 1.2   (15/03/08), Added support for Actor Commands
#   - 1.2.1 (15/03/08), Bug fixed with Selectable Window's contents
#   - 1.3   (24/03/08), Added the 'Selection' method to Window_Selectable
#   - 1.4   (08/05/08), Works with the 'Selection' method
#   - 1.5   (08/06/08), Added support for command substitution based
#                         on an actor's class ID
#------------------------------------------------------------------------------
#  INSTRUCTIONS:
#     1) Place this script above all custom scripts and below all
#         default scripts
#     2) To change the default menu commands, use:
#           - $game_system.menu_commands = [string1, string2...]
#               or
#           - $game_system.add_menu_command(index, command)
#               or
#           - $game_system.remove_menu_command(command)
#     3) To change the default party commands, use:
#           - $game_system.party_commands = [string1, string2...]
#               or
#           - $game_system.add_party_command(index, command)
#               or
#           - $game_system.remove_party_command(command)
#     4) To change an actor's battle commands, use:
#           - $game_actors[id].commands = [string1, string2...]
#               or
#           - $game_actors[id].add_command(index, command)
#               or
#           - $game_actors[id].remove_command(command)
#------------------------------------------------------------------------------
#  NOTES:
#     1) When using the following methods:
#             > $game_system.add_menu_command(index, command)
#             > $game_system.remove_menu_command(command)
#             > $game_system.add_party_command(index, command)
#             > $game_system.remove_party_command(command)
#             > $game_actors[id].add_command(index, command)
#             > $game_actors[id].remove_command(command)
#       'command' can be a String or an Array
#     2) This script overides the following methods:
#             > Window_PartyCommand
#               <> initialize
#             > Window_ActorCommand
#               <> initialize
#               <> setup
#             > Scene_Menu
#               <> create_command_window
#               <> update_command_selection
#               <> update_actor_selection
#             > Scene_Battle
#               <> update_party_command_selection
#               <> update_actor_command_selection
#         This script will be incompatible with any other scripts
#         modifying these methodsunless they are based on the
#         Custom Commands script methods.
#==============================================================================
       
#==============================================================================
# ** RPG::Class
#------------------------------------------------------------------------------
#  This class handles actors classes.
#==============================================================================

class RPG::Class
  #--------------------------------------------------------------------------
  # * Command Name
  # Returns a substitute to command_name.
  # Returns the original command name if no substitues are found.
  #     command_name : command name
  #--------------------------------------------------------------------------
  def command_name(command)
    # Commands Substitution Array
    @commands = []
    # SYNTAX: @commands[class_ID] = { original_command => substitute }
    @commands[1] = {
                    Vocab::attack => 'Strike',
                    Vocab::item   => 'Things'
                   }
    @commands[2] = {
                    Vocab::guard => 'Protect',
                    Vocab::item  => 'Stuff'
                   }
    # Get command substitute
    if @commands[@id].nil? or @commands[@id][command].nil?
      return command
    end
    return @commands[@id][command]
  end
end

#==============================================================================
# ** Game_System
#------------------------------------------------------------------------------
#  This class handles system-related data. Also manages vehicles and BGM, etc.
# The instance of this class is referenced by $game_system.
#==============================================================================

class Game_System
  #--------------------------------------------------------------------------
  # * Public Instance Variables
  #--------------------------------------------------------------------------
  attr_accessor :menu_commands
  attr_accessor :party_commands
  #--------------------------------------------------------------------------
  # * Alias Listing
  #--------------------------------------------------------------------------
  alias dargor_vx_cmc_system_initialize initialize
  #--------------------------------------------------------------------------
  # * Object Initialization
  #--------------------------------------------------------------------------
  def initialize
    dargor_vx_cmc_system_initialize
    s1 = Vocab::item
    s2 = Vocab::skill
    s3 = Vocab::equip
    s4 = Vocab::status
    s5 = Vocab::game_end
    @menu_commands = [s1, s2, s3, s4, s5]
    s1 = Vocab::fight
    s2 = Vocab::escape
    @party_commands = [s1, s2]
  end
  #--------------------------------------------------------------------------
  # * Add Menu Command
  #--------------------------------------------------------------------------
  def add_menu_command(index, command)
    return if @menu_commands.include?(command)
    if command.is_a?(String)
      @menu_commands.insert(index, command)
    elsif command.is_a?(Array)
      for i in 0...command.size
        @menu_commands.insert(index+i, command)
      end
    end
  end
  #--------------------------------------------------------------------------
  # * Add Party Command
  #--------------------------------------------------------------------------
  def add_party_command(index, command)
    return if @party_commands.include?(command)
    if command.is_a?(String)
      @party_commands.insert(index, command)
    elsif command.is_a?(Array)
      for i in 0...command.size
        @party_commands.insert(index+i, command)
      end
    end
  end
  #--------------------------------------------------------------------------
  # * Remove Menu Command
  #--------------------------------------------------------------------------
  def remove_menu_command(command)
    if command.is_a?(String)
      @menu_commands.delete(command)
    elsif command.is_a?(Array)
      for i in command
        @menu_commands.delete(i)
      end
    end
  end
  #--------------------------------------------------------------------------
  # * Remove Party Command
  #--------------------------------------------------------------------------
  def remove_party_command(command)
    if command.is_a?(String)
      @party_commands.delete(command)
    elsif command.is_a?(Array)
      for i in command
        @party_commands.delete(i)
      end
    end
  end
end

#==============================================================================
# ** Game_Actor
#------------------------------------------------------------------------------
#  This class handles actors. It's used within the Game_Actors class
# ($game_actors) and referenced by the Game_Party class ($game_party).
#==============================================================================

class Game_Actor < Game_Battler
  #--------------------------------------------------------------------------
  # * Public Instance Variables
  #--------------------------------------------------------------------------
  attr_reader   :commands                   # battle commands
  #--------------------------------------------------------------------------
  # * Public Instance Variables
  #--------------------------------------------------------------------------
  alias dargor_vx_battle_commands_actor_setup setup
  #--------------------------------------------------------------------------
  # * Setup
  #     actor_id : actor ID
  #--------------------------------------------------------------------------
  def setup(actor_id)
    dargor_vx_battle_commands_actor_setup(actor_id)
    actor = $data_actors[actor_id]
    s1 = self.class.command_name(Vocab::attack)
    s2 = self.class.command_name(Vocab::skill)
    s3 = self.class.command_name(Vocab::guard)
    s4 = self.class.command_name(Vocab::item)
    if self.class.skill_name_valid     # Skill command name is valid?
      s2 = self.class.skill_name       # Replace command name
    end
    @commands = [s1, s2, s3, s4]
  end
  #--------------------------------------------------------------------------
  # * Add Command
  #--------------------------------------------------------------------------
  def add_command(index, command)
    return if @commands.include?(command)
    if command.is_a?(String)
      @commands.insert(index, command)
    elsif command.is_a?(Array)
      for i in 0...command.size
        @commands.insert(index+i, command)
      end
    end
  end
  #--------------------------------------------------------------------------
  # * Remove Command
  #--------------------------------------------------------------------------
  def remove_command(command)
    if command.is_a?(String)
      @commands.delete(command)
    elsif command.is_a?(Array)
      for i in command
        @commands.delete(i)
      end
    end
  end
end

#==============================================================================
# ** Window_Selectable
#------------------------------------------------------------------------------
#  This window contains cursor movement and scroll functions.
#==============================================================================

class Window_Selectable < Window_Base
  #--------------------------------------------------------------------------
  # * Selection
  #--------------------------------------------------------------------------
  def selection
    return @commands[self.index]
  end
end

#==============================================================================
# ** Window_PartyCommand
#------------------------------------------------------------------------------
#  This window is used to select whether to fight or escape on the battle
# screen.
#==============================================================================

class Window_PartyCommand < Window_Command
  #--------------------------------------------------------------------------
  # * Object Initialization
  #--------------------------------------------------------------------------
  def initialize
    @commands = $game_system.party_commands
    super(128, @commands, 1, 0)
    draw_item(0, true)
    draw_item(1, $game_troop.can_escape)
    self.active = false
    self.height = 128
  end
end

#==============================================================================
# ** Window_ActorCommand
#------------------------------------------------------------------------------
#  This window is used to select actor commands, such as "Attack" or "Skill".
#==============================================================================

class Window_ActorCommand < Window_Command
  #--------------------------------------------------------------------------
  # * Object Initialization
  #--------------------------------------------------------------------------
  def initialize
    super(128, [], 1, 4)
    self.active = false
  end
  #--------------------------------------------------------------------------
  # * Setup
  #     actor : actor
  #--------------------------------------------------------------------------
  def setup(actor)
    @commands = actor.commands
    @item_max = @commands.size
    height = @item_max * 24
    self.contents = Bitmap.new(width - 32, height)
    refresh
    self.index = 0
  end
end

#==============================================================================
# ** Scene_Menu
#------------------------------------------------------------------------------
#  This class performs the menu screen processing.
#==============================================================================

class Scene_Menu < Scene_Base
  #--------------------------------------------------------------------------
  # * Create Command Window
  #--------------------------------------------------------------------------
  def create_command_window
    @command_window = Window_Command.new(160, $game_system.menu_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
  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)
      command = @command_window.selection
      if $game_party.members.size == 0 and (command == Vocab::item or
                                            command == Vocab::skill or
                                            command == Vocab::equip or
                                            command == Vocab::status)
        Sound.play_buzzer
        return
      elsif $game_system.save_disabled and command == Vocab::save
        Sound.play_buzzer
        return
      end
      Sound.play_decision
      case @command_window.selection
      when Vocab::item
        $scene = Scene_Item.new
      when Vocab::skill,Vocab::equip,Vocab::status
        start_actor_selection
      when Vocab::game_end
        $scene = Scene_End.new
      end
    end
  end
  #--------------------------------------------------------------------------
  # * Update Actor Selection
  #--------------------------------------------------------------------------
  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.selection
      when Vocab::skill  # skill
        $scene = Scene_Skill.new(@status_window.index)
      when Vocab::equip  # equipment
        $scene = Scene_Equip.new(@status_window.index)
      when Vocab::status  # status
        $scene = Scene_Status.new(@status_window.index)
      end
    end
  end
end

#==============================================================================
# ** Scene_Battle
#------------------------------------------------------------------------------
#  This class performs battle screen processing.
#==============================================================================

class Scene_Battle < Scene_Base
  #--------------------------------------------------------------------------
  # * Update Party Command Selection
  #--------------------------------------------------------------------------
  def update_party_command_selection
    if Input.trigger?(Input::C)
      case @party_command_window.selection
      when Vocab::fight  # Fight
        Sound.play_decision
        @status_window.index = @actor_index = -1
        next_actor
      when Vocab::escape  # Escape
        if $game_troop.can_escape == false
          Sound.play_buzzer
          return
        end
        Sound.play_decision
        process_escape
      end
    end
  end
  #--------------------------------------------------------------------------
  # * Update Actor Command Selection
  #--------------------------------------------------------------------------
  def update_actor_command_selection
    skill = Vocab::skill
    if @active_battler.class.skill_name_valid
      skill = @active_battler.class.skill_name
    end
    if Input.trigger?(Input::B)
      Sound.play_cancel
      prior_actor
    elsif Input.trigger?(Input::C)
      case @actor_command_window.selection
      when @active_battler.class.command_name(Vocab::attack)  # Attack
        Sound.play_decision
        @active_battler.action.set_attack
        start_target_enemy_selection
      when skill # Skill
        Sound.play_decision
        start_skill_selection
      when @active_battler.class.command_name(Vocab::guard)  # Guard
        Sound.play_decision
        @active_battler.action.set_guard
        next_actor
      when @active_battler.class.command_name(Vocab::item)  # Item
        Sound.play_decision
        start_item_selection
      end
    end
  end
end


Basically, you just get rid of the vocabulary from the main menu.
So it's the very same script, but with the mentions of save removed.
If you want to bring up the save feature, just call it up with an event. :]
Hope that helps!

your method only works with the Scene_Menu script, once Custom Commands is added it overrides the changes, and I get the error from removing save from this script

Dang I wish I knew how to use ruby script, it would be so much less frustration, I really need all of the scripts set up properly by the middle to end of next week so I can hand off a development copy to one of my friends, he knows even less about scripting than I do.
 
Script updated to version 1.7

I have fixed a little bug with the commands substitution feature and another bug when disabling menu commands (especially the Save command).
Additionally, I have added support for custom Title Screen commands.

Take care!
-Dargor
 
Code:
  #--------------------------------------------------------------------------
  # * Remove Menu Command
  #--------------------------------------------------------------------------
  def remove_menu_command(save)
    if command.is_a?(s5)
      @menu_commands.delete(save)
    elsif command.is_a?(Array)
      for i in command
        @menu_commands.delete(i)
      end
    end
  end

is this right so far?  I have no idea what the array is or the index so what should I put for those areas?
 
Nonono! You don't have to change anything in this method!
If you want to remove the Save command, simply use the following line of code.
Code:
$game_system.remove_menu_command(Vocab::save)

I'll decorticate the method.
Code:
  #--------------------------------------------------------------------------
  # * Remove Menu Command
  #--------------------------------------------------------------------------
  def remove_menu_command(command)
    if command.is_a?(String)
      @menu_commands.delete(command)
    elsif command.is_a?(Array)
      for i in command
        @menu_commands.delete(i)
      end
    end
  end

Fort of all, the method expects an argument (command) which can be a String or an Array.
Use a string (ex: "My Command") if you want to remove only one command.
Use an Array of Strings (ex: [ "Command1", "Command2", "Command3" ]) if you want to remove multiple commands at the same time.
Code:
$game_system.remove_menu_command("My Command")
$game_system.remove_menu_command([ "Command1", "Command2", "Command3" ])

Then, the method checks what you're doing.
Code:
if command.is_a?(String)
   # remove the specified command
   (...)
elsif command.is_a?(Array)
   # remove every commands in the Array
   (...)
end

That's all, you only need to use
Code:
$game_system.remove_menu_command("My Command")
or
Code:
$game_system.remove_menu_command([ "Command1", "Command2", "Command3" ])
 
I noticed that for my at least if I don't open the menu screen before activating the event I get an error and the game crashes

Code:
Script 'Custom Commands' line 146: TypeError occured.

no implicit conversion from nil to integer
 
make a fake starting map... autorun event... send you to real starting map XD
thats what I use for startups if I want certain things set before... like a few random numbers stored and random inventory given for players..
 
wsensor":idrzwzqj said:
make a fake starting map... autorun event... send you to real starting map XD
thats what I use for startups if I want certain things set before... like a few random numbers stored and random inventory given for players..
I'll try it, but when I tried autorun the even when I opened the menu (if it get that far) I would get an error message.  I unless I have the event as action button I will get error when running the command, but if I use action button if I don't open the menu first I will get the error.
 
I also get the same error, after the start menu I get an error on line 255 or more specifically the Add Menu command line, @commands.insert(index, command) . Would this possibly be because I'm not adding any commands (except scripted ones like the prayer one)?
 
Another Update.

I have fix another bug with disabled commands. The menu index has been corrected and I have modified enable/disable methods.

Take care!
-Dargor
 

Thank you for viewing

HBGames is a leading amateur video game development forum and Discord server open to all ability levels. Feel free to have a nosey around!

Discord

Join our growing and active Discord server to discuss all aspects of game making in a relaxed environment. Join Us

Content

  • Our Games
  • Games in Development
  • Emoji by Twemoji.
    Top