XP 스크립트

  원본에 있던 맵 보여주기를 설정할 수 있도록 하였습니다.  설정가능하다 싶은 부분은 거의 다 설정가능하게 만들었기 때문에 어쩌면 이게 마지막 편집이 될 것 같습니다. 


#==============================================================================
# ■ ASM - advanced save menu
#------------------------------------------------------------------------------
# by squall // squall@loeher.zzn.com
# edited by J.D. Slasha (1-20-06)
# monday the 28th of november 2005
#
# Allows to have up to 99 files.
# Files are stored inside of the folder 'Saves' inside of the game's folder.
# Don't forget to create that folder if it doesn't already exist.
#==============================================================================
# Save overwriting confirm by RPG Advocate
# Merged & Edited by L
# - 20??-??-??(Date cannot be determined):
# The maximum file quantity can be configured.
# Edited it for RMXP SDK.
# Implemented RPG Advocate's 'Save file overwriting confirmation'.
# Made it to show some more information, like current money in possesion.
# - 2010-09-11:
# Added save directory name and extension configuration.
# Scene_Title::main_test_continue is modified.
# - 2010-10-05: Added save file name configuration, edited some codes a bit.
# - 2010-10-06: Added configuration for showing map and overwrite comfirmation string.
#==============================================================================

#------------------------------------------------------------------------------
# * SDK Log Script
#------------------------------------------------------------------------------
if Object.const_defined?('SDK')
SDK.log('Advanced Save Menu', 'squall', 1.0, '2005-11-28')

#--------------------------------------------------------------------------
# * Begin SDK Requirement Check
#--------------------------------------------------------------------------
SDK.check_requirements(2.0, [1])

#------------------------------------------------------------------------------
# * Begin SDK Enable Test
#------------------------------------------------------------------------------
if SDK.enabled?('Advanced Save Menu')

module ASM_Setup
SAVE_DIR = '.' #Save file location. Default(?): Game folder(.)
SAVE_EXT = 'rxdata' #Save file Extension. Default: rxdata
SAVE_NAME = 'Save' #Save file name. Default: Save
SAVE_MAX_FILES = 12
OVERWRITE_CONFIRM_STRING = 'Really overwrite this file?'
Show_Map = false
end

#==============================================================================
# ■ Window_File
#------------------------------------------------------------------------------
#  This window shows a list of recorded save files.
#==============================================================================

class Window_File < Window_Selectable
include ASM_Setup
#--------------------------------------------------------------------------
# ● initialize
#--------------------------------------------------------------------------
def initialize()
super(0, 64, 320, 416)
self.contents = Bitmap.new(width - 32, SAVE_MAX_FILES * 32)
index = $game_temp.last_file_index == nil ? 0 : $game_temp.last_file_index
self.index = index
@item_max = SAVE_MAX_FILES
refresh
end
#--------------------------------------------------------------------------
# ● refresh the window
#--------------------------------------------------------------------------
def refresh
time_stamp = Time.at(0)
for i in 0...SAVE_MAX_FILES
filename = "#{SAVE_NAME}#{i + 1}.#{SAVE_EXT}"
self.contents.draw_text(1, i * 32, 32, 32, (i + 1).to_s, 1)
if FileTest.exist?("#{SAVE_DIR}/#{filename}")
size = File.size("#{SAVE_DIR}/#{filename}")
if size.between?(1024, 1048575)
size /= 1024
size_str = "#{size} Kb"
elsif size > 1048575
size /= 1048576
size_str = "#{size} Mb"
else
size_str = size.to_s
end
time_stamp = File.open("#{SAVE_DIR}/#{filename}", "r").mtime
date = time_stamp.strftime("%m/%d/%Y")
time = time_stamp.strftime("%H:%M")
self.contents.draw_text(38, i * 32, 120, 32, date)
self.contents.draw_text(160, i * 32, 100, 32, time)
self.contents.draw_text(0, i * 32, 284, 32, size_str, 2)
end
end
end
end

#==============================================================================
# ■ Window_FileStatus
#------------------------------------------------------------------------------
#  This window shows the status of the currently selected save file
#==============================================================================

class Window_FileStatus < Window_Base
include ASM_Setup
#--------------------------------------------------------------------------
# ● initialize
#--------------------------------------------------------------------------
def initialize(save_window)
super(320, 64, 320, 416)
self.contents = Bitmap.new(width - 32, height - 32)
@save_window = save_window
@index = @save_window.index
rect = Rect.new(x + 16, y + (height - 32) / 2 + 16, width - 32, (height - 32) / 2)
@viewport = Viewport.new(rect)
@viewport.z = z + 10
refresh
end
#--------------------------------------------------------------------------
# ● dispose the map and the window
#--------------------------------------------------------------------------
def dispose
tilemap_dispose
@viewport.dispose
super
end
#--------------------------------------------------------------------------
# ● refresh the window
#--------------------------------------------------------------------------
def draw_actor_face(actor, x, y)
face = RPG::Cache.character("SaveFaces/" + actor.character_name, actor.character_hue)
fw = face.width
fh = face.height
src_rect = Rect.new(0, 0, fw, fh)
self.contents.blt(x - fw / 23, y - fh, face, src_rect)
end

