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!
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. :)
Thanks for the support, and I will clarify more in the 1st post. I admit myself that it's a little lacking...
This is a need for my game! Please help!
I NEED THIS FOR MY GAME BUMPITY BUMP BUMP!!!!!!!!!!!!!!!!
Please wait 48 hours before bumping :police:
Anyway I know ChainsawMelody has something like that in his game here (http://rmrk.net/index.php/topic,44975.0.html). So I would ask him about that.
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 (http://originalwij.wordpress.com/2011/05/08/2-script-updates-i-know-im-sad-its-only-2-also/) comes to mind.
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.
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...
Quote from: DoctorTodd on March 20, 2012, 12:08:53 AM
Anyway I know ChainsawMelody has something like that in his game here (http://rmrk.net/index.php/topic,44975.0.html). So I would ask him about that.
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.
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?
Too bad you're using VX, because my New Game + script for RMXP is exactly what you're looking for.
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?
I think you would use this.
if $game_switches[X] == true
X would be what number you want.
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.
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!
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
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!