[Ajuda] MySQL nгo registra
#1

Mais um problema com MySQL, desta vez ele simplesmente nгo esta registrando o player, ele preenche o dialog de registro e consegue logar normal como se estivesse registrado, mais no banco de dados nгo consta nada, a mensagem de novo registro nгo aparece no console e quando o player sai e entra dinovo ele tem que se registrar dinovo.

Tуpico usado: https://sampforum.blast.hk/showthread.php?tid=299675

Cуdigos:
PHP код:
public OnPlayerConnect(playerid)
{
    
PlayerInfo[playerid][pLogado] = false;
    
GetPlayerName(playeridPlayerInfo[playerid][pNome], 24); // Pegamos o nome do player somente uma vez quando se conectar e formatamos na variavel.
    
GetPlayerIp(playeridPlayerInfo[playerid][pIP], 26); // Mesma coisa no IP
    
    
new Query[90]; // criamos uma variavel com 90 celulas
    
mysql_format(IDConexaoQuerysizeof(Query), "SELECT `Senha`, `ID` FROM `Contas` WHERE `Nome`='%s'"PlayerInfo[playerid][pNome]); // formatamos a Query selecionando SENHA e ID referente a tabela Contas Linha (NOME)
    
mysql_tquery(IDConexaoQuery"VerificarContas""i"playerid); // Faremos a consulta se a linha "Nome" existe sim ou nгo
    // Usaremos mysql_tquery para realizar a consulta na tabela e enviar o resultado para a callback.
    // o resultado sera enviado para callback VerificarContas
   
    //Sistema de Inventario
    
ResetVariables(playerid);
    for(new 
010i++)
       
RemovePlayerAttachedObject(playeridi);
    
pInventory[playerid][invSelectedSlot] = -1;
    
pCharacter[playerid][charSelectedSlot] = -1;
       
LoadPlayerTextDraws(playerid);
    return 
1;
}
forward VerificarContas(playerid);
public 
VerificarContas(playerid)
{
    new 
Dialog[240]; // Variavel para as dialogs com 240 celulas necessarias
    
if(cache_num_rows() > 0// aqui o resultado da consulta da OnPlayerConnect
        
{// Se a linha for maior que 1 "existir" ira chamar a dialog de login
            
cache_get_value(0"Senha"PlayerInfo[playerid][pSenha], 20); // Pegamos o valor da tabela e setamos a variavel pSenha que sera necessaria para o login
            
format(Dialogsizeof(Dialog),"{F8F8FF}Bem Vindo(a) Ao Servidor {058AFF}%s{F8F8FF}\n\nVocк ja tem uma Conta registrada\n\nDigite sua senha para Logar\n\nStatus: {1E90FF}Registrado{F8F8FF}\n\nIP: {058AFF}%s"PlayerInfo[playerid][pNome], PlayerInfo[playerid][pIP]);
            
ShowPlayerDialog(playeridDIALOG_LOGINDIALOG_STYLE_PASSWORD"Login"Dialog"Logar""Cancelar");
        }else{ 
// se a linha nгo existir sera chamada a dialog de registro
            
format(Dialogsizeof(Dialog),"{F8F8FF}Bem Vindo(a) Ao Servidor {058AFF}%s{F8F8FF}\n\nVocк nгo tem uma Conta registrada\n\nDigite uma senha para Registrar\n\nStatus: {058AFF}Nгo Registrado{F8F8FF}\n\nIP: {058AFF}%s"PlayerInfo[playerid][pNome], PlayerInfo[playerid][pIP]);
            
ShowPlayerDialog(playeridDIALOG_REGISTRODIALOG_STYLE_PASSWORD"Registro"Dialog"Registrar""Cancelar");
                }
    return 
1;
}
case 
DIALOG_REGISTRO:
        {
            if(!
response) return Kick(playerid); // se clicar em cancelar na dialog registro ira kickar o jogador
            
if(strlen(inputtext) < || strlen(inputtext) > 20// se a senha tiver menos de 4 ou mais de 20 caracteres ira retornar a dialog
            
{
                
SendClientMessage(playeridCOR_VERMELHO"|ERRO| A SENHA DEVE CONTER DE 4 A 20 CARACTERES!");
                new 
Dialog[240]; // variavel da dialog registro
                
format(Dialogsizeof(Dialog),"{F8F8FF}Bem Vindo(a) Ao Servidor {058AFF}%s{F8F8FF}\n\nVocк nгo tem uma Conta registrada\n\nDigite uma senha para Registrar\n\nStatus: {058AFF}N/A Registrado{F8F8FF}\n\nIP: {058AFF}%s"PlayerInfo[playerid][pNome], PlayerInfo[playerid][pIP]);
                
ShowPlayerDialog(playeridDIALOG_REGISTRODIALOG_STYLE_PASSWORD"Registro"Dialog"Registrar""Cancelar");
                } else { 
// se nгo conter entre 4 e 20 caracteres ira retornar ao registro
                
new Query[100]; // variavel com 100 celulas para inserir as informaзхes de registro na tabela
                
mysql_format(IDConexaoQuerysizeof(Query), "INSERT INTO `Contas`(`Nome`, `Senha`) VALUES ('%s', '%s')"PlayerInfo[playerid][pNome], inputtext); // formatamos a query para inserir na tabela do banco de dados
                
mysql_tquery(IDConexaoQuery"DadosRegistrados""i"playerid); // fazemos a consulta e enviamos o resultado para a callback DadosRegistrados
                // enviamos para a callback DadosRegistrados para fazer uma especia de  DEBUG, e tambem para darmos uma ID para a conta no banco de dados
                
SendClientMessage(playeridCOR_VERDE"|SUCESSO| REGISTRO EFETUADO COM SUCESSO !");
                
SendClientMessage(playeridCOLOR_GRAD1"Aguarde por favor...");
                
RegistrarDados(playerid);// chamamos a funзгo RegistrarDados para adicionar os valores nas variaveis do player
                
SetTimer("Loading",5000,false);
            }
        }
forward DadosRegistrados(playerid);
public 
DadosRegistrados(playerid)
{
    
PlayerInfo[playerid][pID] = cache_insert_id(); // Adicionamos o ID da conta do player
    
printf("-> Nova conta registrada ID: %d"PlayerInfo[playerid][pID]); // Printf no samp server para informar que a conta foi registrada com sucesso
    
return 1;
}
stock RegistrarDados(playerid)
    {  
//Aqui adicionaremos os valores das variaveis que o player ira inicio no servidor
        
PlayerInfo[playerid][pDinheiro] = 1000// ou seja comeзara com 1000 reais
        
PlayerInfo[playerid][pAdmin] = 0// sem nivel de admin
        
PlayerInfo[playerid][pLevel] = 1// 1 level
        
PlayerInfo[playerid][pSkin] = 0// skin 0 CJ
        
PlayerInfo[playerid][pMorreu] = 0// ....
        
PlayerInfo[playerid][pMatou] = 0// ....
        
PlayerInfo[playerid][pVitorias] = 0;
        
PlayerInfo[playerid][pBanido] = 0;
        
CarregarDados(playerid); //chamamos a funзгo CarregarDados
        
return 1;
    }
    
stock CarregarDados(playerid)
    { 
// aqui carregaremos os ultimos dados das variaveis
        
if(PlayerInfo[playerid][pBanido] >= 1)
        {
            new 
Str1[128];
            new 
Str2[128];
            
SendClientMessage(playeridCOR_VERMELHO"|ERRO| Sua conta esta banida e nгo podes logar!");
             
TextDrawShowForPlayer(playeridFUNDOBAN1);
             
TextDrawShowForPlayer(playeridFUNDOBAN2);
             
TextDrawShowForPlayer(playeridFUNDOBAN3);
             
TextDrawShowForPlayer(playeridVOCE_FOI_BANIDO);
             
TextDrawShowForPlayer(playeridNOME_BAN);
             
TextDrawShowForPlayer(playeridMSG_BAN);
             
TextDrawShowForPlayer(playeridMOTIVO_BAN);
             
format(Str1,sizeof(Str1),"Nick: %s",PlayerInfo[playerid][pNome]);
             
format(Str2,sizeof(Str2),"Motivo: %s",PlayerInfo[playerid][pMotivo]);
            
TextDrawSetString(NOME_BAN,Str1);
            
TextDrawSetString(MOTIVO_BAN,Str2);
             
Kick(playerid);
        }
        else{
            
PlayerInfo[playerid][pLogado] = true;
            
SetPlayerScore(playeridPlayerInfo[playerid][pLevel]); // setamos o level
            
GivePlayerMoney(playeridPlayerInfo[playerid][pDinheiro]); // o dinheiro
            //SetSpawnInfo(playerid, 0, PlayerInfo[playerid][pSkin],0.0,0.0,0.0,0.0,0,0,0,0,0,0);
            //SpawnPlayer(playerid); // forзamos o player a spawnar nas cordenas acima com as infos setadas nas variaveis
        
}
        return 
1;
    } 
Obs: Ali no CASE_REGISTRO logo abaixo tem o CASE_LOGIN e no final o return 1, mais como o login nгo esta com problemas nгo tem porque eu mandar
Reply
#2

usa esse tutorial aqui : https://sampforum.blast.hk/showthread.php?tid=579909
Reply
#3

Quote:
Originally Posted by CALENZ021
Посмотреть сообщение
Eu usei esse tutorial ai, sу que mandei o link erradu
Reply
#4

Manda a log do mysql
Reply
#5

Quote:
Originally Posted by CALENZ021
Посмотреть сообщение
Manda a log do mysql
Код:
[13:42:17] [ERROR] error #1054 while executing query "UPDATE `Contas` SET `Nome`='Nick',`Level`=1,`Vitorias`=0,`Admin`=0,`Cargo`='',`Funcao`='',`Skin`=0,`Matou`=0,`Morreu`=0,`Dinheiro`=1000,`Banido`=0,`Motivo`='' WHERE `ID`=0": Unknown column 'Funcao' in 'field list'
[13:44:15] [ERROR] error #1364 while executing query "INSERT INTO `Contas`(`Nome`, `Senha`) VALUES ('Nick', '12345')": Field 'Cargo' doesn't have a default value
O primeiro erro eu consegui corrigir, mais o segundo nгo sei porque esta dando isso.Trata-se de uma varchar(string) e formatos de texto nгo tem valores padrгo.
Reply
#6

A tabela Contas existe?
Mostre o comando que cria ela.
Reply
#7

PHP код:
[13:42:17] [ERRORerror #1054 while executing query "UPDATE `Contas` SET `Nome`='Nick',`Level`=1,`Vitorias`=0,`Admin`=0,`Cargo`='',`Funcao`='',`Skin`=0,`Matou`=0,`Morreu`=0,`Dinheiro`=1000,`Banido`=0,`Motivo`='' WHERE `ID`=0": Unknown column 'Funcao' in 'field list'
//Aparentemente nгo hб a coluna Funcao na tabela, ou ela esta como INT etc....

[13:44:15] [ERRORerror #1364 while executing query "INSERT INTO `Contas`(`Nome`, `Senha`) VALUES ('Nick', '12345')": Field 'Cargo' doesn't have a default value
//Aparentemente Cargo esta como NOT NULL, entгo ele deve ser preenchido! 
Reply
#8

Quote:
Originally Posted by AdrianoStk
Посмотреть сообщение
PHP код:
[13:42:17] [ERRORerror #1054 while executing query "UPDATE `Contas` SET `Nome`='Nick',`Level`=1,`Vitorias`=0,`Admin`=0,`Cargo`='',`Funcao`='',`Skin`=0,`Matou`=0,`Morreu`=0,`Dinheiro`=1000,`Banido`=0,`Motivo`='' WHERE `ID`=0": Unknown column 'Funcao' in 'field list'
//Aparentemente nгo hб a coluna Funcao na tabela, ou ela esta como INT etc....
[13:44:15] [ERRORerror #1364 while executing query "INSERT INTO `Contas`(`Nome`, `Senha`) VALUES ('Nick', '12345')": Field 'Cargo' doesn't have a default value
//Aparentemente Cargo esta como NOT NULL, entгo ele deve ser preenchido! 
Sim estб correto, por isso ele tem que colocar um valor padrгo ou inserir um valor.
Reply
#9

Quote:
Originally Posted by CALENZ021
Посмотреть сообщение
Sim estб correto, por isso ele tem que colocar um valor padrгo ou inserir um valor.
Entendi, mais й que eu tinha 2 outros campos string que estavam NOT NULL e nгo exigiam valor entгo nгo entendi o sentido desse campo estar dando problema.

Mas ja corrigi e agora ta tudo beleza e funcionando, obrigado pela ajuda dos dois !!!

@Closed
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)