def refresh
self.contents.clear
tilemap_dispose
filename = "#{SAVE_NAME}#{@index + 1}.#{SAVE_EXT}"
return unless FileTest.exist?("#{SAVE_DIR}/#{filename}")
file = File.open("#{SAVE_DIR}/#{filename}", "r")
Marshal.load(file)
frame_count = Marshal.load(file)
for i in 0...6
Marshal.load(file)
end
party = Marshal.load(file)
Marshal.load(file)
map = Marshal.load(file)
for i in 0...party.actors.size
actor = party.actors[i]
x = i % 2 * 144 + 4
y = i / 2 * 64
draw_actor_name(actor, x + 30, y)
draw_actor_level(actor, x + 30, y + 20)
draw_actor_graphic(actor, x + 10, y + 60)
#draw_actor_face(actor,x+10,y+400)
end
total_sec = frame_count / Graphics.frame_rate
hour = total_sec / 60 / 60
min = total_sec / 60 % 60
sec = total_sec % 60
text = sprintf("%02d:%02d:%02d", hour, min, sec)
map_name = load_data("Data/MapInfos.rxdata")[map.map_id].name
cx = contents.text_size($data_system.words.gold).width
if Show_Map == true
timey = 128 ;locy = 160
else
timey = 320 ;locy = 352
end
self.contents.font.color = system_color
unless Show_Map == true
self.contents.draw_text(0, timey-32, 120, 32, "Money:")
self.contents.draw_text(280-cx, timey-32, cx, 32, $data_system.words.gold, 2)
end
self.contents.draw_text(0, timey, 120, 32, "Play Time: ")
self.contents.draw_text(0, locy, 120, 32, "Location: ")
self.contents.font.color = normal_color
self.contents.draw_text(100, 288, 180-cx-2, 32, party.gold.to_s, 2) unless Show_Map == true
self.contents.draw_text(100, timey, 180, 32, text, 2)
self.contents.draw_text(100, locy, 180, 32, map_name, 2)

if Show_Map == true
@tilemap = Tilemap.new(@viewport)
@tilemap.tileset = RPG::Cache.tileset(map.tileset_name)
for i in 0..6
autotile_name = map.autotile_names[i]
@tilemap.autotiles[i] = RPG::Cache.autotile(autotile_name)
end
@tilemap.map_data = map.data
@tilemap.ox = map.display_x / 4 + 176
@tilemap.oy = map.display_y / 4 + 148
end
end
#--------------------------------------------------------------------------
# ● tilemap_dispose
#--------------------------------------------------------------------------
def tilemap_dispose
unless @tilemap == nil
@tilemap.tileset.dispose
for i in 0..6
@tilemap.autotiles[i].dispose
end
@tilemap.dispose
@tilemap = nil
end
end
#--------------------------------------------------------------------------
# ● update
#--------------------------------------------------------------------------
def update
@tilemap.update if @tilemap != nil
if @index != @save_window.index
@index = @save_window.index
refresh
end
super
end
end

#==============================================================================
# ■ Scene_File
#------------------------------------------------------------------------------
#  Base scene for load and save menus.
#==============================================================================

class Scene_File < SDK::Scene_Base
include ASM_Setup
#--------------------------------------------------------------------------
# ● initialize the scene
#--------------------------------------------------------------------------
def initialize(help_text)
@help_text = help_text
end
#--------------------------------------------------------------------------
# ● main
#--------------------------------------------------------------------------
def main_window
@help_window = Window_Help.new
@help_window.set_text(@help_text)
@file_window = Window_File.new
@status_window = Window_FileStatus.new(@file_window)
end
#--------------------------------------------------------------------------
# ● update
#--------------------------------------------------------------------------
def update
super
if Input.trigger?(Input::C)
decision
$game_temp.last_file_index = @file_index
return
end
if Input.trigger?(Input::B)
cancel
return
end
end
#--------------------------------------------------------------------------
# ● return the selected file's name
#--------------------------------------------------------------------------
def filename
return "#{SAVE_NAME}#{@file_window.index + 1}.#{SAVE_EXT}"
end
end

#SDK Edit
#==============================================================================
# ■ Scene_Save
#------------------------------------------------------------------------------
#  Save menu
#==============================================================================

