# Use o Marshal para salvar ou carregar dados de um arquivo
# qualquer, desde que seja essencialmente feito de classes
# padrão (por exemplo, não se pode salvar bitmaps)
# CARREGANDO
# Primeiro de tudo, vc deve "abrir" o arquivo.
# USO: File.open("Caminho_e_nome_do_arquivo_em_string", "modo_em_string")
# veja o arquivo de ajuda para mais explicações.
file = File.open("Data/Skills.rxdata", "rb")
# O processso de save é feito com Marshal.dump, o que significa
# que os dados dos objetos salvos dentro deste arquivo estão em série.
# Imagine uma fila... Vc salva primeiro as técnicas e depois os
# heróis. Sendo assim, o Marshal.load vai tirar o primeiro da fila, e
# depois o segundo, e assim por diante (técnicas e depois heróis).
# Digamos que salvamos apenas as técnicas...
# Marshal.load retorna o objeto do primeiro save que estiver na fila deste
# arquivo. Como só existe um objeto salvo, só podemos fazer
# este processo uma vez. Veja o arquivo de ajuda para mais explicações.
$data_skills = Marshal.load(file)
# Depois de ter terminado de usar o arquivo, lembre-se de fechá-lo.
# É muito importante fazer isso.
file.close
# E só ^^
# Agora, pra ver a técnica de ID 1 é simples...
skill = $data_skills[1]
# Isso retornará a técnica nº 1 no database. Lembre-se de q
# este save do database (assim como outros, como eventos comuns ou
# classes) estão indexados por meio de arrays (a indexação é
# de acordo com seu número no database, e por isso o index 0 é
# inválido, lembre-se bem disso)
ATENÇÃO: TODOS os saves do Database estão na pasta Data. Botei aqui apenas os mais relevantes, e todos que estão relacionados com Database. Qualquer dúvida sobre essas classes ou quais seus métodos e propriedades, dê uma olhada no arquivo de ajuda (de preferência o oficial, que tá todo traduzido pra inglês).
RPG::Actor: Dados dos Personagens. Representa apenas um herói. Salvo em Actors.rxdata, uma array com todos os heróis.
RPG::Class: Dados das classes. Representa apenas uma classe. Salvo em .rxdata, uma array com todas as classes.
RPG::Class:Learning: Dados de aprendizado de técnicas para cada classe. Cada classe tem um objeto desses.
RPG::Skill: Dados de técnicas. Representa apenas uma técnica. Salvo em Skills.rxdata, uma array com todas as técnicas.
RPG::Item: Dados de itens. Representa apenas um item. Salvo em .rxdata, uma array com todos os itens.
RPG::Weapon: Dados de armas. Representa apenas uma arma. Salvo em Weapons.rxdata, uma array com todas as armas.
RPG::Armor: Dados de Defesas. Representa apenas uma defesa. Salvo em Armors.rxdata, uma array com todas as defesas.
RPG::Enemy: Dados de inimigos. Representa apenas um inimigo. Salvo em .rxdata, uma array com todos os inimigos.
RPG::Troop: Dados de grupos de inimigos (incluindo eventos de batalha). Representa apenas um grupo de inimigos. Salvo em Troops.rxdata, uma array com todos os grupos de inimigos.
RPG::State: Dados de estados (tipo envenenado, atordoado, etc). Representa apenas um estado. Salvo em States.rxdata, uma array com todos os estados.
RPG::Animation: Dados de animações. Representa apenas uma animação. Salvo em Animations.rxdata, uma array com todas as animações.
RPG::CommonEvent: Dados de eventos comuns (velhos conhecidos dos makers ^^). Representa apenas um evento comum. Salvo em CommonEvents.rxdata, uma array com todos os eventos comuns.
RPG::System: Dados de sistema do jogo (como tela de tÃÂÂÂtulo, música de batalha, atributos, palavras usadas e etc.). Salvo em System.rxdata. Este é o único save que vai inteiro (sem intermédio de arrays).
$data_skills = load_data("Data/Skills.rxdata")
# Acessando a técnica de ID 1, "Corte".
skills = load_data("Data/Skills.rxdata")
# Quero saber o quanto de SP ela consome a cada uso:
sp_cost = skills[1].sp_cost
# Agora quero saber o nome
name = skills[1].name
# Descrição...
description = skills[1].name
# Dano...
power = skills[1].power
# Agora vo fazer uma janela contendo todos esses dados
window = Window_Base.new(0,0,320,240)
window.contents = Bitmap.new(320-32,240-32)
window.contents.draw_text(0,0,320,30,name)
window.contents.draw_text(0,30,320,30,description)
window.contents.draw_text(0,60,320,30,"Custo SP: "+sp_cost.to_s+", Força: "+power.to_s)