Ajuda [MySQL]
#1

Bem estou querendo criar um gamemode mysql mas primeiro preciso concluir meu estudo sobre o uso do mesmo.

Estava criando um sistema de registro, e quando logo pela primeira vez, nao aparece pra eu me registrar, mas sim pra eu logar, eis o codigo abaixo

pawn Код:
#include <a_samp>
#include <a_mysql>

main(){}

public OnGameModeInit()
{
    mysql_connect("localhost","root","Vortex RPG","");
    mysql_query("CREATE TABLE IF NOT EXISTS pinfo (user VARCHAR(24), password VARCHAR(50), score INT(20), dinheiro INT(20) )");
    return 1;
}

public OnPlayerConnect(playerid)
{
    new escname[24];
    new query[700];
    mysql_real_escape_string(GetName(playerid),escname);
    format(query,sizeof(query),"SELECT 'user' FROM 'pinfo' WHERE 'user' = '%s'",escname);
    mysql_query(query);
    mysql_store_result();
    if(mysql_num_rows() != 0)
    {
        ShowPlayerDialog(playerid,2,1,"Login","Login","Login","Sair");
    }
    else
    {
        ShowPlayerDialog(playerid,1,1,"Registro","Registro","Registrar","Sair");
    }
    mysql_free_result();
    return 1;
}

public OnPlayerDisconnect(playerid)
{
    new query[700];
    new escname[24];
    mysql_real_escape_string(GetName(playerid),escname);
    format(query,sizeof(query),"UPDATE 'pinfo' SET score = %d, dinheiro = %d WHERE user = %s",GetPlayerScore(playerid),GetPlayerMoney(playerid),escname);
    mysql_query(query);
    return 1;
}

public OnDialogResponse(playerid,dialogid,response,listitem,inputtext[])
{
    if(dialogid == 1)
    {
        if(!response)
            return Kick(playerid);
        if(response)
        {
            if(!strlen(inputtext[0]))
                return Kick(playerid);
            new escname[24];
            new escpass[50];
            new query[700];
            mysql_real_escape_string(GetName(playerid),escname);
            mysql_real_escape_string(inputtext,escpass);
            format(query,sizeof(query),"INSERT INTO 'pinfo' (user, password, score, dinheiro) VALUES('%s','%s',5,5000)",escname,escpass);
            mysql_query(query);
            return 1;
        }
    }
    if(dialogid == 2)
    {
        if(!response)
            return Kick(playerid);
        if(response)
        {
            if(!strlen(inputtext[0]))
                return Kick(playerid);
            new escname[24];
            new escpass[50];
            mysql_real_escape_string(GetName(playerid),escname);
            mysql_real_escape_string(inputtext,escpass);
            new query[700];
            format(query,sizeof(query),"SELECT 'password' FROM 'pinfo' WHERE user = '%s' AND password = '%s'",escname,escpass);
            mysql_query(query);
            mysql_store_result();
            if(mysql_num_rows() != 0)
            {
                format(query,sizeof(query),"SELECT * FROM 'pinfo' WHERE 'user' = '%s'",escname);
                mysql_query(query);
                mysql_store_result();
                new string[128];
                while(mysql_fetch_row_format(query,"|"))
                {
                    mysql_fetch_field_row(string,"score");
                    SetPlayerScore(playerid,strval(string));
                    mysql_fetch_field_row(string,"dinheiro");
                    GivePlayerMoney(playerid,strval(string));
                }
            }
            else
            {
                ShowPlayerDialog(playerid,2,1,"Login","Senha","Logar","Sair");
            }
            mysql_free_result();
            return 1;
        }
    }
    return 1;
}

stock GetName(playerid)
{
    new n[24];
    GetPlayerName(playerid,n,sizeof(n));
    return n;
}
Queria saber se hб algum erro no cуdigo ou se o problema estб em outro lugar.
Reply
#2

Sorry o double post


Alguem?
Reply
#3

Amanhг te ajudo, flw
Reply
#4

Deixa msn ae se puder
Reply
#5

pawn Код:
public OnPlayerConnect(playerid)
{
    new escname[24];
    new query[700];
    GetPlayerName(playerid,query,50);
    format(query,sizeof(query),"SELECT user FROM pinfo WHERE user = '%s'",query);
    mysql_query(query);
    mysql_store_result();
    if(mysql_num_rows())
    {
        ShowPlayerDialog(playerid,2,1,"Login","Login","Login","Sair");
    }else{
        ShowPlayerDialog(playerid,1,1,"Registro","Registro","Registrar","Sair");
    }
    mysql_free_result();
    return 1;
}
isto irб resolver seu problema quando o jogador conectar.
te +
Reply
#6

Vк se vai.
Dei uma pequena "arrumada"
pawn Код:
#include <a_samp>
#include <a_mysql>

main(){}

public OnGameModeInit()
{
    mysql_connect("localhost","root","Vortex RPG","");
    mysql_query("CREATE TABLE IF NOT EXISTS pinfo (user VARCHAR(24), password VARCHAR(50), score INT(20), dinheiro INT(20) )");
    return 1;
}

