VX 스크립트

Since I can't script for beans, I decided that I would start translating them instead. So here is one, that hails all the way from Brazil:

<RPG Make 200X Save Style>
<Version 1.0>
<Created by UNIR>

Information:
This script just transforms the RMVX save system, into something that resembles the Rm2k/3 save styles.

Screenshots:


It won't be in spanish when you use it.

Instructions:
Just plug and play.

Demo Link:
Not needed, it's just a plug and play script.

Compatibility:
This only works for RMVX, I think.

Author's Notes:
I didn't make this, I only translated it. Mostly to practice my Spanish, but also because it's not a bad script.
스크립트
#==============================================================================
# Original Script by; Unir, created on the 13 of April, 2008
# Original Page (http://www.rpgmakerbrasil.com/forum/f43/save-estilo-2003-a-1584.html)
# Translation by:
# bob_saget
#
# Rpg Maker 200X Save Style
#==============================================================================
# Script Configuration
#==============================================================================

module UNIRFileConfig
SAVE_MAX = 5 # Maximum number of save slots. Can be changed to whatever you want.
end

#==============================================================================
# Window_SaveFile
#==============================================================================

class Window_SaveFile < Window_Base
attr_reader :filename
attr_reader :file_exist
attr_reader :time_stamp
attr_reader :selected

def initialize(file_index, filename)
super(0, 56 + file_index % UNIRFileConfig::SAVE_MAX * 120, 544, 120)
@file_index = file_index
@filename = filename
load_gamedata
refresh
@selected = false
end

def load_gamedata
@time_stamp = Time.at(0)
@file_exist = FileTest.exist?(@filename)
if @file_exist
file = File.open(@filename, "r")
@time_stamp = file.mtime
begin
@characters = Marshal.load(file)
@frame_count = Marshal.load(file)
@last_bgm = Marshal.load(file)
@last_bgs = Marshal.load(file)
@game_system = Marshal.load(file)
@game_message = Marshal.load(file) #
@game_switches = Marshal.load(file) #
@game_variables = Marshal.load(file) #
@game_self_switches = Marshal.load(file) #
@game_actors = Marshal.load(file) #
@game_party = Marshal.load(file)
@total_sec = @frame_count / Graphics.frame_rate
rescue
@file_exist = false
ensure
file.close
end
end
end

def refresh
self.contents.clear
self.contents.font.color = system_color
name = Vocab::File + " #{@file_index + 1}"
self.contents.draw_text(4, 0, 200, WLH, name)
@name_width = contents.text_size(name).width
if @file_exist
draw_party_characters(132, 0) #Change the position of faces here
draw_money(4, 32, 128, 0) #Change the position of gold here (X, Y, )
draw_playtime(4, 64, 128, 0) #Change the position of playtime here
end
end

def draw_party_characters(x, y)
for i in 0...@characters.size
name = @characters[i][0]
index = @characters[i][1]
draw_face(name, index, x + i * 96, y)
end
end

def draw_playtime(x, y, width, align)
hour = @total_sec / 60 / 60
min = @total_sec / 60 % 60
if hour > 99
hour = 99
min = 00
end
time_string = "Time:" #This is the name for the total time played.
self.contents.font.color = system_color
self.contents.draw_text(x, y, width, WLH, time_string)
time_string = sprintf(" %02d:%02d", hour, min + 1)
self.contents.font.color = text_color(2)
self.contents.draw_text(x, y, width, WLH, time_string)
end

def draw_money(x, y, width, align)
draw_currency_value(@game_party.gold, x, y, 120)
end

def selected=(selected)
@selected = selected
update_cursor
end

def update_cursor
if @selected
self.cursor_rect.set(0, 0, 128, height - 32)
else
self.cursor_rect.empty
end
end
end

#==============================================================================
# Scene_File
#==============================================================================

class Scene_File < Scene_Base
def initialize(saving, from_title, from_event)
@saving = saving
@from_title = from_title
@from_event = from_event
end

