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.

RESOLVED

I'm having problems removing save from this script could someone tell me what I'm doing wrong?
Code:
#==============================================================================
# ** Custom Commands
#------------------------------------------------------------------------------
#  © Dargor, 2008
#  13/06/08
#  Version 1.7
#------------------------------------------------------------------------------
#  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 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.
#==============================================================================
        
#==============================================================================
# ** 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
  #--------------------------------------------------------------------------
  # * 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::save
    s6 = Vocab::game_end
    @menu_commands = [s1, s2, s3, s4, s5, s6]
    s1 = Vocab::fight
    s2 = Vocab::escape
    @party_commands = [s1, s2]
    s1 = Vocab::new_game
    s2 = Vocab::continue
    s3 = Vocab::shutdown
    @title_commands = [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)
    elsif command.is_a?(Array)
      for i in 0...command.size
        @menu_commands.insert(index+i, command[i])
      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[i])
      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)
    elsif command.is_a?(Array)
      for i in 0...command.size
        @title_commands.insert(index+i, command[i])
      end
    end
  end
  #--------------------------------------------------------------------------
  # * Remove Menu Command
  #--------------------------------------------------------------------------
  def remove_menu_command(save)
    if command.is_a?(s5)
      @menu_commands.delete(save)
    elsif command.is_a?($scene = Scene_File.new(true, false, false))
      for i in command
        @menu_commands.delete($game_system.menu_commands.index(Vocab::save))
      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
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[i])
      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
      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
  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::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
  #--------------------------------------------------------------------------
  # * 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
    @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

the area I changed is
Code:
  #--------------------------------------------------------------------------
  # * Remove Menu Command
  #--------------------------------------------------------------------------
  def remove_menu_command(save)
    if command.is_a?(s5)
      @menu_commands.delete(save)
    elsif command.is_a?($scene = Scene_File.new(true, false, false))
      for i in command
        @menu_commands.delete($game_system.menu_commands.index(Vocab::save))
      end
    end
  end
right now when ever I open the main menu to check if save was disabled the game crashes.
 

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