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 28928
217 기타 '결정 키로 이벤트 시작' 조건분기 추가 file Bunny_Boy 2016.01.16 1167
216 기타 (링크)RPG VX ACE 블랙잭 스크립트 게임애호가 2017.06.18 1004
215 기타 77er 월드 맵 1.0 by 77er 3 file 77ER. 2013.08.14 2281
214 이동 및 탈것 8 방향 이동 스크립트 ( 사선 이동 캐릭터 그래픽 지원 ) 9 file 미루 2013.07.11 4847
213 전투 Ace 경험치 직접 설정 12 쿠쿠밥솥 2012.02.05 4004
212 장비 Ace 장비 착용의 제한 스크립트 11 아이미르 2012.09.01 2786
211 기타 ACE) 오블리비언 락픽 구현 V0.5.2 7 file 77이알 2012.09.02 4811
210 기타 ACE) 캐릭터 사전 by 77ER 19 77이알 2012.09.17 3938
209 메뉴 ace용 mog메뉴와 mog전투 10 file 꿈꾸는사람 2012.08.04 6053
208 액터 Actor Creation System by Tsukihime 4 Alkaid 2012.09.16 3552
207 메시지 Advanced Text System by modern algebra 2 Alkaid 2013.02.04 2317
206 메시지 ATS: Special Message Codes 1.0 by Modern Algebra 1 file Alkaid 2012.01.15 4708
205 오디오 Audio Pump Up: FMOD Ex by mikb89 2 Alkaid 2012.09.08 2071
204 전투 Basic Enemy HP Bars 2.1 by V.M 10 Alkaid 2013.02.21 4207
203 전투 Code Crush VXAce-RGSS3-21 프론트뷰 改 2 15 Alkaid 2013.01.28 4270
202 전투 CP's Battle Engine by Neon Black 20 Alkaid 2013.02.14 4957
201 퀘스트 CSCA]콜로세움 시스템 4 file 글쎄,왜 난 적용이 안될까? 2013.06.09 3624
200 메뉴 Customizable Main Menu 1.0b by modern algebra 4 file Alkaid 2012.02.13 5452
199 기타 Dialog Extractor 1.04 (VXA/VX/XP) 6 AltusZeon 2014.01.16 11672
198 전투 Drop Options by modern algebra 3 Alkaid 2012.09.17 2851
Board Pagination Prev 1 2 3 4 5 6 7 8 9 10 11 Next
/ 11