Problema com Registro/Login -
Ever_SH - 14.03.2015
Bom, nunca consegui criar um sistema de login que funcionasse corretamente, tentei fazer um que esta em um tutorial feito pelo EditPawn, em DOF2.
Porem naquele tutorial a senha sу podia ser nъmeros, tentei mudar mas envolvia
strval e
strlen e fiquei muito confuso, agora quando salva os dados da conta fica da seguinte maneira:
Код:
Senha = (null)
Matou = 0
Morreu = 0
Admin = 0
Dinheiro = 0
O necessбrio estб abaixo:
Код:
enum Informacoes
{
Senha[16],
Matou,
Morreu,
Admin,
Dinheiro
}
Код:
if(dialogid == DIALOG_LOGAR)
{
if(strval(inputtext)) return ShowPlayerDialog(playerid, DIALOG_LOGAR, DIALOG_STYLE_PASSWORD, "Logar", "Digite letras tambйm!\nDigite sua senha cadastrada para logar!\nSe errar 5 vezes sua conta serб banida!", "Confirma", "Cancelar");
if(!response) return SetTimerEx("KickTMF", 500, false, "i", playerid);
else
{
Player[playerid][Senha] = DOF2_GetInt(Contas(playerid), "Senha");
if(strlen(inputtext) == Player[playerid][Senha])
{
Player[playerid][Matou] = DOF2_GetInt(Contas(playerid), "Matou");
Player[playerid][Admin] = DOF2_GetInt(Contas(playerid), "Admin");
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;
}
Код:
stock SalvarContas(playerid)
{
if(!DOF2_FileExists(Contas(playerid))) DOF2_CreateFile(Contas(playerid));
else
{
Player[playerid][Dinheiro] = GetPlayerMoney(playerid);
DOF2_SetString(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), "Admin", Player[playerid][Admin]);
DOF2_SetInt(Contas(playerid), "Dinheiro", Player[playerid][Dinheiro]);
DOF2_SaveFile();
}
return 1;
}
Re: Problema com Registro/Login -
Cleyson - 14.03.2015
Sobre a restriзгo de letras e nъmeros й so remover essa linha:
PHP код:
if(strval(inputtext)) return ShowPlayerDialog(playerid, DIALOG_LOGAR, DIALOG_STYLE_PASSWORD, "Logar", "Digite letras tambйm!\nDigite sua senha cadastrada para logar!\nSe errar 5 vezes sua conta serб banida!", "Confirma", "Cancelar");
Sobre o salvamento da senha mostre como esta a DIALOG_REGISTRAR
Re: Problema com Registro/Login -
Ever_SH - 14.03.2015
Код:
if(dialogid == DIALOG_REGISTRO)
{
if(strval(inputtext)) return ShowPlayerDialog(playerid, DIALOG_REGISTRO, DIALOG_STYLE_INPUT, "Registro", "Digite letras tambйm!\nDigite sua senha novamente para se registrar!", "Confirma", "Cancelar");
if(!response) return Kick(playerid);
else
{
Player[playerid][Senha] = strlen(inputtext);
SalvarContas(playerid);
ShowPlayerDialog(playerid, DIALOG_LOGAR, DIALOG_STYLE_PASSWORD, "Logar", "Vocк se cadastrou, agora й sу logar com sua senha registrada!", "Confirma", "Cancelar");
}
}
@EDIT
Nгo era sу aquilo que impedia de botar letras, tinha os bgl envolvendo String e etc.
Re: Problema com Registro/Login -
Cleyson - 14.03.2015
testa ai
PHP код:
if(dialogid == DIALOG_REGISTRO)
{
if(!response) return Kick(playerid);
Player[playerid][Senha] = inputtext;
SalvarContas(playerid);
ShowPlayerDialog(playerid, DIALOG_LOGAR, DIALOG_STYLE_PASSWORD, "Logar", "Vocк se cadastrou, agora й sу logar com sua senha registrada!", "Confirma", "Cancelar");
}
Re: Problema com Registro/Login -
Ever_SH - 14.03.2015
Do jeito que vocк falou deu erro, entгo botei um [16] atras e resolveu, mas agora quando digita a senha no registro, simplismente nгo acontece mais nada, a dialog de login nгo aparece mais e o arquivo da conta fica totalmente em branco.
Obs: sу alterei a linha:
Player[playerid][Senha] = inputtext[16];
Re: Problema com Registro/Login -
ipsLuan - 14.03.2015
Se a senha conter strings (letras) й necessбrio o uso de
format junto ao inputtext.
Re: Problema com Registro/Login -
Cleyson - 14.03.2015
PHP код:
if(dialogid == DIALOG_REGISTRO)
{
if(!response) return Kick(playerid);
DOF2_CreateFile(Contas(playerid));
DOF2_SetString(Contas(playerid), "Senha", inputtext);
DOF2_SaveFile();
ShowPlayerDialog(playerid, DIALOG_LOGAR, DIALOG_STYLE_PASSWORD, "Logar", "Vocк se cadastrou, agora й sу logar com sua senha registrada!", "Confirma", "Cancelar");
}
Re: Problema com Registro/Login -
Ever_SH - 14.03.2015
Cleyson, voltou a dar o problema de antes, a senha fica (null)
Luan Argolo, nгo entendo muito bem de pawn, nгo sei como devo fazer isso, mas fui olhar em outro gamemode que tenho aqui, ele tem o sistema parecido, tentei copiar a forma que esta la, mas continua ficando (null).
Este tentei fazer me baseando no outro gamemode que tem um sistema parecido.
Код:
if(dialogid == DIALOG_REGISTRO)
{
if(!strlen(inputtext)) return ShowPlayerDialog(playerid, DIALOG_REGISTRO, DIALOG_STYLE_INPUT, "Registro", "Digite sua senha novamente para se registrar!", "Confirma", "Cancelar");
if(!response) return Kick(playerid);
else
{
DOF2_CreateFile(Contas(playerid));
Player[playerid][Matou] = 0;
Player[playerid][Morreu] = 0;
Player[playerid][Dinheiro] = 100;
DOF2_SetString(Contas(playerid), "Senha", inputtext);
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();
ShowPlayerDialog(playerid, DIALOG_LOGAR, DIALOG_STYLE_PASSWORD, "Logar", "Vocк se cadastrou, agora й sу logar com sua senha registrada!", "Confirma", "Cancelar");
}
}
La nгo tem nada de format e a senha fica certinha.
Re: Problema com Registro/Login -
ipsLuan - 14.03.2015
Acesse o meu repositуrio no
GitHub (sнmbolo do gato) e procure algo similar a
GM_Base.pwn .
Abraзos, padawan.
Re: Problema com Registro/Login -
ProKillerpa - 14.03.2015
strval transforma algo em um numero INTEIRO.
Poste o script quando vocк cria os dados do jogador.