[Ajuda] Problemas no MySQL
#1

Bom dia pessoal, estou com um problema no meu sistema de salvamento com MySQL.

Seguinte, o sistema cria a tabela de boa, porem quando o player conecta, ele deveria verificar se o player existe, porem ele nгo verifica, na verdade creio que a funзгo nem seja chamada.

Codigo pra chamar a funзгo que verifica:

PHP Code:
new Query[90];
mysql_format(IDConexaoQuerysizeof(Query), "SELECT `Senha`, `ID` FROM `users` WHERE `Nome`='%s'"Name(playerid));
mysql_tquery(IDConexaoQuery"VerificarContas""i"playerid); 
Codigo da funзгo que verifica:

PHP Code:
public VerificarContas(playerid)
{
    if(
cache_num_rows() > 0)
    {
        
cache_get_value(0"Senha"PlayerLogin[playerid][Senha], 20);
        
PlayerTextDrawColor(playeridTextdraw70x00FF00FF);
        
VariavelPlayer[playerid][temAcc] = 1;
    }else{
        
PlayerTextDrawColor(playeridTextdraw70xFF0000FF);
        
VariavelPlayer[playerid][temAcc] = 0;
    }
    return 
1;

O if dessa funзгo nem й chamado, pois ele nгo muda a cor da textdraw nem pra um nem pra outro.

Й isso, vlw.
Reply
#2

Vocк ta mostrando ela dnv pro player? PlayerTextDrawShow...
Reply
#3

Use um debug para verificar se mysql_tquery estб sendo chamada e tambйm a callback.
Reply
#4

Quote:
Originally Posted by Felipealves
View Post
Vocк ta mostrando ela dnv pro player? PlayerTextDrawShow...
Bom, consegui resolver esse problema da cor da textdraw.

Quote:
Originally Posted by ipsLuan
View Post
Use um debug para verificar se mysql_tquery estб sendo chamada e tambйm a callback.
Entгo, a funзгo ta funcionando agr, n sei bem o porquк, masss.

Enfim, tenho outro problema, creio que esteja tudo interligado. O mysql nгo salva o player, nгo registra no banco de dados. O player atй loga, mas quando reloga aparece que nгo estб registrado. Verifiquei no banco de dados manualmente, e ele nгo salvou nada.

Comando que salva no banco:

PHP Code:
mysql_format(IDConexaoQuerysizeof(Query), "INSERT INTO `users`(`Nome`, `Senha`) VALUES ('%s', '%s')"Name(playerid), senhaplayer[playerid]);
mysql_tquery(IDConexaoQuery"DadosRegistrados""i"playerid); 
PHP Code:
public DadosRegistrados(playerid)
{
    
PlayerLogin[playerid][ID] = cache_insert_id();
    
printf("-> Nova conta registrada ID: %d"PlayerLogin[playerid][ID]);
    return 
1;

Reply
#5

Mande o salvamento.
Reply
#6

Para registro e login:

PHP Code:
if(playertextid == Textdraw16){
        
ocultartdlogin(playerid);
        
ShowPlayerDialog(playeridDialogSenhaDIALOG_STYLE_PASSWORD"Coloque sua senha""Sua senha deve conter no mнnimo 5 digitos\ne no maximo 20 digitos!""Ok""");
    }
    if(
playertextid == Textdraw13){
        if(
VariavelPlayer[playerid][SenhaV] == 1){
            if(
VariavelPlayer[playerid][temAcc]) {SendClientMessage(playerid, -1"Esta conta jб existe!");}else{
                new 
Query[200];
                
mysql_format(IDConexaoQuerysizeof(Query), "INSERT INTO `users`(`Nome`, `Senha`) VALUES ('%s', '%s')"Name(playerid), senhaplayer[playerid]);
                
mysql_tquery(IDConexaoQuery"DadosRegistrados""i"playerid);
                
                
PlayerLogin[playerid][Skin] = 115;
                
PlayerLogin[playerid][Admin] = 0;
                
PlayerLogin[playerid][horav] = 0;
                
PlayerLogin[playerid][mimv] = 0;
                
PlayerLogin[playerid][segv] = 0;
                
PlayerLogin[playerid][matout] = 0;
                
PlayerLogin[playerid][morreut] = 0;
                
PlayerLogin[playerid][matou] = 0;
                
PlayerLogin[playerid][matoubandidos] = 0;
                
PlayerLogin[playerid][matouz] = 0;
                
PlayerLogin[playerid][vida] = 12000;
                
PlayerLogin[playerid][temperatura] = 37.0;
                
PlayerLogin[playerid][fome] = 0;
                
PlayerLogin[playerid][sede] = 0;
                
                
                
PlayerLogin[playerid][spawnx] = px[0];
                
PlayerLogin[playerid][spawny] = px[1];
                
PlayerLogin[playerid][spawnz] = px[2];
                
SendClientMessage(playerid, -1"{00FF00}[SERVER]>> Sua Conta foi Criada! Clique em Logar!");
                
VariavelPlayer[playerid][temAcc] = 1;
            }
        }else{
SendClientMessage(playerid, -1"[SERVER]>> Senha Invбlida!");}
    }
    if(
playertextid == Textdraw14){
        if(
VariavelPlayer[playerid][SenhaV] == 1){
            if( 
VariavelPlayer[playerid][temAcc] ){
                if( 
strcmpsenhaplayer[playerid], PlayerLogin[playerid][Senha], false) == ){
                    new 
Query[70];
                    
mysql_format(IDConexaoQuerysizeof(Query), "SELECT * FROM `users` WHERE Nome='%s'"Name(playerid));
                    
mysql_tquery(IDConexaoQuery"CarregarContas""d"playerid);
                    
SendClientMessage(playerid, -1"{00FF00}[SERVER]>> Logado com sucesso!");
                    
SetSpawnInfo(playerid0PlayerLogin[playerid][Skin], 1110000000);
                    
SpawnPlayer(playerid);
                    
VariavelPlayer[playerid][SenhaV] = 0;
                }else{
SendClientMessage(playerid, -1"{FF0000}[SERVER]>> Senha Incorreta!");}
            }else{
SendClientMessage(playerid, -1"{FF0000}[SERVER]>> Esta conta nгo estб registrada!");}
        }else{
SendClientMessage(playerid, -1"[SERVER]>> Senha Invбlida!");}
    } 
Outras funзхes:

PHP Code:
public CarregarContas(playerid)
{
    
cache_get_value_int(0"ID"PlayerLogin[playerid][ID]);
    
cache_get_value_int(0"Skin"PlayerLogin[playerid][Skin]);
    
cache_get_value_int(0"Admin"PlayerLogin[playerid][Admin]);
    
cache_get_value_int(0"horav"PlayerLogin[playerid][horav]);
    
cache_get_value_int(0"mimv"PlayerLogin[playerid][mimv]);
    
cache_get_value_int(0"segv"PlayerLogin[playerid][segv]);
    
cache_get_value_int(0"matout"PlayerLogin[playerid][matout]);
    
cache_get_value_int(0"morreut"PlayerLogin[playerid][morreut]);
    
cache_get_value_int(0"matou"PlayerLogin[playerid][matou]);
    
cache_get_value_int(0"matoubandidos"PlayerLogin[playerid][matoubandidos]);
    
cache_get_value_int(0"matouz"PlayerLogin[playerid][matouz]);
    
cache_get_value_int(0"vida"PlayerLogin[playerid][vida]);
    
cache_get_value_float(0"temperatura"PlayerLogin[playerid][temperatura]);
    
cache_get_value_int(0"fome"PlayerLogin[playerid][fome]);
    
cache_get_value_int(0"sede"PlayerLogin[playerid][sede]);
    
cache_get_value_float(0"spawnx"PlayerLogin[playerid][spawnx]);
    
cache_get_value_float(0"spawny"PlayerLogin[playerid][spawny]);
    
cache_get_value_float(0"spawnz"PlayerLogin[playerid][spawnz]);
    return 
1;
}
stock SalvarDados(playerid)
{
    new 
Query[600];
    
mysql_format(IDConexaoQuerysizeof(Query), "UPDATE `users` SET `Skin`=%d, `Admin`=%d, `horav`=%d, `mimv`=%d, `segv`=%d, `matout`=%d, `morreut`=%d, `matou`=%d, `matobandidos`=%d, `matouz`=%d, `vida`=%d, `temperatura`=%f, `fome`=%d, `sede`=%d, `spawnx`=%f, `spawny`=%f, `spawnz`=%f WHERE `Nome`=%s",
    
PlayerLogin[playerid][Skin],
    
PlayerLogin[playerid][Admin],
    
PlayerLogin[playerid][horav],
    
PlayerLogin[playerid][mimv],
    
PlayerLogin[playerid][segv],
    
PlayerLogin[playerid][matout],
    
PlayerLogin[playerid][morreut],
    
PlayerLogin[playerid][matou],
    
PlayerLogin[playerid][matoubandidos],
    
PlayerLogin[playerid][matouz],
    
PlayerLogin[playerid][vida],
    
PlayerLogin[playerid][temperatura],
    
PlayerLogin[playerid][fome],
    
PlayerLogin[playerid][sede],
    
PlayerLogin[playerid][spawnx],
    
PlayerLogin[playerid][spawny],
    
PlayerLogin[playerid][spawnz],
    
Name(playerid));
    return 
1;
}
forward DadosRegistrados(playerid);
public 
DadosRegistrados(playerid)
{
    
PlayerLogin[playerid][ID] = cache_insert_id();
    
printf("-> Nova conta registrada ID: %d"PlayerLogin[playerid][ID]);
    return 
1;

Criaзгo do banco:

PHP Code:
public MySQL_Start(){
    
IDConexao mysql_connect(HOST,USUARIO,SENHA,DATABASE);
    if(!
IDConexao)
        return print(
"Nгo foi possivel conectar a database, verifique as definiзхes novamente.");
    else {
        
mysql_query(IDConexao,"CREATE TABLE IF NOT EXISTS `users`(\
        `ID`int AUTO_INCREMENT PRIMARY KEY,\
         `Nome`varchar(24) NOT NULL,\
         `Senha` varchar(22) NOT NULL,\
         `Skin` int(20) NOT NULL,\
         `Admin` int(10) NOT NULL,\
         `horav` int(10) NOT NULL,\
         `mimv` int(10) NOT NULL,\
         `spawnx` int(10) NOT NULL,\
         `spawny` int(10) NOT NULL,\
         `spawnz` int(10) NOT NULL,\
         `matout` int(10) NOT NULL,\
         `morreut` int(10) NOT NULL,\
         `matou` int(10) NOT NULL,\
         `matouz` int(10) NOT NULL,\
         `vida` int(10) NOT NULL,\
         `temperatura` int(10) NOT NULL,\
         `fome` int(10) NOT NULL,\
         `sede` int(10) NOT NULL)"
,false);
        
printf("Tabelas iniciadas com sucesso!");
    }
    return 
1;

Dialog response:

PHP Code:
if(dialogid == 2){
        if(
response){
            if(
strlen(inputtext) > && strlen(inputtext) < 21){
                
mostrartdlogin(playerid);
                
VariavelPlayer[playerid][SenhaV] = 1;
                
format(senhaplayer[playerid], sizeof(senhaplayer), inputtext);
                
PlayerTextDrawSetString(playeridTextdraw16"@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@");
            }else{
                
ShowPlayerDialog(playeridDialogSenhaDIALOG_STYLE_PASSWORD"Coloque sua senha""Sua senha deve conter no mнnimo 5 digitos\ne no maximo 20 digitos!""Ok""");
                
SendClientMessage(playerid, -1"{FF0000}[SERVER]>> Senha Invбlida! (Nota: A senha tem que ficar entre 6 e 19 caracteres)");
            }
        }
    } 
Reply
#7

PHP Code:
stock SalvarDados(playerid

    new 
Query[600]; 
    
mysql_format(IDConexaoQuerysizeof(Query), "UPDATE `users` SET `Skin`=%d, `Admin`=%d, `horav`=%d, `mimv`=%d, `segv`=%d, `matout`=%d, `morreut`=%d, `matou`=%d, `matobandidos`=%d, `matouz`=%d, `vida`=%d, `temperatura`=%f, `fome`=%d, `sede`=%d, `spawnx`=%f, `spawny`=%f, `spawnz`=%f WHERE `Nome`='%s'"
    
PlayerLogin[playerid][Skin], 
    
PlayerLogin[playerid][Admin], 
    
PlayerLogin[playerid][horav], 
    
PlayerLogin[playerid][mimv], 
    
PlayerLogin[playerid][segv], 
    
PlayerLogin[playerid][matout], 
    
PlayerLogin[playerid][morreut], 
    
PlayerLogin[playerid][matou], 
    
PlayerLogin[playerid][matoubandidos], 
    
PlayerLogin[playerid][matouz], 
    
PlayerLogin[playerid][vida], 
    
PlayerLogin[playerid][temperatura], 
    
PlayerLogin[playerid][fome], 
    
PlayerLogin[playerid][sede], 
    
PlayerLogin[playerid][spawnx], 
    
PlayerLogin[playerid][spawny], 
    
PlayerLogin[playerid][spawnz], 
    
Name(playerid));
    
mysql_tquery(IDConexaoQuery"DadosSalvos""i"playerid);
    return 
1

forward DadosSalvos(playerid); 
public 
DadosSalvos(playerid){
    return 
printf("Conta salva id: %d"PlayerLogin[playerid][ID]);

use '%s' sempre que for string, se for qualquer outro tipo nгo precisa.
Reply
#8

Quote:
Originally Posted by Felipealves
View Post
PHP Code:
stock SalvarDados(playerid

    new 
Query[600]; 
    
mysql_format(IDConexaoQuerysizeof(Query), "UPDATE `users` SET `Skin`=%d, `Admin`=%d, `horav`=%d, `mimv`=%d, `segv`=%d, `matout`=%d, `morreut`=%d, `matou`=%d, `matobandidos`=%d, `matouz`=%d, `vida`=%d, `temperatura`=%f, `fome`=%d, `sede`=%d, `spawnx`=%f, `spawny`=%f, `spawnz`=%f WHERE `Nome`='%s'"
    
PlayerLogin[playerid][Skin], 
    
PlayerLogin[playerid][Admin], 
    
PlayerLogin[playerid][horav], 
    
PlayerLogin[playerid][mimv], 
    
PlayerLogin[playerid][segv], 
    
PlayerLogin[playerid][matout], 
    
PlayerLogin[playerid][morreut], 
    
PlayerLogin[playerid][matou], 
    
PlayerLogin[playerid][matoubandidos], 
    
PlayerLogin[playerid][matouz], 
    
PlayerLogin[playerid][vida], 
    
PlayerLogin[playerid][temperatura], 
    
PlayerLogin[playerid][fome], 
    
PlayerLogin[playerid][sede], 
    
PlayerLogin[playerid][spawnx], 
    
PlayerLogin[playerid][spawny], 
    
PlayerLogin[playerid][spawnz], 
    
Name(playerid));
    
mysql_tquery(IDConexaoQuery"DadosSalvos""i"playerid);
    return 
1

forward DadosSalvos(playerid); 
public 
DadosSalvos(playerid){
    return 
printf("Conta salva id: %d"PlayerLogin[playerid][ID]);

use '%s' sempre que for string, se for qualquer outro tipo nгo precisa.
Nгo entendi bem o que tu quis dizer. Eu tenho que usar %s no Nome por ser uma string e no resto eu faзo oq?
Reply
#9

Nгo й parenteses ali cara, й ' ' = '%s' tem q ser assim pro mysql_format reconhecer
Reply
#10

Quote:
Originally Posted by Felipealves
View Post
Nгo й parenteses ali cara, й ' ' = '%s' tem q ser assim pro mysql_format reconhecer
Fiz oq vc disse, coloquei apostrofo no %s, mas nгo deu. Na real acho que o problema vem antes de salvar o player.

Olha, essa й a funзгo que cria a conta do player:

PHP Code:
new Query[200];
mysql_format(IDConexaoQuerysizeof(Query), "INSERT INTO `users`(`Nome`, `Senha`) VALUES ('%s', '%s')"Name(playerid), senhaplayer[playerid]);
mysql_tquery(IDConexaoQuery"DadosRegistrados""i"playerid); 
Essas funзхes, na hora do registro do player deveria chamar a funзгo 'DadosRegistrados' que possui o cуdigo:

PHP Code:
forward DadosRegistrados(playerid);
public 
DadosRegistrados(playerid)
{
    
PlayerLogin[playerid][ID] = cache_insert_id();
    
printf("-> Nova conta registrada ID: %d"PlayerLogin[playerid][ID]);
    return 
1;

Porйm, esse printf nгo aparece no servidor, essa funзгo propavelmente nem ta sendo chamada, entгo o player nгo ta nem sendo registrado. Eu nгo sei oq fazer.. Mas obg pela a atenзгo e a ajuda de vcs.
Reply
#11

Cara vк esse tutorial faz igual o do cara ou tenta registrar e vк se o banco de dados й criado.

https://sampforum.blast.hk/showthread.php?tid=579909
Reply
#12

https://sampforum.blast.hk/showthread.php?tid=579909

Pelo oque eu percebi , vocк jб visualizou esse link, nгo sabe lidar com MySQL, lк com calma й atenзгo.
Reply
#13

Quote:
Originally Posted by Felipealves
View Post
Cara vк esse tutorial faz igual o do cara ou tenta registrar e vк se o banco de dados й criado.

https://sampforum.blast.hk/showthread.php?tid=579909
O banco de dados ta criado e a tabela tambйm й criada, mas nгo registra ninguem.

Quote:
Originally Posted by DanielMatrix
View Post
https://sampforum.blast.hk/showthread.php?tid=579909

Pelo oque eu percebi , vocк jб visualizou esse link, nгo sabe lidar com MySQL, lк com calma й atenзгo.
Bom, fiz uma nova gm aq e coloquei exatamente o cуdigo desse link que me mandaram, que inclusive foi o tutorial que segui. Enfim, msm tendo exatamente o mesmo cуdigo e somente esse codigo, nгo registra, aparece que ta registrado, porem quando relogo, aparece pra registrar novamente.

Creio que vou desistir do mysql e voltar ao DOF2. Vlw a ajuda de todos.
Reply
#14

Resolvido, minha versгo do wamp era a mais recente, com isso, necessitava do DEFAULT 0 na criaзгo da tabela.

Link que me ajudou a resolver o problema:

https://sampforum.blast.hk/showthread.php?tid=656678&page=2

Vlw.

@edit

Tudo isso que aconteceu foi erro meu e peзo desculpas. Falta de atenзгo na hora de seguir o tutorial, no tutorial que segui jб tinha explicado sobre a versгo do wamp mais recente.
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)