SA-MP Forums Archive
[Ajuda] Sistema de Registo - 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: Português/Portuguese (https://sampforum.blast.hk/forumdisplay.php?fid=34)
+---- Thread: [Ajuda] Sistema de Registo (/showthread.php?tid=456178)



Sistema de Registo - bruxo00 - 04.08.2013

Estou a seguir um tutorial para um sistema de registo, mas o tutorial sу ensina a fazer senhas de nъmeros, com strval. Como se faz com letras/nъmeros? Obrigado


Re: Sistema de Registo - darkxdll - 04.08.2013

Nгo use a verificaзгo STRVAL.

Exemplo :
PHP код:
if(strval(inputtext)) // simplesmente nгo use isto :). Ai pra salvar a senha , salve em "String" , DOF2_SetString... 



Re: Sistema de Registo - bruxo00 - 06.08.2013

Obrigado pela ajuda, jб retirei todos os strval's do cуdigo, mas nгo consigo fazer uma coisa: A funзгo do DOF "DOF2_GetString" estб a dar erro... e nгo consigo retira-lo.

Linha do erro:

pawn Код:
iPlayerInfo[playerid][Password] = DOF2_GetString(ficheiro, "Password");
Erro:

pawn Код:
error 006: must be assigned to an array



Re: Sistema de Registo - [A]rray - 06.08.2013

Quote:
Originally Posted by bruxo00
Посмотреть сообщение
Obrigado pela ajuda, jб retirei todos os strval's do cуdigo, mas nгo consigo fazer uma coisa: A funзгo do DOF "DOF2_GetString" estб a dar erro... e nгo consigo retira-lo.

Linha do erro:

pawn Код:
iPlayerInfo[playerid][Password] = DOF2_GetString(ficheiro, "Password");
Erro:

pawn Код:
error 006: must be assigned to an array
Nunca usei DOF2, mas tente assim
pawn Код:
format(ficheiro, sizeof(ficheiro), "%s", DOF2_GetString(ficheiro, "Password"));



Re: Sistema de Registo - bruxo00 - 06.08.2013

Obrigado, resolveu

+REP


Re: Sistema de Registo - bruxo00 - 06.08.2013

Jб agora, agora o servidor crasha quando tento registar-me.

Conecto - servidor ON.
Clico no Button 2 - Servidor ON
Nгo escrevo nada (isnull) - Servidor ON
Escrevo uma senha e tento registar-me - Servidor OFF

Aqui estб o dialog de registo, nгo encontro erro nenhum!!

pawn Код:
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
    new ficheiro[32];
    new nome[MAX_PLAYER_NAME];
   
    GetPlayerName(playerid, nome, sizeof(nome));
    format(ficheiro, sizeof(ficheiro), "iPlays/Contas/%s.ini", nome);
    if(dialogid == DIALOG_REGISTO)
    {
        if(!response)
        {
            Kick(playerid);
            return 1;
        }
        else
        {
            if(!isnull(inputtext))
            {
                DOF2_CreateFile(ficheiro);
                DOF2_SetString(ficheiro, "Password", iPlayerInfo[playerid][Password]);
                DOF2_SetInt(ficheiro, "Score", iPlayerInfo[playerid][Score]);
                DOF2_SetInt(ficheiro, "Dinheiro", iPlayerInfo[playerid][Dinheiro]);
                DOF2_SetInt(ficheiro, "Admin", iPlayerInfo[playerid][Admin]);
                DOF2_SaveFile();

                ShowPlayerDialog(playerid, DIALOG_LOGAR, DIALOG_STYLE_PASSWORD, "Login", "Registado com sucesso! \nEfectue o login!", "Login", "Cancelar");
            }
            else
            {
                SendClientMessage(playerid, Erro, "[ ERRO ] Nгo escreveste nada, serбs kickado.");
                SetTimer("KickTimer", 60, false);
            }
        }
    }



Re: Sistema de Registo - humildadeforever - 06.08.2013

Desculpe as alteraзхes, gosto de economizar linha e deixar um cуdigo mais organizado
pawn Код:
new ficheiro[32],nome[MAX_PLAYER_NAME];
GetPlayerName(playerid, nome, sizeof(nome));
if(dialogid == DIALOG_REGISTO)
{
    if(!response) return Kick(playerid);
    if(!strlen(inputtext)) return ShowPlayerDialog(playerid, DIALOG_LOGAR, DIALOG_STYLE_PASSWORD,"Login","Digite sua senhaaaaa!","Logar","Sair");
    format(ficheiro, sizeof(ficheiro), "iPlays/Contas/%s.ini", nome);
    DOF2_CreateFile(ficheiro);
    DOF2_SetString(ficheiro, "Password", inputtext);
    DOF2_SetInt(ficheiro, "Score", iPlayerInfo[playerid][Score]);
    DOF2_SetInt(ficheiro, "Dinheiro", iPlayerInfo[playerid][Dinheiro]);
    DOF2_SetInt(ficheiro, "Admin", iPlayerInfo[playerid][Admin]);
    DOF2_SaveFile();
    ShowPlayerDialog(playerid, DIALOG_LOGAR, DIALOG_STYLE_PASSWORD, "Login", "Registado com sucesso! \nEfectue o login!", "Login", "Cancelar");
    return 1;
}
Se nгo der certo, verifique se vocк criou as 2 pastas. Mesmo se nгo resolver, faзa um debug.


Re: Sistema de Registo - Mteck - 07.08.2013

Jб criou a pasta na ScriptFile?

pawn Код:
format(ficheiro, sizeof(ficheiro), "iPlays/Contas/%s.ini", nome);



Re: Sistema de Registo - bruxo00 - 07.08.2013

Pois... foi mesmo isso... no cуdigo mudei o nome da pasta, mas esqueci de mudar no scriptfiles. Obrigado

Mas agora, registo-me, e no login, escrevo uma senha aleatуria, faзo login na mesma. Acho que o problema estб no strcmp e no isnull, й a primeira vez que uso :/

E no ficheiro da conta, a password fica assim:

PHP код:
Password = (null
Aqui estгo os dialog's de login e registo:

PHP код:
public OnDialogResponse(playeriddialogidresponselistiteminputtext[])
{
    new 
ficheiro[64];
    new 
nome[MAX_PLAYER_NAME];
    
    
GetPlayerName(playeridnomesizeof(nome)); 
    
format(ficheirosizeof(ficheiro), "iPlays/Contas/%s.ini"nome);
    if(
dialogid == DIALOG_REGISTO)
    {
        if(!
response
        { 
            
Kick(playerid);
            return 
1;
        }
        else 
        {
            if(!
isnull(inputtext))
            {
                
DOF2_CreateFile(ficheiro);
                
DOF2_SetString(ficheiro"Password"iPlayerInfo[playerid][Password]);
                
DOF2_SetInt(ficheiro"Score"iPlayerInfo[playerid][Score]);
                
DOF2_SetInt(ficheiro"Dinheiro"iPlayerInfo[playerid][Dinheiro]);
                
DOF2_SetInt(ficheiro"Admin"iPlayerInfo[playerid][Admin]);
                
DOF2_SaveFile();
                
ShowPlayerDialog(playeridDIALOG_LOGARDIALOG_STYLE_PASSWORD"Login""Registado com sucesso! \nEfectue o login!""Login""Cancelar");
            }
            else
            {
                
SendClientMessage(playeridErro"[ ERRO ] {4B00B0}Nгo escreveste nada, serбs kickado.");
                
SetTimer("KickTimer"60false);
            }
        }
    }
    if(
dialogid == DIALOG_LOGAR)
    {
        if(!
response
        { 
            
Kick(playerid);
            return 
1;
        }
        else 
        { 
            
iPlayerInfo[playerid][Password] = format(ficheirosizeof(ficheiro), "%s"DOF2_GetString(ficheiro"Password"));
            if(!
strcmp(iPlayerInfo[playerid][Password], inputtextfalse) || !isnull(inputtext))
            { 
                
iPlayerInfo[playerid][Score] = DOF2_GetInt(ficheiro"Score"); 
                
iPlayerInfo[playerid][Dinheiro] = DOF2_GetInt(ficheiro"Dinheiro"); 
                
iPlayerInfo[playerid][Admin] = DOF2_GetInt(ficheiro"Admin"); 
                
GivePlayerMoney(playeridiPlayerInfo[playerid][Dinheiro]);
                
SetPlayerScore(playeridiPlayerInfo[playerid][Score]);
                
SpawnPlayer(playerid);
            }
            else 
            {
                
ShowPlayerDialog(playeridDIALOG_LOGARDIALOG_STYLE_PASSWORD"Login""A password digitada й errada, digite-a novamente para logar!""Login""Cancelar");
            }
        }
    }
    return 
1;




Re: Sistema de Registo - humildadeforever - 07.08.2013

pawn Код:
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
    new ficheiro[32],nome[MAX_PLAYER_NAME];
    GetPlayerName(playerid, nome, sizeof(nome));
    if(dialogid == DIALOG_REGISTO)
    {
        if(!response) return Kick(playerid);
        if(!strlen(inputtext)) return ShowPlayerDialog(playerid, DIALOG_LOGAR, DIALOG_STYLE_PASSWORD,"Login","Digite sua senhaaaaa!","Logar","Sair");
        format(ficheiro, sizeof(ficheiro), "iPlays/Contas/%s.ini", nome);
        DOF2_CreateFile(ficheiro);
        DOF2_SetString(ficheiro, "Password", inputtext);
        DOF2_SetInt(ficheiro, "Score", iPlayerInfo[playerid][Score]);
        DOF2_SetInt(ficheiro, "Dinheiro", iPlayerInfo[playerid][Dinheiro]);
        DOF2_SetInt(ficheiro, "Admin", iPlayerInfo[playerid][Admin]);
        DOF2_SaveFile();
        ShowPlayerDialog(playerid, DIALOG_LOGAR, DIALOG_STYLE_PASSWORD, "Login", "Registado com sucesso! \nEfectue o login!", "Login", "Cancelar");
        return 1;
    }
    if(dialogid == DIALOG_LOGAR)
    {
        if(!response) return Kick(playerid);
        format(ficheiro, sizeof(ficheiro),"iPlays/Contas/%s.ini", nome);
        if(!strcmp(DOF2_GetString(ficheiro,"Password"), inputtext, false))
        {
            iPlayerInfo[playerid][Score] = DOF2_GetInt(ficheiro, "Score");
            iPlayerInfo[playerid][Dinheiro] = DOF2_GetInt(ficheiro, "Dinheiro");
            iPlayerInfo[playerid][Admin] = DOF2_GetInt(ficheiro, "Admin");

            GivePlayerMoney(playerid, iPlayerInfo[playerid][Dinheiro]);
            SetPlayerScore(playerid, iPlayerInfo[playerid][Score]);
            SpawnPlayer(playerid);
        }
        else return  ShowPlayerDialog(playerid, DIALOG_LOGAR, DIALOG_STYLE_PASSWORD, "Login", "A password digitada й errada, digite-a novamente para logar!", "Login", "Cancelar");
        return 1;
    }
    return 1;
}