CMD:login(playerid, params[])
{
if(CheckAccountExist(playerid))
{
new pass[24];
if(sscanf(params,"s[24]",pass)) return UsoCorrecto(playerid, "/login [contraseсa]");
new query[128], DBResult:qresult;
format(query, 128, "SELECT * FROM `datos` WHERE (`Nombre` = '%q', `Password` = '%q')",NombreJugador(playerid),pass);
qresult = db_query(usuarios,query);
if(db_num_rows(qresult) >= 1)
{
new asd[128];
format(asd, sizeof(asd), "{848484}%s ha ingresado al servidor.",NombreJugador(playerid));
SendClientMessageToAll(-1, asd);
}
else {
Error(playerid, "ЎContraseсa incorrecta!");
intentosfallidos[playerid]++;
if(intentosfallidos[playerid] >= 3) {
SendClientMessage(playerid, -1, "Fuiste expulsado por demasiados intentos de logueo fallidos.");
Kick(playerid);
}
}
}
else
{
SendClientMessage(playerid, COLOR_ROJO, "Esta cuenta no se encuentra registrada, por favor usa /registrar [contraseсa] para crear una nueva.");
}
return 1;
}
db_free_result(db_query(usuarios, "CREATE TABLE IF NOT EXISTS `datos`(`ID` INTEGER PRIMARY KEY AUTOINCREMENT,`Nombre` VARCHAR(24) NOT NULL,`Password` VARCHAR(24) NOT NULL)"));
format(query, 128, "SELECT * FROM `datos` WHERE `Nombre` = '%q' AND `Password` = '%q')", NombreJugador(playerid), pass);

CMD:login(playerid, params[])
{
// Verificas si esta registrado, al mismo tiempo si estб registrado; obtienes la contraseсa!
new query_get[76], DBResult:cache;
format(query_get, sizeof(query_get), "SELECT `Password` FROM `datos` WHERE `Nombre` = '%q';", NombreJugador(playerid));
cache = db_query(usuarios, query_get); //Guardamos el resultado en la variable "cache".
if(!db_num_rows(cache)) //Si no se obtuvo una contraseсa!
return SendClientMessage(playerid, -1, "No estas registrado!");
//Si se obtuvo una contraseсa
new string[24];
if(sscanf(params, "s[24]", string))
return SendClientMessage(playerid, -1, "/Login [contraseсa]");
//Longitud de una contraseсa valida! (Cambia 4 por el mнnimo de caracteres)
if(strlen(string) < 4 || strlen(string) > 24)
return SendClientMessage(playerid, -1, "Ingresa una contraseсa valida (4 - 24 caracteres)");
new password[24]; // Aquн guardaremos la contraseсa obtenida
db_get_field_assoc(cache, "Password", password, 24); //La almacenamos en la variable
if(!strcmp(password, string, false)) // Comprobamos si la contraseсa obtenida y la insertada son iguales!
{
//Si son iguales sucederб esto!
SendClientMessage(playerid, -1, "Has ingresado correctamente al servidor!");
new query[67]; //Cargas el resto de datos
format(query, sizeof(query), "SELECT * FROM `datos` WHERE `Nombre` = '%q';", NombreJugador(playerid));
cache = db_query(usuarios, query);
//Cargas en las variables comprobando el cache y usando cache_get_field_assoc/int/float.
}
else
{ //Si la contraseсa fue incorrecta sucedrб esto!
SendClientMessage(playerid, -1, "ЎContaseсa incorrecta!");
IntentosFallidos[playerid] = IntentosFallidos[playerid] + 1;
if(IntentosFallidos[playerid] == 3)
{
SendClientMessage(playerid, -1, "Fuiste expulsado del servidor por demasiados intentos de logeo fallidos!");
Player_DelayKick(playerid); //Esto es necesario o no serб visible el mensaje.
}
}
return true;
}
//-----------------------------------------
//Funciуn para expulsar a un player con retraso
Player_DelayKick(playerid)
{
SetTimerEx("OnPlayerKicked", (150 + GetPlayerPing(playerid)), false, "i", playerid);
return 1;
}
forward OnPlayerKicked(playerid);
public OnPlayerKicked(playerid) return Kick(playerid);
|
Prueba asi esta parte de la query
PHP код:
|