SA-MP Forums Archive
[Ajuda] DOF2 Login nгo funcionando! - Printable Version

+- SA-MP Forums Archive (https://sampforum.blast.hk)
+-- Forum: Non-English (https://sampforum.blast.hk/forumdisplay.php?fid=9)
+--- Forum: Languages (https://sampforum.blast.hk/forumdisplay.php?fid=33)
+---- Forum: Português/Portuguese (https://sampforum.blast.hk/forumdisplay.php?fid=34)
+---- Thread: [Ajuda] DOF2 Login nгo funcionando! (/showthread.php?tid=553689)



DOF2 Login nгo funcionando! - Rodox_Mortein - 31.12.2014

Eu juntei o criador de organizaзхes do Rhayziin http://forum.sa-mp.com/showthread.ph...rganiza%E7%E3o

Com o que eu aprendi do Tutorial do EditPawn https://sampforum.blast.hk/showthread.php?tid=350855

Montando Organizaзхes e salvando para um servidor de TDM com Registro e Login... Sу que esta dando um problema na hora de colocar a senha... ela parece nгo estar sendo salva... eu registro e na hora de logar nгo funciona... dai eu chequei o Scriptfiles e no Arquivo da conta a senha esta como Senha= 0...


pawn Код:
enum Informacoes //O enum serve, na maioria das veses, para ser usado em outras variaveis como pode ver abaixo
{
    Senha,
    Matou,
    Morreu,
    Dinheiro,
    Organizacao,
    Cargo
}
new Player[MAX_PLAYERS][Informacoes]; //Criamos a varнavel que amarzenarб os Dados do player
new Erro[MAX_PLAYERS];// erro no Log In!
#define DIALOG_REGISTRO 1
#define DIALOG_LOGAR 2

pawn Код:
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
    if(dialogid == DIALOG_REGISTRO)
    {
        if(!strval(inputtext)) return ShowPlayerDialog(playerid, DIALOG_REGISTRO, DIALOG_STYLE_INPUT, "Registro", "Digite apenas nъmeros!\nDigite sua senha novamente para se registrar!", "Confirma", "Cancelar");
        if(!response) return Kick(playerid);
        else
        {
            Player[playerid][Senha] = strval(inputtext);
            SalvarContas(playerid);
            ShowPlayerDialog(playerid, DIALOG_LOGAR, DIALOG_STYLE_PASSWORD, "Logar", "Vocк se cadastrou, agora й sу logar com sua senha registrada!", "Confirma", "Cancelar");
        }
    }
    if(dialogid == DIALOG_LOGAR)
    {
        if(!strval(inputtext)) return ShowPlayerDialog(playerid, DIALOG_LOGAR, DIALOG_STYLE_PASSWORD, "Logar", "Digite apenas nъmeros!\nDigite sua senha cadastrada para logar!\nSe errar 5 vezes sua conta serб banida!", "Confirma", "Cancelar");
        if(!response) return Kick(playerid);
        else
        {
            Player[playerid][Senha] = DOF2_GetInt(Contas(playerid), "Senha");
            if(strval(inputtext) == Player[playerid][Senha])
            {
                Player[playerid][Matou] = DOF2_GetInt(Contas(playerid), "Matou");
                Player[playerid][Morreu] = DOF2_GetInt(Contas(playerid), "Morreu");
                Player[playerid][Dinheiro] = DOF2_GetInt(Contas(playerid), "Dinheiro");
                GivePlayerMoney(playerid, Player[playerid][Dinheiro]);
                Player[playerid][Organizacao] = DOF2_GetInt(Contas(playerid), "Organizacao");
                Player[playerid][Cargo] = DOF2_GetInt(Contas(playerid), "Cargo");
            }
            else
            {
                ShowPlayerDialog(playerid, DIALOG_LOGAR, DIALOG_STYLE_PASSWORD, "Logar", "Vocк digitou sua senha errado, digite-a novamente para logar!\nSe errar 5 vezes sua conta serб banida!", "Confirma", "Cancelar");
                Erro[playerid]++;
                if(Erro[playerid] == 5)
                {
                    SendClientMessage(playerid, -1, "Sua conta estб banida por errar 5 vezes a sua senha, contacte o Admin para retirar seu Ban!");
                    Kick(playerid);
                    return 1;
                }
            }
        }
    }
pawn Код:
stock Contas(playerid)
{
    new arquivo[40], name[MAX_PLAYER_NAME];
    GetPlayerName(playerid, name, 32);
    format(arquivo, 40, "Contas/%s", name);
    return arquivo;
}

stock SalvarContas(playerid)
{
    if(!DOF2_FileExists(Contas(playerid))) DOF2_CreateFile(Contas(playerid));
    else
    {
        Player[playerid][Dinheiro] = GetPlayerMoney(playerid);
        DOF2_SetInt(Contas(playerid), "Senha", Player[playerid][Senha]);
        DOF2_SetInt(Contas(playerid), "Matou", Player[playerid][Matou]);
        DOF2_SetInt(Contas(playerid), "Morreu", Player[playerid][Morreu]);
        DOF2_SetInt(Contas(playerid), "Dinheiro", Player[playerid][Dinheiro]);
        DOF2_SetInt(Contas(playerid), "Organizacao", Player[playerid][Organizacao]); //Setamos o valor de "Player[playerid][Organizacao]" no "arquivo", com a TAG "Organizaзгo"
        DOF2_SetInt(Contas(playerid), "Cargo", Player[playerid][Cargo]); //Setamos o valor de "Player[playerid][Cargo]" no "arquivo", com a TAG "Cargo"
        DOF2_SaveFile();
    }
    return 1;
}
A parte que esta com problemas deve estar por ai... jб revirei isso tudo e nгo consegui enxergar o meu erro


Re: DOF2 Login nгo funcionando! - Rodox_Mortein - 31.12.2014

Faltou eu postar alguma coisa pra vcs me ajudarem??


Re: DOF2 Login nгo funcionando! - Skun Fly - 31.12.2014

Com dof2 eu aconselho usar as funзoes DOF2_CreateFile(file, inputtext) e DOF2_CheckLogin(file, inputtext)


Re: DOF2 Login nгo funcionando! - Gii - 31.12.2014

pawn Код:
enum Informacoes //O enum serve, na maioria das veses, para ser usado em outras variaveis como pode ver abaixo
{
    Senha[24],
    Matou,
    Morreu,
    Dinheiro,
    Organizacao,
    Cargo
};

public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[]) {

    if ( dialogid == DIALOG_REGISTRO ) {

        if( !strval(inputtext) )
            return ShowPlayerDialog(playerid, DIALOG_REGISTRO, DIALOG_STYLE_INPUT, "Registro", "Digite apenas nъmeros!\nDigite sua senha novamente para se registrar!", "Confirma", "Cancelar");
       
        if ( !response )
            return Kick(playerid);
        else {

            format(Player[playerid][Senha], 24, inputtext);
            SalvarContas(playerid);
            ShowPlayerDialog(playerid, DIALOG_LOGAR, DIALOG_STYLE_PASSWORD, "Logar", "Vocк se cadastrou, agora й sу logar com sua senha registrada!", "Confirma", "Cancelar");
        }
    }

    if ( dialogid == DIALOG_LOGAR ) {

        if ( !strval(inputtext) )
            return ShowPlayerDialog(playerid, DIALOG_LOGAR, DIALOG_STYLE_PASSWORD, "Logar", "Digite apenas nъmeros!\nDigite sua senha cadastrada para logar!\nSe errar 5 vezes sua conta serб banida!", "Confirma", "Cancelar");
       
        if ( !response )
            return Kick(playerid);
        else {

            new dir[24];

            format(dir, 24, Contas(playerid));

            format(Player[playerid][Senha],24, DOF2_GetString(dir, "Senha"));

            if ( !strcmp(inputtext, Player[playerid][Senha]) ) {

                Player[playerid][Matou] = DOF2_GetInt(dir, "Matou");
                Player[playerid][Morreu] = DOF2_GetInt(dir, "Morreu");
                Player[playerid][Dinheiro] = DOF2_GetInt(dir, "Dinheiro");
                GivePlayerMoney(playerid, Player[playerid][Dinheiro]);
                Player[playerid][Organizacao] = DOF2_GetInt(dir, "Organizacao");
                Player[playerid][Cargo] = DOF2_GetInt(dir, "Cargo");
            }
            else {

                Erro[playerid]++;
                if ( Erro[playerid] == 5 ) {

                    SendClientMessage(playerid, -1, "Sua conta estб banida por errar 5 vezes a sua senha, contacte o Admin para retirar seu Ban!");
                    Kick(playerid);
                    return 1;
                }
                else {

                    return ShowPlayerDialog(playerid, DIALOG_LOGAR, DIALOG_STYLE_PASSWORD, "Logar", "Vocк digitou sua senha errado, digite-a novamente para logar!\nSe errar 5 vezes sua conta serб banida!", "Confirma", "Cancelar");
                }
            }
        }
    }
    return 1;
}

stock SalvarContas(playerid) {

    new dir[24];

    format(dir, 24, Contas(playerid));

    if ( !DOF2_FileExists(dir ) )
         DOF2_CreateFile(dir);

    Player[playerid][Dinheiro] = GetPlayerMoney(playerid);
    DOF2_SetString(dir, "Senha", Player[playerid][Senha]);
    DOF2_SetInt(dir, "Matou", Player[playerid][Matou]);
    DOF2_SetInt(dir, "Morreu", Player[playerid][Morreu]);
    DOF2_SetInt(dir, "Dinheiro", Player[playerid][Dinheiro]);
    DOF2_SetInt(dir, "Organizacao", Player[playerid][Organizacao]); //Setamos o valor de "Player[playerid][Organizacao]" no "arquivo", com a TAG "Organizaзгo"
    DOF2_SetInt(dir, "Cargo", Player[playerid][Cargo]); //Setamos o valor de "Player[playerid][Cargo]" no "arquivo", com a TAG "Cargo"
    DOF2_SaveFile();
   
    return 1;
}
Lembrando que:
A funзгo strval, converte uma string para um inteiro.
A funзгo strlen devolve o tamanho de uma string.
E a funзгo strcmp compara duas strings.

https://sampwiki.blast.hk/wiki/Strval
https://sampwiki.blast.hk/wiki/Strlen
https://sampwiki.blast.hk/wiki/Strcmp