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 5592
공지 RPG VX ACE 유용한 링크 모음 16 아방스 2012.01.03 29398
177 기타 없는 것 같아서 올립니다. VX ACE 한계 돌파 스크립트입니다. 24 빙룡군 2012.07.07 5620
176 맵/타일 Etude87_Map_Remember_Ace ver.1.2 11 습작 2012.07.17 3538
175 기타 Sapphire Action System IV v4.4br(엑알 스크립트) 6 file 꿈꾸는사람 2012.08.02 4542
174 그래픽 [ACE][BR] Awesome Light Effects 1.0(빛관련 스크립트) 37 file 꿈꾸는사람 2012.08.02 7058
173 메뉴 ace용 mog메뉴와 mog전투 10 file 꿈꾸는사람 2012.08.04 6079
172 아이템 VXAce 아이템 합성 스크립트 Ver 0.8 17 아이미르 2012.08.23 4021
171 전투 Etude87_Custom_Max_Tp_Weapon ver.1.0 5 습작 2012.08.28 2688
170 장비 Ace 장비 착용의 제한 스크립트 11 아이미르 2012.09.01 2812
169 기타 ACE) 오블리비언 락픽 구현 V0.5.2 7 file 77이알 2012.09.02 4826
168 장비 VXAce 장비장착 스킬발동 스크립트 2 아이미르 2012.09.02 2421
167 전투 Transition EX 1.2 by MogHunter Alkaid 2012.09.07 2497
166 키입력 RGSS3 Input Full + UTF-8 Input by Cidiomar 1 Alkaid 2012.09.08 2460
165 기타 던전 자동생성 4 Alkaid 2012.09.08 3175
164 메뉴 Syvkal's Ring Menu VX Ace 2 Alkaid 2012.09.08 3833
163 메뉴 Syvkal's Menu Bars VX Ace 3 Alkaid 2012.09.08 4307
162 오디오 Audio Pump Up: FMOD Ex by mikb89 2 Alkaid 2012.09.08 2099
161 액터 Actor Creation System by Tsukihime 4 Alkaid 2012.09.16 3572
160 아이템 Tactics Ogre PSP Crafting System by Mr.Bubble 6 Alkaid 2012.09.17 3075
159 전투 Drop Options by modern algebra 3 Alkaid 2012.09.17 2873
158 기타 ACE) 캐릭터 사전 by 77ER 19 77이알 2012.09.17 3961
Board Pagination Prev 1 2 3 4 5 6 7 8 9 10 11 Next
/ 11