public OnPlayerConnect(playerid)
{
    new escname[24], query[128];
    mysql_real_escape_string(GetName(playerid),escname);
    format(query,sizeof(query),"SELECT user FROM pinfo WHERE user = '%s'", escname); // Sу precisa usar as aspas simples quando for formatar o nome %s
    mysql_query(query);
    mysql_store_result();
    if(mysql_num_rows()) {
        ShowPlayerDialog(playerid,2,1,"Login","Login","Login","Sair");
    }
    else {
        ShowPlayerDialog(playerid,1,1,"Registro","Registro","Registrar","Sair");
    }
    mysql_free_result();
    return 1;
}

public OnPlayerDisconnect(playerid)
{
    new query[200], escname[24];
    mysql_real_escape_string(GetName(playerid),escname);
    format(query,sizeof(query),"UPDATE pinfo SET score = '%d', dinheiro = '%d' WHERE user = '%s'",GetPlayerScore(playerid),GetPlayerMoney(playerid),escname);
    mysql_query(query);
    return 1;
}

public OnDialogResponse(playerid,dialogid,response,listitem,inputtext[])
{
    if(dialogid == 1)
    {
        if(!response)
            return Kick(playerid);
        if(response)
        {
            if(!strlen(inputtext[0]))
                return Kick(playerid);
            new escname[24];
            new escpass[50];
            new query[250];
            mysql_real_escape_string(GetName(playerid),escname);
            mysql_real_escape_string(inputtext,escpass);
            format(query,sizeof(query),"INSERT INTO pinfo (user, password, score, dinheiro) VALUES('%s','%s',5,5000)", escname, escpass);
            mysql_query(query);
            return 1;
        }
    }
    if(dialogid == 2)
    {
        if(!response)
            return Kick(playerid);
        if(response)
        {
            if(!strlen(inputtext[0]))
                return Kick(playerid);
            new escname[24];
            new escpass[50];
            mysql_real_escape_string(GetName(playerid),escname);
            mysql_real_escape_string(inputtext,escpass);
            new query[250];
            format(query,sizeof(query),"SELECT * FROM pinfo WHERE user = '%s' AND password = '%s'",escname,escpass);
            mysql_query(query); // Ele vai pesquinsar na database o usuario e a senha que o cara coloco, se nгo confirmar com o usuario e senha, vai dar num_rows 0
            mysql_store_result();
            if(mysql_num_rows())
            {
                format(query,sizeof(query),"SELECT * FROM pinfo WHERE user = '%s'",escname);
                mysql_query(query);
                mysql_store_result();
                new string[128];
                while(mysql_fetch_row_format(query,"|"))
                {
                    mysql_fetch_field_row(string,"score");
                    SetPlayerScore(playerid,strval(string));
                    mysql_fetch_field_row(string,"dinheiro");
                    GivePlayerMoney(playerid,strval(string));
                }
            }
            else
            {
                SendClientMessage(playerid, -1, "Senha e password nгo conferem!");
                Kick(playerid);
               
            }
            mysql_free_result();
            return 1;
        }
    }
    return 1;
}

stock GetName(playerid)
{
    new n[24];
    GetPlayerName(playerid,n,sizeof(n));
    return n;
}

/*stock GetName(playerid) // Vocк pode usar essa funзгo assim tambйm:
{
    new n[24], escname[24];
    GetPlayerName(playerid,n,sizeof(n));
    mysql_real_escape_string(n, escname);
    return escname;
}*/
Vocк tava usando 'user'
No correto seria, `user`
E cuidado com as querys grandes new query[700]; etc.
Nгo fica criando a database pelo script, faz uma logo no phpmyadmin.
Reply
#7

n funcinou ricop, aparece logo o dialog de login pra mim
Reply
#8

Troca:
pawn Код:
public OnPlayerConnect(playerid)
{
    new escname[24], query[128];
    mysql_real_escape_string(GetName(playerid),escname);
    format(query,sizeof(query),"SELECT user FROM pinfo WHERE user = '%s'", escname); // Sу precisa usar as aspas simples quando for formatar o nome %s
    mysql_query(query);
    mysql_store_result();
    if(mysql_num_rows()) {
        ShowPlayerDialog(playerid,2,1,"Login","Login","Login","Sair");
    }
    else {
        ShowPlayerDialog(playerid,1,1,"Registro","Registro","Registrar","Sair");
    }
    mysql_free_result();
    return 1;
}
para
pawn Код:
public OnPlayerConnect(playerid)
{
    new escname[24], query[128];
    mysql_real_escape_string(GetName(playerid),escname);
    format(query,sizeof(query),"SELECT * FROM pinfo WHERE user = '%s'", escname); // Sу precisa usar as aspas simples quando for formatar o nome %s
    mysql_query(query);
    mysql_store_result();
    if(mysql_num_rows()) {
        ShowPlayerDialog(playerid,2,1,"Login","Login","Login","Sair");
    }
    else {
        ShowPlayerDialog(playerid,1,1,"Registro","Registro","Registrar","Sair");
    }
    mysql_free_result();
    return 1;
}
Reply
#9

vlw ricop funcionou +rep
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)