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
457 스킬 스킬, 아이템 적아 구분 없이 쓰기 10 file EuclidE 2011.10.16 2900
456 스킬 스킬 필요조건에 살짝 손대봤습니다. -- 수정 18 아이미르 2011.03.23 2499
455 스킬 스킬 필요 조건(번역) 23 file 훈덕 2009.02.03 4644
454 전투 스킬 커맨드 스크립트 16 아방스 2009.02.05 4535
453 상점 스킬 샾 스크립트 2.0 48 아방스 2008.03.05 6628
452 스킬 스킬 사용시 컷인 연출 (번역) 26 file 훈덕 2009.02.05 5387
451 기타 스크립트로 커먼 이벤트 실행 [수정] 3 허걱 2009.08.17 2311
450 기타 스크립트강좌 4 아하!잘봤어요. 2009.05.04 2158
449 기타 스크린샷 기능 14 비극ㆍ 2010.04.19 2090
448 이동 및 탈것 스위치 on일때 못 움직이게...(이동고정) 6 허걱 2009.07.14 2322
447 메시지 소설풍(노벨풍) 문자 스크립트 31 file 맛난호빵 2011.01.03 5551
446 저장 세이브/로드가 불가능한 스크립트!!! 9 file ~AYARSB~ 2010.03.08 3298
445 기타 세이브 포인트 2 비극ㆍ 2010.04.19 2518
444 저장 세이브 파일 개수 16개로 늘리기 (기본 세이브 엔진용) 1 file Bunny_Boy 2015.09.07 816
443 저장 세이브 시스템 확장 스크립트 9 file 신규회원 2012.02.24 3315
442 기타 설명하기 힘든 스크립트 (스크린샷 확인) 10 file 사람이라면? 2010.08.16 3818
441 직업 서브클래스 선택 시스템 Subclass Selection System 7 file 카르와푸딩의아틀리에 2009.06.30 3942
» 새로운 종류의 세이브 스크립트!! 8 Man... 2008.10.28 3517
439 전투 새로운 전투돌입효과 29 file RPGbooster 2008.10.08 5076
438 맵/타일 새로운 월드맵 만들기 (로맨싱사가풍) 37 file 078656577er 2009.10.09 6151
Board Pagination Prev 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 ... 32 Next
/ 32