class Scene_Save < Scene_File
include ASM_Setup
#--------------------------------------------------------------------------
# ● initialize the save menu
#--------------------------------------------------------------------------
def initialize
super("Select a file to record your progress.")
overwrite_confirm_window
end
#--------------
def overwrite_confirm_window
@confirm_window = Window_Base.new(120, 188, 400, 64) #추가
@confirm_window.contents = Bitmap.new(368, 32)
string = OVERWRITE_CONFIRM_STRING
@confirm_window.contents.font.name = Font.default_name
@confirm_window.contents.font.size = 24
@confirm_window.contents.draw_text(4, 0, 368, 32, string)
@yes_no_window = Window_Command.new(100, ["Yes", "No"])
@confirm_window.visible = false
@confirm_window.z = 1500
@yes_no_window.visible = false
@yes_no_window.active = false
@yes_no_window.index = 1
@yes_no_window.x = 270
@yes_no_window.y = 252
@yes_no_window.z = 1500
@mode = 0 #추가 끝
end
#--------------------------------------------------------------------------
# ● decision key pressed
#--------------------------------------------------------------------------
def decision
Dir.mkdir(SAVE_DIR) unless FileTest.directory?(SAVE_DIR) # Make 'Saves' directory
if FileTest.exist?("#{SAVE_DIR}/#{filename}") #추가-저장할 파일을 덮어쓸 것인가?
@file_window.active = false
@confirm_window.visible = true
@yes_no_window.visible = true
@yes_no_window.active = true
@mode = 1
else
$game_system.se_play($data_system.save_se)
file = File.open("#{SAVE_DIR}/#{filename}", "wb")
write_save_data(file)
file.close
if $game_temp.save_calling
$game_temp.save_calling = false
$scene = Scene_Map.new
return
end
$scene = Scene_Menu.new(4)
end
end
# -----------------------------
def update
if @mode == 0
super
else
#@help_window.update
#@yes_no_window.update
if Input.trigger?(Input::C)
$game_system.se_play($data_system.decision_se)
if @yes_no_window.index == 0
savename = filename
$game_system.se_play($data_system.save_se)
file = File.open("#{SAVE_DIR}/#{filename}", "wb")
write_save_data(file)
file.close
if $game_temp.save_calling
$game_temp.save_calling = false
$scene = Scene_Map.new
else
$scene = Scene_Menu.new(4)
end
else
@yes_no_window.active = false
@confirm_window.visible = false
@yes_no_window.visible = false
@yes_no_window.active = false
@yes_no_window.index = 1
@file_window.active = true
@mode = 0
end
end
if Input.trigger?(Input::B)
@yes_no_window.active = false
@confirm_window.visible = false
@yes_no_window.visible = false
@yes_no_window.active = false
@yes_no_window.index = 1
@file_window.active = true
@mode = 0
return
end
end
end
#--------------------------------------------------------------------------
# ● cancel key pressed
#--------------------------------------------------------------------------
def cancel
$game_system.se_play($data_system.cancel_se)
if $game_temp.save_calling
$game_temp.save_calling = false
$scene = Scene_Map.new
return
end
$scene = Scene_Menu.new(4)
end
#--------------------------------------------------------------------------
# ● save the current data into the selected file
#--------------------------------------------------------------------------
def write_save_data(file)
write_characters(file)
write_frame(file)
write_setup(file)
write_data(file)
end
#--------------------------------------------------------------------------
# * Make Character Data
#--------------------------------------------------------------------------
def write_characters(file)
# Make character data for drawing save file
characters = []
for i in 0...$game_party.actors.size
actor = $game_party.actors[i]
characters.push([actor.character_name, actor.character_hue])
end
Marshal.dump(characters, file)
end
#--------------------------------------------------------------------------
# * Write Frame Count
#--------------------------------------------------------------------------
def write_frame(file)
# Wrire frame count for measuring play time
Marshal.dump(Graphics.frame_count, file)
end
#--------------------------------------------------------------------------
# * Write Setup
#--------------------------------------------------------------------------
def write_setup(file)
$game_system.save_count += 1
$game_system.magic_number = $data_system.magic_number
end
#--------------------------------------------------------------------------
# * Write Data
#--------------------------------------------------------------------------
def write_data(file)
# Write each type of game object
Marshal.dump($game_system, file)
Marshal.dump($game_switches, file)
Marshal.dump($game_variables, file)
Marshal.dump($game_self_switches, file)
Marshal.dump($game_screen, file)
Marshal.dump($game_actors, file)
Marshal.dump($game_party, file)
Marshal.dump($game_troop, file)
Marshal.dump($game_map, file)
Marshal.dump($game_player, file)
end
end

#SDK Edit
#==============================================================================
# ■ Scene_Load
#------------------------------------------------------------------------------
#  Load menu
#==============================================================================

