#================================================= =========================
# ● [VX] ◦ Neo Save System V (Новая Система Сохранений V) ◦ □
#---------------------------------------------------------------------------
# ◦ Автор: Woratana [woratana@hotmail.com]
# ◦ Thaiware RPG Maker Community
# ◦ Перевод: mephis
# ◦ Последнее обновление:
# ◦ Версия: 3.0 -> 5.0
# ◦ Сейчас этот скрипт поддерживает Helladen
# ◦ (Авторство скриншотов: Woratana, Andreas21 и Cybersam)
#---------------------------------------------------------------------------
# ◦ Изменения в версии V:
# - Введена поддержка скриншотов для желающих, чтобы на изображении карты
# был виден уровень тона, погода и спрайты. И в отличие от первой версии,
# теперь изображение центрировано.
# - Добавлена опция остаться в экране сохранения после записи сохранения
#---------------------------------------------------------------------------
# ◦ Изменения в версии IV:
# - Новое дополнение, скрывающее имена карт. С помощью свитча можно включать
# или отключать работу списка MAP_NO_NAME_LIST.
# - Пересмотрены некоторые настройки и организация скрипта.
# - Добавлена опция отключения текста vocab::Gold справа от кол-ва денег.
# - Добавлена опция выбора: использовать или нет уровень прозрачности по умолч.
# - Добавлена поддержка совместимости скрипта смены тайлсета (swap_tile)
#---------------------------------------------------------------------------
# ◦ Изменения в версии III:
# - Вернулись к отрисовке карты с помощью скриншота. Картинки больше не нужны.
# - При отрисовке карты персонажи не показываются на ней.
#---------------------------------------------------------------------------
# ◦ Изменения в версии II:
# - DLL для скриншотов не работает под Vista Aero, поэтому она была убрана,
# вместо этого используется картинка для каждой карты вместо скриншота.
# - Уровень персонажа в прошлой версии (V.1) показывался неправильно.
#---------------------------------------------------------------------------
# ◦ Свойства:
# - Бесконечное количество слотов сохранений, можно указать максимум
# - Множество настроек
# - Поддержка скрипта смены тайлсета "Swap Tile"
# - В качестве фона сцены сохранения можно использовать картинку
# - Можно выбрать имя файлов сохранения и папку, где они будут храниться
# - Можно настроить выводимую информацию в сцене сохранения
# - Изменяемый текст информационного заголовка
# - Вывод тайлов той карты, где находится игрок
# - Можно из имени карты убрать текст, который вам не нужен
# (например, теги для некоторых скриптов)
# - Можно выбирать карты, для которых не нужно показывать их имена
# - Подтверждение при попытке перезаписать предыдущее сохранение
#================================================= ==========================
module Wora_NSS Wora_NSS
#================================================= =========================
# * НАЧАЛО НОВОЙ СИСТЕМЫ СОХРАНЕНИЙ - НАСТРОЙКИ
#--------------------------------------------------------------------------
OPACITY_DEFAULT = true # Использовать настройки непрозрачности окон по умолчанию?
# Имейте в виду, что эта опция повлияет на оба
# параметра непрозрачности, указанных ниже
NSS_WINDOW_OPACITY = 255 # Непрозрачность всех окон (Наименьшая 0 - 255 Наибольшая)
# Если хотите использовать картинку для фона, установите это значение в 0
NSS_IMAGE_BG = '' # Имя файла фоновой картинки, он должен лежать в папке Picture
# Если фоновой картинки не будет, оставьте значение ''
NSS_IMAGE_BG_OPACITY = 255 # Непрозрачность фоновой картинки
# Если будете использовать метод скриншота, то эти опции вам не нужны
SWAP_TILE = false # Если не будете использовать скрипт swap_tile,
# оставьте это значение в false
SWAP_TILE_SWITCH = 84 # ID того же свитча, который используется в swap_tile.
# Если SWAP_TILE установлен в false, то эта настройка
# не имеет значения.
# Если равно true, то будет создаваться скриншот карты.
# Если равно false, то карта будет отрисовываться.
SCREENSHOT_IMAGE = true # Плюс отрисовки в том, что вам не понадобится .DLL
# или картинки для создания скриншотов. С другой стороны, метод скриншотов
# лучше, так как в нём будут видны спрайты, уровень тона и погода.
# Вам нужно включить swap_tile, если эта опция будет установлена в false.
IMAGE_FILETYPE = '.png' # Тип картинки скриншота
# Может быть '.bmp', '.jpg' или '.png'
# Если равно true, то сцена не изменится при сохранении игры
SCENE_CHANGE = true # Если true, то сцена сохранения будет на текущей карте
MAX_SAVE_SLOT = 13 # Максимальное количество слотов сохранения
SLOT_NAME = 'СЛОТ {id}'
# Название слота сохранения (показывается в списке сохранений)
# Вместо {id} будет вставляться порядковый номер файла сохранения
SAVE_FILE_NAME = 'Save {id}.rvdata'
# Имя файла сохранений, можете также сменить расширение .rvdata на другое.
# Вместо {id} будет вставляться порядковый номер файла сохранения
SAVE_PATH = 'Save/' # Путь к папке сохранений, например 'Save/' или
# '' (сохранения будут в корневой папке игры)
SAVED_SLOT_ICON = 133 # Номер иконки слота с сохранением
EMPTY_SLOT_ICON = 141 # Номер иконки пустого слота
EMPTY_SLOT_TEXT = '— Пусто —' # Текст, показывающийся в пустом слоте
DRAW_GOLD = true # Выводить кол-во денег
DRAW_PLAYTIME = true # Выводить время игры
DRAW_LOCATION = true # Выводить имя текущей локации
DRAW_FACE = true # Показывать лица героев
DRAW_LEVEL = true # Показывать уровень героев
DRAW_NAME = true # Показывать имена героев
DRAW_TEXT_GOLD = true # Выводить текст из vocab::Gold справа от количества денег
PLAYTIME_TEXT = 'Время игры: '
GOLD_TEXT = 'Деньги: '
LOCATION_TEXT = 'Локация: '
LV_TEXT = 'Ур. '
MAP_NAME_TEXT_SUB = %w{}
# Текст, который вы хотите убрать из имени карты,
# например: %w{[LN] [DA]} уберёт текст '[LN]' и '[DA]' из имени карты
MAP_NO_NAME_LIST = [2] # ID карт, для которых не нужно выводить их имя,
# например: [1,2,3]
MAP_NO_NAME = '???' # Так будут называться безымянные карты
# Этот свитч включает или отключает карты, показывающиеся как MAP_NO_NAME.
# Если данный свитч отключить, то эти карты станут обычными.
MAP_NO_NAME_SWITCH = 95 # Чтобы MAP_NO_NAME_LIST заработал, нужно включить
# этот свитч.
MAP_BORDER = Color.new(0,0,0,200) # Цвет рамки изображения карты
# (Красный,Зелёный,Синий,Непр озрачность)
FACE_BORDER = Color.new(0,0,0,200) # Цвет рамки лиц героев
# Окно подтверждения перезаписи поверх старого сохранения
SFC_Text_Confirm = 'Перезаписать' # Текст подтверждения перезаписи
SFC_Text_Cancel = 'Отмена' # Текст отмены сохранения
SFC_Window_Width = 200 # Ширина окна подтверждения
SFC_Window_X_Offset = 0 # Сдвиг окна подтверждения по горизонтали
SFC_Window_Y_Offset = 0 # Сдвиг окна подтверждения по вертикали
#-------------------------------------------------------------------------
# КОНЕЦ НОВОЙ СИСТЕМЫ СОХРАНЕНИЙ - НАСТРОЙКИ
# (Всё, что идёт ниже, можно изменять только на свой страх и риск)
#================================================= ========================
#-------------------------------------------------------------
# Screenshot V2 by Andreas21 and Cybersam
#-------------------------------------------------------------
@screen = Win32API.new 'screenshot', 'Screenshot', %w(l l l l p l l), ''
@readini = Win32API.new 'kernel32', 'GetPrivateProfileStringA', %w(p p p p l p), 'l'
@findwindow = Win32API.new 'user32', 'FindWindowA', %w(p p), 'l'
module_function
def self.shot(file_name)
case IMAGE_FILETYPE
when '.bmp'; typid = 0
when '.jpg'; typid = 1
when '.png'; typid = 2
end
# Get Screenshot
filename = file_name + IMAGE_FILETYPE
@screen.call(0, 0, Graphics.width, Graphics.height, filename, self.handel,
typid)
end
def self.handel
game_name = "\0" * 256
@readini.call('Game','Title','',game_name,255,".\\ Game.ini")
game_name.delete!("\0")
return @findwindow.call('RGSS Player',game_name)
end
end
class Scene_File < Scene_Base
include Wora_NSS
attr_reader :window_slotdetail
#-------------------------------------------------------------------------
# * Start processing
#-------------------------------------------------------------------------
def start
super
create_menu_background
if NSS_IMAGE_BG != ''
@bg = Sprite.new
@bg.bitmap = Cache.picture(NSS_IMAGE_BG)
@bg.opacity = NSS_IMAGE_BG_OPACITY
end
@help_window = Window_Help.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(160, command)
@window_slotlist.y = @help_window.height
@window_slotlist.height = Graphics.height - @help_window.height
if OPACITY_DEFAULT == false
@help_window.opacity = NSS_WINDOW_OPACITY
@window_slotdetail.opacity = @window_slotlist.opacity = NSS_WINDOW_OPACITY
end
# 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
@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_Command.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
if SCREENSHOT_IMAGE
File.rename(SAVE_PATH + 'temp' + IMAGE_FILETYPE,
make_filename(@last_slot_index).gsub(/\..*$/){ '_ss' } + IMAGE_FILETYPE)
end
file = File.open(make_filename(@last_slot_index), "wb")
write_save_data(file)
file.close
if SCENE_CHANGE
$scene = Scene_Map.new
else
$scene = Scene_File.new(true, false, false)
end
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
class Window_SlotList < Window_Command
#--------------------------------------------------------------------------
# * 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, enabled) # Draw Icon
rect.x += 26
rect.width -= 20
end
self.contents.clear_rect(rect)
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(160, 56, 384, 360)
@data = []
@exist_list = []
@bitmap_list = {}
@map_name = []
end
def dispose
dispose_tilemap
super
end
def draw_data(slot_id)
contents.clear # 352, 328
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,352,160, MAP_BORDER)
if SCREENSHOT_IMAGE
if save_data['ss']
bitmap = get_bitmap(save_data['ss_path'])
rect = Rect.new((Graphics.width-348)/2,(Graphics.height-156)/2,348,156)
contents.blt(2,32,bitmap,rect)
end
else
if SWAP_TILE and $game_switches[SWAP_TILE_SWITCH]
create_swaptilemap(save_data['gamemap'].data, save_data['gamemap'].display_x,
save_data['gamemap'].display_y)
else
create_tilemap(save_data['gamemap'].data, save_data['gamemap'].display_x,
save_data['gamemap'].display_y)
end
end
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, 0, goldt_textsize, WLH, GOLD_TEXT)
contents.font.color = normal_color
contents.draw_text(goldt_textsize, 0, gold_textsize, WLH, save_data['gamepar'].gold)
if DRAW_TEXT_GOLD == false
gold_textsize = 0
goldt_textsize = 0
else
contents.draw_text(goldt_textsize + gold_textsize, 0, 200, WLH, Vocab::gold)
end
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.draw_text(contents.width - ts_textsize - pt_textsize, 0,
pt_textsize, WLH, PLAYTIME_TEXT)
contents.draw_text(goldt_textsize + gold_textsize,0,200,WLH, Vocab::gold)
contents.font.color = normal_color
contents.draw_text(0, 0, 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.draw_text(0, 190, contents.width, WLH, LOCATION_TEXT)
contents.font.color = normal_color
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*8)
face_y_base = 216
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, face_y_base, 84, 84, FACE_BORDER)
draw_face(actor.face_name, actor.face_index, face_x_base + 2,
face_y_base + 2, 80)
end
if DRAW_LEVEL
# Draw Level
contents.font.color = system_color
contents.draw_text(face_x_base + 2 + 80 - lv_textsize - lvt_textsize,
face_y_base + 2 + 80 - WLH + lvn_y_plus, lvt_textsize, WLH, LV_TEXT)
contents.font.color = normal_color
contents.draw_text(face_x_base + 2 + 80 - lv_textsize,
face_y_base + 2 + 80 - WLH + lvn_y_plus, lv_textsize, WLH, actor.level)
end
if DRAW_NAME
# Draw Name
contents.draw_text(face_x_base, face_y_base + 2 + 80 + lvn_y_plus - 6, 84,
WLH, actor.name, 1)
end
end
else
contents.draw_text(0,0, contents.width, contents.height - WLH, EMPTY_SLOT_TEXT, 1)
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
if SCREENSHOT_IMAGE
@data[slot_id]['ss_path'] = file_name.gsub(/\..*$/){'_ss'} + IMAGE_FILETYPE
@data[slot_id]['ss'] = FileTest.exist?(@data[slot_id]['ss_path'])
end
@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_bitmap(path)
if !@bitmap_list.include?(path)
@bitmap_list[path] = Bitmap.new(path)
end
return @bitmap_list[path]
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) and $game_switches[MAP_NO_NAME_SWITCH]
@map_name[map_id] = MAP_NO_NAME
else
@map_name[map_id] = @map_data[map_id].name
end
MAP_NAME_TEXT_SUB.each_index do |i|
@map_name[map_id].sub!(MAP_NAME_TEXT_SUB[i], '')
@mapname = @map_name[map_id]
end
end
return @map_name[map_id]
end
def create_tilemap(map_data, ox, oy)
@viewport = Viewport.new(self.x + 2 + 16, self.y + 32 + 16, 348,156)
@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 + 99
@tilemap.oy = oy / 8 + 90
end
def create_swaptilemap(map_data, ox, oy)
@viewport = Viewport.new(self.x + 2 + 16, self.y + 32 + 16, 348,156)
@viewport.z = self.z
@tilemap = Tilemap.new(@viewport)
tile1 = Cache_Swap_Tiles.swap($tileA1 + ".png") rescue nil
tile2 = Cache_Swap_Tiles.swap($tileA2 + ".png") rescue nil
tile3 = Cache_Swap_Tiles.swap($tileA3 + ".png") rescue nil
tile4 = Cache_Swap_Tiles.swap($tileA4 + ".png") rescue nil
tile5 = Cache_Swap_Tiles.swap($tileA5 + ".png") rescue nil
tile6 = Cache_Swap_Tiles.swap($tileB + ".png") rescue nil
tile7 = Cache_Swap_Tiles.swap($tileC + ".png") rescue nil
tile8 = Cache_Swap_Tiles.swap($tileD + ".png") rescue nil
tile9 = Cache_Swap_Tiles.swap($tileE + ".png") rescue nil
if $tileA1 != nil
@tilemap.bitmaps[0] = tile1
else
@tilemap.bitmaps[0] = Cache.system("TileA1")
end
if $tileA2 != nil
@tilemap.bitmaps[1] = tile2
else
@tilemap.bitmaps[1] = Cache.system("TileA2")
end
if $tileA3 != nil
@tilemap.bitmaps[2] = tile3
else
@tilemap.bitmaps[2] = Cache.system("TileA3")
end
if $tileA4 != nil
@tilemap.bitmaps[3] = tile4
else
@tilemap.bitmaps[3] = Cache.system("TileA4")
end
if $tileA5 != nil
@tilemap.bitmaps[4] = tile5
else
@tilemap.bitmaps[4] = Cache.system("TileA5")
end
if $tileB != nil
@tilemap.bitmaps[5] = tile6
else
@tilemap.bitmaps[5] = Cache.system("TileB")
end
if $tileC != nil
@tilemap.bitmaps[6] = tile7
else
@tilemap.bitmaps[6] = Cache.system("TileC")
end
if $tileD != nil
@tilemap.bitmaps[7] = tile8
else
@tilemap.bitmaps[7] = Cache.system("TileD")
end
if $tileE != nil
@tilemap.bitmaps[8] = tile9
else
@tilemap.bitmaps[8] = Cache.system("TileE")
end
@tilemap.map_data = map_data
@tilemap.ox = ox / 8 + 99
@tilemap.oy = oy / 8 + 90
end
def dispose_tilemap
unless @tilemap.nil?
@tilemap.dispose
@tilemap = nil
end
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
class Scene_Map < Scene_Base
alias wora_nss_scemap_ter terminate
def terminate
Wora_NSS.shot(Wora_NSS::SAVE_PATH + 'temp')
wora_nss_scemap_ter
end
end
#================================================= =====================
# END - NEO SAVE SYSTEM by Woratana
#================================================= =====================