[Ajuda] Tem falha minha aqui? MYSQL
#1

Estou tentando fazer um sistema de mysql funcionar, olhando a wiki e alguns codigos de base, estб compilando, mas estou com um problema:
Quando eu registro no servidor, a conta nгo й salva no banco de dados !! Hб algo de errado aqui?

DB:
http://i.imgur.com/GII8c57.png
http://i.imgur.com/lTC3ev5.png

Onde eu usar as funзхes :

public OnPlayerDisconnect(playerid, reason)
pawn Код:
if(Logado[playerid] == 1) {
        SaveStats(playerid);
    }
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
pawn Код:
if(dialogid == DIALOG_REGISTER)
    {
        if(response)
        {
            if(!strlen(inputtext) || strlen(inputtext) > 128)
            {
                new string1[128];
                SendClientMessage(playerid, COLOR_RED, "[ERROR]: You must insert a password between 1-128 characters!");
                format(string1, sizeof(string1), "Welcome %s\nPlease register to contiune.",PlayerName(playerid));
                ShowPlayerDialog(playerid, DIALOG_REGISTER, DIALOG_STYLE_PASSWORD, "Register", string1, "Register", "Quit");
            }
            else if(strlen(inputtext) > 0 && strlen(inputtext) < 128)
            {
                new escpass[100];
                mysql_escape_string(inputtext, escpass);
                MySQL_Register(playerid, escpass);
            }
        }
        if(!response)
        {
            ShowPlayerDialog(playerid, DIALOG_REGISTER, DIALOG_STYLE_MSGBOX, "Kicked - Notice", "You must register to play", "Close", "");
            Kick(playerid);
        }
    }

    if(dialogid == DIALOG_LOGIN)
    {
        if(!response)
        {
            ShowPlayerDialog(playerid, DIALOG_REGISTER, DIALOG_STYLE_MSGBOX, "Kicked - Notice", "You must login to play", "Close", "");
            Kick(playerid);
        }
        if(response)
        {
            new query[200], rows, fields;
            mysql_format(ConnectSQL, query, sizeof(query), "SELECT `Username` FROM players WHERE Username = '%s' AND Password = SHA1('%e')", PlayerName(playerid), inputtext);
            mysql_query(ConnectSQL, query);
            cache_get_data(rows, fields);

            if(rows) MySQL_Login(playerid);

            if(!rows)
            {
                InvalidLogins[playerid]++;
                if(InvalidLogins[playerid]==4)
                {
                    Kick(playerid);
                }
                else
                {
                    new str1[256];
                    format(str1,sizeof(str1),"{FFFF00}Wrong password Attempt\n\n{00CC00}Dear %s, Enter Your Password:\n{FFFF00}Login chance: (%d/4)",PlayerName(playerid),4-InvalidLogins[playerid]);
                    ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_PASSWORD,"Login Panel",str1,"Login","Quit");
                }
            }

        }
    }
pawn Код:
stock MySQL_Register(playerid, passwordstring[])
{
    new Query[512], IP[16];
    GetPlayerIp(playerid, IP, sizeof(IP));
    strcat(Query,"INSERT INTO `players`(`Username`,`Senha`)");
    strcat(Query,"VALUES ('%s', SHA1('%s'),0,0,0,0,0,0,0,0,0,0,'%d/%d/%d')");
    mysql_format(ConnectSQL,Query,sizeof(Query),Query,PlayerName(playerid),passwordstring);
    mysql_query(ConnectSQL,Query,false);
    Logado[playerid] = 1;
    GivePlayerMoney(playerid, 5000);
    return 1;
}

