Unlimited save slots

● ARCHIVED · READ-ONLY
Started by Tsukihime 4 posts View original ↗
  1. Looking for a script that simply takes the default Scene_File and Window_SaveFile and changes it so that you can specify how many slots you want, and it will scroll properly.

    I looked at Scene_File but unlike Ace they hardcode the number of windows. I'm not really sure how to best "scroll" the windows.
  2. Tsukihime said:
    Looking for a script that simply takes the default Scene_File and Window_SaveFile and changes it so that you can specify how many slots you want, and it will scroll properly.

    I looked at Scene_File but unlike Ace they hardcode the number of windows. I'm not really sure how to best "scroll" the windows.
    Here.

    It's a script by ERZENGEL.



    Code:
    #==============================================================================
    # ** More savefiles 1.10 (http://erzvx.de.ms/scripts/moresavefiles.txt)
    #------------------------------------------------------------------------------
    # written by ERZENGEL
    #==============================================================================
    module ERZSAVE
    # Max amount of savefiles
    MAXSAVEFILES = 64
    # Max amount the player is able to save (-1 = infinite)
    MAXSAVEAMOUNT = -1
    end
    #==============================================================================
    # ** Window_SaveFile
    #------------------------------------------------------------------------------
    # This window displays save files on the save and load screens.
    #==============================================================================
    class Window_SaveFile < Window_Base
    #--------------------------------------------------------------------------
    # * Object Initialization
    #	 file_index : save file index (0 to the value of MAXSAVEFILES)
    #	 filename : filename
    #--------------------------------------------------------------------------
    def initialize(file_index, filename)
    super(0, 56 + file_index % ERZSAVE::MAXSAVEFILES * 90, 544, 90)
    @file_index = file_index
    @filename = filename
    load_gamedata
    refresh
    @selected = false
    end
    end
    #==============================================================================
    # ** Scene_File
    #------------------------------------------------------------------------------
    # This class performs the save and load screen processing.
    #==============================================================================
    class Scene_File
    #--------------------------------------------------------------------------
    # * Start processing
    #--------------------------------------------------------------------------
    def start
    super
    @file_max = ERZSAVE::MAXSAVEFILES
    create_menu_background
    @help_window = Window_Help.new
    create_savefile_windows
    if @saving
    	 @index = $game_temp.last_file_index
    	 @help_window.set_text(Vocab::SaveMessage)
    else
    	 @index = self.latest_file_index
    	 @help_window.set_text(Vocab::LoadMessage)
    end
    @savefile_windows[@index].selected = true
    @page_file_max = ((416 - @help_window.height) / 90).truncate
    for i in 0...@file_max
    	 window = @savefile_windows[i]
    	 if @index > @page_file_max - 1
    	 if @index < @file_max - @page_file_max - 1
    		 @top_row = @index
    		 window.y -= @index * window.height
    	 elsif @index >= @file_max - @page_file_max
    		 @top_row = @file_max - @page_file_max
    		 window.y -= (@file_max - @page_file_max) * window.height
    	 else
    		 @top_row = @index
    		 window.y -= @index * window.height
    	 end
    	 end
    	 window.visible = (window.y >= @help_window.height and
    	 window.y < @help_window.height + @page_file_max * window.height)
    end
    end
    #--------------------------------------------------------------------------
    # * Create Save File Window
    #--------------------------------------------------------------------------
    def create_savefile_windows
    @top_row = 0
    @savefile_windows = []
    for i in 0...@file_max
    	 @savefile_windows.push(Window_SaveFile.new(i, make_filename(i)))
    end
    end
    #--------------------------------------------------------------------------
    # * Move cursor down
    #	 wrap : Wraparound allowed
    #--------------------------------------------------------------------------
    def cursor_down(wrap)
    if @index < @file_max - 1 or wrap
    	 @index = (@index + 1) % @file_max
    	 for i in 0...@file_max
    	 window = @savefile_windows[i]
    	 if @index == 0
    		 @top_row = 0
    		 window.y = @help_window.height + i % @file_max * window.height
    	 elsif @index - @top_row > @page_file_max - 1
    		 window.y -= window.height
    	 end
    	 window.visible = (window.y >= @help_window.height and
    		 window.y < @help_window.height + @page_file_max * window.height)
    	 end
    	 if @index - @top_row > @page_file_max - 1
    	 @top_row += 1
    	 end
    end
    end
    #--------------------------------------------------------------------------
    # * Move cursor up
    #	 wrap : Wraparound allowed
    #--------------------------------------------------------------------------
    def cursor_up(wrap)
    if @index > 0 or wrap
    	 @index = (@index - 1 + @file_max) % @file_max
    	 for i in 0...@file_max
    	 window = @savefile_windows[i]
    	 if @index == @file_max - 1
    		 @top_row = @file_max - @page_file_max
    		 window.y = @help_window.height + i % @file_max * window.height
    		 window.y -= (@file_max - @page_file_max) * window.height
    	 elsif @index - @top_row < 0
    		 window.y += window.height
    	 end
    	 window.visible = (window.y >= @help_window.height and
    		 window.y < @help_window.height + @page_file_max * window.height)
    	 end
    	 if @index - @top_row < 0
    	 @top_row -= 1
    	 end
    end
    end
    end
    #==============================================================================
    # ** Scene_Menu
    #------------------------------------------------------------------------------
    # This class performs the menu screen processing.
    #==============================================================================
    class Scene_Menu
    #--------------------------------------------------------------------------
    # * Start processing
    #--------------------------------------------------------------------------
    alias erz_saveslots_start start
    def start
    if $game_system.save_count >= ERZSAVE::MAXSAVEAMOUNT and ERZSAVE::MAXSAVEAMOUNT >= 0
    	 $game_system.save_disabled = true
    end
    erz_saveslots_start
    end
    end
    It's currently set to 64 saves now.

    Hope you have good luck with that. ^_^
  3. Works nicely. Thanks. It looks like it just shifts the window positions, which makes sense. I wasn't sure how to do it properly for all windows.
  4. Tsukihime said:
    Works nicely. Thanks. It looks like it just shifts the window positions, which makes sense. I wasn't sure how to do it properly for all windows.
    You're welcome now. ^_^

    Glad I could be of help here. ^_^

    I hope that you enjoy the extra save slots available. ^_^