Juwan Park :: 세이브 파일 개수 조정 (RPG VX용)

세이브 파일 개수 조정 (RPG VX용)

◆게임 창작 관련/코드, 스크립트 :: 2015.09.07 15:02

RPG VX에서 기본 제공되는 세이브 엔진은 게임당 4개의 세이브 파일을 지원합니다.

하지만 스크립트를 고치면 RPG VX Ace처럼 16개로 설정할 수도 있습니다.
16개 뿐만 아니라 32개나 64개도 가능합니다.

다음 스크립트를 복사해서 스크립트창(F11)의 '▼ 소재(Materials)' 부분 밑에 새 스크립트를 추가해 붙여넣기하시면 됩니다.

# Adjust Max Savefiles for RMVX v1.0
# RPG 만들기 VX에서 세이브 파일 개수를 조정할 수 있습니다.
#
# 만든이: 家和萬事成
# http://parkjuwan.tistory.com
#
# 기본 스크립트를 약간 수정하였습니다.

class Scene_File < Scene_Base
  #최대 세이브 파일 개수
  MAX_SAVE_FILES = 16   #default: 4
  #[주의!] 최대 세이브 파일 개수는 반드시 4의 배수로 설정해 주세요.
  #4의 배수가 아닐 경우 오류가 발생합니다.

  #--------------------------------------------------------------------------
  # Start processing
  #--------------------------------------------------------------------------
  def start
    super
    create_menu_background
    @help_window = Window_Help.new
    create_savefile_windows
    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)
    end
    @savefile_windows[@index].selected = true
    j = MAX_SAVE_FILES - 1
    for i in 0..j
      if (@index / 4).floor != (i / 4).floor
      @savefile_windows[i].visible = false
      end
    end
  end
  #--------------------------------------------------------------------------
  # Create Save File Window
  #--------------------------------------------------------------------------
  def create_savefile_windows
    @savefile_windows = []
    j = MAX_SAVE_FILES - 1
    for i in 0..j
      @savefile_windows.push(Window_SaveFile.new(i, make_filename(i)))
    end
    @item_max = MAX_SAVE_FILES
  end
  #--------------------------------------------------------------------------
  # Update Save File Window
  #--------------------------------------------------------------------------
  def update_savefile_selection
    if Input.trigger?(Input::C)
      determine_savefile
    elsif Input.trigger?(Input::B)
      Sound.play_cancel
      return_scene
    else
      last_index = @index
      if Input.repeat?(Input::DOWN)
        cursor_down(Input.trigger?(Input::DOWN))
      end
      if Input.repeat?(Input::UP)
        cursor_up(Input.trigger?(Input::UP))
      end
      if Input.repeat?(Input::R)
        cursor_down(Input.trigger?(Input::DOWN))
        cursor_down(Input.trigger?(Input::DOWN))
        cursor_down(Input.trigger?(Input::DOWN))
        cursor_down(Input.trigger?(Input::DOWN))
      end
      if Input.repeat?(Input::L)
        cursor_up(Input.trigger?(Input::UP))
        cursor_up(Input.trigger?(Input::UP))
        cursor_up(Input.trigger?(Input::UP))
        cursor_up(Input.trigger?(Input::UP))
      end
      if @index != last_index
        Sound.play_cursor
        @savefile_windows[last_index].selected = false
        @savefile_windows[@index].selected = true
        if (@index / 4).floor != (last_index / 4).floor
          ii = (@index / 4).floor * 4
          jj = (last_index / 4).floor * 4
          for i in 0..3
            @savefile_windows[ii+i].visible = true
            @savefile_windows[jj+i].visible = false
          end
        end
      end
    end
  end
  #--------------------------------------------------------------------------
  # Create Filename
  # file_index : save file index (0-15)
  #--------------------------------------------------------------------------
  def make_filename(file_index)
    return "Save" + sprintf("%02d", file_index + 1) + ".rvdata"
  end
end

이 방법은 RPG VX에서만 가능합니다. RPG VX Ace의 경우는 맞게 바꾼 스크립트가 별도로 있습니다. [바로가기]
또한, 독자적인 세이브 엔진을 사용하는 경우 이 스크립트를 사용하지 않는 것을 권장합니다.

이 스크립트를 적용하기 전에 저장한 세이브 파일은 숫자 앞에 0을 붙이는 것으로 이름을 바꾸면 제대로 읽을 수 있습니다.
(예: Save1.rvdata → Save01.rvdata)

적용할 경우 아래 스샷처럼 됩니다.


예제 파일은 다음과 같습니다.

AdjustMaxSavefiles(VX).zip

스크립트만 추출한 파일은 다음과 같습니다.

adjust_max_savefiles_for_vx.rb

Today 12    Yday 63    Tot 65,494
Juwan Park
Juwan Park's blog is powered by Daum and TISTORY.
Contemporary Blue for TISTORY.
Designed by Juwan Park. Creative Commons License
▲ TOP