[Ajuda] Registro. Problema com verificaзгo de senha
#1

peguei um tutorial na internet de registro/login por DOF2. Bem, eu registro, coloco a senha e tudo e loga, mas se eu errar a senha uma vez e depois acertar a senha da como se eu nao tivesse acertado a senha, e se eu escrever nada e clicar em login ele entra.
Код:
#include    a_samp
#include    DOF2

#define     DIALOG_REGISTRO         1
#define     DIALOG_LOGAR            2

enum Informacoes
{
    Senha,
    Matou,
    Morreu,
    Dinheiro
}

new Player[MAX_PLAYERS][Informacoes];
new Erro[MAX_PLAYERS];

main()
{
    print("Tutorial feito por: EditPawn");
}

public OnGameModeExit()
{
    DOF2_Exit();
    return 1;
}

public OnPlayerConnect(playerid)
{
    if(DOF2_FileExists(Contas(playerid))) ShowPlayerDialog(playerid, DIALOG_LOGAR, DIALOG_STYLE_PASSWORD, "Logar", "Vocк й Registrado, digite sua senha para logar!\nSe errar 5 vezes sua conta serб banida!", "Confirma", "Cancelar");
    else ShowPlayerDialog(playerid, DIALOG_REGISTRO, DIALOG_STYLE_INPUT, "Registro", "Vocк ainda nгo й Registrado, digite uma senha para se registrar!", "Confirma", "Cancelar");
    return 1;
}

public OnPlayerDisconnect(playerid)
{
    SalvarContas(playerid);
    return 1;
}

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]);
            }
            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!");
                    Ban(playerid);
                    return 1;
                }
            }
        }
    }
    return 1;
}

stock Contas(playerid)
{
    new arquivo[40], name[MAX_PLAYER_NAME];
    GetPlayerName(playerid, name, 32);
    format(arquivo, 40, "Contas/%s.ini", 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_SaveFile();
    }
    return 1;
}
Reply
#2

pawn Код:
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
    if(dialogid == DIALOG_REGISTRO)
    {
        if(!strlen(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(!strlen(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(strcmp(inputtext, Player[playerid][Senha]) == 0)
            {
                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]);
            }
            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!");
                    Ban(playerid);
                    return 1;
                }
            }
        }
    }
    return 1;
}
Reply
#3

Onde esta o erro?
Reply
#4

desse jeito que voce postou, se eu colocar qualquer caractere mesmo nao sendo o da senha original eu consigo entrar no servidor.
Reply
#5

utilize negaзгo ! PT.
Reply
#6

Explique melhor?
Reply
#7

Quote:
Originally Posted by JonathanFeitosa
Посмотреть сообщение
utilize negaзгo ! PT.
Para isso que tem o == 0

-

Se assim funcionar:

pawn Код:
if(dialogid == DIALOG_LOGAR)
    {
        if(!strlen(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
        {
            if(strcmp(inputtext, DOF2_GetInt(Contas(playerid), "Senha")) == 0)
            {
                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]);
            }
            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!");
                    Ban(playerid);
                    return 1;
                }
            }
        }
    }
vc esqueceu de declarar a senha como string

pawn Код:
enum Informacoes
{
    Senha[128],
    Matou,
    Morreu,
    Dinheiro
}
Reply
#8

Deu erro.
Quote:

C:\Users\User\Desktop\Gustavo\Gustavo\MEU GM\filterscripts\Registro.pwn(55) : warning 217: loose indentation
C:\Users\User\Desktop\Gustavo\Gustavo\MEU GM\filterscripts\Registro.pwn(61) : error 035: argument type mismatch (argument 2)
C:\Users\User\Desktop\Gustavo\Gustavo\MEU GM\filterscripts\Registro.pwn(81) : warning 217: loose indentation
Pawn compiler 3.2.3664 Copyright © 1997-2006, ITB CompuPhase


1 Error.

Reply
#9

Quote:
Originally Posted by Xtable
Посмотреть сообщение
Deu erro.
Resolva o erro man, ele te mandou um bom cуdigo e vc nгo consegue sу consertar, sugiro que estude pawn, as pessoas me ajuda, mais eu me esforзo na maioria das vezes pra deixar melhor ainda e sem bugs.
Reply
#10

Quote:
Originally Posted by Xtable
Посмотреть сообщение
Deu erro.
Qual erro deu, qual linha й? Posta aqui o cуdigo que eu ajudo -.-
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)