[Ajuda] LOGIN/REGISTRO Em DOF2
#1

Estou procurando a muito tempo um sistema de LOGIN/REGISTRO em DOF2(SEM SALVAR A SENHA APENAS EM NUMEROS :/) , Acho alguns , porem nunca um 100% funcional , se alguem puder me ajudar nessa .... agradeзo mto
Reply
#2

Usei este como base, quando comecei a programar, ele й bom, jб adicionei vбrias coisas a ele, e funciona perfeitamente.
PHP код:
//  Includes
#include <a_samp>
#include <DOF2>

//defines
#define Dialog_Registro 1
#define Dialog_Login 2
#define Contas "Contas/%s.ini"

// Variбveis //

enum InfoPlayer {

    
Senha,
    
Skin,
    
Score,
    
Matou,
    
Morreu,
    
Dinheiro,
    
Admin

};

new 
Erro[MAX_PLAYERS];
new 
Player[MAX_PLAYERS][InfoPlayer];

public 
OnPlayerConnect(playerid)
{
    if(
DOF2_FileExists( GetPlayerArquivo( playerid ) ) )
    {
        
ShowPlayerDialog( playerid, Dialog_Login, DIALOG_STYLE_PASSWORD, "Login", "Digite Sua Senha Para Entrar!","Logar","Sair");
    }
    else
    {
        
ShowPlayerDialog( playerid, Dialog_Registro, DIALOG_STYLE_PASSWORD, "Registro De Conta", "Digite Sua Senha Para Se Registrar!", "Registrar","Sair");
    }
    
    return 
1;
}

public 
OnPlayerDisconnect(playerid, reason)
{
    
SavePlayer(playerid);
    return 
1;
}

public 
OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
switch(
dialogid){

    case 
Dialog_Registro:
    {
        if( 
response )
        {
            if( 
strlen( inputtext ) < 5 || strlen( inputtext ) > 20 || !strlen( inputtext ) )
            {

                  
ShowPlayerDialog( playerid, Dialog_Registro ,DIALOG_STYLE_PASSWORD, "Registro", "Sua Senha Deve Conter No Mнnimo 5 Caracteres!\nE No Mбximo 20!\nTente Novamente!","Registrar","Sair" );

                return 
1;
            }

            
// Criar Arquivo E Colocar Os Valores //
            
DOF2_CreateFile( GetPlayerArquivo( playerid ) );
            
DOF2_SetString( GetPlayerArquivo( playerid ),"Senha", inputtext );
            
DOF2_SetInt( GetPlayerArquivo( playerid ), "Score" ,0 );
            
DOF2_SetInt( GetPlayerArquivo( playerid ), "Matou" ,0 );
            
DOF2_SetInt( GetPlayerArquivo( playerid ), "Morreu" ,0 );
            
DOF2_SetInt( GetPlayerArquivo( playerid ), "Skin" ,0 );
            
DOF2_SetInt( GetPlayerArquivo( playerid ),"Dinheiro", 50000 );
            
DOF2_SetInt( GetPlayerArquivo( playerid ), "Admin",0 );

            
SendClientMessage(playerid, -1, "{0097FF}Registrado Com Sucesso!.");

            
ShowPlayerDialog( playerid, Dialog_Login ,DIALOG_STYLE_PASSWORD, "Login", "Digite Sua Senha Registrada Abaixo Para Fazer O Login!","Logar","Sair" );

        }
        else 
Kick( playerid );
    }

    case 
Dialog_Login:
    {
        if( 
response )
        {
            if( 
strlen( inputtext ) < 5 || strlen( inputtext ) > 20 || !strlen( inputtext ) )
            {

                   
SendClientMessage( playerid, -1, "{FF0000}Digite Sua Senha Corretamente!." );
                   
ShowPlayerDialog( playerid, Dialog_Login, DIALOG_STYLE_PASSWORD, "Login","Digite Sua Senha Para Entrar!","Entrar","Sair");

                return 
1;
            }
            if( 
strcmp( inputtext, DOF2_GetString( GetPlayerArquivo( playerid ), "Senha" )) == 0 )
            {

                
LoadPlayer( playerid );

                
SendClientMessage(playerid, 0x19B519FF, "{00FF04}Logado Com Sucesso!.");

            }
            else
            {
                
Erro[ playerid ] ++; // Aquivo adiciona + 1 a variavel erro...
                
if ( Erro[ playerid ] == 5 ){ SavePlayer(playerid); Kick ( playerid ); } // se a variavel chegar a 5, kicka o player pois ele errou 5 vezes a senha.

                
SendClientMessage( playerid, -1, "{FF0000}Digite Sua Senha Corretamente!." );
                
ShowPlayerDialog( playerid, Dialog_Login, DIALOG_STYLE_PASSWORD, "Login","Digite Sua Senha Para Entrar!","Entrar","Sair");

            }
        }
        else{

         
SavePlayer( playerid );
         
Kick( playerid );

        }
    }

    }

