This doesn't go on the script request board, try going here:
http://lmgtfy.com/?q=Rpg+Maker+VX+Neo+Save+SystemBut if you really want it, here you go:
#===============================================================
# ? [VX] ? Neo Save System III [PHLiM2 Version] ? ?
#--------------------------------------------------------------
# ? by Woratana [woratana@hotmail.com]
# ? Thaiware RPG Maker Community
# ? Released on: 15/02/2009
# ? Version: 3.0
#--------------------------------------------------------------
# ? Modified by PHLiM2
# ? Works with included Save Background
#--------------------------------------------------------------
# ? Features:
# - Unlimited save slots, you can choose max save slot
# - You can use image for scene's background
# - Choose your save file's name, and folder to store save files
# - Choose to show only information you want
# - Editable text for information's title
# - Draw tilemap for map that player is currently in.
# - Remove text you don't want from map's name (e.g. tags for special script)
# - Choose map that you don't want to show its name
# - Include save confirmation window before overwrite old save
#=================================================================
class Window_SaveBG < Window_Base
def initialize(x, y)
super(x - 16, y - 16, 576, 448)
rectbg = Rect.new(0, 0, 544, 416)
bg = Cache.picture("savefg")
self.contents.blt(0, 0, bg, rectbg)
end
end
#==============================================================================
# ** Window_Selectable
#------------------------------------------------------------------------------
# This window contains cursor movement and scroll functions.
#==============================================================================
class Window_SSelect < Window_Base
#--------------------------------------------------------------------------
# * Public Instance Variables
#--------------------------------------------------------------------------
attr_reader :item_max # item count
attr_reader :column_max # digit count
attr_reader :index # cursor position
attr_reader :help_window # help window
#--------------------------------------------------------------------------
# * Object Initialization
# x : window X coordinate
# y : window Y coordinate
# width : window width
# height : window height
# spacing : width of empty space when items are arranged horizontally
#--------------------------------------------------------------------------
def initialize(x, y, width, height, spacing = 32)
@item_max = 1
@column_max = 1
@index = -1
@spacing = spacing
super(x, y, width, height)
end
#--------------------------------------------------------------------------
# * Create Window Contents
#--------------------------------------------------------------------------
def create_contents
self.contents.dispose
self.contents = Bitmap.new(width - 32, [height - 32, row_max * 21].max)
end
#--------------------------------------------------------------------------
# * Set Cursor Position
# index : new cursor position
#--------------------------------------------------------------------------
def index=(index)
@index = index
update_cursor
call_update_help
end
#--------------------------------------------------------------------------
# * Get Row Count
#--------------------------------------------------------------------------
def row_max
return (@item_max + @column_max - 1) / @column_max
end
#--------------------------------------------------------------------------
# * Get Top Row
#--------------------------------------------------------------------------
def top_row
return self.oy / 21
end
#--------------------------------------------------------------------------
# * Set Top Row
# row : row shown on top
#--------------------------------------------------------------------------
def top_row=(row)
row = 0 if row < 0
row = row_max - 1 if row > row_max - 1
self.oy = row * 21
end
#--------------------------------------------------------------------------
# * Get Number of Rows Displayable on 1 Page
#--------------------------------------------------------------------------
def page_row_max
return (self.height - 32) / 21
end
#--------------------------------------------------------------------------
# * Get Number of Items Displayable on 1 Page
#--------------------------------------------------------------------------
def page_item_max
return page_row_max * @column_max
end
#--------------------------------------------------------------------------
# * Get bottom row
#--------------------------------------------------------------------------
def bottom_row
return top_row + page_row_max - 1
end
#--------------------------------------------------------------------------
# * Set bottom row
# row : Row displayed at the bottom
#--------------------------------------------------------------------------
def bottom_row=(row)
self.top_row = row - (page_row_max - 1)
end
#--------------------------------------------------------------------------
# * Get rectangle for displaying items
# index : item number
#--------------------------------------------------------------------------
def item_rect(index)
rect = Rect.new(0, 0, 0, 0)
rect.width = (contents.width + @spacing) / @column_max - @spacing
rect.height = 21
rect.x = index % @column_max * (rect.width + @spacing)
rect.y = index / @column_max * 21
return rect
end
#--------------------------------------------------------------------------
# * Set Help Window
# help_window : new help window
#--------------------------------------------------------------------------
def help_window=(help_window)
@help_window = help_window
call_update_help
end
#--------------------------------------------------------------------------
# * Determine if cursor is moveable
#--------------------------------------------------------------------------
def cursor_movable?
return false if (not visible or not active)
return false if (index < 0 or index > @item_max or @item_max == 0)
return false if (@opening or @closing)
return true
end
#--------------------------------------------------------------------------
# * Move cursor down
# wrap : Wraparound allowed
#--------------------------------------------------------------------------
def cursor_down(wrap = false)
if (@index < @item_max - @column_max) or (wrap and @column_max == 1)
@index = (@index + @column_max) % @item_max
end
end
#--------------------------------------------------------------------------
# * Move cursor up
# wrap : Wraparound allowed
#--------------------------------------------------------------------------
def cursor_up(wrap = false)
if (@index >= @column_max) or (wrap and @column_max == 1)
@index = (@index - @column_max + @item_max) % @item_max
end
end
#--------------------------------------------------------------------------
# * Move cursor right
# wrap : Wraparound allowed
#--------------------------------------------------------------------------
def cursor_right(wrap = false)
if (@column_max >= 2) and
(@index < @item_max - 1 or (wrap and page_row_max == 1))
@index = (@index + 1) % @item_max
end
end
#--------------------------------------------------------------------------
# * Move cursor left
# wrap : Wraparound allowed
#--------------------------------------------------------------------------
def cursor_left(wrap = false)
if (@column_max >= 2) and
(@index > 0 or (wrap and page_row_max == 1))
@index = (@index - 1 + @item_max) % @item_max
end
end
#--------------------------------------------------------------------------
# * Move cursor one page down
#--------------------------------------------------------------------------
def cursor_pagedown
if top_row + page_row_max < row_max
@index = [@index + page_item_max, @item_max - 1].min
self.top_row += page_row_max
end
end
#--------------------------------------------------------------------------
# * Move cursor one page up
#--------------------------------------------------------------------------
def cursor_pageup
if top_row > 0
@index = [@index - page_item_max, 0].max
self.top_row -= page_row_max
end
end
#--------------------------------------------------------------------------
# * Frame Update
#--------------------------------------------------------------------------
def update
super
if cursor_movable?
last_index = @index
if Input.repeat?(Input::DOWN)
cursor_down(Input.trigger?(Input::DOWN))
end
if Input.repeat?(Input::UP)
cursor_up(Input.trigger?(Input::UP))
end
if Input.repeat?(Input::RIGHT)
cursor_right(Input.trigger?(Input::RIGHT))
end
if Input.repeat?(Input::LEFT)
cursor_left(Input.trigger?(Input::LEFT))
end
if Input.repeat?(Input::R)
cursor_pagedown
end
if Input.repeat?(Input::L)
cursor_pageup
end
if @index != last_index
Sound.play_cursor
end
end
update_cursor
call_update_help
end
#--------------------------------------------------------------------------
# * Update cursor
#--------------------------------------------------------------------------
def update_cursor
if @index < 0 # If the cursor position is less than 0
self.cursor_rect.empty # Empty cursor
else # If the cursor position is 0 or more
row = @index / @column_max # Get current row
if row < top_row # If before the currently displayed
self.top_row = row # Scroll up
end
if row > bottom_row # If after the currently displayed
self.bottom_row = row # Scroll down
end
rect = item_rect(@index) # Get rectangle of selected item
rect.y -= self.oy # Match rectangle to scroll position
self.cursor_rect = rect # Refresh cursor rectangle
end
end
#--------------------------------------------------------------------------
# * Call help window update method
#--------------------------------------------------------------------------
def call_update_help
if self.active and @help_window != nil
update_help
end
end
#--------------------------------------------------------------------------
# * Update help window (contents are defined by the subclasses)
#--------------------------------------------------------------------------
def update_help
end
end
###############################################################################
#==============================================================================
# ** Window_SCommand
#------------------------------------------------------------------------------
# This window deals with general command choices.
#==============================================================================
class Window_SCommand < Window_SSelect
#--------------------------------------------------------------------------
# * Public Instance Variables
#--------------------------------------------------------------------------
attr_reader :commands # command
#--------------------------------------------------------------------------
# * Object Initialization
# width : window width
# commands : command string array
# column_max : digit count (if 2 or more, horizontal selection)
# row_max : row count (0: match command count)
# spacing : blank space when items are arrange horizontally
#--------------------------------------------------------------------------
def initialize(width, commands, column_max = 1, row_max = 0, spacing = 32)
if row_max == 0
row_max = (commands.size + column_max - 1) / column_max
end
super(0, 0, width, row_max * 21 + 32, spacing)
@commands = commands
@item_max = commands.size
@column_max = column_max
refresh
self.index = 0
end
#--------------------------------------------------------------------------
# * Refresh
#--------------------------------------------------------------------------
def refresh
self.contents.clear
for i in 0...@item_max
draw_item(i)
end
end
#--------------------------------------------------------------------------
# * Draw Item
# index : item number
# enabled : enabled flag. When false, draw semi-transparently.
#--------------------------------------------------------------------------
def draw_item(index, enabled = true)
rect = item_rect(index)
rect.x += 4
rect.width -= 8
self.contents.clear_rect(rect)
self.contents.font.size = 16
self.contents.font.bold = true
self.contents.font.color = normal_color
self.contents.font.color.alpha = enabled ? 255 : 128
self.contents.draw_text(rect, @commands[index],1)
end
end
################################################################################
module Wora_NSS
#==========================================================================
# * START NEO SAVE SYSTEM - SETUP
#--------------------------------------------------------------------------
NSS_WINDOW_OPACITY = 0 # All windows' opacity (Lowest 0 - 255 Highest)
# You can change this to 0 in case you want to use image for background
NSS_IMAGE_BG = 'savefg' # Background image file name, it must be in folder Picture.
# use '' for no background
NSS_IMAGE_BG_OPACITY = 255 # Opacity for background image
MAX_SAVE_SLOT = 50 # Max save slots no.
SLOT_NAME = 'File {id}'
# Name of the slot (show in save slots list), use {id} for slot ID
SAVE_FILE_NAME = 'Save{id}.rvdata'
# Save file name, you can also change its file type from .rvdata to other
# use {id} for save slot ID
SAVE_PATH = 'Saves/' # Path to store save file, e.g. 'Save/' or '' (for game folder)
SAVED_SLOT_ICON = 133 # Icon Index for saved slot
EMPTY_SLOT_ICON = 141 # Icon Index for empty slot
EMPTY_SLOT_TEXT = '-NO DATA-' # Text to show for empty slot's data
DRAW_GOLD = true # Draw Gold
DRAW_PLAYTIME = true # Draw Playtime
DRAW_LOCATION = true # Draw location
DRAW_FACE = true # Draw Actor's face
DRAW_LEVEL = true # Draw Actor's level
DRAW_NAME = true # Draw Actor's name
PLAYTIME_TEXT = 'Time - '
GOLD_TEXT = 'Money - '
LOCATION_TEXT = 'Location - '
LV_TEXT = 'Lv - '
MAP_NAME_TEXT_SUB = %w{}
# Text that you want to remove from map name,
# e.g. %w{[LN] [DA]} will remove text '[LN]' and '[DA]' from map name
MAP_NO_NAME_LIST = [] # ID of Map that will not show map name, e.g. [1,2,3]
MAP_NO_NAME_NAME = '??????????' # What you will use to call map in no name list
MAP_BORDER = Color.new(0,0,0,200) # Map image border color (R,G,B,Opacity)
FACE_BORDER = Color.new(255,255,255,50) # Face border color
## SAVE CONFIRMATION WINDOW ##
SFC_Text_Confirm = 'Overwrite' # Text to confirm to save file
SFC_Text_Cancel = 'Cancel' # Text to cancel to save
SFC_Window_Width = 220 # Width of Confirmation Window
SFC_Window_X_Offset = 0 # Move Confirmation Window horizontally
SFC_Window_Y_Offset = 0 # Move Confirmation Window vertically
#----------------------------------------------------------------------
# END NEO SAVE SYSTEM - SETUP
#=========================================================================
end
class Scene_File < Scene_Base
include Wora_NSS
attr_reader :window_slotdetail
#--------------------------------------------------------------------------
# * Start processing
#--------------------------------------------------------------------------
def start
super
create_menu_background
@bg2 = Window_SaveBG.new(0,0)
@bg2.opacity = 0
@help_window = Window_ItemHelp.new
command = []
(1..MAX_SAVE_SLOT).each do |i|
command << SLOT_NAME.clone.gsub!(/\{ID\}/i) { i.to_s }
end
@window_slotdetail = Window_NSS_SlotDetail.new
@window_slotlist = Window_SlotList.new(120, command)
@window_slotlist.y = 56
@window_slotlist.height = Graphics.height - 56
@help_window.opacity = NSS_WINDOW_OPACITY
@window_slotdetail.opacity = @window_slotlist.opacity = NSS_WINDOW_OPACITY
# Create Folder for Save file
if SAVE_PATH != ''
Dir.mkdir(SAVE_PATH) if !FileTest.directory?(SAVE_PATH)
end
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)
(1..MAX_SAVE_SLOT).each do |i|
@window_slotlist.draw_item(i-1, false) if !@window_slotdetail.file_exist?(i)
end
end
@window_slotlist.index = @index
# Draw Information
@last_slot_index = @window_slotlist.index
@window_slotdetail.draw_data(@last_slot_index + 1)
end
#--------------------------------------------------------------------------
# * Termination Processing
#--------------------------------------------------------------------------
def terminate
super
dispose_menu_background
unless @bg.nil?
@bg.bitmap.dispose
@bg.dispose
end
@bg2.dispose
@window_slotlist.dispose
@window_slotdetail.dispose
@help_window.dispose
end
#--------------------------------------------------------------------------
# * Frame Update
#--------------------------------------------------------------------------
def update
super
if !@confirm_window.nil?
@confirm_window.update
if Input.trigger?(Input::C)
if @confirm_window.index == 0
determine_savefile
@confirm_window.dispose
@confirm_window = nil
else
Sound.play_cancel
@confirm_window.dispose
@confirm_window = nil
end
elsif Input.trigger?(Input::B)
Sound.play_cancel
@confirm_window.dispose
@confirm_window = nil
end
else
update_menu_background
@window_slotlist.update
if @window_slotlist.index != @last_slot_index
@last_slot_index = @window_slotlist.index
@window_slotdetail.draw_data(@last_slot_index + 1)
end
@help_window.update
update_savefile_selection
end
end
#--------------------------------------------------------------------------
# * Update Save File Selection
#--------------------------------------------------------------------------
def update_savefile_selection
if Input.trigger?(Input::C)
if @saving and @window_slotdetail.file_exist?(@last_slot_index + 1)
Sound.play_decision
text1 = SFC_Text_Confirm
text2 = SFC_Text_Cancel
@confirm_window = Window_SCommand.new(SFC_Window_Width,[text1,text2])
@confirm_window.x = ((544 - @confirm_window.width) / 2) + SFC_Window_X_Offset
@confirm_window.y = ((416 - @confirm_window.height) / 2) + SFC_Window_Y_Offset
else
determine_savefile
end
elsif Input.trigger?(Input::B)
Sound.play_cancel
return_scene
end
end
#--------------------------------------------------------------------------
# * Execute Save
#--------------------------------------------------------------------------
def do_save
file = File.open(make_filename(@last_slot_index), "wb")
write_save_data(file)
file.close
$scene = Scene_Menu.new(4)
end
#--------------------------------------------------------------------------
# * Execute Load
#--------------------------------------------------------------------------
def do_load
file = File.open(make_filename(@last_slot_index), "rb")
read_save_data(file)
file.close
$scene = Scene_Map.new
RPG::BGM.fade(1500)
Graphics.fadeout(60)
Graphics.wait(40)
@last_bgm.play
@last_bgs.play
end
#--------------------------------------------------------------------------
# * Confirm Save File
#--------------------------------------------------------------------------
def determine_savefile
if @saving
Sound.play_save
do_save
else
if @window_slotdetail.file_exist?(@last_slot_index + 1)
Sound.play_load
do_load
else
Sound.play_buzzer
return
end
end
$game_temp.last_file_index = @last_slot_index
end
#--------------------------------------------------------------------------
# * Create Filename
# file_index : save file index (0-3)
#--------------------------------------------------------------------------
def make_filename(file_index)
return SAVE_PATH + SAVE_FILE_NAME.gsub(/\{ID\}/i) { (file_index + 1).to_s }
end
#--------------------------------------------------------------------------
# * Select File With Newest Timestamp
#--------------------------------------------------------------------------
def latest_file_index
latest_index = 0
latest_time = Time.at(0)
(1..MAX_SAVE_SLOT).each do |i|
file_name = make_filename(i - 1)
next if !@window_slotdetail.file_exist?(i)
file_time = File.mtime(file_name)
if file_time > latest_time
latest_time = file_time
latest_index = i - 1
end
end
return latest_index
end
end
class Window_SlotList < Window_SCommand
#--------------------------------------------------------------------------
# * Draw Item
#--------------------------------------------------------------------------
def draw_item(index, enabled = true)
rect = item_rect(index)
rect.x += 4
rect.width -= 8
icon_index = 0
self.contents.clear_rect(rect)
if $scene.window_slotdetail.file_exist?(index + 1)
icon_index = Wora_NSS::SAVED_SLOT_ICON
else
icon_index = Wora_NSS::EMPTY_SLOT_ICON
end
if !icon_index.nil?
rect.x -= 4
draw_icon(icon_index, rect.x, rect.y - 2, enabled) # Draw Icon
rect.x += 26
rect.width -= 20
end
self.contents.clear_rect(rect)
self.contents.font.size = 16
self.contents.font.bold = true
self.contents.font.color = normal_color
self.contents.font.color.alpha = enabled ? 255 : 128
self.contents.draw_text(rect, @commands[index])
end
def cursor_down(wrap = false)
if @index < @item_max - 1 or wrap
@index = (@index + 1) % @item_max
end
end
def cursor_up(wrap = false)
if @index > 0 or wrap
@index = (@index - 1 + @item_max) % @item_max
end
end
end
class Window_NSS_SlotDetail < Window_Base
include Wora_NSS
def initialize
super(120, 54, 424, 360)
@data = []
@exist_list = []
@bitmap_list = {}
@map_name = []
end
def dispose
dispose_tilemap
super
end
def draw_data(slot_id)
contents.clear # 424, 360
contents.font.size = 16
contents.font.bold = true
dispose_tilemap
load_save_data(slot_id) if @data[slot_id].nil?
if @exist_list[slot_id]
save_data = @data[slot_id]
# DRAW SCREENSHOT~
contents.fill_rect(0,30,424,160, MAP_BORDER)
create_tilemap(save_data['gamemap'].data, save_data['gamemap'].display_x,
save_data['gamemap'].display_y)
if DRAW_GOLD
# DRAW GOLD
gold_textsize = contents.text_size(save_data['gamepar'].gold).width
goldt_textsize = contents.text_size(GOLD_TEXT).width
contents.font.color = system_color
contents.draw_text(0, -6, goldt_textsize, WLH, GOLD_TEXT)
contents.draw_text(goldt_textsize + gold_textsize,-6,200,WLH, Vocab::gold)
contents.font.color = normal_color
contents.font.bold = false
contents.draw_text(goldt_textsize, -6, gold_textsize, WLH, save_data['gamepar'].gold)
end
if DRAW_PLAYTIME
# DRAW PLAYTIME
hour = save_data['total_sec'] / 60 / 60
min = save_data['total_sec'] / 60 % 60
sec = save_data['total_sec'] % 60
time_string = sprintf("%02d:%02d:%02d", hour, min, sec)
pt_textsize = contents.text_size(PLAYTIME_TEXT).width
ts_textsize = contents.text_size(time_string).width
contents.font.color = system_color
contents.font.bold = true
contents.draw_text(contents.width - ts_textsize - pt_textsize, -6,
pt_textsize + 32, WLH, PLAYTIME_TEXT)
contents.font.color = normal_color
contents.font.bold = false
contents.draw_text(0, -6, contents.width, WLH, time_string, 2)
end
if DRAW_LOCATION
# DRAW LOCATION
lc_textsize = contents.text_size(LOCATION_TEXT).width
mn_textsize = contents.text_size(save_data['map_name']).width
contents.font.color = system_color
contents.font.bold = true
contents.draw_text(0, 190, contents.width,
WLH, LOCATION_TEXT)
contents.font.color = normal_color
contents.font.bold = false
contents.draw_text(lc_textsize, 190, contents.width, WLH,
save_data['map_name'])
end
# DRAW FACE & Level & Name
save_data['gamepar'].members.each_index do |i|
actor = save_data['gameactor'][save_data['gamepar'].members[i].id]
face_x_base = (i*80) + (i*5)
face_y_base = 224
lvn_y_plus = 10
lv_textsize = contents.text_size(actor.level).width
lvt_textsize = contents.text_size(LV_TEXT).width
if DRAW_FACE
# Draw Face
contents.fill_rect(face_x_base + 24, face_y_base, 84, 84, FACE_BORDER)
draw_face(actor.face_name, actor.face_index, face_x_base + 26,
face_y_base + 2, 80)
end
if DRAW_LEVEL
# Draw Level
contents.font.bold = true
contents.font.color = system_color
contents.draw_text(face_x_base + 6 + 80 - lv_textsize - lvt_textsize,
face_y_base + 2 + 80 - WLH + lvn_y_plus, lvt_textsize + 8, WLH, LV_TEXT)
contents.font.color = normal_color
contents.font.bold = false
contents.draw_text(face_x_base + 6 + 80 - lv_textsize,
face_y_base + 2 + 80 - WLH + lvn_y_plus, lv_textsize, WLH, actor.level)
contents.font.bold = false
end
if DRAW_NAME
# Draw Name
contents.font.bold = true
contents.draw_text(face_x_base+26, face_y_base + 2 + 80 + lvn_y_plus - 8, 84,
WLH, actor.name, 1)
contents.font.bold = false
end
end
else
contents.font.bold = true
contents.draw_text(-8,-40, contents.width, contents.height - WLH, EMPTY_SLOT_TEXT, 1)
contents.font.bold = false
end
end
def load_save_data(slot_id)
file_name = make_filename(slot_id)
if file_exist?(slot_id) or FileTest.exist?(file_name)
@exist_list[slot_id] = true
@data[slot_id] = {}
# Start load data
file = File.open(file_name, "r")
@data[slot_id]['time'] = file.mtime
@data[slot_id]['char'] = Marshal.load(file)
@data[slot_id]['frame'] = Marshal.load(file)
@data[slot_id]['last_bgm'] = Marshal.load(file)
@data[slot_id]['last_bgs'] = Marshal.load(file)
@data[slot_id]['gamesys'] = Marshal.load(file)
@data[slot_id]['gamemes'] = Marshal.load(file)
@data[slot_id]['gameswi'] = Marshal.load(file)
@data[slot_id]['gamevar'] = Marshal.load(file)
@data[slot_id]['gameselfvar'] = Marshal.load(file)
@data[slot_id]['gameactor'] = Marshal.load(file)
@data[slot_id]['gamepar'] = Marshal.load(file)
@data[slot_id]['gametro'] = Marshal.load(file)
@data[slot_id]['gamemap'] = Marshal.load(file)
@data[slot_id]['total_sec'] = @data[slot_id]['frame'] / Graphics.frame_rate
@data[slot_id]['map_name'] = get_mapname(@data[slot_id]['gamemap'].map_id)
file.close
else
@exist_list[slot_id] = false
@data[slot_id] = -1
end
end
def make_filename(file_index)
return SAVE_PATH + SAVE_FILE_NAME.gsub(/\{ID\}/i) { (file_index).to_s }
end
def file_exist?(slot_id)
return @exist_list[slot_id] if !@exist_list[slot_id].nil?
@exist_list[slot_id] = FileTest.exist?(make_filename(slot_id))
return @exist_list[slot_id]
end
def get_mapname(map_id)
if @map_data.nil?
@map_data = load_data("Data/MapInfos.rvdata")
end
if @map_name[map_id].nil?
if MAP_NO_NAME_LIST.include?(map_id)
@map_name[map_id] = MAP_NO_NAME_NAME
else
@map_name[map_id] = @map_data[map_id].name
MAP_NAME_TEXT_SUB.each_index do |i|
@map_name[map_id].sub!(MAP_NAME_TEXT_SUB[i], '')
end
end
end
return @map_name[map_id]
end
def create_tilemap(map_data, ox, oy)
@viewport = Viewport.new(self.x + 17, self.y + 32 + 15, 390 ,157)
@viewport.z = self.z
@tilemap = Tilemap.new(@viewport)
@tilemap.bitmaps[0] = Cache.system("TileA1")
@tilemap.bitmaps[1] = Cache.system("TileA2")
@tilemap.bitmaps[2] = Cache.system("TileA3")
@tilemap.bitmaps[3] = Cache.system("TileA4")
@tilemap.bitmaps[4] = Cache.system("TileA5")
@tilemap.bitmaps[5] = Cache.system("TileB")
@tilemap.bitmaps[6] = Cache.system("TileC")
@tilemap.bitmaps[7] = Cache.system("TileD")
@tilemap.bitmaps[8] = Cache.system("TileE")
@tilemap.map_data = map_data
@tilemap.ox = ox / 8 + 72
@tilemap.oy = oy / 8 + 90
end
def dispose_tilemap
unless @tilemap.nil?
@tilemap.dispose
@tilemap = nil
end
end
end
class Scene_Title < Scene_Base
def check_continue
file_name = Wora_NSS::SAVE_PATH + Wora_NSS::SAVE_FILE_NAME.gsub(/\{ID\}/i) { '*' }
@continue_enabled = (Dir.glob(file_name).size > 0)
end
end
#======================================================================
# END - NEO SAVE SYSTEM by Woratana
#======================================================================
Just make sure to create the 'Saves' folder in the main section of your game folder, not data.