Ayuda creando un login
#1

Hola gente otra vez yo. (Ehh pero que hpt... pa' joder xD)

Esta vez quiero preguntarles sobre un error tengo con un login que estoy creando. esto es lo que me lanza:



PD: Ya tengo creado el define de este modo:

pawn Код:
#define PATH "/Usuarios/%s.ini"
Y ya tengo creado el OnDialogResponse:

pawn Код:
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
    if(response)
    {
        switch(dialogid)
        {
            case DIALOG_REGISTER:
            {
                if (!response) return Kick(playerid);
                if(response)
                {
                    if(!strlen(inputtext)) return ShowPlayerDialog(playerid, DIALOG_REGISTER, DIALOG_STYLE_INPUT, ""BLANCO"Registering...",""ROJO"You have entered an invalid password.\n"BLANCO"Type your password below to register a new account.","Register","Quit");
                    new INI:Archivo = INI_Open(UsuarioPath(playerid));
                    INI_SetTag(Archivo, "Informacion");
                    INI_WriteInt(Archivo, "Identificacion", 1);
                    INI_WriteInt(Archivo, "Registro", 1);
                    INI_WriteInt(Archivo, "Contrasena", udb_hash(inputtext));
                    INI_WriteInt(Archivo, "Dinero", 10000);
                    INI_WriteInt(Archivo, "Experiencia", 0);
                    INI_WriteInt(Archivo, "Administrador", 0);
                    INI_WriteFloat(Archivo, "Vida", 100.00);
                    INI_WriteFloat(Archivo, "Chaleco", 0.00);
                    INI_Close(Archivo);
                   
                    GivePlayerMoney(playerid, 10000);
                    gPlayerCitySelection[playerid] = -1;
                    gPlayerHasCitySelected[playerid] = 0;
                    gPlayerLastCitySelectionTick[playerid] = GetTickCount();
                    SetSpawnInfo(playerid, 0, 0, 1958.33, 1343.12, 15.36, 269.15, 0, 0, 0, 0, 0, 0);
                    SpawnPlayer(playerid);
                    ShowPlayerDialog(playerid, DIALOG_SUCCESS_1, DIALOG_STYLE_MSGBOX,""BLANCO"Success!",""VERDE"Great! Your Y_INI system works perfectly. Relog to save your stats!","Ok","");
                }
            }

            case DIALOG_LOGIN:
            {
                if ( !response ) return Kick ( playerid );
                if( response )
                {
                    if(udb_hash(inputtext) == PlayerInfo[playerid][pPass])
                    {
                        INI_ParseFile(UsuarioPath(playerid), "Informacion_%s", .bExtra = true, .extra = playerid);
                        GivePlayerMoney(playerid, Jugador[playerid][iDinero]);
                        SetPlayerScore(playerid, Jugador[playerid][iExperiencia]);
                        SetPlayerHealth(playerid, Jugador[playerid][iVida]);
                        ShowPlayerDialog(playerid, DIALOG_SUCCESS_2, DIALOG_STYLE_MSGBOX,""BLANCO"Success!",""VERDE"You have successfully logged in!","Ok","");
                    }
                    else
                    {
                        ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_INPUT,""BLANCO"Login",""ROJO"You have entered an incorrect password.\n"BLANCO"Type your password below to login.","Login","Quit");
                    }
                    return 1;
            }
        }
    }
    return 1;
}
Leн en este post: https://sampforum.blast.hk/showthread.php?tid=371355&page=2 pero no creo que sea el mismo problema.
Reply
#2

El dialog ese estб mal, debes ponerle un format arriba
Reply
#3

Re-hice las variables segъn lo que haz definido en OnDialogReponse, aquн:

pawn Код:
#define DIALOG_LOGIN 1
#define DIALOG_REGISTER 2
#define DIALOG_SUCCESS_1 3
#define DIALOG_SUCCESS_2 4


#define BLANCO "{34532}"
#define ROJO "{34532}"
#define VERDE "{34532}"

enum pInfo
{
    pPass[129]
};

enum pInfods
{
    iDinero,
    Float:iVida,
    iExperiencia,
};
new Jugador[MAX_PLAYERS][pInfods],
    PlayerInfo[MAX_PLAYERS][pInfo];

UsuarioPath(playerid){
    new str[32];
    format(str, sizeof(str), "Archivos/%d.ini", playerid);
    return str;
}

stock udb_hash(buf[]) {
    new length=strlen(buf);
    new s1 = 1;
    new s2 = 0;
    new n;
    for (n=0; n<length; n++)
    {
       s1 = (s1 + buf[n]) % 65521;
       s2 = (s2 + s1)     % 65521;
    }
    return (s2 << 16) + s1;
}