return 
1;
}

GetPlayerArquivo(playerid)
{
    new 
ArquivoPlayer[ 30 ];
    
format( ArquivoPlayer, sizeof( ArquivoPlayer ), Contas, GetPlayerNameEx( playerid ) );
    return 
ArquivoPlayer;
}

stock GetPlayerNameEx(playerid)
{
    new 
Nome[MAX_PLAYER_NAME];
    
GetPlayerName(playerid, Nome, sizeof(Nome));
    return 
Nome;
}

SavePlayer(playerid)
{
    if( 
DOF2_FileExists( GetPlayerArquivo( playerid ) ) )
    {

        
DOF2_CreateFile(GetPlayerArquivo(playerid));

        
DOF2_SetInt( GetPlayerArquivo( playerid ), "Skin", Player[ playerid ][ Skin ] );
        
DOF2_SetInt( GetPlayerArquivo( playerid ), "Score", Player[ playerid ][ Score ] );
        
DOF2_SetInt( GetPlayerArquivo( playerid ), "Matou", Player[ playerid ][ Matou ] );
        
DOF2_SetInt( GetPlayerArquivo( playerid ), "Morreu", Player[ playerid ][ Morreu ] );
        
DOF2_SetInt( GetPlayerArquivo( playerid ), "Dinheiro", GetPlayerMoney( playerid ));
        
DOF2_SetInt( GetPlayerArquivo( playerid ), "Admin", Player[ playerid ][ Admin ] );

        
DOF2_SaveFile();

    }
    return 
1;
}

LoadPlayer(playerid)
{
    if( 
DOF2_FileExists( GetPlayerArquivo( playerid ) ) )
    {
        
Player[ playerid ][ Skin ] = DOF2_GetInt( GetPlayerArquivo( playerid ), "Skin" );
        
Player[ playerid ][ Score ] = DOF2_GetInt( GetPlayerArquivo( playerid ), "Score" );
        
Player[ playerid ][ Dinheiro ] = DOF2_GetInt( GetPlayerArquivo( playerid ), "Dinheiro" );
        
Player[ playerid ][ Admin ] = DOF2_GetInt( GetPlayerArquivo( playerid ), "Admin"  );
        
Player[ playerid ][ Matou ] = DOF2_GetInt( GetPlayerArquivo( playerid ), "Matou" );
        
Player[ playerid ][ Morreu ] = DOF2_GetInt( GetPlayerArquivo( playerid ), "Morreu" );

        
SetPlayerScore( playerid, Player[ playerid ][ Score ] );
        
GivePlayerMoney( playerid, Player[ playerid] [ Dinheiro ] );
        
SetPlayerSkin(playerid, Player[ playerid ][ Skin ] );

    }
    return 
1;
} 
https://sampforum.blast.hk/showthread.php?tid=422519 para aprender mais sobre dof2
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)