Aula 15: Salvando e Carregando Dados
Galáxia RPG Maker :: Outros assuntos e Aprendizado
:: Aulas de RGSS/RGSS2 :: Curso de RGSS/RGSS2 :: Curso de RGSS
Página 1 de 1
Aula 15: Salvando e Carregando Dados
Salvando e Carregando Dados
» SALVANDO
Para salvar um arquivo, basta usar a lista de comandos abaixo:
file = File.open(“nome do arquivo”, "wb")
Marshal.dump(var1, file)
Marshal.dump(var2, file)
Marshal.dump(varn, file)
file.close
» CARREGANDO
Para carregar dados, use:
file = File.open(“nome do arquivo”,, "rb")
var1 = Marshal.load(file)
var2 = Marshal.load(file)
varn = Marshal.load(file)
file.close
Lembre-se que tem que colocar os mesmos nomes da variáveis que você salvou, se tentar carregar alguma variável que não foi salva, vai aparecer uma mensagem de erro e seu jogo vai fechar.
» Inserindo dados no Save do RMXP
Para facilitar as coisas na hora de salvar e carregar dados, existe um modelo de script que se utiliza do alias para injetar dados no bloco de save e load padrão do rmxp, se você analisar, muitos scripts utilizam esse recurso. Os blocos de save e load estão na Scene_Save(linha 64) e Scene_Load(linha 75).
» Modelos de Script padrão para inserir dados nos saves dos personagens
- Código:
class Scene_Save
alias nome_do_alias write_save_data
def write_save_data(file)
nome_do_alias (file)
Marshal.dump(var1, file)
Marshal.dump(var2, file)
end
end
- Código:
class Scene_Load
alias nome_do_alias_save_data
def read_save_data(file)
nome_do_alias (file)
var1 = Marshal.load(file)
var2 = Marshal.load(file)
end
end
» Comandos Extras
Existem ainda alguns commandos extras que você pode utilizar, são eles:
FileTest.exist(“nome do arquivo”) > retorna true se o arquivo existir, use em condições, if FileTest.exist?(filename) then ....
File.delete(“arquivo”) > deleta um arquivo em especial, usei esse comando para deletar contas hackeadas no meu projeto! ^^
» Add-On:
Save e loads são baseados na classe File e FileTest, eles tem vários métodos interessantes, é fácil encontrar uma lista completa pesquisando a documentação do ruby, mas eu quero focar em uma coisa em especial que é o uso de arquivos externos, ou seja, como usar arquivos de dados sem ser os do save (incluindo os de data e arquivos comuns).
1º precisamos aprender por quê colocamos o "wb", "rb" e etc ao abrir o arquivo, simples, isso serve para definirmos o tipo de operação e o tipo de arquivo que estamos abrindo, vejam como funciona:
"wb" : w = write, b = binary : significa que você vai salvar um arquivo binário
"w" : só o w significa que vai salvar um arquivo comum, por exemplo, um .txt
"rb" : r é de read, ou seja, ler, aqui no caso o arquivo também é binário
"r" : serve para ler um arquivo comum
Sabendo disso, é possível por exemplo, abrir um arquivo do bloco de notas, testem isso:
file = File.open("Test.txt","w")
file.write("Hello World!")
file.close
file = File.open("Test.txt","r")
p file.read
file.close
Notem que para ler e salvar arquivos que não são binários, usamos os comandos write e read, ao ler um arquivo, vocês também podem usar o readlines que retorna um array com cada linha do arquivo.
Além de mexer com os arquivos comuns, é possível editar diretamente os arquivos .rxdata do jogo, pra fazer isso chega a ser até ridículo de tão fácil, olhem só:
carregar: load_data(<nome do arquivo>)
salvar: save_data(<data>,<nome do arquivo>)
Vejam esse exemplo:
- Código:
#==============================================================================
# APS
# Alteração dos status dos inimigos
#==============================================================================
module APS
def self.n1
at = 0.3 #1.74
atd = 0.1 #1.74
hp = 0.4 #1.74
for i in 1..139
# Aumenta o índice de crescimento a cada reino
if i == 21 # Urnik
at += 0.2 # 0.5
hp += 0.3 # 0.7
atd += 0.2 # 0.3
elsif i == 41 # Atlantis
at += 0.3 # 0.8
hp += 0.3 # 1.0
atd += 0.2 # 0.5
elsif i == 61 # Magbo
at += 0.1 # 1.0
hp += 0.2 # 1.2
atd += 0.2 # 0.7
elsif i == 81 # Wyndia
at += 0.2 # 1.2
hp += 0.1 # 1.3
atd += 0.1 # 0.8
elsif i == 101
at = 1.74
hp = 1.6
atd = 1.2
elsif i == 116
hp = 1.6
atd = 1.35
end
e = $data_enemies[i]
e.maxhp = e.maxsp = (hp*i*i+10).to_i * 5
e.str = e.agi = e.dex = e.int = (at*i*i+10).to_i
e.atk = e.pdef = e.mdef = (atd*i*i/1.5+10).to_i
e.exp = (1.2*i*i+10).to_i * 3
e.gold = (1.5*i*i+10).to_i * 2
end
save_data($data_enemies,"Data/Enemies.rxdata")
end
end
Quebrando barreiras dos itens:
por exemplo, pra fazer com que possa haver infinitos itens no jogo (e não só 999)
Faça:
for k in 2..2000
$data_weapons[k] = $data_weapons[1]
end
save_data($data_weapons,"Data/Weapons.rxdata")
Pronto, agora o seu limite de armas é de 2000 XD (isso apaga todas as armas programadas, cuidado!)
Lembrem-se de sempre fazer backup dos seus arquivos antes de editá-los e cuidado, se salvar as coisas no lugar errado, vai perder o arquivo e os dados XD
Vale lembrar que para essas modificações terem efeito, tem que fechar e abrir o projeto do jogo, se salvar andes de fazer isso, ele apaga tudo XD
» Finalizando:
Entonces, o Curso de RGSS acaba por aqui ^^. Aos que chegaram até aqui, parabéns se entenderam todas as aulas vocês ja podem se considerar scripters, se quiserem ser super scripters, comecem o curso avançado!
TODOS OS CRÉDITOS E AGRADECIMENTOS A ANDERSON PORTO PELO LINDO TUTORIAL!
Tópicos semelhantes
» Aula 9: Introdução ao WSW
» Aula 10: Complementos
» Aula 6: O Ponto Crítico!
» Aula 7: Nossa 1ª Scene!
» Aula 8: Acesso a Atributos
» Aula 10: Complementos
» Aula 6: O Ponto Crítico!
» Aula 7: Nossa 1ª Scene!
» Aula 8: Acesso a Atributos
Galáxia RPG Maker :: Outros assuntos e Aprendizado
:: Aulas de RGSS/RGSS2 :: Curso de RGSS/RGSS2 :: Curso de RGSS
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos