[Problema] No deja loguear
#1

Buenas,

Hice un sistema de registro a travйs de este tutorial:
https://sampforum.blast.hk/showthread.php?tid=415795
No tuve ningъn problema; me registrй y todo fue bien, pero cuando querнa volver a loguear, me decнa que la contraseсa estaba incorrecta a pesar de que lo habнa escrito bien.

A otros tambiйn le pasa el mнsmo problema. Investiguй pero no encontrй ninguna soluciуn.

No sй si es problema del udb_hash.

Espero que me puedan ayudar. Gracias de antemano.
Reply
#2

quizбs te pase lo mismo que respondн en йste post

http://forum.sa-mp.com/showpost.php?...9&postcount=21
Reply
#3

Quote:
Originally Posted by aoEXE
Посмотреть сообщение
quizбs te pase lo mismo que respondн en йste post

http://forum.sa-mp.com/showpost.php?...9&postcount=21
Gracias, cuando tenga tiempo, lo pruebo y te digo si me funciona.
Reply
#4

Bueno, le he echado un vistazo a las variables de la base de datos y estбn bien escritos en todos los lados. De hecho cuando me registro, en contraseсa me salen unos nъmeros, eso quiere decir que lo ha reconozido y que lo ha guardado; pero a la hora de entrar al server, no la reconoce...
Reply
#5

Quote:
Originally Posted by MrNatrio
Посмотреть сообщение
Bueno, le he echado un vistazo a las variables de la base de datos y estбn bien escritos en todos los lados. De hecho cuando me registro, en contraseсa me salen unos nъmeros, eso quiere decir que lo ha reconozido y que lo ha guardado; pero a la hora de entrar al server, no la reconoce...
si, es que sin importar el nombre, igual lo registraba, el problema era que al cargar los datos los sacaba de campos que no habнan datos(no habнan sido creados).

Pasa el cуdigo de cuando se loguea el jugador a ver si puedo notar el problema
Reply
#6

Aquн tienes el cуdigo del LOGIN, estб copiado del tutorial que puse anteriormente:

pawn Код:
case DIALOG_LOGIN:
        {
            if ( !response ) return Kick ( playerid );
            if( response )
            {
                if(udb_hash(inputtext) == PlayerInfo[playerid][pPass])
                {
                    INI_ParseFile(UserPath(playerid), "LoadUser_%s", .bExtra = true, .extra = playerid);
                    GivePlayerMoney(playerid, PlayerInfo[playerid][pCash]);
                    ShowPlayerDialog(playerid, DIALOG_SUCCESS_2, DIALOG_STYLE_MSGBOX,""COL_WHITE"Listo",""COL_GREEN"Tu cuenta a sido logueada","Ok","");
                }
                else
                {
                    ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_INPUT,""COL_WHITE"Login",""COL_RED"Has introducido una clave invalida.\n"COL_WHITE"Escribe tu clave para identificarte.","Login","Salir");
                }
                return 1;
            }
        }
Pero ahora me acabo de dar cuenta de que las variables de pPass, pCash,... estбn en: LoadUser_data pero no en: GuardarPersonaje -->

pawn Код:
INI_WriteInt("Password",PlayerInfo[playerid][pPass]);  
    INI_WriteInt("Cash",PlayerInfo[playerid][pCash]);
    INI_WriteInt("Admin",PlayerInfo[playerid][pAdmin]);
    INI_WriteInt("Kills",PlayerInfo[playerid][pKills]);
    INI_WriteInt("Deaths",PlayerInfo[playerid][pDeaths]);


Edito


Ahora cuando me registro y salgo del server, en el archivo .txt del usuario, me sale password= 0

Espero que me puedan ayudar, porque si el sistema de registro no funciona, no puedes entrar...
Reply
#7

Fijate que la contraseсa se guarda en "Password" y cuando la va a cagar la busca en "Contraseсa", ami me paso eso y solo lo cambia por "Contraseсa" y listo, ojala te funcione
Reply
#8

ok, no es necesario guardar la contraseсa cada vez que se desconecte, sуlo cuando se registra o en el caso de que hagas un comando de cambiar contraseсa la cambias en el archivo directamente.

La contraseсa la debes guardar en una variable para luego compararla con la que estб introduciendo en el cuadro de login, osea debes guardar en la variable antes de que le salga el cuadro

asн deberнa funcionar

pawn Код:
//OnPlayerConnect
if(fexist(UserPath(playerid)))
    {
        INI_ParseFile(UserPath(playerid), "LoadUser_data", .bExtra = true, .extra = playerid);
        ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_INPUT,""COL_WHITE"Login",""COL_WHITE"Escribe tu contraseсa para loguearte.","Login","Quit");
    }
    else
    {
        ShowPlayerDialog(playerid, DIALOG_REGISTER, DIALOG_STYLE_INPUT,""COL_WHITE"Registering...",""COL_WHITE"Escribe tu contraseсa para crear una nueva cuenta","Register","Quit");
    }

//LoadUser_data
forward LoadUser_data(playerid,name[],value[]);
public LoadUser_data(playerid,name[],value[])
{
    INI_Int("Password",PlayerInfo[playerid][pPass]);
    INI_Int("Cash",PlayerInfo[playerid][pCash]);
    INI_Int("Admin",PlayerInfo[playerid][pAdmin]);
    INI_Int("Kills",PlayerInfo[playerid][pKills]);
    INI_Int("Deaths",PlayerInfo[playerid][pDeaths]);
    return 1;
}
Ahora si dices que colocaste que guarde la contraseсa cuando se desconecte y al salir en el archivo es 0, entonces el problema es que al registrarse no guardas la contraseсa en la variable 'pPass'

coloca йsto cuando lo registras

pawn Код:
PlayerInfo[playerid][pPass] = udb_hash(inputtext);
Pero repito, no te recomiendo guardar la contraseсa cada vez que se desconecte, solo cuando la cambies hazlo directamente en el archivo
Reply
#9

He puesto en el registro lo de PlayerInfo[playerid][pPass] = udb_hash(inputtext) y me ha funcionado; ahora guarda la contraseсa y la reconoce cuando la introduces al loguearte.

Ahora tengo dos preguntitas mбs: їCуmo hago para quй cuбndo pulse "aceptar", lo spawnee directamente sin tener que pulsar el botуn de abajo que dice (Spawn)? Lo probй con la funciуn: SpawnPlayer(playerid) pero no funcionу.Y їcуmo hago para que cuando se estй registrando o identificando, no funcione el botуn de abajo que dice (spawn)?

Bueno, espero que me hayas entendido. Muchas gracias por haberme resuelto el primer problema.
Reply


Forum Jump:


Users browsing this thread: 2 Guest(s)