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.

REQ] Compatibility Issue

alright, so I'm sure almost everyone is familiar with Dargor's Cusotm Commands Script. Here it is if you dont know it

#==============================================================================
# ** Custom Commands
#------------------------------------------------------------------------------
#  © Dargor, 2008
#  18/06/08
#  Version 1.9
#------------------------------------------------------------------------------
#  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
#   - 1.6   (13/06/08), Added support for Title Screen Commands
#   - 1.7   (13/06/08), Bug fixed when disabling default commands
#   - 1.7.1 (16/06/08), Increased compatibility
#   - 1.8   (18/06/08), Menu Index has been corrected when comming back of
#                       default scenes (Item/Skill/Equip/Status/Save/End).
#   - 1.9   (18/06/08), Added support for enabling/disabling commands.
#------------------------------------------------------------------------------
#  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.
#==============================================================================
       
module Custom_Commands
  # Maximum number of commands visible at the same time in the
  # command windows
  Menu_Item_Max = 6
  Party_Item_Max = 4
  Actor_Item_Max = 4
  Title_Item_Max = 4
end

#==============================================================================
# ** 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
  attr_accessor :title_commands
  attr_accessor :disabled_menu_commands
  attr_accessor :disabled_party_commands
  attr_accessor :disabled_title_commands
  #--------------------------------------------------------------------------
  # * Alias Listing
  #--------------------------------------------------------------------------
  alias dargor_vx_cmc_system_initialize initialize
  #--------------------------------------------------------------------------
  # * Object Initialization
  #--------------------------------------------------------------------------
  def initialize
    dargor_vx_cmc_system_initialize
    @disabled_menu_commands = {}
    @disabled_party_commands = {}
    @disabled_title_commands = {}
    s1 = Vocab::item
    s2 = Vocab::skill
    s3 = Vocab::equip
    s4 = Vocab::status
    s5 = Vocab::save
    s6 = Vocab::game_end
    @menu_commands = []
    add_menu_command(0,[s1, s2, s3, s4, s5, s6])
    s1 = Vocab::fight
    s2 = Vocab::escape
    @party_commands = []
    add_party_command(0,[s1, s2])
    s1 = Vocab::new_game
    s2 = Vocab::continue
    s3 = Vocab::shutdown
    @title_commands = []
    add_title_command(0,[s1, s2, s3])
  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)
      @disabled_menu_commands[command] = false
    elsif command.is_a?(Array)
      for i in 0...command.size
        @menu_commands.insert(index+i, command)
        @disabled_menu_commands[command] = false
      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)
      @disabled_party_commands[command] = false
    elsif command.is_a?(Array)
      for i in 0...command.size
        @party_commands.insert(index+i, command)
        @disabled_party_commands[command] = false
      end
    end
  end
  #--------------------------------------------------------------------------
  # * Add Title Command
  #--------------------------------------------------------------------------
  def add_title_command(index, command)
    return if @title_commands.include?(command)
    if command.is_a?(String)
      @title_commands.insert(index, command)
      @disabled_party_commands[command] = false
    elsif command.is_a?(Array)
      for i in 0...command.size
        @title_commands.insert(index+i, command)
        @disabled_title_commands[command] = false
      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
  #--------------------------------------------------------------------------
  # * Remove Title Command
  #--------------------------------------------------------------------------
  def remove_title_command(command)
    if command.is_a?(String)
      @title_commands.delete(command)
    elsif command.is_a?(Array)
      for i in command
        @party_commands.delete(i)
      end
    end
  end
  #--------------------------------------------------------------------------
  # * Add Menu Command
  #--------------------------------------------------------------------------
  def enable_menu_command(command)
    @disabled_menu_commands[command] = false
  end
  #--------------------------------------------------------------------------
  # * Add Party Command
  #--------------------------------------------------------------------------
  def enable_party_command(command)
    @disabled_party_commands[command] = false
  end
  #--------------------------------------------------------------------------
  # * Add Title Command
  #--------------------------------------------------------------------------
  def enable_title_command(command)
    @disabled_title_commands[command] = false
  end
  #--------------------------------------------------------------------------
  # * Add Menu Command
  #--------------------------------------------------------------------------
  def disable_menu_command(command)
    @disabled_menu_commands[command] = true
  end
  #--------------------------------------------------------------------------
  # * Add Party Command
  #--------------------------------------------------------------------------
  def disable_party_command(command)
    @disabled_party_commands[command] = true
  end
  #--------------------------------------------------------------------------
  # * Add Title Command
  #--------------------------------------------------------------------------
  def disable_title_command(command)
    @disabled_title_commands[command] = true
  end
  #--------------------------------------------------------------------------
  # * Add Menu Command
  #--------------------------------------------------------------------------
  def menu_command_disabled?(command)
    return @disabled_menu_commands[command]
  end
  #--------------------------------------------------------------------------
  # * Add Party Command
  #--------------------------------------------------------------------------
  def party_command_disabled?(command)
    return @disabled_party_commands[command]
  end
  #--------------------------------------------------------------------------
  # * Add Title Command
  #--------------------------------------------------------------------------
  def title_command_disabled?(command)
    return @disabled_title_commands[command]
  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_Command
