[Ajuda] Dialog nгo aparece
#1

PHP код:
#include <a_samp>
#include <a_mysql>
main(){}
#define mysql_host "localhost"
#define mysql_username "root"
#define mysql_database "samp"
#define mysql_password ""
#define REGISTRO 0
#define LOGIN    1
enum PlayerInfo
{
    
Nome[MAX_PLAYER_NAME],
    
Senha[40],
    
Dinheiro,
    
Level,
    
Admin
}
new 
pInfo[MAX_PLAYERS][PlayerInfo];
new 
MySQL:Conexao;
public 
OnGameModeInit()
{
    new 
Query[200];
    
Conexao mysql_connect(mysql_hostmysql_usernamemysql_passwordmysql_database);
    if(!
Conexao) return print("Nгo foi possнvel conectar ao banco de dados.");
    else print(
"Conectado com sucesso ao banco de dados.");
    
format(Querysizeof(Query), "CREATE TABLE IF NOT EXISTS `contas`(`Nome` VARCHAR(20) NOT NULL, `Senha` VARCHAR(20) NOT NULL, `Dinheiro` INT NOT NULL DEFAULT 500, `Level` INT NOT NULL DEFAULT 1, `Admin` INT NOT NULL DEFAULT 0)");
    
mysql_query(ConexaoQuery);
    return 
1;
}
public 
OnPlayerConnect(playerid)
{
    new 
Query[200], row cache_get_row_count(row);
    
GetPlayerName(playeridpInfo[playerid][Nome], 20);
    
format(Querysizeof(Query), "SELECT * FROM `contas` WHERE `Nome`='%s'"pInfo[playerid][Nome]);
    
//format(Query, sizeof(Query), "SELECT `Senha` FROM `contas` WHERE `Nome`='%s'", pInfo[playerid][Nome]);
    
mysql_query(ConexaoQuery);
    
cache_get_value_name(0"Senha"pInfo[playerid][Senha], 30);
    if(
row 0)
    {
        
ShowPlayerDialog(playeridLOGINDIALOG_STYLE_INPUT"Login""Digite sua senha para logar""Login""Sair");
    }
    else
    {
        
ShowPlayerDialog(playeridREGISTRODIALOG_STYLE_INPUT"Registro""Digite uma senha para registrar""Registrar""Sair");
    }
    return 
1;
}
public 
OnPlayerDisconnect(playeridreason)
{
    
SalvarConta(playerid);
    return 
1;
}
public 
OnDialogResponse(playeriddialogidresponselistiteminputtext[])
{
    if(
dialogid == REGISTRO)
    {
       if(
strlen(inputtext) < || strlen(inputtext) > 20)
       {
          
ShowPlayerDialog(playeridREGISTRODIALOG_STYLE_INPUT"Registro""Digite uma senha de 4 a 20 caracteres para se registrar""Registrar""Sair");
       }
       else
       {
          new 
Query[200];
          
GetPlayerName(playeridpInfo[playerid][Nome], 20);
          
format(Querysizeof(Query), "INSERT INTO * FROM `contas` (`Nome`, `Senha`, `Dinheiro`, `Level`, `Admin`) VALUES ('%s', '%s', '%d', '%d', '%d')"pInfo[playerid][Nome], inputtextpInfo[playerid][Dinheiro], pInfo[playerid][Level], pInfo[playerid][Admin]);
          
mysql_query(ConexaoQuery);
          
SpawnPlayer(playerid);
          
cache_get_value_name_int(0"`Dinheiro`"pInfo[playerid][Dinheiro]);
          
cache_get_value_name_int(0"`Level`"pInfo[playerid][Level]);
          
cache_get_value_name_int(0"`Admin`"pInfo[playerid][Admin]);
          
pInfo[playerid][Dinheiro] = GivePlayerMoney(playerid500);
          
pInfo[playerid][Level] = SetPlayerScore(playerid1);
          
pInfo[playerid][Admin] = 0;
          
SendClientMessage(playerid, -1"| INFO | Registrado com sucesso.");
       }
    }
    if(
dialogid == LOGIN)
    {
       if(!
strcmp(pInfo[playerid][Senha], inputtexttrue30))
       {
          new 
Query[200];
          
GetPlayerName(playeridpInfo[playerid][Nome], 20);
            
SendClientMessage(playerid, -1"| INFO | Logado com sucesso.");
            
format(Querysizeof(Query), "SELECT * FROM `contas` WHERE `Nome`='%s'"pInfo[playerid][Nome]);
          
GivePlayerMoney(playeridpInfo[playerid][Dinheiro]);
          
SetPlayerScore(playeridpInfo[playerid][Level]);
          
pInfo[playerid][Admin] = 1;
          
SpawnPlayer(playerid);
       }
       else
       {
          
ShowPlayerDialog(playeridLOGINDIALOG_STYLE_INPUT"Login""Senha incorreta, digite a senha certa!""Login""Sair");
       }
    }
    return 
0;
}
static 
SalvarConta(playerid)
{
    new 
Query[200];
    
GetPlayerName(playeridpInfo[playerid][Nome], 20);
    
format(Querysizeof(Query), "UPDATE `contas` SET `Nome`'%s', `Senha`'%s', `Dinheiro`'%d', `Level`'%d', `Admin`'%d'",
    
pInfo[playerid][Nome],
    
pInfo[playerid][Senha],
    
pInfo[playerid][Dinheiro] = GetPlayerMoney(playerid),
    
pInfo[playerid][Level] = GetPlayerScore(playerid),
    
pInfo[playerid][Admin] = pInfo[playerid][Admin]);
    
mysql_query(ConexaoQuery);

Porque nгo cria a tabela no banco de dados mds? O player registra, mais nгo aparece a conta dele ;/
Reply
#2

Vocк tem que chamar a callback "Consulta(playerid)" em " OnPlayerConnect(playerid)".
Reply
#3

Quote:
Originally Posted by Gguiz
Посмотреть сообщение
Vocк tem que chamar a callback "Consulta(playerid)" em " OnPlayerConnect(playerid)".
Nгo, a callback consulta faz parte da consulta.
@Topic

Vocк esqueceu de um = apуs "`Nick`"
Код HTML:
 mysql_format(Conect, Query, 200, "SELECT `Senha` FROM `Contas` WHERE `Nick` = '%s'");
O plugin MySQL cria logs na pasta do seu servidor, lб diz exatamente o erro, basta colocar na sua OnGameModeInit mysql_log(ALL) se sua versгo for a mais recente.

@Dica: use %e invйs de %s nas consultas para evitar inserзгo de dados errados. (Tem um nome correto para isso, nгo me lembro)
Reply
#4

Up Up
Reply
#5

Quote:
Originally Posted by Injury
Посмотреть сообщение
Nгo, a callback consulta faz parte da consulta.
Oi?? Ele reeditou o tуpico, se vocк nгo percebeu eu respondi uma dъvida passada. A callback consulta mostrava a dialog do player, sу que ele queria que ela aparecesse no login.
Reply
#6

Ver os logs do mysql.log
Reply
#7

[16:51:43] [WARNING] mysql_connect: no password specified
Aparece sу isso porque nгo tem senha.
Mas as vezes aparece isso

[16:48:56] [ERROR] cache_get_value_name: invalid row index '0' (number of rows: '0')
Reply
#8

Me mande os print do console do seu servidor.
PHP код:
enum PlayerInfo 

    
Nome[MAX_PLAYER_NAME], 
    
Senha[40], 
    
Dinheiro
    
Level
    
Admin 

new 
pInfo[MAX_PLAYERS][PlayerInfo]; 
new 
MySQL:Conexao
new 
Query[200]; 
public 
OnGameModeInit() 

    
    
Conexao mysql_connect(mysql_hostmysql_usernamemysql_passwordmysql_database); 
    if(!
Conexao) return print("Nгo foi possнvel conectar ao banco de dados."); 
    else print(
"Conectado com sucesso ao banco de dados."); 
    
format(Querysizeof(Query), "CREATE TABLE IF NOT EXISTS `contas`(`Nome` VARCHAR(20) NOT NULL, `Senha` VARCHAR(20) NOT NULL, `Dinheiro` INT NOT NULL DEFAULT 500, `Level` INT NOT NULL DEFAULT 1, `Admin` INT NOT NULL DEFAULT 0)"); 
    
mysql_query(ConexaoQuery); 
    return 
1

public 
OnPlayerConnect(playerid

    new 
row
    
cache_get_row_count(row); 
    
GetPlayerName(playeridpInfo[playerid][Nome], 20); 
    
format(Querysizeof(Query), "SELECT * FROM `contas` WHERE `Nome`='%s'"pInfo[playerid][Nome]); 
    
//format(Query, sizeof(Query), "SELECT `Senha` FROM `contas` WHERE `Nome`='%s'", pInfo[playerid][Nome]);
    
printf("%s",Query);  
    
mysql_query(ConexaoQuery); 
    if(
row 0
    { 
        
ShowPlayerDialog(playeridLOGINDIALOG_STYLE_INPUT"Login""Digite sua senha para logar""Login""Sair"); 
        
cache_get_value_name(0"Senha"pInfo[playerid][Senha], 30);
        print(
"Foi:1"); 
    } 
    else 
    { 
        
ShowPlayerDialog(playeridREGISTRODIALOG_STYLE_INPUT"Registro""Digite uma senha para registrar""Registrar""Sair"); 
        print(
"Foi:0"); 
    } 
    return 
1

public 
OnPlayerDisconnect(playeridreason

    
SalvarConta(playerid); 
    return 
1

public 
OnDialogResponse(playeriddialogidresponselistiteminputtext[]) 

    if(
dialogid == REGISTRO
    { 
       if(
strlen(inputtext) < || strlen(inputtext) > 20
       { 
          
ShowPlayerDialog(playeridREGISTRODIALOG_STYLE_INPUT"Registro""Digite uma senha de 4 a 20 caracteres para se registrar""Registrar""Sair"); 
       } 
       else 
       { 
      
          
GetPlayerName(playeridpInfo[playerid][Nome], 20); 
          
format(Querysizeof(Query), "INSERT INTO * FROM `contas` (`Nome`, `Senha`, `Dinheiro`, `Level`, `Admin`) VALUES ('%s', '%s', '%d', '%d', '%d')"pInfo[playerid][Nome], inputtextpInfo[playerid][Dinheiro], pInfo[playerid][Level], pInfo[playerid][Admin]); 
          
mysql_query(ConexaoQuery); 
          
SpawnPlayer(playerid); 
          
cache_get_value_name_int(0"`Dinheiro`"pInfo[playerid][Dinheiro]); 
          
cache_get_value_name_int(0"`Level`"pInfo[playerid][Level]); 
          
cache_get_value_name_int(0"`Admin`"pInfo[playerid][Admin]); 
          
pInfo[playerid][Dinheiro] = GivePlayerMoney(playerid500); 
          
pInfo[playerid][Level] = SetPlayerScore(playerid1); 
          
pInfo[playerid][Admin] = 0
          
SendClientMessage(playerid, -1"| INFO | Registrado com sucesso.");
       } 
    } 
    if(
dialogid == LOGIN
    { 
       if(!
strcmp(pInfo[playerid][Senha], inputtexttrue30)) 
       { 
         
          
GetPlayerName(playeridpInfo[playerid][Nome], 20); 
          
SendClientMessage(playerid, -1"| INFO | Logado com sucesso."); 
          
format(Querysizeof(Query), "SELECT * FROM `contas` WHERE `Nome`='%s'"pInfo[playerid][Nome]); 
          
GivePlayerMoney(playeridpInfo[playerid][Dinheiro]); 
          
SetPlayerScore(playeridpInfo[playerid][Level]); 
          
pInfo[playerid][Admin] = 1
          
SpawnPlayer(playerid); 
       } 
       else 
       { 
          
ShowPlayerDialog(playeridLOGINDIALOG_STYLE_INPUT"Login""Senha incorreta, digite a senha certa!""Login""Sair"); 
       } 
    } 
    return 
0

stock SalvarConta(playerid

    
GetPlayerName(playeridpInfo[playerid][Nome], 20); 
    
format(Querysizeof(Query), "UPDATE `contas` SET `Nome`'%s', `Senha`'%s', `Dinheiro`'%d', `Level`'%d', `Admin`'%d'"
    
pInfo[playerid][Nome], 
    
pInfo[playerid][Senha], 
    
pInfo[playerid][Dinheiro] = GetPlayerMoney(playerid), 
    
pInfo[playerid][Level] = GetPlayerScore(playerid), 
    
pInfo[playerid][Admin] = pInfo[playerid][Admin]); 
    
mysql_query(ConexaoQuery); 

Reply
#9

MySQL Log dps do seu COD: [17:32:23] [ERROR] cache_get_value_name_int: invalid row index '0' (number of rows: '0')
[17:32:23] [ERROR] cache_get_value_name_int: invalid row index '0' (number of rows: '0')
[17:32:23] [ERROR] cache_get_value_name_int: invalid row index '0' (number of rows: '0')
Olha a tabela:
https://imgur.com/a/co6N0
Reply
#10

Aqui funcionou certinho

PHP код:
#include <a_samp>
#include <a_mysql>
#define LOGIN 432
#define REGISTRO 543
enum PlayerInfo
{
    
Nome[MAX_PLAYER_NAME],
    
Senha[40],
    
Dinheiro,
    
Level,
    
Admin
}
new 
pInfo[MAX_PLAYERS][PlayerInfo];
new 
MySQL:Conexao;
new 
Query[200];
#define HOST      "localhost"
#define USUARIO   "root"
#define DATABASE  "samp"
#define SENHA     "123"
main(){}
public 
OnGameModeInit()
{
    
Conexao mysql_connect(HOSTUSUARIOSENHADATABASE);
    if(
mysql_errno(Conexao) != 0)
    {
        print(
"Nгo foi possнvel conectar ao banco de dados.");
        } else {
        print(
"Conectado com sucesso ao banco de dados.");
    }
    
    
    
format(Querysizeof(Query), "CREATE TABLE IF NOT EXISTS `contas`(`Nome` VARCHAR(20) NOT NULL, `Senha` VARCHAR(20) NOT NULL, `Dinheiro` INT NOT NULL DEFAULT 500, `Level` INT NOT NULL DEFAULT 1, `Admin` INT NOT NULL DEFAULT 0)");
    
mysql_query(ConexaoQuery);
    return 
1;
}
public 
OnPlayerConnect(playerid)
{
    new 
row;
    
cache_get_row_count(row);
    
GetPlayerName(playeridpInfo[playerid][Nome], 20);
    
format(Querysizeof(Query), "SELECT * FROM `contas` WHERE `Nome`='%s'"pInfo[playerid][Nome]);
    
//format(Query, sizeof(Query), "SELECT `Senha` FROM `contas` WHERE `Nome`='%s'", pInfo[playerid][Nome]);
    
printf("%s",Query);
    
mysql_query(ConexaoQuery);
    if(
row 0)
    {
        
ShowPlayerDialog(playeridLOGINDIALOG_STYLE_INPUT"Login""Digite sua senha para logar""Login""Sair");
        
cache_get_value_name(0"Senha"pInfo[playerid][Senha], 30);
        print(
"Foi:1");
    }
    else
    {
        
ShowPlayerDialog(playeridREGISTRODIALOG_STYLE_INPUT"Registro""Digite uma senha para registrar""Registrar""Sair");
        print(
"Foi:0");
    }
    return 
1;
}
public 
OnPlayerDisconnect(playeridreason)
{
    
SalvarConta(playerid);
    return 
1;
}
public 
OnDialogResponse(playeriddialogidresponselistiteminputtext[])
{
    if(
dialogid == REGISTRO)
    {
       if(
strlen(inputtext) < || strlen(inputtext) > 20)
       {
          
ShowPlayerDialog(playeridREGISTRODIALOG_STYLE_INPUT"Registro""Digite uma senha de 4 a 20 caracteres para se registrar""Registrar""Sair");
       }
       else
       {
          
GetPlayerName(playeridpInfo[playerid][Nome], 20);
          
format(Querysizeof(Query), "INSERT INTO contas(Nome,Senha,Dinheiro,Level,Admin) VALUES ('%s', '%s', '%d', '%d', '%d')"pInfo[playerid][Nome], inputtextpInfo[playerid][Dinheiro], pInfo[playerid][Level], pInfo[playerid][Admin]);
          
mysql_tquery(ConexaoQuery);
          
SpawnPlayer(playerid);
          
cache_get_value_name_int(0"`Dinheiro`"pInfo[playerid][Dinheiro]);
          
cache_get_value_name_int(0"`Level`"pInfo[playerid][Level]);
          
cache_get_value_name_int(0"`Admin`"pInfo[playerid][Admin]);
          
pInfo[playerid][Dinheiro] = GivePlayerMoney(playerid500);
          
pInfo[playerid][Level] = SetPlayerScore(playerid1);
          
pInfo[playerid][Admin] = 0;
          
SendClientMessage(playerid, -1"| INFO | Registrado com sucesso.");
       }
    }
    if(
dialogid == LOGIN)
    {
       if(!
strcmp(pInfo[playerid][Senha], inputtexttrue30))
       {
          
GetPlayerName(playeridpInfo[playerid][Nome], 20);
          
SendClientMessage(playerid, -1"| INFO | Logado com sucesso.");
          
format(Querysizeof(Query), "SELECT * FROM `contas` WHERE `Nome`='%s'"pInfo[playerid][Nome]);
          
GivePlayerMoney(playeridpInfo[playerid][Dinheiro]);
          
SetPlayerScore(playeridpInfo[playerid][Level]);
          
pInfo[playerid][Admin] = 1;
          
SpawnPlayer(playerid);
       }
       else
       {
          
ShowPlayerDialog(playeridLOGINDIALOG_STYLE_INPUT"Login""Senha incorreta, digite a senha certa!""Login""Sair");
       }
    }
    return 
0;
}
stock SalvarConta(playerid)
{
    
GetPlayerName(playeridpInfo[playerid][Nome], 20);
    
format(Querysizeof(Query), "UPDATE `contas` SET `Nome`'%s', `Senha`'%s', `Dinheiro`'%d', `Level`'%d', `Admin`'%d'",
    
pInfo[playerid][Nome],
    
pInfo[playerid][Senha],
    
pInfo[playerid][Dinheiro] = GetPlayerMoney(playerid),
    
pInfo[playerid][Level] = GetPlayerScore(playerid),
    
pInfo[playerid][Admin] = pInfo[playerid][Admin]);
    
mysql_query(ConexaoQuery);

Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)