Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /* ______________________________________
- |__SISTEMA_BASE_DE_REGISTRO_&_LOGIN__|http://forum.sa-mp.com/showthread.php?t=602337
- |______________BY_F1N4L______________|http://forum.sa-mp.com/member.php?u=204784
- |_____EDITADO_E_ATUALIZADO_BY_PT_____|http://forum.sa-mp.com/member.php?u=184410
- |_______________HASHED_______________|
- |_____________06_03_2016_____________|
- |______________v_0.3.7_______________|
- */
- #include < a_samp > // By SA:MP Team
- #include < sscanf2 > // By Y_Less
- #include < zcmd > // By Zeex
- #undef MAX_PLAYERS
- #define MAX_PLAYERS ( 50 )
- #define DIALOG_LOGIN ( 100 )
- #define DIALOG_REGISTER ( 101 )
- #define DATABASE "Server.db"
- #define USER_TABLE "Users"
- enum pInfo
- {
- pID,
- tkNOME[ MAX_PLAYER_NAME ],
- pSENHA[ 65 ],
- pDINHEIRO,
- pADMIN,
- bool:pLOGADO
- };
- new USER[ MAX_PLAYERS ][ pInfo ];
- // Database
- new DB:User_Database;
- public OnFilterScriptInit ( )
- {
- if ( ( User_Database = db_open ( DATABASE ) )== DB:0 )
- {
- print ( "A DataBase "DATABASE" não existia e foi criada com sucesso." );
- }
- else
- {
- db_free_result ( db_query ( User_Database, "CREATE TABLE IF NOT EXISTS "USER_TABLE" ( \
- `ID` INTEGER PRIMARY KEY AUTOINCREMENT,\
- `NOME` TEXT,\
- `SENHA` TEXT,\
- `DINHEIRO` NUMERIC,\
- `ADMIN` NUMERIC \
- )" ) );
- }
- return 1;
- }
- public OnFilterScriptExit ( )
- {
- db_close ( User_Database );
- return 1;
- }
- public OnPlayerConnect ( playerid )
- {
- new Reset[ pInfo ];
- USER[ playerid ] = Reset;
- new
- Query_User[ 200 ],
- DBResult:Resultado
- ;
- format ( Query_User, sizeof ( Query_User ), "SELECT `SENHA` FROM `"USER_TABLE"` WHERE `NOME` = '%q'", pName ( playerid ) );
- Resultado = db_query ( User_Database, Query_User );
- if ( db_num_rows ( Resultado ) )
- {
- db_get_field_assoc ( Resultado, "SENHA", USER[ playerid ][ pSENHA ], 65 );
- ShowPlayerDialog ( playerid, DIALOG_LOGIN, DIALOG_STYLE_PASSWORD, "Painel de Login", "Bem Vindo novamente ao nosso servidor\nLogue-se para continuar de onde parou:", "LOGAR", "SAIR" );
- }
- else
- {
- ShowPlayerDialog ( playerid, DIALOG_REGISTER, DIALOG_STYLE_PASSWORD, "Painel de Registro", "Bem Vindo ao nosso servidor\nRegistre-se para salvar seu dados:", "REGISTRAR", "SAIR" );
- }
- db_free_result ( db_query ( User_Database, Query_User ) );
- return 1;
- }
- public OnPlayerDisconnect ( playerid, reason )
- {
- SaveAccount ( playerid );
- new Reset[ pInfo ];
- USER[ playerid ] = Reset;
- return 1;
- }
- public OnDialogResponse ( playerid, dialogid, response, listitem, inputtext[ ] )
- {
- if ( dialogid == DIALOG_REGISTER )
- {
- if ( response )
- {
- if ( !IsValidPassword ( inputtext ) )
- {
- ShowPlayerDialog ( playerid, DIALOG_REGISTER, DIALOG_STYLE_PASSWORD, "Painel de Registro", "Bem Vindo ao nosso servidor\nRegistre-se para salvar seu dados:", "REGISTRAR","SAIR" );
- SendClientMessage ( playerid, -1, "Utilize apenas LETRAS e NÚMEROS." );
- return 1;
- }
- if ( !strlen ( inputtext ) || strlen ( inputtext ) < 3 || strlen ( inputtext )> 20 )
- {
- ShowPlayerDialog ( playerid, DIALOG_REGISTER, DIALOG_STYLE_PASSWORD, "Painel de Registro", "Bem Vindo ao nosso servidor\nRegistre-se para salvar seu dados:", "REGISTRAR","SAIR" );
- SendClientMessage ( playerid, -1, "A senha deve ser entre 3-20." );
- return 1;
- }
- new
- Query_User[ 200 ],
- HashPass[ 65 ]
- ;
- SHA256_PassHash ( inputtext, "123d1dfqwede2e", HashPass, sizeof ( HashPass ) );
- format ( Query_User, sizeof ( Query_User ), "INSERT INTO `"USER_TABLE"` ( `NOME`, `SENHA`, `DINHEIRO`, `ADMIN` )VALUES ( '%q', '%q', '0', '0' )", pName ( playerid ), HashPass );
- db_query ( User_Database, Query_User );
- USER[ playerid ][ pLOGADO ] = true;
- SendClientMessage ( playerid, -1, "Sua conta foir criada com sucesso e você foi automaticamente logado!" );
- }
- else return Kick ( playerid );
- }
- if ( dialogid == DIALOG_LOGIN )
- {
- if ( response )
- {
- new
- Query_User[ 200 ],
- DBResult: Resultado,
- HashPass[ 65 ]
- ;
- SHA256_PassHash ( inputtext, "123d1dfqwede2e", HashPass, sizeof ( HashPass ) );
- if ( strcmp ( HashPass, USER[ playerid ][ pSENHA ], true ) == 0 )
- {
- format ( Query_User, sizeof ( Query_User ), "SELECT * FROM `"USER_TABLE"` WHERE `NOME` = '%q'", pName ( playerid ) );
- Resultado = db_query ( User_Database, Query_User );
- if ( db_num_rows ( Resultado ) )
- {
- db_get_field_assoc ( Resultado, "ID", Query_User, 3 );
- USER[ playerid ][ pID ] = strval ( Query_User );
- db_get_field_assoc ( Resultado, "ADMIN", Query_User, 6 );
- USER[ playerid ][ pADMIN ] = strval ( Query_User );
- db_get_field_assoc ( Resultado, "DINHEIRO", Query_User, 6 );
- USER[ playerid ][ pDINHEIRO ] = strval ( Query_User );
- ResetPlayerMoney ( playerid );
- GivePlayerMoney ( playerid, USER[ playerid ][ pDINHEIRO ] );
- }
- db_free_result ( db_query ( User_Database, Query_User ) );
- SendClientMessage ( playerid, -1, "Você logou com sucesso!" );
- USER[ playerid ][ pLOGADO ] = true;
- }
- else
- {
- SendClientMessage ( playerid, -1, "Você errou a senha!" );
- ShowPlayerDialog ( playerid, DIALOG_LOGIN, DIALOG_STYLE_PASSWORD, "Painel de Login", "Bem Vindo novamente ao nosso servidor\nLogue-se para continuar de onde parou:", "LOGAR","SAIR" );
- }
- }
- else return Kick ( playerid );
- }
- return 1;
- }
- CMD:setlevel ( playerid, params[ ] )
- {
- new
- Target,
- Level,
- String[ 120 ]
- ;
- if ( sscanf ( params, "ui", Target, Level ) )return SendClientMessage ( playerid, -1, "/SETLEVEL [ ID ] [ LEVEL ]" );
- format ( String, sizeof ( String ), "Admin %s setou level admin %i para o player %s", pName ( playerid ), Level, pName ( Target ) );
- SendClientMessageToAll ( -1, String );
- format ( String, sizeof ( String ), "Admin %s setou seu level admin para %i", pName ( playerid ), Level );
- SendClientMessageToAll ( -1, String );
- USER[ Target ][ pADMIN ] = Level;
- return 1;
- }
- CMD:setmoney ( playerid, params[ ] )
- {
- new
- Target,
- Ammount,
- String[ 120 ]
- ;
- if ( sscanf ( params, "ui", Target, Ammount ) )return SendClientMessage ( playerid, -1, "/SETMONEY [ ID ] [ AMMOUNT ]" );
- format ( String, sizeof ( String ), "Admin %s setou a quantia de %i em dinheiro para o player %s", pName ( playerid ), Ammount, pName ( Target ) );
- SendClientMessageToAll ( -1, String );
- format ( String, sizeof ( String ), "Admin %s setou seu dinheiro para %i", pName ( playerid ), Ammount );
- SendClientMessageToAll ( -1, String );
- USER[ Target ][ pDINHEIRO ] = Ammount;
- return 1;
- }
- pName ( playerid )
- {
- new GetName[ MAX_PLAYER_NAME ];
- return ( GetPlayerName ( playerid, GetName, sizeof ( GetName ) ), GetName );
- }
- IsValidPassword ( const numeric[ ] )
- {
- for ( new i = 0; numeric[ i ] != EOS; ++i )
- {
- switch ( numeric[ i ] )
- {
- case '0'..'9', 'A'..'Z', 'a'..'z': continue;
- default: return 0;
- }
- }
- return 1;
- }
- SaveAccount ( playerid )
- {
- new
- Query_User[ 200 ]
- ;
- if ( USER[ playerid ][ pLOGADO ] == true )
- {
- format ( Query_User, sizeof ( Query_User ), "UPDATE `"USER_TABLE"` SET `ADMIN` = '%i' WHERE `NOME` = '%q'", USER[ playerid ][ pADMIN ], pName ( playerid ) );
- db_query ( User_Database, Query_User );
- format ( Query_User, sizeof ( Query_User ), "UPDATE `"USER_TABLE"` SET `DINHEIRO` = '%i' WHERE `NOME` = '%q'", USER[ playerid ][ pDINHEIRO ], pName ( playerid ) );
- db_query ( User_Database, Query_User );
- print ( "conta salva" );
- }
- return 1;
- }
Advertisement
Add Comment
Please, Sign In to add comment