#------------------------------------------------------------------------------
#  This window deals with general command choices.
#==============================================================================

class Window_Command < Window_Selectable
  alias dargor_vx_cmc_window_command_draw_item draw_item
  #--------------------------------------------------------------------------
  # * Draw Item
  #     index   : item number
  #     enabled : enabled flag. When false, draw semi-transparently.
  #--------------------------------------------------------------------------
  def draw_item(index, enabled = true)
    return if index.nil?
    dargor_vx_cmc_window_command_draw_item(index, enabled)
  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 = 32 + Custom_Commands::Party_Item_Max * WLH
  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 = 8 + Custom_Commands::Actor_Item_Max * WLH
    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
    @command_window.height = 8 + Custom_Commands::Menu_Item_Max * 24
    if $game_party.members.size == 0          # If number of party members is 0
      index = $game_system.menu_commands.index(Vocab::item)
      @command_window.draw_item(index, false)     # Disable item
      index = $game_system.menu_commands.index(Vocab::skill)
      @command_window.draw_item(index, false)     # Disable skill
      index = $game_system.menu_commands.index(Vocab::equip)
      @command_window.draw_item(index, false)     # Disable equipment
      index = $game_system.menu_commands.index(Vocab::status)
      @command_window.draw_item(index, false)     # Disable status
    end
    if $game_system.save_disabled             # If save is forbidden
      index = $game_system.menu_commands.index(Vocab::save)
      @command_window.draw_item(index, false)     # Disable save
    end
    for command in $game_system.menu_commands
      index = $game_system.menu_commands.index(command)
      if $game_system.menu_command_disabled?(command)
        @command_window.draw_item(index, false)    # Disable command
      end
    end
  end
  #--------------------------------------------------------------------------
  # * Update Command Selection
  #--------------------------------------------------------------------------
  def update_command_selection
    command = @command_window.selection
    if Input.trigger?(Input::B)
      Sound.play_cancel
      $scene = Scene_Map.new
    elsif Input.trigger?(Input::C)
      if $game_party.members.size == 0 and (command == 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
      elsif $game_system.menu_command_disabled?(command)
        Sound.play_buzzer
        return
      end
      Sound.play_decision
      case command
      when Vocab::item
        $scene = Scene_Item.new
      when Vocab::skill,Vocab::equip,Vocab::status
        start_actor_selection
      when Vocab::save      # Save
        $scene = Scene_File.new(true, false, false)
      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
  #--------------------------------------------------------------------------
  # * Alias Listing
  #--------------------------------------------------------------------------
  alias dargor_vx_custom_commands_battle_create_info_viewport create_info_viewport
  #--------------------------------------------------------------------------
  # * Create Information Display Viewport
  #--------------------------------------------------------------------------
  def create_info_viewport
    dargor_vx_custom_commands_battle_create_info_viewport
    for command in $game_system.party_commands
      index = $game_system.party_commands.index(command)
      if $game_system.party_command_disabled?(command)
        @party_command_window.draw_item(index, false)    # Disable command
      end
    end
  end
  #--------------------------------------------------------------------------
  # * 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

#==============================================================================
# ** Scene_Title
#------------------------------------------------------------------------------
#  This class performs the title screen processing.
#==============================================================================

class Scene_Title < Scene_Base
  #--------------------------------------------------------------------------
  # * Create Command Window
  #--------------------------------------------------------------------------
  def create_command_window
    @command_window = Window_Command.new(172, $game_system.title_commands)
    @command_window.x = (544 - @command_window.width) / 2
    @command_window.y = 288
    @command_window.height = 8 + Custom_Commands::Title_Item_Max * 24
    continue_index = $game_system.title_commands.index(Vocab::continue)
    if @continue_enabled                      # If continue is enabled
      @command_window.index = continue_index  # Move cursor over command
    else                                      # If disabled
      @command_window.draw_item(continue_index, false) # Make command semi-transparent
    end
    for command in $game_system.title_commands
      index = $game_system.title_commands.index(command)
      if $game_system.title_command_disabled?(command)
        @command_window.draw_item(index, false)    # Disable command
      end
    end
    @command_window.openness = 0
    @command_window.open
  end
  #--------------------------------------------------------------------------
  # * Frame Update
  #--------------------------------------------------------------------------
  def update
    super
    @command_window.update
    if Input.trigger?(Input::C)
      case @command_window.selection
      when Vocab::new_game    #New game
        command_new_game
      when Vocab::continue    # Continue
        command_continue
      when Vocab::shutdown    # Shutdown
        command_shutdown
      end
    end
  end
end

#==============================================================================
# ** Scene_Item
#------------------------------------------------------------------------------
#  This class performs the item screen processing.
#==============================================================================

class Scene_Item < Scene_Base
  #--------------------------------------------------------------------------
  # * Return to Original Screen
  #--------------------------------------------------------------------------
  def return_scene
    index = $game_system.menu_commands.index(Vocab::item)
    $scene = Scene_Menu.new(index)
  end
end

#==============================================================================
# ** Scene_Skill
#------------------------------------------------------------------------------
#  This class performs the skill screen processing.
#==============================================================================

class Scene_Skill < Scene_Base
  #--------------------------------------------------------------------------
  # * Return to Original Screen
  #--------------------------------------------------------------------------
  def return_scene
    index = $game_system.menu_commands.index(Vocab::skill)
    $scene = Scene_Menu.new(index)
  end
end

#==============================================================================
# ** Scene_Equip
#------------------------------------------------------------------------------
#  This class performs the equipment screen processing.
#==============================================================================

class Scene_Equip < Scene_Base
  #--------------------------------------------------------------------------
  # * Return to Original Screen
  #--------------------------------------------------------------------------
  def return_scene
    index = $game_system.menu_commands.index(Vocab::equip)
    $scene = Scene_Menu.new(index)
  end
end

#==============================================================================
# ** Scene_Status
#------------------------------------------------------------------------------
#  This class performs the status screen processing.
#==============================================================================

class Scene_Status < Scene_Base
  #--------------------------------------------------------------------------
  # * Return to Original Screen
  #--------------------------------------------------------------------------
  def return_scene
    index = $game_system.menu_commands.index(Vocab::status)
    $scene = Scene_Menu.new(index)
  end
end

#==============================================================================
# ** Scene_File
#------------------------------------------------------------------------------
#  This class performs the save and load screen processing.
#==============================================================================

class Scene_File < Scene_Base
  #--------------------------------------------------------------------------
  # * Return to Original Screen
  #--------------------------------------------------------------------------
  alias dargor_vx_custom_commands_return_scene return_scene
  #--------------------------------------------------------------------------
  # * Return to Original Screen
  #--------------------------------------------------------------------------
  def return_scene
    if !@from_title && !@from_event
      index = $game_system.menu_commands.index(Vocab::save)
      $scene = Scene_Menu.new(index)
    else
      dargor_vx_custom_commands_return_scene
    end
  end
end

#==============================================================================
# ** Scene_End
#------------------------------------------------------------------------------
#  This class performs game end screen processing.
#==============================================================================

class Scene_End < Scene_Base
  #--------------------------------------------------------------------------
  # * Return to Original Screen
  #--------------------------------------------------------------------------
  def return_scene
    index = $game_system.menu_commands.index(Vocab::game_end)
    $scene = Scene_Menu.new(index)
  end
end


i need to keep this script in my game becasue i have other scripts by Dargor that rely on this one.
what i need is to have KGC's Equipment, Skill Mastery script be compatible with Dargor's Custom Menu Commands so that the KGC script can appear in themnain menu.

Here is the KGC script:

http://www.mediafire.com/?iljessz3uzj


someone please help
 

ikos

Member

No, KGC scripts are for VX, I have the VX library.
And yeah, this is a re-occuring problem. You would need KGC's CustomMenuCommand and use anything you get from Dargor in the custom scripts section.
 
Here. I edited the Custom Commands script for what you need. Tell me if you have any bugs. All you have to do is replace your current Custom Commands script with this one. No need to credit me, it was a simple edit. :thumb:

#==============================================================================
# ** Custom Commands
#------------------------------------------------------------------------------
#  © Dargor, 2008
#  18/06/08
#  Version 1.9
#------------------------------------------------------------------------------
#  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
#   - 1.6   (13/06/08), Added support for Title Screen Commands
#   - 1.7   (13/06/08), Bug fixed when disabling default commands
#   - 1.7.1 (16/06/08), Increased compatibility
#   - 1.8   (18/06/08), Menu Index has been corrected when comming back of
#                       default scenes (Item/Skill/Equip/Status/Save/End).
#   - 1.9   (18/06/08), Added support for enabling/disabling commands.
#------------------------------------------------------------------------------
#  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.
#==============================================================================
Vocab::ViewAP = "View AP"   
#==============================================================================
# ** 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] = {
                   
                   }
    @commands[2] = {

                   }
    # 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
  attr_accessor :title_commands
  attr_accessor :disabled_menu_commands
  attr_accessor :disabled_party_commands
  attr_accessor :disabled_title_commands
  #--------------------------------------------------------------------------
  # * Alias Listing
  #--------------------------------------------------------------------------
  alias dargor_vx_cmc_system_initialize initialize
  #--------------------------------------------------------------------------
  # * Object Initialization
  #--------------------------------------------------------------------------
  def initialize
    dargor_vx_cmc_system_initialize
    @disabled_menu_commands = {}
    @disabled_party_commands = {}
    @disabled_title_commands = {}
    s1 = Vocab::item
    s2 = Vocab::skill
    s3 = Vocab::equip
    s4 = Vocab::status
    s7 = Vocab::ViewAP
    s5 = Vocab::save
    s6 = Vocab::game_end
    @menu_commands = []
    add_menu_command(0,[s1, s2, s3, s4, s7, s5, s6])
    s1 = Vocab::fight
    s2 = Vocab::escape
    @party_commands = []
    add_party_command(0,[s1, s2])
    s1 = Vocab::new_game
    s2 = Vocab::continue
    s3 = Vocab::shutdown
    @title_commands = []
    add_title_command(0,[s1, s2, s3])
  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)
      @disabled_menu_commands[command] = false
    elsif command.is_a?(Array)
      for i in 0...command.size
        @menu_commands.insert(index+i, command)
        @disabled_menu_commands[command] = false
      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)
      @disabled_party_commands[command] = false
    elsif command.is_a?(Array)
      for i in 0...command.size
        @party_commands.insert(index+i, command)
        @disabled_party_commands[command] = false
      end
    end
  end
  #--------------------------------------------------------------------------
  # * Add Title Command
  #--------------------------------------------------------------------------
  def add_title_command(index, command)
    return if @title_commands.include?(command)
    if command.is_a?(String)
      @title_commands.insert(index, command)
      @disabled_party_commands[command] = false
    elsif command.is_a?(Array)
      for i in 0...command.size
        @title_commands.insert(index+i, command)
        @disabled_title_commands[command] = false
      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
  #--------------------------------------------------------------------------
  # * Remove Title Command
  #--------------------------------------------------------------------------
  def remove_title_command(command)
    if command.is_a?(String)
      @title_commands.delete(command)
    elsif command.is_a?(Array)
      for i in command
        @party_commands.delete(i)
      end
    end
  end
  #--------------------------------------------------------------------------
  # * Add Menu Command
  #--------------------------------------------------------------------------
  def enable_menu_command(command)
    @disabled_menu_commands[command] = false
  end
  #--------------------------------------------------------------------------
  # * Add Party Command
  #--------------------------------------------------------------------------
  def enable_party_command(command)
    @disabled_party_commands[command] = false
  end
  #--------------------------------------------------------------------------
  # * Add Title Command
  #--------------------------------------------------------------------------
  def enable_title_command(command)
    @disabled_title_commands[command] = false
  end
  #--------------------------------------------------------------------------
  # * Add Menu Command
  #--------------------------------------------------------------------------
  def disable_menu_command(command)
    @disabled_menu_commands[command] = true
  end
  #--------------------------------------------------------------------------
  # * Add Party Command
  #--------------------------------------------------------------------------
  def disable_party_command(command)
    @disabled_party_commands[command] = true
  end
  #--------------------------------------------------------------------------
  # * Add Title Command
  #--------------------------------------------------------------------------
  def disable_title_command(command)
    @disabled_title_commands[command] = true
  end
  #--------------------------------------------------------------------------
  # * Add Menu Command
  #--------------------------------------------------------------------------
  def menu_command_disabled?(command)
    return @disabled_menu_commands[command]
  end
  #--------------------------------------------------------------------------
  # * Add Party Command
  #--------------------------------------------------------------------------
  def party_command_disabled?(command)
    return @disabled_party_commands[command]
  end
  #--------------------------------------------------------------------------
  # * Add Title Command
  #--------------------------------------------------------------------------
  def title_command_disabled?(command)
    return @disabled_title_commands[command]
  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_Command
