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 6317
34 저장 Law's Custom Save System by The Law G14 & Night Runner 1 file Alkaid 2013.02.18 1079
33 저장 Woratana's Neo Save System for RMXP by LiTTleDRAgo 5 Alkaid 2013.01.19 1410
32 저장 렉없는 자동세이브(중복임??) 4 캉쿤 2011.09.12 1991
31 저장 심플 세이브&로드 개조(필요할 때 원하는 슬롯에 자동저장) 5 나렌시아 2011.02.24 2294
30 저장 Improved Save by gerrtunk 2 file Alkaid 2010.10.13 1987
29 저장 Chaos Project Save Layout 1.4 by Fantasist, Blizzard file Alkaid 2010.10.08 1562
28 저장 StupidStormy36's Custom Save System 2010-10-06(05?) Edition 1 Alkaid 2010.10.07 1254
» 저장 Advanced Save Menu 편집 20101006 Edition (SDK2용) 1 Alkaid 2010.10.06 1225
26 저장 StupidStormy36's Custom Save System 3 Alkaid 2010.10.05 1209
25 저장 Advanced Save Menu 편집 20101005 Edition (SDK2용) 3 Alkaid 2010.10.05 1301
24 저장 Advanced Save Menu 편집한 것. (SDK2용) Alkaid 2010.09.11 1220
23 저장 키라링님이 올리신 [KGC_2PaneSave] 번역 1 무뇌인 2010.08.18 1479
22 저장 렉없은 자동 세이브 15 알피지GM 2010.03.07 2328
21 저장 [ AutoSave ]오토세이브, 뜻 그대로 자동저장스크립트 17 file 제로스S2 2009.08.06 3704
20 저장 오류 수정한 자동세이브 2 백호 2009.02.22 1410
19 저장 렉없는 자동세이브 스크립트 2 백호 2009.02.22 1593
18 저장 SG_Automatic Save 백호 2009.02.22 973
17 저장 심플 세이브 로드(1개의 세이브 사용하기) 3 백호 2009.02.22 1973
16 저장 SG_Broken Save File Fix by sandgolem (SDK호환) 1 백호 2009.02.22 1069
15 저장 Inn & Save Point System by SephirothSpawn (SDK호환) 1 file 백호 2009.02.22 812
Board Pagination Prev 1 2 Next
/ 2