Curso GM Online - 5º Lição - 3º Parte - Banco de Dados

    Compartilhe
    avatar
    jiraya
    Administrador
    Administrador

    Mensagens : 1299
    Credibilidade : 54

    Curso GM Online - 5º Lição - 3º Parte - Banco de Dados

    Mensagem por jiraya em Sab Jan 08, 2011 12:17 pm

    [Autor=João Neto ]
    Começo esta terceira Parte com uma boa notícia. Encontrei uma versão de patch estável para o Game Maker 7. Com isso, poderei dar continuidade ao curso online usando ele, para aqueles que o tem, com certeza será maravilhoso, para aqueles que usam o 6, não se desanimem, pois a programação será a mesma para os dois.
    Na lição passada, fizemos uma tela de login, usando scripts e uma validação se os campos foram preenchidos.
    Hoje, faremos a parte mais interessante e com certeza a mais esperada por todos.
    Usando a GMSQL, conectaremos na base MySQL, ensinada como configurar e criar a tabela de login na primeira parte desta quinta aula, Validaremos a existência do Login e senha.
    De início, baixe a DLL e o pacote de scripts Aqui.
    Vamos aproveitar o exemplo feito na aula passada. Se você não o construiu, pare, volte na aula e o faça, pois ele será necessário aqui.
    1 º passo importe o script GMSQL.gml para o projeto. Eu aconselho a criar uma pasta para os mesmos(no GM7 esse passo da pasta é automático). Depois, Copie as 3 Dlls que o acompanham para o mesmo diretório do projeto. Segue como ficará dentro do seu projeto e na pasta dele:


    O que faremos agora será executar os seguintes passos:

    • Ao Clicar no botão de login validar se Login e senha foram preenchidos
    • Se sim, Instaciaremos a GMSQL.
    • Faremos conexão com a mesma.
    • Passaremos a Query(Linha SQL) para o banco executaremos.
    • Se o retorno for verdadeiro
    • Daremos uma mensagem de seja bem vindo ao usuário
    • Se o retorno for falso
    • Daremos uma mensagem de Login ou senha inválidos
    • Se não, Daremos uma mensagem de Falha de Conexão.

    Vamos começar. Crie um script de nome scr_login. Nele, adicione o seguinte Código:
    Código:
    //capturamos os valores passados
    login = argument0;
    senha = argument1;
    //montamos a Query
    Query = "SELECT cod_user FROM tb_user WHERE nom_user = '"+login+"' AND cod_nivel = "+senha;
    //Tentamos instanciar a DLL
    if gmsql_init(){
        //Efetuamos a Conexão com o Banco de dados
        if gmsql_connect('Localhost:3306','root','root','db_game'){
            //Validamos se a Query foi executada
            if gmsql_query(Query)=1{
                //Guardamos o resultado
                gmsql_storeresult();
                //Validamos se houve retorno do valor pedido
                if (gmsql_getvaluexy(0,0)) != ""{
                //Fechamos a Conexão e Desinstanciamos a DLL.
                    gmsql_close();
                    return true;
                }
                gmsql_close();
                return false;
            }
            gmsql_close();
            return false;
        }
    }
    MAS O QUE FOI FEITO AQUI??
    Lembra-se da 1º parte desta Aula, onde fizemos uma query diretamente no SQL Yog? Nela fizemos uma query simples, usando * que indica ALL, todos os campos da tabela.
    Agora, nossa query possui duas peculiaridades:

    • Pedimos no Select apenas o campo Cod_user


    • Passamos como parâmetro(Clausula WHERE) o nome de usuário e a senha. Estaremos usando o Cod_nivel para isso, mas nada impede a criação de um campo senha que seja alfa-numérico.
    Após isso, observe que se o script de inicialização da GMSQL retornar true entramos na conexão.
    No script de conexão, passamos IP:Porta, usuário,Senha,Base. Se este também retornar true, passamos para o script de Query, onde passamos como parâmetro nosso SQL montado lá em cima.
    Este por sua vez, deve retornar 1. Retornando, validamos se houve retorno de dados. Se sim, devolvemos true na função, caso contrário devolvemos false.
    Agora, iremos aplicar o script. Abra o objButton, construído na lição passada. Se você se lembra bem, ele possui o seguinte script no evento Draw:
    Código:

    if(button(x,y,"Login")){
        if global.login == "" {
            show_message("Preencha seu Login.")
            exit;
        }
        if global.senha == "" {
            show_message("Preencha sua Senha.")
            exit;
        }
       
    }
    Iremos complementá-lo, de forma a executar nosso scr_login. Com certeza, você já sabem como fazer o mesmo. Aqui vai o script completo:
    Código:

    if(button(x,y,"Login")){
        if global.login == "" {
            show_message("Preencha seu Login.")
            exit;
        }
        if global.senha == "" {
            show_message("Preencha sua Senha.")
            exit;
        }
        if scr_login(global.login,global.senha){
            show_message("Seja bem vindo.")
        }
        else{
            show_message("Usuário ou senha inválidos.")
        }
       
    }
    Observe que ficou bem simples. Uma das grandes vantagens de usarmos scripts da pasta de Scripts é que nosso código dentro dos objetos vai ficando limpo, além de reaproveitarmos o mesmo se necessário.
    Uma outra peculiaridade são os parâmetros na função gmsql_connect. Observe que passamos para ele Localhost:3306. Esta configuração de IP:Porta pode levar qualquer endereço e qualquer porta, fazendo com que seu banco MySQL esteja em qualquer lugar, e mesmo assim você terá acesso a ele, seja diretamente como fizemos aqui, ou através do Server do jogo.
    Se tudo estiver OK na sua máquina (MySQL Instalado, Configurações feitas, Tabela Criada, Registro Inserido) Basta executar o jogo e tentar logar.
    Se você digitar corretamente os dados( Lembrando que nome, Nome e NOME dá na mesma para o banco) deverá mostrar a mensagem de sucesso e, caso digitar errado, mostrar a mensagem de falha.
    Para quem achou que seria algo completamente impossível, aí está. Um Login que valida se digitou, conecta-se a uma base MySQL e valida se o login existe na base.
    Eu tenho certeza que você está pensando: “ E agora??”
    Bem, agora tudo começa. Veja o que já estudamos: O uso da SOC, a criação de Clients de movimento, o uso da GMSQL, uma criação de Login. Veja como se encaixarmos as peças, estamos indo em direção a um game Online.
    Na Próxima lição: Começaremos a construir nosso Próprio Server e aprenderemos mais sobre o uso da GMSQL.
    Até lá.

      Data/hora atual: Qua Dez 19, 2018 11:57 am