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 код:
|