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 28925
137 기타 시디 플레이어 1.0 by 77er 1 file 77ER. 2013.08.20 1627
136 기타 사칙연산 게임 by 77er 1 file 77ER. 2013.08.19 1606
135 기타 77er 월드 맵 1.0 by 77er 3 file 77ER. 2013.08.14 2281
134 타이틀/게임오버 타이틀 스크린 커스터마이징 11 file 라실비아 2013.08.12 5153
133 맵/타일 XP Map Loader by LiTTleDRAgo Alkaid 2013.07.23 1703
132 HUD Galv's Explorer's HUD 4 file 천공대전 2013.07.21 3638
131 전투 GTBS v2 for VX Ace by GubiD 1 Alkaid 2013.07.19 3057
130 메뉴 System Options v1.00 시스템 환경설정, 이동속도 10 file 믛디 2013.07.18 3447
» 변수/스위치 변수/스위치 전역 저장 시스템 ( 게임이 종료 및 재시작되어도 값이 변하지 않는 변수와 스위치를 설정 ) 7 미루 2013.07.11 3163
128 이동 및 탈것 8 방향 이동 스크립트 ( 사선 이동 캐릭터 그래픽 지원 ) 9 file 미루 2013.07.11 4845
127 맵/타일 XPMAP-EX : XPマップスクリプト by A Crying Minister (WHITE-FLUTE) file 습작 2013.06.09 3125
126 퀘스트 CSCA]콜로세움 시스템 4 file 글쎄,왜 난 적용이 안될까? 2013.06.09 3623
125 스킬 galvs]매직샤드 시스템. 1 file 글쎄,왜 난 적용이 안될까? 2013.06.09 2876
124 맵/타일 안개 시스템 ( VXA ) 8 홍색의환상향 2013.05.19 4089
123 키입력 Mouse System Buttons update 2.0 by Falcao 11 file 습작 2013.05.14 2526
122 키입력 VA鼠标脚本——全操作鼠标化 v1.3e by Sion 4 file 습작 2013.05.14 2027
121 전투 Ra TBS Alpha by Eshra 1 file 습작 2013.05.13 3856
120 전투 多人数SRPGコンバータ for Ace by AD.Bank 6 습작 2013.05.13 4037
119 전투 Schala 전투 시스템 (XAS에 의해 구동) 11 홍색의환상향 2013.05.05 5321
118 퀘스트 Quest Journal by modern algebra 11 file 습작 2013.05.03 3695
Board Pagination Prev 1 2 3 4 5 6 7 8 9 10 11 Next
/ 11