Ace 스크립트

#==============================================================================
# # 전역 저장 시스템 [v1.0]
# # By Skul_
# # 번역 : 미루
#==============================================================================
# # 재정의:
# # in module DataManager:
# # # self.load_game(index)
# # # self.save_game(index)
# # # self.setup_new_game
#==============================================================================
# ---사용법---
# 저장할 변수와 스위치의 ID 를 각각
# VARIABLES_TO_SAVE 배열, the SWITCHES_TO_SAVE 배열에 적어주세요.
# 전역 저장 데이터를 자동으로 저장되고 불러오게 하고 싶으시면,
# SAVE_ON_SAVE LOAD_ON_LOAD 와 LOAD_ON_NEW 를 true 로 설정해주세요.
#------------------------------------------------------------------------------
# 이벤트 내의 실행항목 [주석]에 다음과 같이 입력하여, 전역 저장 데이터를
# 저장하거나 불러올 수 있습니다. 
#  => "global_save" 또는 "global_load" (큰따옴표 제외)
#==============================================================================
#==============================================================================
# # LGlobalSave
#==============================================================================
module LGlobalSave

#==============================================================================
# 설정 부분 시작
#==============================================================================
  
# 플레이어가 게임을 저장할 때,
  # 지정된 변수와 스위치의 정보가 자동으로 전역 저장되게 설정합니다.
  SAVE_ON_SAVE = true
  
  # 플레이어가 게임을 불러올 때,
  # 지정된 변수와 스위치의 정보가 자동으로 불러와지도록 설정합니다.
  LOAD_ON_LOAD = true
  
  # 플레이어가 새 게임을 시작할 때,
  # 지정된 변수와 스위치의 정보가 자동으로 불러와지도록 설정합니다.
  LOAD_ON_NEW = true
  
  # 전역 저장할 변수 ID 와 스위치 ID 의 배열을 설정합니다.
  # ID 를 콤마로 구분하여 나열해주세요.
  #
  # 연속되는 여러 숫자를 입력하고 싶으시다면, '..' 을 사용하시면 됩니다.
  # 예 : 15..42
  # 15 부터 42 까지의 숫자를 말합니다. ( 15 와 42 포함 )
  #
  # 기능을 사용하고 싶으시지 않는다면, 공백으로 남겨두시면 됩니다.
  #
  # 전역 저장할 변수 ID
  VARIABLES_TO_SAVE = []
  # 전역 저장할 스위치 ID
  SWITCHES_TO_SAVE = []
  
  # 변수와 스위치의 정보를 전역 저장할 파일 명을 설정합니다.
  FILE_NAME = "global.rvdata2"

#==============================================================================
# 설정 부분 끝
#==============================================================================

  def self.saveTheFile(f)
File.open(FILE_NAME, "wb") do |file|
 Marshal.dump(f, file)
end
  end

  def self.loadTheFile
if !File.exists?(LGlobalSave::FILE_NAME)
 f = makeNewFile
 return f
else
 f = nil
 File.open(FILE_NAME, "rb") do |file|
f = Marshal.load(file)
 end
 return f
end
  end

  def self.makeNewFile
return LGlobalSaveFile.new
  end

  def self.loadVariables(f)
for i in VARIABLES_TO_SAVE
 $game_variables[i]= f.getVar(i)
end
  end

  def self.loadSwitches(f)
for i in SWITCHES_TO_SAVE
 $game_switches[i]= f.getSwitch(i)
end
  end

  def self.saveVariables(f)
for i in VARIABLES_TO_SAVE
 f.setVar(i, $game_variables[i])
end
  end

  def self.saveSwitches(f)
for i in SWITCHES_TO_SAVE
 f.setSwitch(i, $game_switches[i])
end
  end

  def self.save
f = makeNewFile
saveVariables(f)
saveSwitches(f)
saveTheFile(f)
  end

  def self.load
f = loadTheFile
loadVariables(f)
loadSwitches(f)
  end
  
end # end of module LGlobalSave

#==============================================================================
# ** LGlobalSaveFile
#------------------------------------------------------------------------------
# 이 클래스의 모든 오브젝트는 global.sav 에 저장됩니다.
# 모든 전역저장된 변수와 스위치를 포함합니다.
#==============================================================================
class LGlobalSaveFile

  def initialize # 오브젝트 초기화
@var = []
@switch = []
  end

  # @var 는 전역 저장 변수의 데이터가 저장됩니다.
  # 메소드 getVar 과 setVar :
  def getVar(id)
return @var[id]
  end
  def setVar(id, val)
@var[id] = val
  end

  # @switch 는 전역 저장 스위치의 데이터가 저장됩니다.
  # 메소드 getSwitch 와 setSwitch :
  def getSwitch(id)
return @switch[id]
  end
  def setSwitch(id, val)
@switch[id] = val
  end

end # end of class LGlobalSaveFile

#==============================================================================
# 이 메소드는 이벤트 내에서 전역 저장 및 불러오기 기능을 정의합니다.
#==============================================================================
def global_save
  LGlobalSave.save
end
def global_load
  LGlobalSave.load
end
#==============================================================================
# ** DataManager
#==============================================================================
module DataManager

  #--------------------------------------------------------------------------
  # 메소드 재정의 : self.setup_new_game
  #--------------------------------------------------------------------------
  def self.setup_new_game
create_game_objects
$game_party.setup_starting_members
$game_map.setup($data_system.start_map_id)
$game_player.moveto($data_system.start_x, $data_system.start_y)
$game_player.refresh
Graphics.frame_count = 0
LGlobalSave.load if LGlobalSave::LOAD_ON_NEW
  end

  #--------------------------------------------------------------------------
  # 메소드 재정의 : self.save_game(index)
  #--------------------------------------------------------------------------
  def self.save_game(index)
