[Ajuda] Registo bugado
#1

Boas pessoal,

Eu estou aprendendo pawn jб faz tempo, e achei o sistema de armazenamento DOF2 um bocado dificil. Hoje achei um FS que entendi melhor o sistema, mas por alguma razгo o criador do script fez algo mal e bugou na parte do login.

Entгo й assim, o registo funciona perfeitamente ele guarda numa pasta os dados, mas quando vou logar se eu meter a minha senha certa ele diz que estб errado. E se no caso eu nгo digitar nada na caixa de dialogo ele entra !

O que poderб ser isso ?

Vou deixar aqui o FS todo !

PHP код:
#include <a_samp>
#include <zcmd>
#include <DOF2>
#define arquivo "Contas/%s.ini"
#define dialogo_registo 1
#define dialogo_login 2
enum PlayerDados
{
    
Senha[16],
    
Score,
    
Dinheiro,
    
Admin,
    
bool:Cadastrado
}
new 
pDados[MAX_PLAYERS][PlayerDados];
public 
OnPlayerConnect(playerid)
{
    new 
string[128];
    
pDados[playerid][Cadastrado] = DOF2_GetBool(GetarConta(playerid), "Cadastro");
    if(
pDados[playerid][Cadastrado] == false)
    {
        
format(stringsizeof(string), "Seja bem vindo, %s!\nVocк ainda nгo estб Cadastrado, digite sua Senha abaixo para se Cadastrar:"pName(playerid));
        
ShowPlayerDialog(playeriddialogo_registoDIALOG_STYLE_INPUT"Registro"string"Cadastrar""");
    }
    else
    {
        
format(stringsizeof(string), "Seja bem vindo, %s!\nVocк estб Cadastrado, digite sua Senha abaixo para se Logar:"pName(playerid));
        
ShowPlayerDialog(playeriddialogo_loginDIALOG_STYLE_INPUT"Login"string"Login""");
    }
    return 
1;
}
public 
OnFilterScriptInit()
{
    print(
"Ui, Sistema de Login by CidadeNovaRP Ui");
    return 
1;
}
public 
OnPlayerDisconnect(playerid)
{
    
SalvarConta(playerid);
    return 
1;
}
public 
OnFilterScriptExit()
{
    
DOF2_Exit();
    return 
1;
}
public 
OnDialogResponse(playeriddialogidresponselistiteminputtext[])
{
    new 
string[128];
    if(
dialogid == dialogo_registo)
    {
        if(
response)
        {
            if(
strlen(inputtext) < 8)
            {
                
SendClientMessage(playerid, -1"Vocк deve colocar pelo menos 8 caracteres!");
                
format(stringsizeof(string), "Seja bem vindo, %s!\nVocк ainda nгo estб Cadastrado, digite sua Senha abaixo para se Cadastrar:"pName(playerid));
                
ShowPlayerDialog(playeriddialogo_registoDIALOG_STYLE_INPUT"Registro"string"Cadastrar""");
            }
            else
            {
                new 
senha[16];
                
pDados[playerid][Cadastrado] = true;
                
SendClientMessage(playerid, -1"Vocк acaba de ser Resgistrar neste Servidor, bem vindo!");
                
format(senhasizeof(senha), "%s"inputtext);
                
pDados[playerid][Senha] = senha;
                
pDados[playerid][Admin] = 0;
                
pDados[playerid][Score] = 1;
                
pDados[playerid][Dinheiro] = 10000;
                
SetPlayerScore(playerid1);
                
GivePlayerMoney(playerid10000);
                
DOF2_CreateFile(GetarConta(playerid));
                
DOF2_SetString(GetarConta(playerid), "Senha"pDados[playerid][Senha]);
                
DOF2_SaveFile();
                
SalvarConta(playerid);
            }
        }
        else
        {
            
SendClientMessage(playerid, -1"Registro Cancelado.");
            
Kick(playerid);
        }
    }
    else if(
dialogid == dialogo_login)
    {
        if(
response)
        {
            if(
strlen(inputtext))
            {
                
SendClientMessage(playerid, -1"Digite algo para Logar!");
                
format(stringsizeof(string), "Seja bem vindo, %s!\nVocк estб Cadastrado, digite sua Senha abaixo para se Logar:"pName(playerid));
                
ShowPlayerDialog(playeriddialogo_loginDIALOG_STYLE_INPUT"Login"string"Login""");
            }
            else
            {
                if(
strcmp(DOF2_GetString(GetarConta(playerid), "Senha"pDados[playerid][Senha]), inputtexttrue10) == 0)
                {
                    
SendClientMessage(playerid, -1"Logado com Sucesso.");
                    
CarregarConta(playerid);
                    
SpawnPlayer(playerid);
                }
                else
                {
                    
SendClientMessage(playerid, -1"Senha Errada, tente outra vez depois!");
                    
Kick(playerid);
                }
            }
        }
        else
        {
            
SendClientMessage(playerid, -1"Login Cancelado.");
            
Kick(playerid);
        }
    }
    return 
1;
}
stock SalvarConta(playerid)
{
    
DOF2_SetInt(GetarConta(playerid), "AdiminLevel"pDados[playerid][Admin]);
    
DOF2_SetInt(GetarConta(playerid), "Score"GetPlayerScore(playerid));
    
DOF2_SetInt(GetarConta(playerid), "Dinheiro"GetPlayerMoney(playerid));
    
DOF2_SetBool(GetarConta(playerid), "Cadastro"pDados[playerid][Cadastrado]);
    
DOF2_SaveFile();
    return 
1;
}
stock CarregarConta(playerid)
{
    
pDados[playerid][Admin] = DOF2_GetInt(GetarConta(playerid), "AdiminLevel");
    
SetPlayerScore(playeridDOF2_GetInt(GetarConta(playerid), "Score"));
    
GivePlayerMoney(playeridDOF2_GetInt(GetarConta(playerid), "Dinheiro"));
    return 
1;
}
stock GetarConta(playerid)
{
    new 
arq[40];
    
format(arqsizeof(arq), arquivopName(playerid));
    return 
arq;
}
stock pName(playerid)
{
    new 
name[24];
    
GetPlayerName(playeridnamesizeof(name));
    return 
name;

Aguardo ansiosamente uma ajuda da vossa parte.

Obrigado !

Ps: Se nгo for pedir muito adoraria que quando encontrarem o erro se pudessem tambйm explicar. Obrigado.
Reply
#2

Tenta isso , no login.
pawn Код:
if(!strcmp(inputtext, DOF2_GetString(GetarConta(playerid), "Senha"), true, 10) == 0)
Reply
#3

Olhe o arquivo da conta do Player, por acaso nгo tem um "я" antes da Senha ?
Reply
#4

Quote:
Originally Posted by mau.tito
Посмотреть сообщение
Tenta isso , no login.
pawn Код:
if(!strcmp(inputtext, DOF2_GetString(GetarConta(playerid), "Senha"), true, 10) == 0)
Eu substitui e deu um warning 213 tag mismatch :/

Quote:
Originally Posted by [THs]ShadoW
Посмотреть сообщение
Olhe o arquivo da conta do Player, por acaso nгo tem um "я" antes da Senha ?
Nгo tem nгo, amigo.
Reply
#5

pawn Код:
if(!strcmp(inputtext, DOF2_GetString(GetarConta(playerid), "Senha"), true))
Reply
#6

Essa linha seria para substituir aqui:
PHP код:
else if(dialogid == dialogo_login)
    {
        if(
response)
        {
            if(!
strcmp(inputtextDOF2_GetString(GetarConta(playerid), "Senha"), true))//<--AQUI CERTO ?
            
{
                
SendClientMessage(playerid, -1"Digite algo para Logar!");
                
format(stringsizeof(string), "Seja bem vindo, %s!\nVocк estб Cadastrado, digite sua Senha abaixo para se Logar:"pName(playerid));
                
ShowPlayerDialog(playeriddialogo_loginDIALOG_STYLE_INPUT"Login"string"Login""");
            }
            else
            {
                if(
strcmp(DOF2_GetString(GetarConta(playerid), "Senha"pDados[playerid][Senha]), inputtexttrue10) == 0)
                {
                    
SendClientMessage(playerid, -1"Logado com Sucesso.");
                    
CarregarConta(playerid);
                    
SpawnPlayer(playerid);
                }
                else
                {
                    
SendClientMessage(playerid, -1"Senha Errada, tente outra vez depois!");
                    
Kick(playerid);
                }
            }
        }
        else
        {
            
SendClientMessage(playerid, -1"Login Cancelado.");
            
Kick(playerid);
        }
    }
    return 
1;

Eu substitui naquela linha e jб nao entra quando nada se digita, essa parte funcionou (y) mas quando digito a senha certa (que estб guardada) ele continua a dizer "digite algo para logar" mas se por acaso eu digitar qualquer coisa eu sou desconectado.

Agora o que poderб ser ?

#EDIT: Jб resolvi o problema, o problema seria o tal "!" . Muito obrigado !
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)