[Ajuda] Problema com Registro/Login
#1

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;
}
Reply
#2

Sobre a restriзгo de letras e nъmeros й so remover essa linha:

PHP код:
        if(strval(inputtext)) return ShowPlayerDialog(playeridDIALOG_LOGARDIALOG_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
Reply
#3

Код:
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.
Reply
#4

testa ai

PHP код:
    if(dialogid == DIALOG_REGISTRO)
    {
        if(!
response) return Kick(playerid);
        
Player[playerid][Senha] = inputtext;
        
SalvarContas(playerid);
        
ShowPlayerDialog(playeridDIALOG_LOGARDIALOG_STYLE_PASSWORD"Logar""Vocк se cadastrou, agora й sу logar com sua senha registrada!""Confirma""Cancelar");
    } 
Reply
#5

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];
Reply
#6

Se a senha conter strings (letras) й necessбrio o uso de format junto ao inputtext.
Reply
#7

PHP код:
    if(dialogid == DIALOG_REGISTRO)
    {
        if(!
response) return Kick(playerid);
         
DOF2_CreateFile(Contas(playerid));
         
DOF2_SetString(Contas(playerid), "Senha"inputtext);
         
DOF2_SaveFile();
        
ShowPlayerDialog(playeridDIALOG_LOGARDIALOG_STYLE_PASSWORD"Logar""Vocк se cadastrou, agora й sу logar com sua senha registrada!""Confirma""Cancelar");
    } 
Reply
#8

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.
Reply
#9

Acesse o meu repositуrio no GitHub (sнmbolo do gato) e procure algo similar a GM_Base.pwn .

Abraзos, padawan.
Reply
#10

strval transforma algo em um numero INTEIRO.

Poste o script quando vocк cria os dados do jogador.
Reply


Forum Jump:


Users browsing this thread: 2 Guest(s)