01.04.2018, 20:21
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
// 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;
}