roninator2

Auto Map Save/Load

Nov 21st, 2024
19
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Ruby 11.03 KB | None | 0 0
  1. # ╔═══════════════════════════════════════════════╦════════════════════╗
  2. # ║ Title: Auto Save / Load                       ║  Version: 1.02     ║
  3. # ║ Author: Roninator2                            ║                    ║
  4. # ╠═══════════════════════════════════════════════╬════════════════════╣
  5. # ║ Function: Requested by kiriyubel              ║   Date Created     ║
  6. # ║                                               ╠════════════════════╣
  7. # ║ Allows auto saving and auto loading           ║    21 Jan 2021     ║
  8. # ╚═══════════════════════════════════════════════╩════════════════════╝
  9. # ╔════════════════════════════════════════════════════════════════════╗
  10. # ║ Requires: nil                                                      ║
  11. # ║                                                                    ║
  12. # ╚════════════════════════════════════════════════════════════════════╝
  13. # ╔════════════════════════════════════════════════════════════════════╗
  14. # ║ Brief Description:                                                 ║
  15. # ║       Make Auto Save and Load control                              ║
  16. # ╚════════════════════════════════════════════════════════════════════╝
  17. # ╔════════════════════════════════════════════════════════════════════╗
  18. # ║ Instructions:                                                      ║
  19. # ║   Script provides auto save and auto load features                 ║
  20. # ║   Can be used for multiple save slots.                             ║
  21. # ║   Autosave is designed to work for specific maps.                  ║
  22. # ╚════════════════════════════════════════════════════════════════════╝
  23. # ╔════════════════════════════════════════════════════════════════════╗
  24. # ║ Updates:                                                           ║
  25. # ║ 1.00 - 21 Jan 2021 - Initial publish                               ║
  26. # ║ 1.01 - 06 Mar 2021 - Removed 1 slot restriction                    ║
  27. # ║ 1.02 - 19 May 2021 - Set Option for skip title screen              ║
  28. # ╚════════════════════════════════════════════════════════════════════╝
  29. # ╔════════════════════════════════════════════════════════════════════╗
  30. # ║ Credits and Thanks:                                                ║
  31. # ║   Roninator2                                                       ║
  32. # ║                                                                    ║
  33. # ╚════════════════════════════════════════════════════════════════════╝
  34. # ╔════════════════════════════════════════════════════════════════════╗
  35. # ║ Terms of use:                                                      ║
  36. # ║  Follow the original Authors terms of use where applicable         ║
  37. # ║    - When not made by me (Roninator2)                              ║
  38. # ║  Free for all uses in RPG Maker except nudity                      ║
  39. # ║  Anyone using this script in their project before these terms      ║
  40. # ║  were changed are allowed to use this script even if it conflicts  ║
  41. # ║  with these new terms. New terms effective 03 Apr 2024             ║
  42. # ║  No part of this code can be used with AI programs or tools        ║
  43. # ║  Credit must be given                                              ║
  44. # ╚════════════════════════════════════════════════════════════════════╝
  45.  
  46. module R2_AutoSave_AutoLoad
  47.   Switch_Save = 6 # switch to enable auto save
  48.   Use_switch = false # turns switch feature on if true
  49.  
  50.   Save_Maps = [1, 2]
  51.   # add as many maps as you want to use autosave feature with
  52.   Save_Slots = 16
  53.   # change the number for how many slot you wish to use.
  54.  
  55.   Auto_load = true
  56.   # if true will load the saved game without going to the title
  57.   Continue_load = true
  58.   # if true this will load the latest saved game when
  59.     # selecting continue
  60.  
  61.   Skip_Title = true
  62.   # used if you want to load a custom title screen
  63. end
  64.  
  65. # ╔════════════════════════════════════════════════════════════════════╗
  66. # ║                      End of editable region                        ║
  67. # ╚════════════════════════════════════════════════════════════════════╝
  68.  
  69. module DataManager
  70.   def self.savefile_max
  71.     return R2_AutoSave_AutoLoad::Save_Slots
  72.   end
  73.     def self.setup_load_game
  74.     $game_map.setup($data_system.start_map_id)
  75.     $game_player.moveto($data_system.start_x, $data_system.start_y)
  76.     $game_player.refresh
  77.     end
  78. end
  79.  
  80. class Scene_Title < Scene_Base
  81.   #--------------------------------------------------------------------------
  82.   # * Start Processing
  83.   #--------------------------------------------------------------------------
  84.   alias r2_autostart_autoload start
  85.   def start
  86.     @saves = []
  87.     @last = 0
  88.     if DataManager.save_file_exists?
  89.       for i in 0..DataManager.savefile_max
  90.         i += 1
  91.         if i > 9
  92.           if !Dir.glob("Save#{i}.rvdata2").empty?
  93.             i -= 1
  94.             @saves << i
  95.           end
  96.         else
  97.           if !Dir.glob("Save0#{i}.rvdata2").empty?
  98.             i -= 1
  99.             @saves << i
  100.           end
  101.         end
  102.       end
  103.       @last = @saves[0]
  104.       @saves.each do |i|
  105.         if DataManager.savefile_time_stamp(i) > DataManager.savefile_time_stamp(@last)
  106.           @last = i
  107.         end
  108.       end
  109.       if R2_AutoSave_AutoLoad::Auto_load
  110.         super
  111.         SceneManager.clear
  112.         fadeout_all
  113.         DataManager.load_game(@last)
  114.                 DataManager.setup_load_game if R2_AutoSave_AutoLoad::Skip_Title == true
  115.         SceneManager.goto(Scene_Map)
  116.       else
  117.         if R2_AutoSave_AutoLoad::Skip_Title == true
  118.           SceneManager.clear
  119.           Graphics.freeze
  120.           DataManager.setup_new_game
  121.           $game_map.autoplay
  122.           SceneManager.goto(Scene_Map)
  123.         else
  124.           r2_autostart_autoload
  125.         end
  126.       end
  127.     else
  128.       if R2_AutoSave_AutoLoad::Skip_Title == true
  129.         SceneManager.clear
  130.         Graphics.freeze
  131.         DataManager.setup_new_game
  132.         $game_map.autoplay
  133.         SceneManager.goto(Scene_Map)
  134.       else
  135.         r2_autostart_autoload
  136.       end
  137.     end
  138.   end
  139.   #--------------------------------------------------------------------------
  140.   # * Termination Processing
  141.   #--------------------------------------------------------------------------
  142.   alias r2_autosave_load_terminate  terminate
  143.   def terminate
  144.     if R2_AutoSave_AutoLoad::Auto_load == true
  145.       if DataManager.save_file_exists?
  146.         super
  147.       else
  148.         if R2_AutoSave_AutoLoad::Skip_Title == true
  149.           SceneManager.snapshot_for_background
  150.           Graphics.fadeout(Graphics.frame_rate)
  151.         else
  152.           r2_autosave_load_terminate
  153.         end
  154.       end
  155.     else
  156.       if R2_AutoSave_AutoLoad::Skip_Title == true
  157.         SceneManager.snapshot_for_background
  158.         Graphics.fadeout(Graphics.frame_rate)
  159.       else
  160.         r2_autosave_load_terminate
  161.       end
  162.     end
  163.   end
  164.   #--------------------------------------------------------------------------
  165.   # * [Continue] Command
  166.   #--------------------------------------------------------------------------
  167.   def command_continue
  168.     if R2_AutoSave_AutoLoad::Continue_load == true
  169.       DataManager.load_game(@last)
  170.       fadeout_all
  171.       RPG::BGM.fade(30)
  172.       $game_map.autoplay
  173.       SceneManager.goto(Scene_Map)
  174.     else
  175.       close_command_window
  176.       SceneManager.call(Scene_Load)
  177.     end
  178.   end
  179.  
  180. end
  181.  
  182. class Scene_Map < Scene_Base
  183.   #--------------------------------------------------------------------------
  184.   # * Post Processing for Transferring Player
  185.   #--------------------------------------------------------------------------
  186.   alias r2_autosave_post_transfer   post_transfer
  187.   def post_transfer
  188.     r2_autosave_post_transfer
  189.     @saves = []
  190.     @last = 0
  191.     if DataManager.save_file_exists?
  192.       for i in 0..DataManager.savefile_max
  193.         i += 1
  194.         if i > 9
  195.           if !Dir.glob("Save#{i}.rvdata2").empty?
  196.             i -= 1
  197.             @saves << i
  198.           end
  199.         else
  200.           if !Dir.glob("Save0#{i}.rvdata2").empty?
  201.             i -= 1
  202.             @saves << i
  203.           end
  204.         end
  205.       end
  206.       @last = @saves[0]
  207.       @saves.each do |i|
  208.         if DataManager.savefile_time_stamp(i) > DataManager.savefile_time_stamp(@last)
  209.           @last = i
  210.         end
  211.       end
  212.     end
  213.     if R2_AutoSave_AutoLoad::Use_switch == true &&
  214.       $game_switches[R2_AutoSave_AutoLoad::Switch_Save] == true
  215.       if R2_AutoSave_AutoLoad::Save_Maps.include?($game_map.map_id)
  216.         DataManager.save_game(@last)
  217.       end
  218.     elsif R2_AutoSave_AutoLoad::Save_Maps.include?($game_map.map_id) &&
  219.       R2_AutoSave_AutoLoad::Use_switch == false
  220.       DataManager.save_game(@last)
  221.     end
  222.   end
  223. end
Add Comment
Please, Sign In to add comment