SA-MP Forums Archive
[ayuda] problema con sistema de cuentas mysqlr7 - 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: [ayuda] problema con sistema de cuentas mysqlr7 (/showthread.php?tid=616355)



[ayuda] problema con sistema de cuentas mysqlr7 - Darkay - 03.09.2016

use este tutorial https://sampforum.blast.hk/showthread.php?tid=435485, todo funciona bien mentras esta online el servidor, carga y guarda datos, pero lo apago y lo prendo para probar cosas nuevas y aparece con 0 de vida y posxyz 0,0,0



aca vuelvo a entrar y compruebo que guarda y carga las coordenadas.


aca cierro el servidor


aca lo vuelvo a abrir


aca entro para comprobar si guardo y cargo correctamente y pasa esto...





Re: [ayuda] problema con sistema de cuentas mysqlr7 - GabrielBas - 03.09.2016

Debes poner en la funcion de cargar la cuenta un SetPlayerPos(playerid, x, y, z); de la cuenta, osea, algo mбs o menos asн:
Quote:

SetPlayerPos(playerid, Cuenta[playerid][PosX], Cuenta[playerid][PosY], Cuenta[playerid][PosZ], Cuenta[playerid][Interior], Cuenta[playerid][VWorld]);

Obviamente al spawnear el jugador luego de loguear claro no... entonces eso deberнa de funcionar...
Y la vida lo mismo, si tu vida se guarda correctamente, al cargar nuevamente la cuenta y loguear debes poner un GivePlayerHealth(playerid, Cuenta[playerid][Vida]);
o el chaleco y viceversa, no se va a actualizar solo si tu no lo haces prбcticamente.


Respuesta: [ayuda] problema con sistema de cuentas mysqlr7 - Darkay - 03.09.2016

este es el codigo miralo donde va exactamente en ondialog response o en onqueryfinish la verdad no entiendo eso..
Код:
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
    new string[256];
    new pName[24], Query[256]; GetPlayerName(playerid, pName, 24);
    switch(dialogid)
    {
        case LOGIN:
        {
            if(!response)
            {
                Kick(playerid);
            }
            if(strcmp(PlayerInfo[playerid][pPassword], inputtext, true, 128) == 0)
            {
                format(Query, sizeof(Query), "SELECT * FROM `usuarios` WHERE `Nombre` = '%s'", pName);
                mysql_function_query(Conecction, Query, true, "OnQueryFinish", "ii", 1, playerid);
                SetSpawnInfo(playerid,0,0,PlayerInfo[playerid][pPosx], PlayerInfo[playerid][pPosy], PlayerInfo[playerid][pPosz],0,0,0,0,0,0,0);
  	 			SetPlayerHealth(playerid, PlayerInfo[playerid][pVida]);
                SetPlayerArmour(playerid, PlayerInfo[playerid][pChaleco]);
                SetPlayerScore(playerid, PlayerInfo[playerid][pScore]);
                SpawnPlayer(playerid);
            }
            else
            {
                SendClientMessage(playerid, -1, "CONTRASEСA INCORRECTA");
                Kick(playerid);
            }
        }
        case REGISTRO:
        {
            if(!response)
            {
                SendClientMessage(playerid, -1, "Kicked");
                Kick(playerid);
            }
            if(response)
            {
                if(!strlen(inputtext))
                {
                    Kick(playerid);
                }
                new string2[128];
                format(string2, sizeof(string2), "%s", inputtext); PlayerInfo[playerid][pPassword] = string2;
                format(Query, sizeof(Query), "INSERT INTO `usuarios` (Nombre, Password) VALUES ('%s', '%s')",pName, PlayerInfo[playerid][pPassword]);
                mysql_function_query(Conecction, Query, true, "OnQueryFinish", "ii", 0, playerid);
                format(string, sizeof(string), "Has registrado el personaje %s en nuestro servidor.\n\nAhora inicia sesiуn", pName);
                ShowPlayerDialog(playerid, LOGIN, DIALOG_STYLE_PASSWORD,"Iniciar sesiуn",string,"Enviar","Salir");
            }
        }
    }
    return 1;
}