new gPlayerCitySelection[MAX_PLAYERS];
new gPlayerHasCitySelected[MAX_PLAYERS];
new gPlayerLastCitySelectionTick[MAX_PLAYERS];


public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
    switch(dialogid)
    {
        case DIALOG_REGISTER:
        {
            if (!response)
            {
                return Kick(playerid);
            }
            else
            {
                if(!strlen(inputtext))
                    return ShowPlayerDialog(playerid, DIALOG_REGISTER, DIALOG_STYLE_INPUT, ""BLANCO"Registering...",""ROJO"You have entered an invalid password.\n"BLANCO"Type your password below to register a new account.","Register","Quit");

                new INI:Archivo = INI_Open(UsuarioPath(playerid));
                INI_SetTag(Archivo, "Informacion");
                INI_WriteInt(Archivo, "Identificacion", 1);
                INI_WriteInt(Archivo, "Registro", 1);
                INI_WriteInt(Archivo, "Contrasena", udb_hash(inputtext));
                INI_WriteInt(Archivo, "Dinero", 10000);
                INI_WriteInt(Archivo, "Experiencia", 0);
                INI_WriteInt(Archivo, "Administrador", 0);
                INI_WriteFloat(Archivo, "Vida", 100.00);
                INI_WriteFloat(Archivo, "Chaleco", 0.00);
                INI_Close(Archivo);

                GivePlayerMoney(playerid, 10000);
                gPlayerCitySelection[playerid] = -1;
                gPlayerHasCitySelected[playerid] = 0;
                gPlayerLastCitySelectionTick[playerid] = GetTickCount();
                SetSpawnInfo(playerid, 0, 0, 1958.33, 1343.12, 15.36, 269.15, 0, 0, 0, 0, 0, 0);
                SpawnPlayer(playerid);
                ShowPlayerDialog(playerid, DIALOG_SUCCESS_1, DIALOG_STYLE_MSGBOX,""BLANCO"Success!",""VERDE"Great! Your Y_INI system works perfectly. Relog to save your stats!","Ok","");
            }
        }
        case DIALOG_LOGIN:
        {
            if ( !response )
            {
                return Kick ( playerid );
            }
            else
            {
                if(udb_hash(inputtext) == PlayerInfo[playerid][pPass])
                {
                    INI_ParseFile(UsuarioPath(playerid), "Informacion_%s", .bExtra = true, .extra = playerid);
                    GivePlayerMoney(playerid, Jugador[playerid][iDinero]);
                    SetPlayerScore(playerid, Jugador[playerid][iExperiencia]);
                    SetPlayerHealth(playerid, Jugador[playerid][iVida]);
                    ShowPlayerDialog(playerid, DIALOG_SUCCESS_2, DIALOG_STYLE_MSGBOX,""BLANCO"Success!",""VERDE"You have successfully logged in!","Ok","");
                }
                else
                {
                    ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_INPUT,""BLANCO"Login",""ROJO"You have entered an incorrect password.\n"BLANCO"Type your password below to login.","Login","Quit");
                }
                return 1;
            }
        }
    }
    return 1;
}
Fнjate si poniendo el OnDialogReponse que estб ahн se soluciona, si no mira que algъn define no estй definido mal.
Reply
#4

Quote:
Originally Posted by _Zume
Посмотреть сообщение
Re-hice las variables segъn lo que haz definido en OnDialogReponse, aquн:

pawn Код:
#define DIALOG_LOGIN 1
#define DIALOG_REGISTER 2
#define DIALOG_SUCCESS_1 3
#define DIALOG_SUCCESS_2 4


#define BLANCO "{34532}"
#define ROJO "{34532}"
#define VERDE "{34532}"

enum pInfo
{
    pPass[129]
};

enum pInfods
{
    iDinero,
    Float:iVida,
    iExperiencia,
};
new Jugador[MAX_PLAYERS][pInfods],
    PlayerInfo[MAX_PLAYERS][pInfo];

UsuarioPath(playerid){
    new str[32];
    format(str, sizeof(str), "Archivos/%d.ini", playerid);
    return str;
}

stock udb_hash(buf[]) {
    new length=strlen(buf);
    new s1 = 1;
    new s2 = 0;
    new n;
    for (n=0; n<length; n++)
    {
       s1 = (s1 + buf[n]) % 65521;
       s2 = (s2 + s1)     % 65521;
    }
    return (s2 << 16) + s1;
}

