deja el code donde verifica la contraseсa y tambien verificб que donde guardйs la contaseсa (dini,mysql,etc) se este guardando bien.
|
stock ini_GetKey( line[] )
{
new keyRes[256];
keyRes[0] = 0;
if ( strfind( line , "=" , true ) == -1 ) return keyRes;
strmid( keyRes , line , 0 , strfind( line , "=" , true ) , sizeof( keyRes) );
return keyRes;
}
stock ini_GetValue( line[] )
{
new valRes[256];
valRes[0]=0;
if ( strfind( line , "=" , true ) == -1 ) return valRes;
strmid( valRes , line , strfind( line , "=" , true )+1 , strlen( line ) , sizeof( valRes ) );
return valRes;
}
if ( UFile )
{
new PassD[256];
new keytmp[256], valtmp[256];
fread( UFile, PassD, sizeof(PassD));
keytmp = ini_GetKey( PassD );
if( strcmp ( keytmp, "Pass" , true) == 0)
{
valtmp = ini_GetValue ( PassD ) ;
strmid(InfoCuenta[playerid][Pass], valtmp, 0 , strlen(valtmp)-1, 255);
}
if(strcmp(InfoCuenta[playerid][Pass], inputtext, true) == 0)
{
new key[256], val[256];
new Datos[256];
while (fread ( UFile, Datos, sizeof(Datos)))
{
key = ini_GetKey(Datos);
//Aca sigue el cargado de datos pero no importa
}
else //aca contradice el if de encima para la pass
{
IntentoLogeo[playerid]++;
new Q[128];
format(Q, sizeof(Q), "Has introducido una contraseсa incorrecta!\nA Tienes %d intentos, a los 4 se te baneara la cuenta", IntentoLogeo[playerid]);
ShowPlayerDialog(playerid, 1, DIALOG_STYLE_PASSWORD, "Error", Q, "Entrar", "");
printf("Contraseсa desde el archivo %s",InfoCuenta[playerid][Pass]);
strmid(InfoCuenta[playerid][Pass], valtmp, 0 , strlen(valtmp)-1, 255); //mala
strmid(InfoCuenta[playerid][Pass], valtmp, 0 , strlen(valtmp), 255); //correcta
Tuve que probar el codigo y el -1 que le restas a la longitud de la clave se come el ъltimo caracter, quitarlo para que se copie correctamente a InfoCuenta[playerid][Pass]
pawn Код:
|
#include a_samp
const Pass = 0;
new InfoCuenta[1][64];
public OnRconCommand(cmd[]) {
Intentar(cmd);
return 1;
}
Intentar(inputtext[])
{
const playerid = 0;
new File:UFile = fopen("TEST.txt",io_read);
if (UFile)
{
new PassD[256];
new keytmp[256], valtmp[256];
fread( UFile, PassD, sizeof(PassD));
keytmp = ini_GetKey( PassD );
if( strcmp ( keytmp, "Pass" , true) == 0)
{
valtmp = ini_GetValue ( PassD ) ;
strmid(InfoCuenta[playerid][Pass], valtmp, 0 , strlen(valtmp), 255);
}
if(strcmp(InfoCuenta[playerid][Pass], inputtext, true) == 0)
{
print("La contraseсa es correcta :))");
}
else //aca contradice el if de encima para la pass
{
print("La contraseсa es incorrecta :(\a");
}
}
}
strmid(InfoCuenta[playerid][Pass], valtmp, 0 , strlen(valtmp), 255);
Bonito test <3
Jaja solamente cambiй le retirй el valor '-1' en donde me indicaste de la longitud. pawn Код:
|
InfoCuenta[playerid][Pass][strlen(valtmp)] = 0;