forward OnQueryFinish(resultid, extraid, ConnectionHandle);
public OnQueryFinish(resultid, extraid, ConnectionHandle)
{
    new Rows, Field, string[256];
    if(resultid != 0)
    {
        cache_get_data(Rows, Field);
    }
    switch(resultid)
    {
        case 1:
        {
            if(Rows == 1)
            {
                new content[20];
                cache_get_field_content(0, "Password", PlayerInfo[extraid][pPassword]);
                cache_get_field_content(0, "Score", content); PlayerInfo[extraid][pScore] = strval(content);
                cache_get_field_content(0, "Vida", content); PlayerInfo[extraid][pVida] = floatstr(content);
                cache_get_field_content(0, "Chaleco", content); PlayerInfo[extraid][pChaleco] = floatstr(content);
                cache_get_field_content(0, "posX", content); PlayerInfo[extraid][pPosx] = floatstr(content);
                cache_get_field_content(0, "posY", content); PlayerInfo[extraid][pPosy] = floatstr(content);
                cache_get_field_content(0, "posZ", content); PlayerInfo[extraid][pPosz] = floatstr(content);
                SetSpawnInfo(extraid,0,0, PlayerInfo[extraid][pPosx],PlayerInfo[extraid][pPosy],PlayerInfo[extraid][pPosz],0.0,0,0,0,0,0,0);
                SetPlayerScore(extraid,  PlayerInfo[extraid][pScore]);
                SetPlayerArmour(extraid, PlayerInfo[extraid][pChaleco]);
            }
            else if(!Rows)
            {
               //
            }
        }
        case 2:
        {
            if(Rows == 1)
            {
                new pName[24]; GetPlayerName(extraid, pName, 24);
                cache_get_field_content(0, "Password", PlayerInfo[extraid][pPassword]);
                format(string, sizeof(string), "El personaje %s estб registrado en la base de datos. Pon los datos para iniciar sesiуn:", pName);
                ShowPlayerDialog(extraid, LOGIN, DIALOG_STYLE_PASSWORD,"Login",string,"Enviar","Salir");
            }
            else if(!Rows)
            {
                new pName[24]; GetPlayerName(extraid, pName, 24);
                format(string, sizeof(string), "El jugador %s no estб registrado en el servidor, pon aquн la contraseсa para registrarlo:", pName);
                ShowPlayerDialog(extraid, REGISTRO, DIALOG_STYLE_PASSWORD,"Registro:",string,"Enviar","Salir");
            }
        }
    }
    return 1;
}



Re: Respuesta: [ayuda] problema con sistema de cuentas mysqlr7 - Javii - 03.09.2016

