[Ajuda] Senhas salvam como 0
#1

Eu fiz esse sistema de registro e quando eu fui testar, as senhas salvavam como 0 e qualquer um poderia entrar com qualquer senha nas contas. Tentei algumas maneiras de resolver mas nгo deu certo e apelei para o Fуrum .


pawn Код:
#include <a_samp>
#include <DOF2>

//Sistema de Login

#define DIALOG_LOGIN    0001
#define DIALOG_REGISTRO 0002
#define DIALOG_CHECK    0003

enum
Info
{
    Senha,
    Dinheiro
};

new pInfo[MAX_PLAYERS][Info];
new Erro[MAX_PLAYERS];

public OnPlayerConnect(playerid)
{
    new arquivo[40], Nome[MAX_PLAYER_NAME];
    GetPlayerName(playerid, Nome, 32);
    format(arquivo, 40, "Contas/%s.ini", Nome);
    if(DOF2_FileExists(arquivo))
        {
            ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_PASSWORD, "Sistema de Login", "Bem Vindo Novamente.\n Digite Sua Senha Para Efetuar o Login.", "Login", "Sair");
        }
    else
        {
            ShowPlayerDialog(playerid, DIALOG_REGISTRO, DIALOG_STYLE_PASSWORD, "Sistema de Registro", "Bem Vindo ao Brasil New Start.\n Digite uma Senha Para Efetuar o Registro.\n A Senha Deve Conter Mais de 6 Caracteres.", "Registrar", "Sair");
        }
    return 1;
}

public OnPlayerDisconnect(playerid, reason)
{
    new arquivo[40], Nome[MAX_PLAYER_NAME];
    GetPlayerName(playerid, Nome, 32);
    format(arquivo, 40, "Contas/%s.ini", Nome);
    if(DOF2_FileExists(arquivo))
        {
            pInfo[playerid][Dinheiro] = GetPlayerMoney(playerid);
            DOF2_SetInt(arquivo, "Senha", pInfo[playerid][Senha]);
            DOF2_SetInt(arquivo, "Dinheiro", pInfo[playerid][Dinheiro]);
            DOF2_SaveFile();
        }
    return 1;
}

public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
    new arquivo[40], Nome[MAX_PLAYER_NAME];
    GetPlayerName(playerid, Nome, 32);
    format(arquivo, 40, "Contas/%s.ini", Nome);
    if(dialogid == DIALOG_REGISTRO)
        {
            if(!response)
                {
                    SendClientMessage(playerid, COR_VERMELHO, "Vocк Foi Desconectado Pelo Servidor por Nгo Efetuar o Registro.");
                    Kick(playerid);
                }
            if(strlen(inputtext) <= 6)
                {
                    ShowPlayerDialog(playerid, DIALOG_REGISTRO, DIALOG_STYLE_PASSWORD, "Sistema de Registro", "Sua Senha Deve Conter Mais de 6 Caracteres.", "Registrar", "Sair");
                }
            else
                {
                    pInfo[playerid][Senha] = strval(inputtext);
                    DOF2_CreateFile(arquivo);
                    DOF2_SetInt(arquivo, "Senha", pInfo[playerid][Senha]);
                    DOF2_SetInt(arquivo, "Dinheiro", pInfo[playerid][Dinheiro]);
                    DOF2_SaveFile();
                    ShowPlayerDialog(playerid, DIALOG_CHECK, DIALOG_STYLE_PASSWORD, "Sistema de Registro", "Para Prosseguir, Confirme sua Senha.", "Confirmar", "Cancelar");
                }
        }
    if(dialogid == DIALOG_CHECK)
        {
            pInfo[playerid][Senha] = DOF2_GetInt(arquivo, "Senha");
            if(strval(inputtext) != pInfo[playerid][Senha])
                {
                    DOF2_RemoveFile(arquivo);
                    ShowPlayerDialog(playerid, DIALOG_REGISTRO, DIALOG_STYLE_PASSWORD, "Sistema de Registro", "A Senhas Digitadas Nгo Correspondem.\n Digite Novamente.", "Registrar", "Sair");
                }
        }
    if(dialogid == DIALOG_LOGIN)
        {
            if(!response)
                {
                    SendClientMessage(playerid, COR_VERMELHO, "Vocк Foi Desconectado Pelo Servidor por Nгo Efetuar o Registro.");
                    Kick(playerid);
                }
            if(response)
                {
                    pInfo[playerid][Senha] = DOF2_GetInt(arquivo, "Senha");
                    if(strval(inputtext) == pInfo[playerid][Senha])
                        {
                            pInfo[playerid][Dinheiro] = DOF2_GetInt(arquivo, "Dinheiro");
                            GivePlayerMoney(playerid, pInfo[playerid][Dinheiro]);
                            SpawnPlayer(playerid);
                        }
                }
            if(response)
                {
                    pInfo[playerid][Senha] = DOF2_GetInt(arquivo, "Senha");
                    if(strval(inputtext) != pInfo[playerid][Senha])
                        {
                            ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_PASSWORD, "Sistema de Login", "Senha Incorreta. Digite sua Senha Corretamente ou Serб Desconectado", "Login", "Sair");
                            Erro[playerid]++;
                            if(Erro[playerid] == 3)
                                {
                                    SendClientMessage(playerid, COR_VERMELHO, "Vocк Foi Desconectado Pelo Servidor por\n Errar Sua Senha 3 Vezes.");
                                    Kick(playerid);
                                }
                        }
                }
        }
    return 1;
}
Ele й muito simples e ainda estб incompleto, estou fazendo por partes e preciso resolver esse probleminha que apareceu.