begin
 save_game_without_rescue(index)
rescue
 delete_save_file(index)
 false
end
LGlobalSave.save if LGlobalSave::SAVE_ON_SAVE
  end

  #--------------------------------------------------------------------------
  # 메소드 재정의 : self.load_game(index)
  #--------------------------------------------------------------------------
  def self.load_game(index)
load_game_without_rescue(index) rescue false
LGlobalSave.load if LGlobalSave::LOAD_ON_LOAD
  end
end # end of module DataManager

Who's 미루

?

< 제작한 게임 >

- 피그렛 (Piglet) [완성] : 링크 내림

- 파라딜루전 (Paradelusion) [미완성] : 링크 내림

- 주인잃은 공책 [완성] : http://avangs.info/1090264


< 연구실 홈페이지 >

http://mirulab.xo.st/


< 아방스 게임 실황 방송국 >

http://afreeca.com/miru3137

  • ?
    미루 2013.07.11 05:52
    <주의사항>
    load_data 와 save_data 메소드를 사용한 스크립트가 아니예요.
    전역 저장 파일을 데이터 폴더 내의 파일들과 같이 암호화 하면 작동 안될거예요.
    전역 저장 파일은 되도록 프로젝트 폴더에 존재하도록 설정해주세요.
  • ?
    Roam 2013.07.11 14:38
    2회차 요소가 있는 게임을 만들때 좋겠군요 번역 감사드립니다 ^^
  • ?
    태그6 2013.07.11 21:34
    감사합니다
  • ?
    가시밭 2015.05.28 15:51
    이걸로 갤러리 만드는 데에 성공했어요!! 와와 ㅠㅠ 감사합니다.
  • ?
    IZEN 2015.08.24 23:18
    안녕하세요.. 오래 됐지만, 혹시 질문드리면 답변 해주시나요? 이 스크립트를 쓰는데 잘 안되서요

    다 true로 했고, 스크립트의 전역 저장할 변수 ID에도 21..23 이런식으로 넣어줬습니다
    이후, 특정 이벤트에서 전역변수를 대입하고 global_save 이후 타이틀로 자동으로 나가지게끔 해 놨는데,
    새로 게임을 시작하고 global_load를 해도 그 변수가 저장되어있질 않더군요...

    이 경우 뭐가 문제일까요?
    그리고, global.rvdata2는 어디에 저장되나요?
  • ?
    IZEN 2015.08.24 23:22
    혹시 플레이어가 직접 세이브하지 않으면, 전역변수도 저장되지 않는건가요?
    세이브 기능이 없는 게임이라서요...
  • profile
    게임잘날아가는닝겐 2015.09.19 15:48
    저도 마찬가지입니다. 저는 타이틀에다 스페셜 커멘드를 하나 더 만들어서 특정 스위치가 켜저있으면 내용이 달라지는 그런 식입니다. 그런데 타이틀에서는 안먹네요... 강제로 전역정보를 불러올 수 있으면 좋은데 말이죠...

List of Articles
번호 분류 제목 글쓴이 날짜 조회 수
공지 스크립트 자료 게시물 작성시 주의사항 습작 2012.12.24 5110
공지 RPG VX ACE 유용한 링크 모음 16 아방스 2012.01.03 28927
177 그래픽 셰이크 강화 스크립트 file 시낵스 2023.12.13 149
176 상태/속성 상태를 해제하는 상태 3 file 레미티 2013.03.07 1545
175 기타 사칙연산 게임 by 77er 1 file 77ER. 2013.08.19 1606
174 전투 사이드뷰 배틀 스크립트 (Animated Battlers By Jet10985) 6 file Rebiart 2014.05.18 4517
173 장비 사용자 장비 슬롯 1.1 27 file 아방스 2012.01.31 6615
172 온라인 브라우저 열기 스크립트 1 큔. 2018.09.09 671
171 오디오 볼륨변경 스크립트 레기우스州 2020.08.09 514
» 변수/스위치 변수/스위치 전역 저장 시스템 ( 게임이 종료 및 재시작되어도 값이 변하지 않는 변수와 스위치를 설정 ) 7 미루 2013.07.11 3169
169 미니맵 미니맵 표시 스크립트 21 file 아방스 2012.01.16 6488
168 아이템 물품 이름 컬러 변경 14 까까까 2012.01.04 5632
167 기타 메시지 표시 중에 자동으로 타이머 멈추기 1 file Bunny_Boy 2014.12.07 1026
166 메뉴 메뉴창 없애기 2 file hamin 2014.02.28 3879
165 파티 맵에서 4명 이상 대열 이동 가능수 조절하는 스크립트 5 Omegaroid 2013.10.17 1785
164 맵/타일 맵 이동시 이벤트(NPC) 위치 유지하기 (수정) 4 이브 2012.11.07 2144
163 맵/타일 레이어 맵 <layer> 기능 2 file LuD 2017.08.03 1472
162 전투 레벨업시 HP/MP 전체회복 9 쿠쿠밥솥 2012.02.05 5029
161 아이템 랜덤 아이템샵. 1 탐험가 2012.10.28 2297
160 HUD 동방프로젝트(풍신록) 맵 이름 표시 3 file 스리아씨 2013.09.24 3255
159 전투 데미지의 한계치를 정하는 스크립트 3 file 스리아씨 2013.11.07 2049
158 기타 던전 자동생성 4 Alkaid 2012.09.08 3160
Board Pagination Prev 1 2 3 4 5 6 7 8 9 10 11 Next
/ 11