Quote:
Originally Posted by Darkay
Посмотреть сообщение
este es el codigo miralo donde va exactamente en ondialog response o en onqueryfinish la verdad no entiendo eso..
Код:
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
    new string[256];
    new pName[24], Query[256]; GetPlayerName(playerid, pName, 24);
    switch(dialogid)
    {
        case LOGIN:
        {
            if(!response)
            {
                Kick(playerid);
            }
            if(strcmp(PlayerInfo[playerid][pPassword], inputtext, true, 128) == 0)
            {
                format(Query, sizeof(Query), "SELECT * FROM `usuarios` WHERE `Nombre` = '%s'", pName);
                mysql_function_query(Conecction, Query, true, "OnQueryFinish", "ii", 1, playerid);
                SetSpawnInfo(playerid,0,0,PlayerInfo[playerid][pPosx], PlayerInfo[playerid][pPosy], PlayerInfo[playerid][pPosz],0,0,0,0,0,0,0);
  	 			SetPlayerHealth(playerid, PlayerInfo[playerid][pVida]);
                SetPlayerArmour(playerid, PlayerInfo[playerid][pChaleco]);
                SetPlayerScore(playerid, PlayerInfo[playerid][pScore]);
                SpawnPlayer(playerid);
            }
            else
            {
                SendClientMessage(playerid, -1, "CONTRASEСA INCORRECTA");
                Kick(playerid);
            }
        }
        case REGISTRO:
        {
            if(!response)
            {
                SendClientMessage(playerid, -1, "Kicked");
                Kick(playerid);
            }
            if(response)
            {
                if(!strlen(inputtext))
                {
                    Kick(playerid);
                }
                new string2[128];
                format(string2, sizeof(string2), "%s", inputtext); PlayerInfo[playerid][pPassword] = string2;
                format(Query, sizeof(Query), "INSERT INTO `usuarios` (Nombre, Password) VALUES ('%s', '%s')",pName, PlayerInfo[playerid][pPassword]);
                mysql_function_query(Conecction, Query, true, "OnQueryFinish", "ii", 0, playerid);
                format(string, sizeof(string), "Has registrado el personaje %s en nuestro servidor.\n\nAhora inicia sesiуn", pName);
                ShowPlayerDialog(playerid, LOGIN, DIALOG_STYLE_PASSWORD,"Iniciar sesiуn",string,"Enviar","Salir");
            }
        }
    }
    return 1;
}

forward OnQueryFinish(resultid, extraid, ConnectionHandle);
public OnQueryFinish(resultid, extraid, ConnectionHandle)
{
    new Rows, Field, string[256];
    if(resultid != 0)
    {
        cache_get_data(Rows, Field);
    }
    switch(resultid)
    {
        case 1:
        {
            if(Rows == 1)
            {
                new content[20];
                cache_get_field_content(0, "Password", PlayerInfo[extraid][pPassword]);
                cache_get_field_content(0, "Score", content); PlayerInfo[extraid][pScore] = strval(content);
                cache_get_field_content(0, "Vida", content); PlayerInfo[extraid][pVida] = floatstr(content);
                cache_get_field_content(0, "Chaleco", content); PlayerInfo[extraid][pChaleco] = floatstr(content);
                cache_get_field_content(0, "posX", content); PlayerInfo[extraid][pPosx] = floatstr(content);
                cache_get_field_content(0, "posY", content); PlayerInfo[extraid][pPosy] = floatstr(content);
                cache_get_field_content(0, "posZ", content); PlayerInfo[extraid][pPosz] = floatstr(content);
                SetSpawnInfo(extraid,0,0, PlayerInfo[extraid][pPosx],PlayerInfo[extraid][pPosy],PlayerInfo[extraid][pPosz],0.0,0,0,0,0,0,0);
                SetPlayerScore(extraid,  PlayerInfo[extraid][pScore]);
                SetPlayerArmour(extraid, PlayerInfo[extraid][pChaleco]);
            }
            else if(!Rows)
            {
               //
            }
        }
        case 2:
        {
            if(Rows == 1)
            {
                new pName[24]; GetPlayerName(extraid, pName, 24);
                cache_get_field_content(0, "Password", PlayerInfo[extraid][pPassword]);
                format(string, sizeof(string), "El personaje %s estб registrado en la base de datos. Pon los datos para iniciar sesiуn:", pName);
                ShowPlayerDialog(extraid, LOGIN, DIALOG_STYLE_PASSWORD,"Login",string,"Enviar","Salir");
            }
            else if(!Rows)
            {
                new pName[24]; GetPlayerName(extraid, pName, 24);
                format(string, sizeof(string), "El jugador %s no estб registrado en el servidor, pon aquн la contraseсa para registrarlo:", pName);
                ShowPlayerDialog(extraid, REGISTRO, DIALOG_STYLE_PASSWORD,"Registro:",string,"Enviar","Salir");
            }
        }
    }
    return 1;
}
Compaсero creo que debes poner el codigo que te han dicho mas arriba aqui

