Main Menu
  • Welcome to The RPG Maker Resource Kit.

[VX] Title Menu Script Request

Started by AuraMasterNeal, March 18, 2012, 02:44:56 PM

0 Members and 1 Guest are viewing this topic.

AuraMasterNeal

I want to add a title menu option to an RMVX game called "The Lost Pages" that would choose a save file, and then warp the player to a certain area, no matter where they last saved, but would only appear after a certain switch was activated. If you need more detail on what it would do, then look in the spoiler below.

It would have mini quests that would be unlocked after beating the game that would unlock certain things in the main game. One, for example, would be an area where you could fight against a stronger version of any boss in the game. If you need more detail, saving would be disabled for the duration of the quest.

If you need an example to base it off of, then try any installment from the Pokemon Ranger series' Ranger Net Missions, if you are familiar with them.

Please and thank you!

Fall From Eden

Marc: Salaam. :)

While I likely will not be taking this request (as I'm currently writing a number of other scripts), I believe it would be important for you to give us just a little bit more information about how this menu would work. What information in each save file would determine where the player is warped? A game variable? Map ID? A switch (or number of switches)? Also, how would you like these selections shown in the menu? A list of all areas that the save file has access to? Or would you simply like for the player to select a save file and be warped automatically to the most recent area they have access to?

Essentially, I am not sure how you would want this system implemented, and while I will not be taking the request at this time, I thought it might be useful for anyone else taking the request to know this information. :)

Good luck. :)

AuraMasterNeal

Thanks for the support, and I will clarify more in the 1st post. I admit myself that it's a little lacking...

AuraMasterNeal

This is a need for my game! Please help!

AuraMasterNeal

I NEED THIS FOR MY GAME BUMPITY BUMP BUMP!!!!!!!!!!!!!!!!

DoctorTodd

Please wait 48 hours before bumping  :police:
Anyway I know ChainsawMelody has something like that in his game here. So I would ask him about that.

Acolyte

Maybe you could do something like that if you used a map for a title screen? There are some different scripts that allow you to do that. Originalwij's script comes to mind.

pacdiggity

Quote from: DoctorTodd on March 20, 2012, 12:08:53 AM
Please wait 48 hours before bumping  :police:
Mini-modding is my job :mad:

But yes, I recommend using OriginalWij's script that Acolyte linked, it works really well. Spellbinder was an awesome game.
it's like a metaphor or something i don't know

AuraMasterNeal

No, this isn't what I'm looking for. I want to keep my title screen, just add a special warp option. I hope that map title screen isn't the only choice...

DoctorTodd

Quote from: DoctorTodd on March 20, 2012, 12:08:53 AM
Anyway I know ChainsawMelody has something like that in his game here. So I would ask him about that.

AuraMasterNeal


DoctorTodd

I know I said you can ask him how he did it. He may give you the script and some one can convert it for you.

pacdiggity

Quote from: AuraMasterNeal on March 20, 2012, 07:55:13 PM
No, this isn't what I'm looking for. I want to keep my title screen, just add a special warp option. I hope that map title screen isn't the only choice...
Ever heard of parallax? Or pictures?
it's like a metaphor or something i don't know

Moonpearl

Too bad you're using VX, because my New Game + script for RMXP is exactly what you're looking for.



AuraMasterNeal

#14
Alright, I've figured out how to add an option to the title menu, but I can't figure out how to trigger an "if" script with a switch. Help please?

DoctorTodd

I think you would use this.
if $game_switches[X] == true
X would be what number you want.

Fall From Eden

Quote from: DoctorTodd on March 23, 2012, 09:52:21 PM
I think you would use this.
if $game_switches[X] == true
X would be what number you want.

Marc: Not from the title screen. The problem is that the title screen creates a new instance of $game_switches, setting them all to false by default, so checking the value of the switch ID in this way would always return false. How to get around this varies based on how you would like the switch (or switches) you need to function. Again, would you like the switch (or switches) to be activated by the switch values that are active throughout the player's save files (which could be more than one file)? If not, how would you go about determining which switches should retain their values in the title screen? If you could let me know that, I could quickly write something for you that might do what it is you're looking for. I just need to know how you would want this to work.

AuraMasterNeal