#------------------------------------------------------------------------------
#  This window deals with general command choices.
#==============================================================================

class Window_Command < Window_Selectable
  alias dargor_vx_cmc_window_command_draw_item draw_item
  #--------------------------------------------------------------------------
  # * Draw Item
  #     index   : item number
  #     enabled : enabled flag. When false, draw semi-transparently.
  #--------------------------------------------------------------------------
  def draw_item(index, enabled = true)
    return if index.nil?
    dargor_vx_cmc_window_command_draw_item(index, enabled)
  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
      index = $game_system.menu_commands.index(Vocab::item)
      @command_window.draw_item(index, false)     # Disable item
      index = $game_system.menu_commands.index(Vocab::skill)
      @command_window.draw_item(index, false)     # Disable skill
      index = $game_system.menu_commands.index(Vocab::equip)
      @command_window.draw_item(index, false)     # Disable equipment
      index = $game_system.menu_commands.index(Vocab::status)
      @command_window.draw_item(index, false)     # Disable status
      index = $game_system.menu_commands.index(Vocab::ViewAP)
      @command_window.draw_item(index, false)
    end
    if $game_system.save_disabled             # If save is forbidden
      index = $game_system.menu_commands.index(Vocab::save)
      @command_window.draw_item(index, false)     # Disable save
    end
    for command in $game_system.menu_commands
      index = $game_system.menu_commands.index(command)
      if $game_system.menu_command_disabled?(command)
        @command_window.draw_item(index, false)    # Disable command
      end
    end
  end
  #--------------------------------------------------------------------------
  # * Update Command Selection
  #--------------------------------------------------------------------------
  def update_command_selection
    command = @command_window.selection
    if Input.trigger?(Input::B)
      Sound.play_cancel
      $scene = Scene_Map.new
    elsif Input.trigger?(Input::C)
      if $game_party.members.size == 0 and (command == Vocab::item or
                                            command == Vocab::skill or
                                            command == Vocab::equip or
                                            command == Vocab::status or
                                            command == Vocab::ViewAP)
        Sound.play_buzzer
        return
      elsif $game_system.save_disabled and command == Vocab::save
        Sound.play_buzzer
        return
      elsif $game_system.menu_command_disabled?(command)
        Sound.play_buzzer
        return
      end
      Sound.play_decision
      case command
      when Vocab::item
        $scene = Scene_Item.new
      when Vocab::skill,Vocab::equip,Vocab::status,Vocab::ViewAP
        start_actor_selection
      when Vocab::save      # Save
        $scene = Scene_File.new(true, false, false)
      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)
      when Vocab::ViewAP
        $scene = Scene_APViewer.new(@status_window.index)
      end
    end
  end