Код:
public OnPlayerSpawn(playerid)
debajo de {

Este callback es una vez que el usuario ha spawneado se le hacen ciertas funciones, metiendo el codigo que el compaсero ha dicho mas arriba no deberias tener problema alguno.


Re: [ayuda] problema con sistema de cuentas mysqlr7 - GabrielBas - 03.09.2016

En ninguno de dos, en la funciуn de spawnear el jugador o en OnPlayerSpawn, la que uses.


Respuesta: [ayuda] problema con sistema de cuentas mysqlr7 - Darkay - 04.09.2016

lo puse asi y ahora ni cargan las coordenadas si salgo y entro (sin cerrar el sv) , por lo que vi si seteo la pos en el onplayerspawn no guarda, pero sigue dando el error principal que reinicio el sv y carg en 0,0,0, si vez los comentarios del treadh de este sistema de cuentas a algunos les pasa ese mismo error algunos lo solucionaron pero no dejaron solucion


Код:
public OnPlayerSpawn(playerid)
{
    TextDrawShowForPlayer(playerid, Rojo);//Funciуn que es que aparece el textdraw al Spawnear
   	TextDrawShowForPlayer(playerid, Rojo1);
   	TextDrawShowForPlayer(playerid, Tnw);
   	TextDrawShowForPlayer(playerid, Tnw2);

 	//SetPlayerPos(playerid, -1982.2260,137.6877,27.6875);
 	SetPlayerPos(playerid, PlayerInfo[playerid][pPosx], PlayerInfo[playerid][pPosy], PlayerInfo[playerid][pPosz]);
  	//SetPlayerFacingAngle(playerid, 87.2715);
   	SetPlayerSkin(playerid, 60);
    //GivePlayerMoney(playerid, 20000);
    SetPlayerHealth(playerid, PlayerInfo[playerid][pVida]);
    

    return 1;
}



Re: [ayuda] problema con sistema de cuentas mysqlr7 - WalkingSleep - 04.09.2016

Dйjalo todo como estaba antes, el problema es que el campo en la db tiene un nombre diferente al que estбs usando en el gm.


Respuesta: [ayuda] problema con sistema de cuentas mysqlr7 - Darkay - 04.09.2016

Te equivocas, es exactamente el mismo, eso fue lo primero que comprobe


Re: [ayuda] problema con sistema de cuentas mysqlr7 - WalkingSleep - 04.09.2016

Pasa la funciуn donde se guardan los datos antes de desconectarse.


Respuesta: [ayuda] problema con sistema de cuentas mysqlr7 - Darkay - 04.09.2016

pero mira, guarda y carga bien el problema es al reiniciar el servidor, cuando lo apago y lo prendo se descontrola el spawn y la vida todo en 0,0,0
Код:
forward SaveAccount(playerid);public SaveAccount(playerid)
{
    new query[200];GetPlayerPos(playerid, PlayerInfo[playerid][pPosx], PlayerInfo[playerid][pPosy], PlayerInfo[playerid][pPosz]);
    new pName[24]; GetPlayerName(playerid, pName, 24); GetPlayerHealth(playerid, PlayerInfo[playerid][pVida]), GetPlayerArmour(playerid, PlayerInfo[playerid][pChaleco]);
    format(query, 200, "UPDATE `usuarios` SET `Vida`='%f', `Chaleco`='%f', `Admin`='%d', `Score`='%d', `Posx`='%f', `Posy`='%f', `Posz`='%f' WHERE `Nombre`='%s'", PlayerInfo[playerid][pVida], PlayerInfo[playerid][pChaleco],
    PlayerInfo[playerid][pAdmin], PlayerInfo[playerid][pScore], PlayerInfo[playerid][pPosx], PlayerInfo[playerid][pPosy], PlayerInfo[playerid][pPosz], pName);
    mysql_function_query(Conecction, query, true, "OnQueryFinish", "ii", 0, playerid);
    return 1;
}