def start
super
@file_max = UNIRFileConfig::SAVE_MAX
create_menu_background
@help_window = Window_Help.new
create_savefile_windows
if @saving
@index = $game_temp.last_file_index
@help_window.set_text(Vocab::SaveMessage)
else
@index = self.latest_file_index
@help_window.set_text(Vocab::LoadMessage)
end
@savefile_windows[@index].selected = true
@page_file_max = ((416 - @help_window.height) / 120).truncate
for i in 0...@file_max
window = @savefile_windows[i]
if @index > @page_file_max - 1
if @index < @file_max - @page_file_max - 1
@top_row = @index
window.y -= @index * window.height
elsif @index >= @file_max - @page_file_max
@top_row = @file_max - @page_file_max
window.y -= (@file_max - @page_file_max) * window.height
else
@top_row = @index
window.y -= @index * window.height
end
end
window.visible = (window.y >= @help_window.height and
window.y < @help_window.height + @page_file_max * window.height)
end
end

def terminate
super
dispose_menu_background
@help_window.dispose
dispose_item_windows
end

def return_scene
if @from_title
$scene = Scene_Title.new
elsif @from_event
$scene = Scene_Map.new
else
$scene = Scene_Menu.new(4)
end
end

def update
super
update_menu_background
@help_window.update
update_savefile_windows
update_savefile_selection
end

def create_savefile_windows
@top_row = 0
@savefile_windows = []
for i in 0...@file_max
@savefile_windows.push(Window_SaveFile.new(i, make_filename(i)))
end
end

def dispose_item_windows
for window in @savefile_windows
window.dispose
end
end

def update_savefile_windows
for window in @savefile_windows
window.update
end
end