end

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

class Scene_Battle < Scene_Base
  #--------------------------------------------------------------------------
  # * Alias Listing
  #--------------------------------------------------------------------------
  alias dargor_vx_custom_commands_battle_create_info_viewport create_info_viewport
  #--------------------------------------------------------------------------
  # * Create Information Display Viewport
  #--------------------------------------------------------------------------
  def create_info_viewport
    dargor_vx_custom_commands_battle_create_info_viewport
    for command in $game_system.party_commands
      index = $game_system.party_commands.index(command)
      if $game_system.party_command_disabled?(command)
        @party_command_window.draw_item(index, false)    # Disable command
      end
    end
  end
  #--------------------------------------------------------------------------
  # * 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

#==============================================================================
# ** Scene_Title
#------------------------------------------------------------------------------
#  This class performs the title screen processing.
#==============================================================================

class Scene_Title < Scene_Base
  #--------------------------------------------------------------------------
  # * Create Command Window
  #--------------------------------------------------------------------------
  def create_command_window
    @command_window = Window_Command.new(172, $game_system.title_commands)
    @command_window.x = (544 - @command_window.width) / 2
    @command_window.y = 288
    continue_index = $game_system.title_commands.index(Vocab::continue)
    if @continue_enabled                      # If continue is enabled
      @command_window.index = continue_index  # Move cursor over command
    else                                      # If disabled
      @command_window.draw_item(continue_index, false) # Make command semi-transparent
    end
    for command in $game_system.title_commands
      index = $game_system.title_commands.index(command)
      if $game_system.title_command_disabled?(command)
        @command_window.draw_item(index, false)    # Disable command
      end
    end
    @command_window.openness = 0
    @command_window.open
  end
  #--------------------------------------------------------------------------
  # * Frame Update
  #--------------------------------------------------------------------------
  def update
    super
    @command_window.update
    if Input.trigger?(Input::C)
      case @command_window.selection
      when Vocab::new_game    #New game
        command_new_game
      when Vocab::continue    # Continue
        command_continue
      when Vocab::shutdown    # Shutdown
        command_shutdown
      end
    end
  end