class Scene_Load < Scene_File
include ASM_Setup
#--------------------------------------------------------------------------
# ● initialize the menu
#--------------------------------------------------------------------------
def initialize
$game_temp = Game_Temp.new
$game_temp.last_file_index = 0
latest_time = Time.at(0)
for i in 0..SAVE_MAX_FILES-1
filename = "#{SAVE_NAME}#{i + 1}.#{SAVE_EXT}"
if FileTest.exist?("#{SAVE_DIR}/#{filename}")
file = File.open("#{SAVE_DIR}/#{filename}", "r")
if file.mtime > latest_time
latest_time = file.mtime
$game_temp.last_file_index = i
end
file.close
end
end
super("Select a file to load.")
end
#--------------------------------------------------------------------------
# ● decision key pressed
#--------------------------------------------------------------------------
def decision
unless FileTest.exist?("#{SAVE_DIR}/#{filename}")
$game_system.se_play($data_system.buzzer_se)
return
end
$game_system.se_play($data_system.load_se)
file = File.open("#{SAVE_DIR}/#{filename}", "rb")
read_save_data(file)
file.close
$game_system.bgm_play($game_system.playing_bgm)
$game_system.bgs_play($game_system.playing_bgs)
$game_map.update
$scene = Scene_Map.new
end
#--------------------------------------------------------------------------
# ● cancel key pressed
#--------------------------------------------------------------------------
def cancel
$game_system.se_play($data_system.cancel_se)
$scene = Scene_Title.new
end
#--------------------------------------------------------------------------
# ● load the selected file
#--------------------------------------------------------------------------
def read_save_data(file)
read_characters(file)
read_frame(file)
read_data(file)
read_edit
read_refresh
end
#--------------------------------------------------------------------------
# * Read Character Data
#--------------------------------------------------------------------------
def read_characters(file)
# Read character data for drawing save file
characters = Marshal.load(file)
end
#--------------------------------------------------------------------------
# * Read Frame Count
#--------------------------------------------------------------------------
def read_frame(file)
# Read frame count for measuring play time
Graphics.frame_count = Marshal.load(file)
end
#--------------------------------------------------------------------------
# * Read Data
#--------------------------------------------------------------------------
def read_data(file)
$game_system = Marshal.load(file)
$game_switches = Marshal.load(file)
$game_variables = Marshal.load(file)
$game_self_switches = Marshal.load(file)
$game_screen = Marshal.load(file)
$game_actors = Marshal.load(file)
$game_party = Marshal.load(file)
$game_troop = Marshal.load(file)
$game_map = Marshal.load(file)
$game_player = Marshal.load(file)
end
#--------------------------------------------------------------------------
# * Read Edit
#--------------------------------------------------------------------------
def read_edit
# If magic number is different from when saving
# (if editing was added with editor)
if $game_system.magic_number != $data_system.magic_number
$game_map.setup($game_map.map_id)
$game_player.center($game_player.x, $game_player.y)
end
end
#--------------------------------------------------------------------------
# * Refresh Game Party
#--------------------------------------------------------------------------
def read_refresh
# Refresh party members
$game_party.refresh
end
end


#SDK2 Edit
#==============================================================================
# ** Scene_Title
#------------------------------------------------------------------------------
# This class performs title screen processing.
#==============================================================================

class Scene_Title < SDK::Scene_Base
#--------------------------------------------------------------------------
# * Main Test Initialization
#--------------------------------------------------------------------------
def main_test_continue
# Set Continued Enabled Flag
@continue_enabled = (Dir.glob("#{ASM_Setup::SAVE_DIR}/#{ASM_Setup::SAVE_NAME}*.#{ASM_Setup::SAVE_EXT}").size > 0)
end
end

#--------------------------------------------------------------------------
# * End SDK Enable Test
#--------------------------------------------------------------------------
end
end