def update_savefile_selection
if Input.trigger?(Input::C)
determine_savefile
elsif Input.trigger?(Input::cool.gif
Sound.play_cancel
return_scene
else
last_index = @index
if Input.repeat?(Input::DOWN)
cursor_down(Input.trigger?(Input::DOWN))
end
if Input.repeat?(Input::UP)
cursor_up(Input.trigger?(Input::UP))
end
if @index != last_index
Sound.play_cursor
@savefile_windows[last_index].selected = false
@savefile_windows[@index].selected = true
end
end
end

def determine_savefile
if @saving
Sound.play_save
do_save
else
if @savefile_windows[@index].file_exist
Sound.play_load
do_load
else
Sound.play_buzzer
return
end
end
$game_temp.last_file_index = @index
end

def cursor_down(wrap)
if @index < @file_max - 1 or wrap
@index = (@index + 1) % @file_max
for i in 0...@file_max
window = @savefile_windows[i]
if @index == 0
@top_row = 0
window.y = @help_window.height + i % @file_max * window.height
elsif @index - @top_row > @page_file_max - 1
window.y -= window.height
end
window.visible = (window.y >= @help_window.height and
window.y < @help_window.height + @page_file_max * window.height)
end
if @index - @top_row > @page_file_max - 1
@top_row += 1
end
end
end

def cursor_up(wrap)
if @index > 0 or wrap
@index = (@index - 1 + @file_max) % @file_max
for i in 0...@file_max
window = @savefile_windows[i]
if @index == @file_max - 1
@top_row = @file_max - @page_file_max
window.y = @help_window.height + i % @file_max * window.height
window.y -= (@file_max - @page_file_max) * window.height
elsif @index - @top_row < 0
window.y += window.height
end
window.visible = (window.y >= @help_window.height and
window.y < @help_window.height + @page_file_max * window.height)
end
if @index - @top_row < 0
@top_row -= 1
end
end
end

def make_filename(file_index)
return "Save#{file_index + 1}.rvdata"
end

def latest_file_index
index = 0
latest_time = Time.at(0)
for i in 0...@savefile_windows.size
if @savefile_windows[i].time_stamp > latest_time
latest_time = @savefile_windows[i].time_stamp
index = i
end
end
return index
end

def do_save
file = File.open(@savefile_windows[@index].filename, "wb")
write_save_data(file)
file.close
return_scene
end

def do_load
file = File.open(@savefile_windows[@index].filename, "rb")
read_save_data(file)
file.close
$scene = Scene_Map.new
RPG::BGM.fade(1500)
Graphics.fadeout(60)
Graphics.wait(40)
@last_bgm.play
@last_bgs.play
end

def write_save_data(file)
characters = []
for actor in $game_party.members
characters.push([actor.character_name, actor.character_index])
end
$game_system.save_count += 1
$game_system.version_id = $data_system.version_id
@last_bgm = RPG::BGM::last
@last_bgs = RPG::BGS::last
Marshal.dump(characters, file)
Marshal.dump(Graphics.frame_count, file)
Marshal.dump(@last_bgm, file)
Marshal.dump(@last_bgs, file)
Marshal.dump($game_system, file)
Marshal.dump($game_message, file)
Marshal.dump($game_switches, file)
Marshal.dump($game_variables, file)
Marshal.dump($game_self_switches, file)
Marshal.dump($game_actors, file)
Marshal.dump($game_party, file)
Marshal.dump($game_troop, file)
Marshal.dump($game_map, file)
Marshal.dump($game_player, file)
end

def read_save_data(file)
characters = Marshal.load(file)
Graphics.frame_count = Marshal.load(file)
@last_bgm = Marshal.load(file)
@last_bgs = Marshal.load(file)
$game_system = Marshal.load(file)
$game_message = Marshal.load(file)
$game_switches = Marshal.load(file)
$game_variables = Marshal.load(file)
$game_self_switches = Marshal.load(file)
$game_actors = Marshal.load(file)
$game_party = Marshal.load(file)
$game_troop = Marshal.load(file)
$game_map = Marshal.load(file)
$game_player = Marshal.load(file)
if $game_system.version_id != $data_system.version_id
$game_map.setup($game_map.map_id)
$game_player.center($game_player.x, $game_player.y)
end
end
end
Comment '8'

List of Articles
번호 분류 제목 글쓴이 날짜 조회 수
공지 스크립트 자료 게시물 작성시 주의사항 3 습작 2012.12.24 5398
357 타이틀/게임오버 타이틀화면 커스터마이즈 29 file 可わいい 2009.03.16 6141
356 이름입력 한글로 이름 입력하는 스크립트입니다. 55 file 헤르코스 2009.03.18 6662
355 메시지 문자픽쳐 표시 스크립트 7 file 좀비사냥꾼 2009.03.19 4144
354 기타 시야범위 스크립트 18 file 좀비사냥꾼 2009.03.19 4047
353 메뉴 [자작]명성치 사용 시스템(메뉴 출력) 16 Rainsy 2009.03.22 4360
352 상태/속성 어떤 상태일때에만 사용가능한 스킬 14 file 좀비사냥꾼 2009.03.25 3266
351 장비 KGC확장장비창 스크립트 15 file 티라엘 2009.03.27 3622
350 장비 KGC장비종류 추가 스크립트. 36 file 루시페르 2009.03.28 4674
349 기타 캐릭터 소개화면 16 file 좀비사냥꾼 2009.03.29 6044
348 키입력 답을 입력하는 텍스트박스 스크립트!! 21 file 좀비사냥꾼 2009.03.29 4206
347 기타 [자작] 횡스크롤 점프스크립트 18 file 좀비사냥꾼 2009.04.03 4276
346 타이틀/게임오버 [자작] 타이틀 화면 없이 게임을 시작하자! Title Skiper 29 케류 2009.04.05 4423
345 기타 KGC 리버스 데미지! 28 루시페르 2009.04.13 2979
344 이동 및 탈것 A* 알고리즘을 이용한 길찾기 스크립트 3 file 허걱 2009.04.20 3528
343 이동 및 탈것 대각선 이동 스크립트 17 아방스 2009.05.02 3677
342 기타 스크립트강좌 4 아하!잘봤어요. 2009.05.04 2158
341 메뉴 몬스터도감 Tankentai사이드뷰에 작동하도록 수정 13 카르와푸딩의아틀리에 2009.05.22 3775
340 기타 능력치에 따른 스테이트변화 / 능력치한계지정 5 Evangelista 2009.05.26 2479
339 전투 에너미를 아이템으로 변화하는 스킬 8 Evangelista 2009.05.27 2850
338 기타 <중수이상>RPG VX의 대표적 참조값 6 까까까 2009.05.31 3236
Board Pagination Prev 1 ... 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 ... 32 Next
/ 32