아래 스크립트를 넣은 게임을 실행했을 때 전에는 잘만 되다 갑자기 이런 오류가 떴습니다.
#==============================================================================
# ** TitleManagerEx (RPG Maker VX Ace)
#==============================================================================
# Name : TitleManagerEx
# Author : 러닝은빛(biud436)
# Date : 2015.09.07
# Version : 1.0
# Usage : DataManager.ending_setup("엔딩1")
#==============================================================================
# ** Tool
#------------------------------------------------------------------------------
# 타이틀에서 불러올 그래픽 파일들을 설정합니다
#==============================================================================
module Tool
SYS = load_data("Data/System.rvdata2")
RESOURCE = {
#--------------------------------------------------------------------------
# * 해당 엔딩에 맞는 타이틀 파일을 설정해주세요(Title1, Title2)
# "엔딩명" => ["타이틀1의 파일명","타이틀2의 파일명","BGM명"],
#--------------------------------------------------------------------------
"기본타이틀" => [SYS.title1_name,SYS.title2_name,SYS.title_bgm],
"배드엔딩" => ["그림2","","Dungeon2"],
"트루엔딩" => ["그림1","그림6","Field3"],
"노멀엔딩-하나" => ["그림1","그림5","Dungeon2"],
"노멀엔딩-재수" => ["그림1","","Dungeon2"],
#--------------------------------------------------------------------------
}
end
#==============================================================================
# ** Position (Add-On)
#==============================================================================
module Position
# 스페셜 맵의 ID
MAP_ID = 10
# 플레이어의 시작 X
X = 6
# 플레이어의 시작 Y
Y = 11
# 이동 좌표
RESULT = [MAP_ID,X,Y]
end
#==============================================================================
# ** DataManager
#------------------------------------------------------------------------------
# 엔딩값을 temp.dat 파일로 저장합니다
#==============================================================================
module DataManager
#--------------------------------------------------------------------------
# * 엔딩을 설정합니다
#--------------------------------------------------------------------------
def self.ending_setup(string)
begin
File.open("temp.dat","wb") do |file|
Marshal.dump(publish_key(string),file)
end
rescue
return false
end
end
#--------------------------------------------------------------------------
# * 파일을 로드합니다
#--------------------------------------------------------------------------
def self.load_background
begin
File.open("temp.dat","rb") do |file|
Marshal.load(file)
end
rescue
ending_null
end
end
#--------------------------------------------------------------------------
# * 엔딩키를 찾을 수 없을 때
#--------------------------------------------------------------------------
def self.ending_null
ending = {}
ending[:version] = 0
ending[:username] = "NULL"
ending[:n] = Tool::RESOURCE["기본타이틀"]
ending
end
#--------------------------------------------------------------------------
# * 엔딩키 발급(게임의 버전/사용자의 이름/리소스의 이름)
#--------------------------------------------------------------------------
def self.publish_key(string)
begin
ending = {}
ending[:version] = 1000
ending[:username] = ENV["USERNAME"]
ending[:n] = Tool::RESOURCE[string]
ending
rescue
ending_null
end
end
end
#==============================================================================
# ** Header
#------------------------------------------------------------------------------
# 엔딩값을 외부파일에서 불러옵니다
#==============================================================================
module Header
@@background = nil
#--------------------------------------------------------------------------
# * 엔딩키값을 로드합니다
#--------------------------------------------------------------------------
def self.load
f = DataManager.load_background
return f[:version],f[:username],f[:n]
end
#--------------------------------------------------------------------------
# * 배경화면 정보를 설정합니다
#--------------------------------------------------------------------------
def self.choose_background?
if [load[0],load[1]] == [1000,ENV["USERNAME"]]
load_background(load[2])
return true
else
@@background = Tool::RESOURCE["기본타이틀"]
return false
end
end
#--------------------------------------------------------------------------
# * 배경화면을 불러옵니다
#--------------------------------------------------------------------------
def self.load_background(set)
@@background = set
end
#--------------------------------------------------------------------------
# * 배경화면을 배포합니다
#--------------------------------------------------------------------------
def self.export_background
return @@background
end
end
#==============================================================================
# ** Scene_Title
#------------------------------------------------------------------------------
# create_background 메소드를 오버라이딩 합니다
#==============================================================================
class Scene_Title < Scene_Base
#--------------------------------------------------------------------------
# * 배경화면을 생성합니다
#--------------------------------------------------------------------------
def create_background
@sprite1 = Sprite.new
@sprite2 = Sprite.new
choose_background
center_sprite(@sprite1)
center_sprite(@sprite2)
end
#--------------------------------------------------------------------------
# * 배경화면을 선택합니다
#--------------------------------------------------------------------------
def choose_background
if Header.choose_background?
@sprite1.bitmap = Cache.title1(Header.export_background[0])
@sprite2.bitmap = Cache.title2(Header.export_background[1])
else
# 엔딩키를 찾을 수 없으면 기본 배경화면을 생성합니다
@sprite1.bitmap = Cache.title1(Header.export_background[0])
@sprite2.bitmap = Cache.title2(Header.export_background[1])
end
end
#--------------------------------------------------------------------------
# * 배경음악을 변경합니다
#--------------------------------------------------------------------------
def play_title_music
if Header.choose_background?
$data_system.title_bgm.name = Header.export_background[2]
end
$data_system.title_bgm.play
RPG::BGS.stop
RPG::ME.stop
end
end
#==============================================================================
# ** Header (Add-On)
#==============================================================================
module Header
def self.special_menu?
[load[0],load[1]] == [1000,ENV["USERNAME"]]
end
end
#==============================================================================
# ** DataManager (Add-On)
#==============================================================================
module DataManager
def self.setup_special_game(*args)
create_game_objects
$game_party.setup_starting_members
$game_map.setup(args[0])
$game_player.moveto(args[1], args[2])
$game_player.refresh
Graphics.frame_count = 0
end
end
#==============================================================================
# ** Window_TitleCommand (Add-On)
#==============================================================================
class Window_TitleCommand
def alignment
return 1
end
def make_command_list
add_command(Vocab::new_game, :new_game)
add_command(Vocab::continue, :continue, continue_enabled)
add_command("아무도 알지 못했던 비밀",:special_menu) if Header.special_menu?
add_command(Vocab::shutdown, :shutdown)
end
end
#==============================================================================
# ** Scene_Title (Add-On)
#==============================================================================
class Scene_Title
alias thou_create_command_window create_command_window
def create_command_window
thou_create_command_window
set_menu if Header.special_menu?
end
def set_menu
@command_window.set_handler(:special_menu, method(:special_menu))
end
def special_menu
DataManager.setup_special_game(*Position::RESULT)
close_command_window
fadeout_all
$game_map.autoplay
SceneManager.goto(Scene_Map)
end
end
도와주세요 고수님들 ㅠㅠ
- 질문할 내용이 이 게시판이나 강좌에 이미 있는지 확인합니다.
- 하나의 게시물에는 하나의 질문만 합니다.
- 제목은 질문의 핵심 내용으로 작성합니다.
- 질문 내용은 답변자가 쉽게 이해할 수 있도록 최대한 상세하게 작성합니다.
- 스크립트의 전문이 필요할 경우 txt 파일 등으로 첨부해 주시기 바랍니다.
- 답변받은 게시물은 삭제하지 않습니다.
- 답변이 완료된 경우 해당 답변해주신 분들께 감사의 댓글을 달아줍니다.
- 처음 오신 분들은 공지 게시물을 반드시 읽어주세요!
※ 미준수시 사전경고 없이 게시물을 삭제합니다.