Alright, I have eliminated the need for the switch on the title screen (I'm doing it in the common event), but I:
Need to choose a save file from something other than continue
and
Start a common event upon the alternate loading.

Here's what I have on the title script so far (and yes, I created an entry in vocab for The Lost Pages with lostpages):
#==============================================================================
# ** Scene_Title
#------------------------------------------------------------------------------
#  This class performs the title screen processing.
#==============================================================================

class Scene_Title < Scene_Base
  #--------------------------------------------------------------------------
  # * Main Processing
  #--------------------------------------------------------------------------
  def main
    if $BTEST                         # If battle test
      battle_test                     # Start battle test
    else                              # If normal play
      super                           # Usual main processing
    end
  end
  #--------------------------------------------------------------------------
  # * Start processing
  #--------------------------------------------------------------------------
  def start
    super
    load_database                     # Load database
    create_game_objects               # Create game objects
    check_continue                    # Determine if continue is enabled
    create_title_graphic              # Create title graphic
    create_command_window             # Create command window
    play_title_music                  # Play title screen music
  end
  #--------------------------------------------------------------------------
  # * Execute Transition
  #--------------------------------------------------------------------------
  def perform_transition
    Graphics.transition(20)
  end
  #--------------------------------------------------------------------------
  # * Post-Start Processing
  #--------------------------------------------------------------------------
  def post_start
    super
    open_command_window
  end
  #--------------------------------------------------------------------------
  # * Pre-termination Processing
  #--------------------------------------------------------------------------
  def pre_terminate
    super
    close_command_window
  end
  #--------------------------------------------------------------------------
  # * Termination Processing
  #--------------------------------------------------------------------------
  def terminate
    super
    dispose_command_window
    snapshot_for_background
    dispose_title_graphic
  end
  #--------------------------------------------------------------------------
  # * Frame Update
  #--------------------------------------------------------------------------
  def update
    super
    @command_window.update
    if Input.trigger?(Input::C)
      case @command_window.index
      when 0    #New game
        command_new_game
      when 1    # Continue
        command_continue
      when 2    # Shutdown
        command_shutdown
      when 3
        command_lostpages
      end
    end
  end
  #--------------------------------------------------------------------------
  # * Load Database
  #--------------------------------------------------------------------------
  def load_database
    $data_actors        = load_data("Data/Actors.rvdata")
    $data_classes       = load_data("Data/Classes.rvdata")
    $data_skills        = load_data("Data/Skills.rvdata")
    $data_items         = load_data("Data/Items.rvdata")
    $data_weapons       = load_data("Data/Weapons.rvdata")
    $data_armors        = load_data("Data/Armors.rvdata")
    $data_enemies       = load_data("Data/Enemies.rvdata")
    $data_troops        = load_data("Data/Troops.rvdata")
    $data_states        = load_data("Data/States.rvdata")
    $data_animations    = load_data("Data/Animations.rvdata")
    $data_common_events = load_data("Data/CommonEvents.rvdata")
    $data_system        = load_data("Data/System.rvdata")
    $data_areas         = load_data("Data/Areas.rvdata")
  end
  #--------------------------------------------------------------------------
  # * Load Battle Test Database
  #--------------------------------------------------------------------------
  def load_bt_database
    $data_actors        = load_data("Data/BT_Actors.rvdata")
    $data_classes       = load_data("Data/BT_Classes.rvdata")
    $data_skills        = load_data("Data/BT_Skills.rvdata")
    $data_items         = load_data("Data/BT_Items.rvdata")
    $data_weapons       = load_data("Data/BT_Weapons.rvdata")
    $data_armors        = load_data("Data/BT_Armors.rvdata")
    $data_enemies       = load_data("Data/BT_Enemies.rvdata")
    $data_troops        = load_data("Data/BT_Troops.rvdata")
    $data_states        = load_data("Data/BT_States.rvdata")
    $data_animations    = load_data("Data/BT_Animations.rvdata")
    $data_common_events = load_data("Data/BT_CommonEvents.rvdata")
    $data_system        = load_data("Data/BT_System.rvdata")
  end
  #--------------------------------------------------------------------------
  # * Create Game Objects
  #--------------------------------------------------------------------------
  def create_game_objects
    $game_temp          = Game_Temp.new
    $game_message       = Game_Message.new
    $game_system        = Game_System.new
    $game_switches      = Game_Switches.new
    $game_variables     = Game_Variables.new
    $game_self_switches = Game_SelfSwitches.new
    $game_actors        = Game_Actors.new
    $game_party         = Game_Party.new
    $game_troop         = Game_Troop.new
    $game_map           = Game_Map.new
    $game_player        = Game_Player.new
  end
  #--------------------------------------------------------------------------
  # * Determine if Continue is Enabled
  #--------------------------------------------------------------------------
  def check_continue
    @continue_enabled = (Dir.glob('Save*.rvdata').size > 0)
  end
  #--------------------------------------------------------------------------
  # * Create Title Graphic
  #--------------------------------------------------------------------------
  def create_title_graphic
    @sprite = Sprite.new
    @sprite.bitmap = Cache.system("Title")
  end
  #--------------------------------------------------------------------------
  # * Dispose of Title Graphic
  #--------------------------------------------------------------------------
  def dispose_title_graphic
    @sprite.bitmap.dispose
    @sprite.dispose
  end
  #--------------------------------------------------------------------------
  # * Create Command Window
  #--------------------------------------------------------------------------
  def create_command_window
    s1 = Vocab::new_game
    s2 = Vocab::continue
    s3 = Vocab::shutdown
    s4 = Vocab::lostpages
    @command_window = Window_Command.new(172, [s1, s2, s3, s4])
    @command_window.x = (544 - @command_window.width) / 2
    @command_window.y = 288
    if @continue_enabled                    # If continue is enabled
      @command_window.index = 1             # Move cursor over command
    else                                    # If disabled
      @command_window.draw_item(1, false)   # Make command semi-transparent
    end
    @command_window.openness = 0
    @command_window.open
  end
  #--------------------------------------------------------------------------
  # * Dispose of Command Window
  #--------------------------------------------------------------------------
  def dispose_command_window
    @command_window.dispose
  end
  #--------------------------------------------------------------------------
  # * Open Command Window
  #--------------------------------------------------------------------------
  def open_command_window
    @command_window.open
    begin
      @command_window.update
      Graphics.update
    end until @command_window.openness == 255
  end
  #--------------------------------------------------------------------------
  # * Close Command Window
  #--------------------------------------------------------------------------
  def close_command_window
    @command_window.close
    begin
      @command_window.update
      Graphics.update
    end until @command_window.openness == 0
  end
  #--------------------------------------------------------------------------
  # * Play Title Screen Music
  #--------------------------------------------------------------------------
  def play_title_music
    $data_system.title_bgm.play
    RPG::BGS.stop
    RPG::ME.stop
  end
  #--------------------------------------------------------------------------
  # * Check Player Start Location Existence
  #--------------------------------------------------------------------------
  def confirm_player_location
    if $data_system.start_map_id == 0
      print "Player start location not set."
      exit
    end
  end
  #--------------------------------------------------------------------------
  # * Command: New Game
  #--------------------------------------------------------------------------
  def command_new_game
    confirm_player_location
    Sound.play_decision
    $game_party.setup_starting_members            # Initial party
    $game_map.setup($data_system.start_map_id)    # Initial map position
    $game_player.moveto($data_system.start_x, $data_system.start_y)
    $game_player.refresh
    $scene = Scene_Map.new
    RPG::BGM.fade(1500)
    close_command_window
    Graphics.fadeout(60)
    Graphics.wait(40)
    Graphics.frame_count = 0
    RPG::BGM.stop
    $game_map.autoplay
  end
  #--------------------------------------------------------------------------
  # * Command: Continue
  #--------------------------------------------------------------------------
  def command_continue
    if @continue_enabled
      Sound.play_decision
      $scene = Scene_File.new(false, true, false)
    else
      Sound.play_buzzer
    end
  end
 
  def command_lostpages
    Sound.play_decision
   def latest_file_index
    index = 0
    latest_time = Time.at(0)
    for i in 0...@savefile_windows.size
      if @savefile_windows[i].time_stamp > latest_time
        latest_time = @savefile_windows[i].time_stamp
        index = i
      end
    end
    return index
      $data_common_events[007]
  end
  end

  #--------------------------------------------------------------------------
  # * Command: Shutdown
  #--------------------------------------------------------------------------
  def command_shutdown
    Sound.play_decision
    RPG::BGM.fade(800)
    RPG::BGS.fade(800)
    RPG::ME.fade(800)
    $scene = nil
  end
 
  #--------------------------------------------------------------------------
  # * Battle Test
  #--------------------------------------------------------------------------
  def battle_test
    load_bt_database                  # Load battle test database
    create_game_objects               # Create game objects
    Graphics.frame_count = 0          # Initialize play time
    $game_party.setup_battle_test_members
    $game_troop.setup($data_system.test_troop_id)
    $game_troop.can_escape = true
    $game_system.battle_bgm.play
    snapshot_for_background
    $scene = Scene_Battle.new
  end
end

Please help with this!

Fall From Eden

Marc: Try this. It's ugly, only slightly more than a hackish effort, and I haven't tested it, but it should do what you want. :)