end

#==============================================================================
# ** Scene_Item
#------------------------------------------------------------------------------
#  This class performs the item screen processing.
#==============================================================================

class Scene_Item < Scene_Base
  #--------------------------------------------------------------------------
  # * Return to Original Screen
  #--------------------------------------------------------------------------
  def return_scene
    index = $game_system.menu_commands.index(Vocab::item)
    $scene = Scene_Menu.new(index)
  end
end

#==============================================================================
# ** Scene_Skill
#------------------------------------------------------------------------------
#  This class performs the skill screen processing.
#==============================================================================

class Scene_Skill < Scene_Base
  #--------------------------------------------------------------------------
  # * Return to Original Screen
  #--------------------------------------------------------------------------
  def return_scene
    index = $game_system.menu_commands.index(Vocab::skill)
    $scene = Scene_Menu.new(index)
  end
end

#==============================================================================
# ** Scene_Equip
#------------------------------------------------------------------------------
#  This class performs the equipment screen processing.
#==============================================================================

class Scene_Equip < Scene_Base
  #--------------------------------------------------------------------------
  # * Return to Original Screen
  #--------------------------------------------------------------------------
  def return_scene
    index = $game_system.menu_commands.index(Vocab::equip)
    $scene = Scene_Menu.new(index)
  end
