Vi Esta Aula No Aprendiz RPG É Vou Disponibilizar Aqui. Criador: Lucaswf1
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
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
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()
salvar: save_data(,)
Vejam esse exemplo:
#==============================================================================
# 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
Esse é o script que eu usei no LdM3 pra fazer com que os monstros ultrapassem os limites de parâmetros, dentro do editor do banco de dados do jogo, existem vários limites, mas mexendo diretamente nos arquivos, da pra fazer o que quiser.
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!
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
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
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()
salvar: save_data(,)
Vejam esse exemplo:
#==============================================================================
# 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
Esse é o script que eu usei no LdM3 pra fazer com que os monstros ultrapassem os limites de parâmetros, dentro do editor do banco de dados do jogo, existem vários limites, mas mexendo diretamente nos arquivos, da pra fazer o que quiser.
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!