Comment '1'
  • profile
    이벤트 2012.08.09 20:25

    텍스트파일로 주시면안될까요
    복사가 이상하게 되요    
    #==============================================================================# ■ ASM - advanced save menu#------------------------------------------------------------------------------# by squall // squall@loeher.zzn.com# edited by J.D. Slasha (1-20-06)# monday the 28th of november 2005## Allows to have up to 99 files.# Files are stored inside of the folder 'Saves' inside of the game's folder.# Don't forget to create that folder if it doesn't already exist.#==============================================================================# Save overwriting confirm by RPG Advocate# Merged & Edited by L# - 20??-??-??(Date cannot be determined):#   The maximum file quantity can be configured.#   Edited it for RMXP SDK.#   Implemented RPG Advocate's 'Save file overwriting confirmation'.#   Made it to show some more information, like current money in possesion.# - 2010-09-11:#   Added save directory name and extension configuration.#   Scene_Title::main_test_continue is modified.# - 2010-10-05: Added save file name configuration, edited some codes a bit.# - 2010-10-06: Added configuration for showing map and overwrite comfirmation string.#==============================================================================#------------------------------------------------------------------------------# * SDK Log Script#------------------------------------------------------------------------------if Object.const_defined?('SDK')   SDK.log('Advanced Save Menu', 'squall', 1.0, '2005-11-28')  #--------------------------------------------------------------------------# * Begin SDK Requirement Check#--------------------------------------------------------------------------SDK.check_requirements(2.0, [1])#------------------------------------------------------------------------------# * Begin SDK Enable Test#------------------------------------------------------------------------------  if SDK.enabled?('Advanced Save Menu')    module ASM_Setup  SAVE_DIR = '.' #Save file location. Default(?): Game folder(.)  SAVE_EXT = 'rxdata' #Save file Extension. Default: rxdata  SAVE_NAME = 'Save' #Save file name.  Default: Save  SAVE_MAX_FILES = 12  OVERWRITE_CONFIRM_STRING = 'Really overwrite this file?'  Show_Map = false  end#==============================================================================# ■ Window_File#------------------------------------------------------------------------------#  This window shows a list of recorded save files.#==============================================================================class Window_File < Window_Selectable  include ASM_Setup  #--------------------------------------------------------------------------  # ● initialize  #--------------------------------------------------------------------------  def initialize()    super(0, 64, 320, 416)    self.contents = Bitmap.new(width - 32, SAVE_MAX_FILES * 32)    index = $game_temp.last_file_index == nil ? 0 : $game_temp.last_file_index    self.index = index    @item_max = SAVE_MAX_FILES    refresh  end  #--------------------------------------------------------------------------  # ● refresh the window  #--------------------------------------------------------------------------  def refresh    time_stamp = Time.at(0)    for i in 0...SAVE_MAX_FILES      filename = "#{SAVE_NAME}#{i + 1}.#{SAVE_EXT}"      self.contents.draw_text(1, i * 32, 32, 32, (i + 1).to_s, 1)      if FileTest.exist?("#{SAVE_DIR}/#{filename}")        size = File.size("#{SAVE_DIR}/#{filename}")        if size.between?(1024, 1048575)          size /= 1024          size_str = "#{size} Kb"        elsif size > 1048575          size /= 1048576          size_str = "#{size} Mb"        else          size_str = size.to_s        end        time_stamp = File.open("#{SAVE_DIR}/#{filename}", "r").mtime        date = time_stamp.strftime("%m/%d/%Y")        time = time_stamp.strftime("%H:%M")        self.contents.draw_text(38, i * 32, 120, 32, date)        self.contents.draw_text(160, i * 32, 100, 32, time)        self.contents.draw_text(0, i * 32, 284, 32, size_str, 2)      end    end  endend#==============================================================================# ■ Window_FileStatus#------------------------------------------------------------------------------#  This window shows the status of the currently selected save file#==============================================================================class Window_FileStatus < Window_Base  include ASM_Setup  #--------------------------------------------------------------------------  # ● initialize  #--------------------------------------------------------------------------  def initialize(save_window)    super(320, 64, 320, 416)    self.contents = Bitmap.new(width - 32, height - 32)    @save_window = save_window    @index = @save_window.index    rect = Rect.new(x + 16, y + (height - 32) / 2 + 16, width - 32, (height - 32) / 2)    @viewport = Viewport.new(rect)    @viewport.z = z + 10    refresh  end  #--------------------------------------------------------------------------  # ● dispose the map and the window  #--------------------------------------------------------------------------  def dispose    tilemap_dispose    @viewport.dispose    super  end  #--------------------------------------------------------------------------  # ● refresh the window  #--------------------------------------------------------------------------  def draw_actor_face(actor, x, y)    face = RPG::Cache.character("SaveFaces/" + actor.character_name, actor.character_hue)    fw = face.width    fh = face.height    src_rect = Rect.new(0, 0, fw, fh)    self.contents.blt(x - fw / 23, y - fh, face, src_rect)  end  def refresh    self.contents.clear    tilemap_dispose    filename = "#{SAVE_NAME}#{@index + 1}.#{SAVE_EXT}"    return unless FileTest.exist?("#{SAVE_DIR}/#{filename}")    file = File.open("#{SAVE_DIR}/#{filename}", "r")    Marshal.load(file)    frame_count = Marshal.load(file)    for i in 0...6      Marshal.load(file)    end    party = Marshal.load(file)    Marshal.load(file)    map = Marshal.load(file)    for i in 0...party.actors.size      actor = party.actors[i]      x = i % 2 * 144 + 4      y = i / 2 * 64      draw_actor_name(actor, x + 30, y)      draw_actor_level(actor, x + 30, y + 20)      draw_actor_graphic(actor, x + 10, y + 60)      #draw_actor_face(actor,x+10,y+400)    end    total_sec = frame_count / Graphics.frame_rate    hour = total_sec / 60 / 60    min = total_sec / 60 % 60    sec = total_sec % 60    text = sprintf("%02d:%02d:%02d", hour, min, sec)    map_name = load_data("Data/MapInfos.rxdata")[map.map_id].name    cx = contents.text_size($data_system.words.gold).width    if Show_Map == true      timey = 128 ;locy = 160    else      timey = 320 ;locy = 352    end    self.contents.font.color = system_color    unless Show_Map == true      self.contents.draw_text(0, timey-32, 120, 32, "Money:")      self.contents.draw_text(280-cx, timey-32, cx, 32, $data_system.words.gold, 2)    end    self.contents.draw_text(0, timey, 120, 32, "Play Time: ")    self.contents.draw_text(0, locy, 120, 32, "Location: ")    self.contents.font.color = normal_color    self.contents.draw_text(100, 288, 180-cx-2, 32, party.gold.to_s, 2) unless Show_Map == true    self.contents.draw_text(100, timey, 180, 32, text, 2)    self.contents.draw_text(100, locy, 180, 32, map_name, 2)    if Show_Map == true      @tilemap = Tilemap.new(@viewport)      @tilemap.tileset = RPG::Cache.tileset(map.tileset_name)      for i in 0..6        autotile_name = map.autotile_names[i]        @tilemap.autotiles[i] = RPG::Cache.autotile(autotile_name)      end      @tilemap.map_data = map.data      @tilemap.ox = map.display_x / 4 + 176      @tilemap.oy = map.display_y / 4 + 148    end  end  #--------------------------------------------------------------------------  # ● tilemap_dispose  #--------------------------------------------------------------------------  def tilemap_dispose    unless @tilemap == nil      @tilemap.tileset.dispose      for i in 0..6        @tilemap.autotiles[i].dispose      end      @tilemap.dispose      @tilemap = nil    end  end  #--------------------------------------------------------------------------  # ● update  #--------------------------------------------------------------------------  def update    @tilemap.update if @tilemap != nil    if @index != @save_window.index      @index = @save_window.index      refresh    end    super  endend#==============================================================================# ■ Scene_File#------------------------------------------------------------------------------#  Base scene for load and save menus.#==============================================================================class Scene_File < SDK::Scene_Base  include ASM_Setup  #--------------------------------------------------------------------------  # ● initialize the scene  #--------------------------------------------------------------------------  def initialize(help_text)    @help_text = help_text  end  #--------------------------------------------------------------------------  # ● main  #--------------------------------------------------------------------------  def main_window    @help_window = Window_Help.new    @help_window.set_text(@help_text)    @file_window = Window_File.new    @status_window = Window_FileStatus.new(@file_window)  end  #--------------------------------------------------------------------------  # ● update  #--------------------------------------------------------------------------  def update    super    if Input.trigger?(Input::C)      decision      $game_temp.last_file_index = @file_index      return    end    if Input.trigger?(Input::B)      cancel      return    end  end  #--------------------------------------------------------------------------  # ● return the selected file's name  #--------------------------------------------------------------------------  def filename    return "#{SAVE_NAME}#{@file_window.index + 1}.#{SAVE_EXT}"  endend#SDK Edit#==============================================================================# ■ Scene_Save#------------------------------------------------------------------------------#  Save menu#==============================================================================class Scene_Save < Scene_File  include ASM_Setup  #--------------------------------------------------------------------------  # ● initialize the save menu  #--------------------------------------------------------------------------  def initialize    super("Select a file to record your progress.")        overwrite_confirm_window  end  #--------------  def overwrite_confirm_window    @confirm_window = Window_Base.new(120, 188, 400, 64) #추가    @confirm_window.contents = Bitmap.new(368, 32)    string = OVERWRITE_CONFIRM_STRING    @confirm_window.contents.font.name = Font.default_name    @confirm_window.contents.font.size = 24    @confirm_window.contents.draw_text(4, 0, 368, 32, string)    @yes_no_window = Window_Command.new(100, ["Yes", "No"])    @confirm_window.visible = false    @confirm_window.z = 1500    @yes_no_window.visible = false    @yes_no_window.active = false    @yes_no_window.index = 1    @yes_no_window.x = 270    @yes_no_window.y = 252    @yes_no_window.z = 1500    @mode = 0 #추가 끝  end  #--------------------------------------------------------------------------  # ● decision key pressed  #--------------------------------------------------------------------------  def decision    Dir.mkdir(SAVE_DIR) unless FileTest.directory?(SAVE_DIR)  # Make 'Saves' directory    if FileTest.exist?("#{SAVE_DIR}/#{filename}") #추가-저장할 파일을 덮어쓸 것인가?      @file_window.active = false      @confirm_window.visible = true      @yes_no_window.visible = true      @yes_no_window.active = true      @mode = 1    else      $game_system.se_play($data_system.save_se)      file = File.open("#{SAVE_DIR}/#{filename}", "wb")      write_save_data(file)      file.close      if $game_temp.save_calling        $game_temp.save_calling = false        $scene = Scene_Map.new        return      end      $scene = Scene_Menu.new(4)    end  end  # -----------------------------  def update    if @mode == 0      super    else      #@help_window.update      #@yes_no_window.update            if Input.trigger?(Input::C)        $game_system.se_play($data_system.decision_se)        if @yes_no_window.index == 0          savename = filename          $game_system.se_play($data_system.save_se)          file = File.open("#{SAVE_DIR}/#{filename}", "wb")          write_save_data(file)          file.close          if $game_temp.save_calling            $game_temp.save_calling = false            $scene = Scene_Map.new          else            $scene = Scene_Menu.new(4)          end        else          @yes_no_window.active = false          @confirm_window.visible = false          @yes_no_window.visible = false          @yes_no_window.active = false          @yes_no_window.index = 1          @file_window.active = true          @mode = 0        end      end      if Input.trigger?(Input::B)        @yes_no_window.active = false        @confirm_window.visible = false        @yes_no_window.visible = false        @yes_no_window.active = false        @yes_no_window.index = 1        @file_window.active = true        @mode = 0        return      end    end  end  #--------------------------------------------------------------------------  # ● cancel key pressed  #--------------------------------------------------------------------------  def cancel    $game_system.se_play($data_system.cancel_se)    if $game_temp.save_calling      $game_temp.save_calling = false      $scene = Scene_Map.new      return    end    $scene = Scene_Menu.new(4)  end  #--------------------------------------------------------------------------  # ● save the current data into the selected file  #--------------------------------------------------------------------------  def write_save_data(file)    write_characters(file)    write_frame(file)    write_setup(file)    write_data(file)  end  #--------------------------------------------------------------------------  # * Make Character Data  #--------------------------------------------------------------------------  def write_characters(file)    # Make character data for drawing save file    characters = []    for i in 0...$game_party.actors.size      actor = $game_party.actors[i]      characters.push([actor.character_name, actor.character_hue])    end      Marshal.dump(characters, file)  end  #--------------------------------------------------------------------------  # * Write Frame Count  #--------------------------------------------------------------------------  def write_frame(file)    # Wrire frame count for measuring play time    Marshal.dump(Graphics.frame_count, file)  end  #--------------------------------------------------------------------------  # * Write Setup  #--------------------------------------------------------------------------  def write_setup(file)    $game_system.save_count += 1    $game_system.magic_number = $data_system.magic_number  end  #--------------------------------------------------------------------------  # * Write Data  #--------------------------------------------------------------------------  def write_data(file)    # Write each type of game object    Marshal.dump($game_system, file)    Marshal.dump($game_switches, file)    Marshal.dump($game_variables, file)    Marshal.dump($game_self_switches, file)    Marshal.dump($game_screen, file)    Marshal.dump($game_actors, file)    Marshal.dump($game_party, file)    Marshal.dump($game_troop, file)    Marshal.dump($game_map, file)    Marshal.dump($game_player, file)  endend#SDK Edit#==============================================================================# ■ Scene_Load#------------------------------------------------------------------------------#  Load menu#==============================================================================class Scene_Load < Scene_File  include ASM_Setup  #--------------------------------------------------------------------------  # ● initialize the menu  #--------------------------------------------------------------------------  def initialize    $game_temp = Game_Temp.new    $game_temp.last_file_index = 0    latest_time = Time.at(0)    for i in 0..SAVE_MAX_FILES-1      filename = "#{SAVE_NAME}#{i + 1}.#{SAVE_EXT}"      if FileTest.exist?("#{SAVE_DIR}/#{filename}")        file = File.open("#{SAVE_DIR}/#{filename}", "r")        if file.mtime > latest_time          latest_time = file.mtime          $game_temp.last_file_index = i        end        file.close      end    end    super("Select a file to load.")  end  #--------------------------------------------------------------------------  # ● decision key pressed  #--------------------------------------------------------------------------  def decision    unless FileTest.exist?("#{SAVE_DIR}/#{filename}")      $game_system.se_play($data_system.buzzer_se)      return    end    $game_system.se_play($data_system.load_se)    file = File.open("#{SAVE_DIR}/#{filename}", "rb")    read_save_data(file)    file.close    $game_system.bgm_play($game_system.playing_bgm)    $game_system.bgs_play($game_system.playing_bgs)    $game_map.update    $scene = Scene_Map.new  end  #--------------------------------------------------------------------------  # ● cancel key pressed  #--------------------------------------------------------------------------  def cancel    $game_system.se_play($data_system.cancel_se)    $scene = Scene_Title.new  end  #--------------------------------------------------------------------------  # ● load the selected file  #--------------------------------------------------------------------------  def read_save_data(file)    read_characters(file)    read_frame(file)    read_data(file)    read_edit    read_refresh  end  #--------------------------------------------------------------------------  # * Read Character Data  #--------------------------------------------------------------------------  def read_characters(file)    # Read character data for drawing save file    characters = Marshal.load(file)  end  #--------------------------------------------------------------------------  # * Read Frame Count  #--------------------------------------------------------------------------  def read_frame(file)    # Read frame count for measuring play time    Graphics.frame_count = Marshal.load(file)  end  #--------------------------------------------------------------------------  # * Read Data  #--------------------------------------------------------------------------  def read_data(file)    $game_system = Marshal.load(file)    $game_switches = Marshal.load(file)    $game_variables = Marshal.load(file)    $game_self_switches = Marshal.load(file)    $game_screen = Marshal.load(file)    $game_actors = Marshal.load(file)    $game_party = Marshal.load(file)    $game_troop = Marshal.load(file)    $game_map = Marshal.load(file)    $game_player = Marshal.load(file)  end  #--------------------------------------------------------------------------  # * Read Edit  #--------------------------------------------------------------------------  def read_edit    # If magic number is different from when saving    # (if editing was added with editor)    if $game_system.magic_number != $data_system.magic_number      $game_map.setup($game_map.map_id)      $game_player.center($game_player.x, $game_player.y)    end  end  #--------------------------------------------------------------------------  # * Refresh Game Party  #--------------------------------------------------------------------------  def read_refresh    # Refresh party members    $game_party.refresh  endend#SDK2 Edit#==============================================================================# ** Scene_Title#------------------------------------------------------------------------------#  This class performs title screen processing.#==============================================================================class Scene_Title < SDK::Scene_Base  #--------------------------------------------------------------------------  # * Main Test Initialization  #--------------------------------------------------------------------------  def main_test_continue      # Set Continued Enabled Flag    @continue_enabled = (Dir.glob("#{ASM_Setup::SAVE_DIR}/#{ASM_Setup::SAVE_NAME}*.#{ASM_Setup::SAVE_EXT}").size > 0)  end    end#--------------------------------------------------------------------------# * End SDK Enable Test#--------------------------------------------------------------------------  endend

     

    이렇게 가로로 쭉이어지게 복사되요 스크립트에 붙히면


