Battle Maker

Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.

Suporte para criação de Jogos


    GM RPG - 4º Lição - Atributos do Herói - 1º parte

    jiraya
    jiraya
    Administrador
    Administrador


    Mensagens : 1299
    Credibilidade : 54

    GM RPG - 4º Lição - Atributos do Herói - 1º parte Empty GM RPG - 4º Lição - Atributos do Herói - 1º parte

    Mensagem por jiraya Sáb Jan 08, 2011 1:02 pm

    [Autor: João Neto ]
    ATENÇÃO: POR ALGUMA INCOMPATIBILIDADE QUE EU AINDA NÃO SEI QUAL É, ESTA LIÇÃO NÃO FUNCIONA COM O GM 6.1. ASSIM QUE DESCOBRIR O PORQUE EU MODIFICO O CÓDIGO PARA QUE FUNCIONE.
    Começo esta 4º lição de GM RPG agradecendo a todas as PMs e Posts dos usuários que estão gostando e usando o que eu estou ensinando. É muito importante para mim saber que está sendo útil, pois conhecimento não é nada se não foi passado para frente.
    Na lição passada eu disse que falaríamos de Atributos do Herói. Para aqueles que ainda não tem a menor idéia do que eu estou falando, eu darei uma pequena prévia.
    Ao se falar em atributos, estamos falando dos números e textos que compõem todos os dados do Herói. O nome do herói é um atributo, sua Classe é um atributo, bem como seu HP ,MP e Status atual. Dados numéricos, como HP, MP, Força, Destreza, etc. Não estão ali simplesmente à toa.
    Jogos de Mesa e Eletrônicos costumam usar classes e raças para definir valores padrão aos atributos do Herói, como Força, inteligência, entre outros. Pensando nisso, temos o conceito como que se segue:
    GM RPG - 4º Lição - Atributos do Herói - 1º parte 24234628
    As classes e raças podem determinar vários tipos de atributos do herói, de como será a usa evolução até o tipo de equipamento que o mesmo pode usar, e os poderes mágicos ou físicos que este terá.
    Ficou meio esclarecido o que seria os atributos do Herói? Eu espero que sim. ^^
    Então em nossa aula de hoje, veremos como construir um sistema de atributos, baseando-se em Classe e raça. Eu pretendia fazer apenas baseado na classe, mas com certeza isso traria problemas para os cálculos se você desejasse fazer um jogo mais elaborado. Vamos começar.
    Para baixar os arquivos necessários para esta aula clique Aqui
    Nas aulas de GM Online eu comecei a falar de banco de dados. O Uso de banco de dados é muito importante, mesmo que se usem arquivos texto para armazenar as informações.
    Mas porque eu gosto tanto de banco de dados? Por um motivo bem simples:
    Recuperação, Atualização, Inserção e Deleção de dados de forma concisa.
    Todo e qualquer BD usa de uma linguagem chamada de SQL. O SQL é de longe a melhor forma de manipulação de dados já inventada. Então porque reinventar a roda? Criar milhares de arquivos texto, scripts e mais scripts para se manipular os mesmos se temos uma ferramenta pronta, apenas esperando para ser usada? Esse é o meu motivo. ^^
    Em nossa Lição de RPG, como estaremos lidando com um jogo Off-line, não há a necessidade de uma engine de BD como o MYSQL. Então, estaremos usando o SQLITE. Mas porque o mesmo não foi usado então? Porque ele não possui um item extremamente importante nos jogos Online: Segurança. Durante o desenvolvimento da aula você verá porque.
    Então, para Continuar nossa lição, estarei disponibilizando três arquivos:
    • Hat.dll -> A Dll de comunicação com o banco SQLITE.
    • DB.db -> Nossa base SQLITE.
    • SQLite Browser -> Ferramenta para editar o BD.
    • SQLITE.gml -> Scripts desenvolvidos por mim para facilitar a operação do SQLITE.
    Vamos criar várias tabelas, as quais eu passarei o script pronto para que você não tenha tanto trabalho e eu possa escrever menos aqui. Depois que concluirmos a lição, leia todo o material, e com certeza você achará como customizar para que essa que é a parte mais importante do jogo fique de acordo com o que você deseja. Alguns detalhes importantes:
    Nosso herói terá os seguintes Atributos:
    • Nome
    • Classe
    • Raça
    • Nível
    • HP atual
    • HP máximo
    • MP atual
    • MP máximo
    • Status Atual
    • Força
    • Destreza
    • Agilidade
    • Inteligência
    Nossas Classes terão os seguintes atributos:
    • Nome
    • % Força
    • % Destreza
    • % Agilidade
    • % Inteligência
    Nossas raças terão os seguintes atributos:
    • Nome
    • % HP
    • % MP
    • Resistência a Status um
    • Resistência a Status dois
    Observe que nem falamos de armas e equipamentos. Estes serão tratados numa próxima lição. Os atributos com % significam que serão usados como parâmetro toda vez que o Herói evoluir um nível.
    Será graças a esta porcentagem que o herói evoluirá mais de num determinado campo de acordo com a sua classe. Note que usei a raça para determinar a % de HP e MP. Contrariando a idéia de que estes dados seriam diretamente proporcionais aos usados na classe, será apenas para que a raça não fique apenas com Resistência a determinados status.
    De cara, para termos todos estes dados guardados precisaremos das seguintes tabelas:
    • tb_heroi -> Guardará os atributos principais do herói, como descrito acima.
    • tb_classe_heroi -> Guardará os atributos das Classes, como descrito acima.
    • tb_raca_heroi -> Guardará os atributos das raças, como descrito acima.
    • tb_status -> Guardará a lista de status possíveis.
    Observemos também que só uma das três tabelas receberá atualizações constantes durante o jogo. Apenas a tb_heroi. Para facilitar a sua vida, junto com o pacote de arquivos listados lá em cima estarão mais tres arquivos:
    • Tabelas.txt -> Tabelas necessárias
    • Querys.txt -> Todas as Querys possíveis nas tabelas criadas
    • Cargas.txt -> Dados Iniciais para o exemplo.
    Você pode dizer assim: “Mas porque você não manda o BD já com as tabelas criadas e a carga aplicada? Porque eu tenho que fazer isso?” Por algo bem simples:
    Eu sei como fazer, a qualquer hora e lugar. E você, sabe? Se sim, ótimo, se não, é a sua oportunidade de estar aprendendo.
    Em primeiro lugar, abra o SQLite Browser. A tela dele é esta:
    GM RPG - 4º Lição - Atributos do Herói - 1º parte 40860565
    Clique na pastinha, e abra nosso db.db. Na segunda aba, na Execute SQL, é aonde aplicaremos todos os scripts. Primeiro, abra o arquivo Tabelas.txt, selecione CREATE TABLE por CREATE TABLE separadamente e cole na tela, e clique em executar. Um detalhe a respeito dos Scripts é que eles estão separados por uma barra de ****, então, não pegue mais nada além disso.
    Outro detalhe é a ordem. Para que tudo dê certo, é necessário que você execute cada um como estão nos arquivos.
    Ao terminar o arquivo Tabelas.txt, abra o arquivo Cargas.txt e faça da mesma forma.
    Ao terminar, seu SQLite Browser deve mostrar as 4 tabelas criadas na primeira aba, assim:
    GM RPG - 4º Lição - Atributos do Herói - 1º parte 49186961
    E na aba Browse Data todas as tabelas devem ter dois registros, como esta:
    GM RPG - 4º Lição - Atributos do Herói - 1º parte 78918157
    A parte de banco está inicialmente feita. Temos dois heróis, cada um de uma classe, de uma raça e uma tabela com dois status diferentes. Você deve ter notado que guardamos na tb_heroi apenas os códigos de Classe, raça e Status.
    Ao se utilizar índices ( o que acabamos de fazer ) evitamos redundância de dados, além de otimizar os processos e facilitar na alteração dos mesmos. Você deve estar se perguntando:
    “Mas onde entra essa bagaça toda no meu game?”
    Para ser usado pelo GM, faremos as consultas, usando os modelos de SQL no arquivo de querys. Carregaremos objetos ds_grid com os dados no início do jogo, e os usaremos enquanto o jogo estiver rodando.
    Ao usar BDs, estamos poupando o uso de arquivos texto, e conseqüentemente expondo nossos dados internos do jogo a qualquer um. Isso não impede que alguém que saiba que você usou uma base SQLite baixe o SQLite Browser e acesse os mesmos, mas impede que pelo menos os jogadores menos curiosos tentem mexer no seu game.
    Vamos ao que interessa.
    Se achar melhor, use o projeto criado para o menu, ou crie um novo. Copie para o diretório do projeto os arquivos hat.dll, db.db e importe o SQLite.gml. Dentro do seu projeto, a estrutura de scripts deve estar assim:
    GM RPG - 4º Lição - Atributos do Herói - 1º parte 18211114
    Se estiver tudo como foi dito logo acima, crie um objeto, chame-o de objQuery, adicione dois eventos, um Create e um press . Logo a seguir o script de cada um:
    Create:
    Código:
    sqlite_init();
    Press :
    Código:
    grid = sqlite_query("SELECT cod_heroi, nom_heroi from tb_heroi",2);
    Se você colocar seu objeto na room agora e rodar, nada vai acontecer. Porque? Por que você apenas preencheu um objeto grid com o que veio do BD.
    Você não pediu para mostrar nada, certo? Que tal desenharmos na tela o que foi recuperado? Antes de mais nada, adicione isto ao evento Create:
    Código:
    grid = ds_grid_create(0,0);
    Agora, adicione um Evento Draw, e coloque este código:
    [code]if ds_grid_height(grid) > 0 {
    for(i=0;i

      Data/hora atual: Sex maio 17, 2024 1:06 am