stock MySQL_Login(playerid)
{
    if(IsPlayerConnected(playerid))
    {
        new Query[512], savestr[50], rows, fields;
        mysql_format(ConnectSQL,Query, sizeof(Query), "SELECT * FROM `players` WHERE `Username` = '%s'", PlayerName(playerid));
        mysql_query(ConnectSQL,Query);
        cache_get_data(rows, fields);
        if(rows)
        {
            cache_get_field_content(0, "money", savestr);           money[playerid] = strval(savestr);
            cache_get_field_content(0, "admin", savestr);           admin[playerid] = strval(savestr);
            cache_get_field_content(0, "VIP", savestr);             VIP[playerid] = strval(savestr);
            cache_get_field_content(0, "deaths", savestr);          deaths[playerid] = strval(savestr);
            Logado[playerid] = 1;
        }
        Logado[playerid] = 1;
    }
    return 1;
}
Essa parte eu peguei de base, nгo entendo, acho que й parada de encryptaзгo
pode ser aqui pq nгo entendo essa parte
pawn Код:
stock MySQL_Register(playerid, passwordstring[])
{
    new Query[512], IP[16];
    GetPlayerIp(playerid, IP, sizeof(IP));
    strcat(Query,"INSERT INTO `players`(`Username`,`Senha`)");
    strcat(Query,"VALUES ('%s', SHA1('%s'),0,0,0,0,0,0,0,0,0,0,'%d/%d/%d')");
    mysql_format(ConnectSQL,Query,sizeof(Query),Query,PlayerName(playerid),passwordstring);
    mysql_query(ConnectSQL,Query,false);
Reply
#2

Tenta:
pawn Код:
if(dialogid == DIALOG_REGISTER)
    {
        if(response)
        {
            if(!strlen(inputtext) || strlen(inputtext) > 128)
            {
                new string1[128];
                SendClientMessage(playerid, COLOR_RED, "[ERROR]: You must insert a password between 1-128 characters!");
                format(string1, sizeof(string1), "Welcome %s\nPlease register to contiune.",PlayerName(playerid));
                ShowPlayerDialog(playerid, DIALOG_REGISTER, DIALOG_STYLE_PASSWORD, "Register", string1, "Register", "Quit");
            }
            else if(strlen(inputtext) > 0 && strlen(inputtext) < 128)
            {
                //new escpass[100];
                //mysql_escape_string(inputtext, escpass);
                MySQL_Register(playerid, inputtext);
            }
        }
        if(!response)
        {
            ShowPlayerDialog(playerid, DIALOG_REGISTER, DIALOG_STYLE_MSGBOX, "Kicked - Notice", "You must register to play", "Close", "");
            Kick(playerid);
        }
    }
Nгo sei se vai resolver, eu jб tive problemas no sqlite, o mesmo problema com o seu e era culpa do Escape.
Reply
#3

@MultiKill nada, nгo ta registrando a conta lб no banco de dados
Eu registro no jogo, logo e tal, msm coisa, mas no phpmyadmin lб nгo entra nada, ai da como se a conta nгo tive-se registrado
Reply
#4

Preocupante o uso dos vetores...

Anyway os erros estгo aqui:

pawn Код:
stock MySQL_Register(playerid, passwordstring[])
{
    new Query[512], IP[16];
    GetPlayerIp(playerid, IP, sizeof(IP));
    strcat(Query,"INSERT INTO `players`(`Username`,`Senha`)");
    strcat(Query,"VALUES ('%s', SHA1('%s'),0,0,0,0,0,0,0,0,0,0,'%d/%d/%d')");
    mysql_format(ConnectSQL,Query,sizeof(Query),Query,PlayerName(playerid),passwordstring);
    mysql_query(ConnectSQL,Query,false);
    Logado[playerid] = 1;
    GivePlayerMoney(playerid, 5000);
    return 1;
}
Traduzindo para o Pseudo-cуdigo:

INSERIR DENTRO DA TABELA players CAMPOS A SER INSERIDOS: (Nome, Senha) Valores ( 'Nomedele', 'Senha', 0, 0, 0,0 , 0);

Mas e os valores que vocк colocou 0? Tem que colocar, oque vai colocar, e tentar preencher todo o campo da tabela, ou seja se vocк criou a tabela assim:

-Nome
-Senha
-Admin
-Matou
-Mortes

Vocк "Obrigatoriamente" Terб que preencher os campos vazios, tente fazer isso, se nгo voltar a funcionar, passe o Log do MySQL.

Por exemplo:

pawn Код:
INSERT INTO `players`(`Username`,`Senha`, `Admin`, `Matou`, `Mortes`) VALUES ('%s', '%s', %d, %d, %d)
Reply
#5

Erro:
pawn Код:
strcat(Query,"VALUES ('%e', '%s', 500, 0, 0, 0)", PlayerName(playerid), passwordstring, money[playerid], kills[playerid], deaths[playerid]);
error 035: argument type mismatch (argument 3)


Agora ia ficar certo tirando esse erro?
pawn Код:
stock MySQL_Register(playerid, passwordstring[])
{
    new Query[512];
    strcat(Query,"INSERT INTO `players` (`Username`, `Password`, `money`, `admin`, `kills` ,`deaths`)");
    strcat(Query,"VALUES ('%e', '%s', 500, 0, 0, 0)", PlayerName(playerid), passwordstring, money[playerid], kills[playerid], deaths[playerid]);
   
    mysql_format(ConnectSQL,Query,sizeof(Query),Query,PlayerName(playerid),passwordstring);
    mysql_query(ConnectSQL,Query,false);
   
    Logado[playerid] = 1;
    GivePlayerMoney(playerid, 5000);
    return 1;
}
Pq? %e
Todo lugar q eu procurava tava %e nгo seria %s? (jб tentei pra ver se era isso tbm nгo compilou)
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)