EDIT: Forgot to mention that you'll want to insert this as its own script beneath Materials but above Main, and that should do it. :)


module Vocab
  LostPages = "The Lost Pages"
end

class Scene_Title < Scene_Base
  def create_command_window
    s1 = Vocab::new_game; s2 = Vocab::continue; s3 = Vocab::shutdown
    s4 = Vocab::LostPages
    @command_window = Window_Command.new(172, [s1, s2, s3, s4])
    @command_window.x = (544 - @command_window.width) / 2
    @command_window.y = 288
    if @continue_enabled
      @command_window.index = 1
    else
      @command_window.draw_item(1, false)
      @command_window.draw_item(3, false)
    end
    @command_window.openness = 0
    @command_window.open
  end

  def update
    super
    @command_window.update
    if Input.trigger?(Input::C)
      case @command_window.index
      when 0; command_new_game
      when 1; command_continue
      when 2; command_shutdown
      when 3; command_lostpages
      end
    end
  end

  def command_lostpages
    if @continue_enabled
      Sound.play_decision
      $scene = Scene_File.new(false, true, true)
    else
      Sound.play_buzzer
    end
  end
end

class Scene_File < Scene_Base
  def do_load
    file = File.open(@savefile_windows[@index].filename, "rb")
    read_save_data(file)
    file.close
    if @from_title == true and @from_event == true
      $game_temp.common_event_id = 7
    end
    $scene = Scene_Map.new
    RPG::BGM.fade(1500)
    Graphics.fadeout(60)
    Graphics.wait(40)
    @last_bgm.play
    @last_bgs.play
  end
end

AuraMasterNeal

Yay! ;D It works! The only thing is (and it probably isn't possible) I can't save and not keep location data. I've found a work-around, but I wish I could do it directly. But besides that, it's working like a charm!