new gPlayerCitySelection[MAX_PLAYERS];
new gPlayerHasCitySelected[MAX_PLAYERS];
new gPlayerLastCitySelectionTick[MAX_PLAYERS];


public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
    switch(dialogid)
    {
        case DIALOG_REGISTER:
        {
            if (!response)
            {
                return Kick(playerid);
            }
            else
            {
                if(!strlen(inputtext))
                    return ShowPlayerDialog(playerid, DIALOG_REGISTER, DIALOG_STYLE_INPUT, ""BLANCO"Registering...",""ROJO"You have entered an invalid password.\n"BLANCO"Type your password below to register a new account.","Register","Quit");

                new INI:Archivo = INI_Open(UsuarioPath(playerid));
                INI_SetTag(Archivo, "Informacion");
                INI_WriteInt(Archivo, "Identificacion", 1);
                INI_WriteInt(Archivo, "Registro", 1);
                INI_WriteInt(Archivo, "Contrasena", udb_hash(inputtext));
                INI_WriteInt(Archivo, "Dinero", 10000);
                INI_WriteInt(Archivo, "Experiencia", 0);
                INI_WriteInt(Archivo, "Administrador", 0);
                INI_WriteFloat(Archivo, "Vida", 100.00);
                INI_WriteFloat(Archivo, "Chaleco", 0.00);
                INI_Close(Archivo);

                GivePlayerMoney(playerid, 10000);
                gPlayerCitySelection[playerid] = -1;
                gPlayerHasCitySelected[playerid] = 0;
                gPlayerLastCitySelectionTick[playerid] = GetTickCount();
                SetSpawnInfo(playerid, 0, 0, 1958.33, 1343.12, 15.36, 269.15, 0, 0, 0, 0, 0, 0);
                SpawnPlayer(playerid);
                ShowPlayerDialog(playerid, DIALOG_SUCCESS_1, DIALOG_STYLE_MSGBOX,""BLANCO"Success!",""VERDE"Great! Your Y_INI system works perfectly. Relog to save your stats!","Ok","");
            }
        }
        case DIALOG_LOGIN:
        {
            if ( !response )
            {
                return Kick ( playerid );
            }
            else
            {
                if(udb_hash(inputtext) == PlayerInfo[playerid][pPass])
                {
                    INI_ParseFile(UsuarioPath(playerid), "Informacion_%s", .bExtra = true, .extra = playerid);
                    GivePlayerMoney(playerid, Jugador[playerid][iDinero]);
                    SetPlayerScore(playerid, Jugador[playerid][iExperiencia]);
                    SetPlayerHealth(playerid, Jugador[playerid][iVida]);
                    ShowPlayerDialog(playerid, DIALOG_SUCCESS_2, DIALOG_STYLE_MSGBOX,""BLANCO"Success!",""VERDE"You have successfully logged in!","Ok","");
                }
                else
                {
                    ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_INPUT,""BLANCO"Login",""ROJO"You have entered an incorrect password.\n"BLANCO"Type your password below to login.","Login","Quit");
                }
                return 1;
            }
        }
    }
    return 1;
}
Fнjate si poniendo el OnDialogReponse que estб ahн se soluciona, si no mira que algъn define no estй definido mal.
Entonces si tengo malo el OnDialogResponse entonces tengo malo todo el GM lol :v
Reply
#5

No lo sй, por cierto, no uses ese "hash" (que prбcticamente no es un hash no es para lo que sirve, actъa como tal que es diferente), Adler-32 es vulnerable para ser quebrantado con un poco de tiempo, asimismo podrнa causar estragos en tu servidor..
Reply
#6

Oye bro, es que estaba viendo un tutorial pero desde el principio vi que estaba como raro :v
https://sampforum.blast.hk/showthread.php?tid=415795
Reply
#7

Quote:
Originally Posted by _Zume
Посмотреть сообщение
No lo sй, por cierto, no uses ese "hash" (que prбcticamente no es un hash no es para lo que sirve, actъa como tal que es diferente), Adler-32 es vulnerable para ser quebrantado con un poco de tiempo, asimismo podrнa causar estragos en tu servidor..
Adler-32 me hizo pensar en 32 triangulitos de queso. #ChaozNoExistis
Reply
#8

Xd, entonces que se supone que deba usar?, y si es posible algъn lugar donde me expliquen como usarlo?
Reply
#9

Hey gente, que hash me recomiendan їWhirlpool?, serб bueno?
Reply
#10

Sн, mucho mejor a lo que estб al alcance en PAWN.
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)