end

#==============================================================================
# ** Scene_Status
#------------------------------------------------------------------------------
#  This class performs the status screen processing.
#==============================================================================

class Scene_Status < Scene_Base
  #--------------------------------------------------------------------------
  # * Return to Original Screen
  #--------------------------------------------------------------------------
  def return_scene
    index = $game_system.menu_commands.index(Vocab::status)
    $scene = Scene_Menu.new(index)
  end
end

#==============================================================================
# ** Scene_File
#------------------------------------------------------------------------------
#  This class performs the save and load screen processing.
#==============================================================================

class Scene_File < Scene_Base
  #--------------------------------------------------------------------------
  # * Return to Original Screen
  #--------------------------------------------------------------------------
  alias dargor_vx_custom_commands_return_scene return_scene
  #--------------------------------------------------------------------------
  # * Return to Original Screen
  #--------------------------------------------------------------------------
  def return_scene
    if !@from_title && !@from_event
      index = $game_system.menu_commands.index(Vocab::save)
      $scene = Scene_Menu.new(index)
    else
      dargor_vx_custom_commands_return_scene
    end
  end
end

#==============================================================================
# ** Scene_End
#------------------------------------------------------------------------------
#  This class performs game end screen processing.
#==============================================================================

class Scene_End < Scene_Base
  #--------------------------------------------------------------------------
  # * Return to Original Screen
  #--------------------------------------------------------------------------
  def return_scene
    index = $game_system.menu_commands.index(Vocab::game_end)
    $scene = Scene_Menu.new(index)
  end
end


EDIT: Fixed a small problem. The AP Viewer text is now editable at the top of the script. Look for Vocab::ViewAP = "View AP" and change the "View AP" to the text you want. MAKE SURE YOUR TEXT IS STILL IN DOUBLE QUOTES! That will modify the script through (extremely) simple calls. Good luck with your game!
 

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