SA-MP Forums Archive
MySQL - Printable Version

+- SA-MP Forums Archive (https://sampforum.blast.hk)
+-- Forum: Non-English (https://sampforum.blast.hk/forumdisplay.php?fid=9)
+--- Forum: Languages (https://sampforum.blast.hk/forumdisplay.php?fid=33)
+---- Forum: Español/Spanish (https://sampforum.blast.hk/forumdisplay.php?fid=29)
+---- Thread: MySQL (/showthread.php?tid=479862)



MySQL - [CG]Milito - 07.12.2013

Hola!

Me surgio otro problema con MySQL, estaba editando un poco la tabla de usuarios (Agregando mas campos) pero ahora al registrar una cuenta nueva no crea la fila del usuario en la tabla, nose si es porque agregue Whirlpool al GameMode pero ya no funciona el sistema de registro :C

Les dejo el code

OnPlayerConnect
pawn Код:
new Query[80],pName[24],tstring[164];
    GetPlayerName(playerid,pName,24);
    format(Query,sizeof(Query),"SELECT `Username` FROM `Users` WHERE `Username` = '%s' LIMIT 1;",pName);
    mysql_query(Query);
    mysql_store_result();
    if(mysql_num_rows() != 0)
    {
        format(tstring,sizeof(tstring),"Hey, %s! \nYour account is registered. \nPlease enter your password to login!",pName);
        ShowPlayerDialog(playerid,Logindialog,DIALOG_STYLE_INPUT,"Re gister",tstring,"Register","");
    }
    else
    {
        format(tstring,sizeof(tstring),"Hey, %s! \nYour account is NOT registered.\nPlease type a password to register!",pName);
        ShowPlayerDialog(playerid,Regdialog,DIALOG_STYLE_INPUT,"Lo g in",tstring,"Login","");
    }
    mysql_free_result();
OnDialogResponse
pawn Код:
if(dialogid == Regdialog)
    {
        if(strlen(inputtext) == 0)
        {
            ShowPlayerDialog(playerid,Regdialog,DIALOG_STYLE_INPUT,"Register - Enter your password","You are about to register a new account! \nPlease choose the password for it! \n","Register!","");
        }
        else
        {
            new escpass[100];
            mysql_real_escape_string(inputtext, escpass);
            RegisterPlayer(playerid, escpass);
        }
    }
    if(dialogid == Logindialog)
    {
        if(strlen(inputtext) == 0)
        {
            ShowPlayerDialog(playerid,Logindialog,DIALOG_STYLE_INPUT,"Login","Please enter your passsword to continue!","Login","");
        }
        else
        {
            LoginPlayer(playerid,inputtext);
        }
    }
stocks

pawn Код:
stock RegisterPlayer(playerid, passwordstring[])
{
    new query[235], buf[129];
    WP_Hash(buf,129,passwordstring);
    format(query, sizeof(query), "INSERT INTO `users` (`UserName`,`Password`,`Score`,`Money`,`WantedLevel`,`AdminLevel`,`VipLevel`,`ArmyRights`,`SwatRights`,`SGRights`,`MedicLevel`,`RapistLevel`,`MechanicLevel`,`RobSkill`) VALUES('%s','%s',0,100,0,0,0,0,0,0,0,0,0,0)", GetName(playerid), buf);
    mysql_query(query);
    SendClientMessage(playerid, -1,"You have been succesfuly registered on this server!");
    printf("Hashed pass: %s",buf);
    return 1;
}

stock LoginPlayer(playerid,const password[])
{
    new EscapedText[60];
    new EscapedPass[129];
    new Query[140];
    new buf[129];
    mysql_real_escape_string(password, EscapedText);
    WP_Hash(buf,129,EscapedText);
    mysql_real_escape_string(buf, EscapedPass);
    format(Query,sizeof(Query),"SELECT * FROM `users` WHERE `Username` = '%s' AND `Password` = '%s'",GetName(playerid), EscapedPass);
    mysql_query(Query);
    new rows = mysql_store_result();
    if(rows == 1)
    {
        SendClientMessage(playerid,-1,"You have been logged in!");
        LoadStats(playerid);
    }
    if(!rows)
    {
        new tstring[164];
        SendClientMessage(playerid,-1,"Wrong password!");
        MaxLoginAttempts[playerid]++;
        format(tstring,sizeof(tstring),"Hey, %s! \nYour account is registered. \nPlease enter your password to login!",GetName(playerid));
        ShowPlayerDialog(playerid,Logindialog,DIALOG_STYLE_INPUT,"Re gister",tstring,"Register","");
        if(MaxLoginAttempts[playerid] == 3)
        {
            Kick(playerid);
        }
    }
    mysql_free_result();
    return 1;
}

Saludos!


Respuesta: MySQL - MugiwaraNoLuffy - 07.12.2013

Usa las funciones cache de MySQL r34, esas funciones que utilizas ya cayeron en desuso ya que ahora se usa las threaded queries.


Respuesta: MySQL - JustBored - 07.12.2013

Recomiendo mejor la R7 desde que BlueG dejу el proyecto de MySQL ese plugin pasу a ser medio 'garcha'


Respuesta: MySQL - [DOG]irinel1996 - 07.12.2013

Quote:
Originally Posted by JustBored
Посмотреть сообщение
Recomiendo mejor la R7 desde que BlueG dejу el proyecto de MySQL ese plugin pasу a ser medio 'garcha'
+1

__________________

Es muy grande la query en RegisterPlayer, tendrбs que encadenar dos format en uno con strcat, o mandar dos queries a la base de datos.

Por encadenar me refiero a:
pawn Код:
new cad1[200] = "INSERT INTO users (name, pass) VALUES ";

new cad2[100];
format(cad2, 100, "('%s', '%s')", %s, %s);
/*                   ^     ^
                    name  pass
*/

strcat(cad1, cad2, sizeof(cad1));

/* Mandar query con los datos de cad1 */



Respuesta: MySQL - [CG]Milito - 08.12.2013

Solucionado, el problema era el tamaсo de la cadena "Query", no era lo suficientemente grande


Re: MySQL - Dreft - 02.01.2014

Men usare una parte de tu code

De todas formas Gracias por el code