Agradeзo desde jб.




______
Reply
#2

Mude DOF2_SetInt para DOF2_SetString e veja se o resultado й o esperado.
Reply
#3

Ao invйs de 0 agora, fical (null)
Reply
#4

Veja a soluзгo postada pela Ana(humildadeforever)
https://sampforum.blast.hk/showthread.php?tid=540540
Reply
#5

Vocк usa strlen e dps strval para guardar a senha ... pq ?
Reply
#6

Use da seguinte maneira

DOF2_SetString(Local do Arquivo, "Senha", Variavel da Senha);
Reply
#7

Quote:
Originally Posted by Whoo
Посмотреть сообщение
Vocк usa strlen e dps strval para guardar a senha ... pq ?
Pois й, e nenhuma das duas funзхes foram feitas pra isso.

STRLEN = Lenght of string = tamanho da string
STRVAL = String value = valor numйrico
Reply
#8

Mesma coisa, vou postar o que eu fiz ...

pawn Код:
public OnPlayerDisconnect(playerid, reason)
{
    new arquivo[40], Nome[MAX_PLAYER_NAME];
    GetPlayerName(playerid, Nome, 32);
    format(arquivo, 40, "Contas/%s.ini", Nome);
    if(DOF2_FileExists(arquivo))
        {
            pInfo[playerid][Dinheiro] = GetPlayerMoney(playerid);
            DOF2_SetString(arquivo, "Senha", pInfo[playerid][Senha]);
            DOF2_SetInt(arquivo, "Dinheiro", pInfo[playerid][Dinheiro]);
            DOF2_SaveFile();
        }
    return 1;
}

public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
    new arquivo[40], Nome[MAX_PLAYER_NAME];
    GetPlayerName(playerid, Nome, 32);
    format(arquivo, 40, "Contas/%s.ini", Nome);
    if(dialogid == DIALOG_REGISTRO)
        {
            if(!response)
                {
                    SendClientMessage(playerid, COR_VERMELHO, "Vocк Foi Desconectado Pelo Servidor por Nгo Efetuar o Registro.");
                    Kick(playerid);
                }
            if(strlen(inputtext) <= 6)
                {
                    ShowPlayerDialog(playerid, DIALOG_REGISTRO, DIALOG_STYLE_PASSWORD, "Sistema de Registro", "Sua Senha Deve Conter Mais de 6 Caracteres.", "Registrar", "Sair");
                }
            else
                {
                    pInfo[playerid][Senha] = strval(inputtext);
                    DOF2_CreateFile(arquivo);
                    DOF2_SetString(arquivo, "Senha", pInfo[playerid][Senha]);
                    DOF2_SetInt(arquivo, "Dinheiro", pInfo[playerid][Dinheiro]);
                    DOF2_SaveFile();
                    ShowPlayerDialog(playerid, DIALOG_CHECK, DIALOG_STYLE_PASSWORD, "Sistema de Registro", "Para Prosseguir, Confirme sua Senha.", "Confirmar", "Cancelar");
                }
        }
Reply
#9

Faзa assim:

format(VariaveldaSenha, 40, "%s", inputtext); //para pegar o que foi digitado

Depois para salvar

DOF2_SetString(Local do arquivo, "Senha", Variavel da Senha);
Reply
#10

Criou o arquivo com DOF2_CreateFile?
Reply


Forum Jump:


Users browsing this thread: 2 Guest(s)