List of Articles
번호 분류 제목 글쓴이 날짜 조회 수
공지 스크립트 자료 게시물 작성시 주의사항 습작 2012.12.24 6153
34 저장 Inn & Save Point System by SephirothSpawn (SDK호환) 1 file 백호 2009.02.22 810
33 저장 SG_Automatic Save 백호 2009.02.22 970
32 저장 [KGC] 스크립트 저장된 리셋 불어오기 [스샷첨부] 1 file 백호 2009.02.22 1052
31 저장 SG_Broken Save File Fix by sandgolem (SDK호환) 1 백호 2009.02.22 1068
30 저장 Law's Custom Save System by The Law G14 & Night Runner 1 file Alkaid 2013.02.18 1073
29 저장 [KCG] 2 Pane Save Scene 번역본 백호 2009.02.22 1118
28 저장 [KCG] 2 Pane Save Scene file 백호 2009.02.22 1128
27 저장 StupidStormy36's Custom Save System 3 Alkaid 2010.10.05 1199
» 저장 Advanced Save Menu 편집 20101006 Edition (SDK2용) 1 Alkaid 2010.10.06 1217
25 저장 Advanced Save Menu 편집한 것. (SDK2용) Alkaid 2010.09.11 1219
24 저장 StupidStormy36's Custom Save System 2010-10-06(05?) Edition 1 Alkaid 2010.10.07 1247
23 저장 Advanced Save Menu 편집 20101005 Edition (SDK2용) 3 Alkaid 2010.10.05 1293
22 저장 Woratana's Neo Save System for RMXP by LiTTleDRAgo 5 Alkaid 2013.01.19 1398
21 저장 오류 수정한 자동세이브 2 백호 2009.02.22 1403
20 저장 [신기술 체험] 데이터 저장 6 file 백호 2009.02.22 1420
19 저장 자동 세이브 스크립트 4 WMN 2008.03.17 1470
18 저장 키라링님이 올리신 [KGC_2PaneSave] 번역 1 무뇌인 2010.08.18 1471
17 저장 세이브 슬롯 갯수 증가와 세이브 덮어씌울 때 확인 by RPG Advocate 5 백호 2009.02.22 1505
16 저장 Advanced Save System Edit (현재 맵을 보여주지 않음) file 백호 2009.02.22 1557
15 저장 Chaos Project Save Layout 1.4 by Fantasist, Blizzard file Alkaid 2010.10.08 1558
Board Pagination Prev 1 2 Next
/ 2