Envision, Create, Share

Welcome to HBGames, a leading amateur game development forum and Discord server. All are welcome, and amongst our ranks you will find experts in their field from all aspects of video game design and development.

Database.

1. How I make to keep variaveis in data base?

2. As I show a data base.

3. Please, i am finding tutos of databases.

4.Se will have some tutorail, shows to me.

***I am using a translator online, forgive me for the grammatical errors. but, i understand english language.
 
Bom, suponho q vc tenha um conhecimento básico de Ruby e/ou de RGSS e que tenha o arquivo de ajuda do RMXP (lá tem todas as descrições pra todas as classes de RGSS, vê aqui se não tiver).

Cada parte do database é salvo com uma classe diferente dentro de arquivos com extensão rxdata. Geralmente as definições dessas classes estão em um módulo chamado RPG (ver Game Library/ RPGXP Data Structure).

Por exemplo, todas as técnicas definidas no database do jogo são salvas em um arquivo chamado Skills.rxdata dentro da pasta Data do seu jogo. Este arquivo Skills.rxdata não passa de um save da classe que representa as criações ou modificações feitas por você no database do RMXP. Sendo assim, vc pode carregar esses arquivos de forma muito simples, assim como faz o script Scene_Title no início do jogo (método main):
Code:
# 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)

Depois de ter carregado o objeto, vc pode usá-lo como um simples objeto comum. Só lembre-se de referenciá-lo corretamente (Se ele é um objeto da classe X, deve usá-lo tendo em mente os métodos e propriedades da classe X, e não da classe Y. Entendeu? ^^). RPG::Skills é a classe usada para salvar os dados de técnicas. Aqui vai uma listagem das classes usadas nos saves do Database:

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).

Bom, tae... Espero que tenha ajudado ^^
 
Portuguese.

Hmm não... A não ser o que o RMXP usa. Mas o processo é bem simples, se vc estudar bem vc vai entender legal. A propósito... Vc entendeu oq eu expliquei? xD
 
Scene_Title tem um exemplo. Ele faz este processo de uma maneira mais simples. Mas é como eu te disse, nesses arquivos de save do database em geral só tem 1 objeto salvo. Olha:
Code:
$data_skills = load_data("Data/Skills.rxdata")
Isso já faz tudo o que eu expliquei acima (desculpe, tava pensando em saves do jogo na hora ^^). Depois disso, $data_skills vai conter uma array, só bota a id da técnica lá como index e ela retorna pra vc. Por exemplo:
Code:
# 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)

Copia e cola isso tudo aí num call script de qualquer evento de mapa pra vc ver isso funcionar. E claro, vc não precisa carregar Skills.rxdata de novo pq ela já foi carregada em $data_skills. Todas as variáveis globais criadas pelo jogo que são referentes ao database estão listadas aqui (se quiser veja a descrição e a explicação completa de todas as classes aqui).

Pra falar a verdade não existem muitos scripts que usem load_file ou até Marshal, exceto os de saves, como o Advanced Save Menu (axo q é assim q é o nome! xD) feito pelo nosso renomado scripter Squall (xD). Ou, vc pode dar uma olhada nos scripts padrões (Scene_Title, File, Save e Load para carregar ou salvar, e Game_Battler, Actor, Enemy e td mais para o uso das variáveis carregadas). Tendeu agora?

P.S.: Participava da Menace (tah paradona), da MU (PUTZ o site morreu q merda! Era um ótimo site!) e de mais uns desconhecidos... Hoje (meio q sem opção) to aki msm no org pq a comunidade é bem ativa e tem sempre coisa nova. Só é ruim pq os mods são um pouco chatos, assim como um monte de membros q são tão chatos quanto... xD
 
English is crazy... xD

Really... Seeing a foreign country conversation is always weird... Now imagine how minion felt when he entered this forum? I´m trying to make things easier ^^
 

Thank you for viewing

HBGames is a leading amateur video game development forum and Discord server open to all ability levels. Feel free to have a nosey around!

Discord

Join our growing and active Discord server to discuss all aspects of game making in a relaxed environment. Join Us

Content

  • Our Games
  • Games in Development
  • Emoji by Twemoji.
    Top