Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /* ______________________________________
- |__SISTEMA_BASE_DE_REGISTRO_&_LOGIN__|
- |______________BY_F1N4L______________|
- |_____________05_03_2016_____________|
- |_______________v_0.3z_______________|
- */
- #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 _UDB_ "Server.db"
- #define USER_DB "Users"
- enum pInfo
- {
- pID,
- tkNOME[ MAX_PLAYER_NAME ],
- pSENHA[ 129 ],
- pADMIN,
- bool: pLOGADO
- };
- new
- USER[ MAX_PLAYERS ][ pInfo ]
- ;
- new
- DB: User_Database
- ;
- public OnFilterScriptInit ( )
- {
- new
- Query_User [ 500 ]
- ;
- if ( ( User_Database = db_open ( _UDB_ ) ) == DB:0 )
- {
- SendRconCommand ( "exit" );
- }
- else
- {
- strcat ( Query_User, "CREATE TABLE IF NOT EXISTS `"USER_DB"`" );
- strcat ( Query_User, "(`ID` INTEGER PRIMARY KEY AUTOINCREMENT," );
- strcat ( Query_User, "`NOME` TEXT," );
- strcat ( Query_User, "`SENHA` TEXT," );
- strcat ( Query_User, "`ADMIN` NUMERIC )" );
- db_query ( User_Database, Query_User );
- }
- 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_DB"` WHERE `NOME` = '%s'", DB_Escape ( pName ( playerid ) ) );
- Resultado = db_query ( User_Database, Query_User );
- if ( db_num_rows ( Resultado ) )
- {
- db_get_field_assoc ( Resultado, "SENHA", USER[ playerid ][ pSENHA ], 129 );
- 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 )
- {
- new
- Query_User [ 500 ]
- ;
- format ( Query_User, sizeof ( Query_User ) , "UPDATE `"USER_DB"` SET `ADMIN` = '%i' WHERE `NOME` = '%s'", USER[ playerid ][ pADMIN ], DB_Escape ( pName ( playerid ) ) );
- db_query ( User_Database, Query_User );
- 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 0;
- }
- if ( 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 0;
- }
- new
- Query_User [ 500 ]
- ;
- format ( Query_User, sizeof ( Query_User ) , "INSERT INTO `"USER_DB"` ( `NOME` ) VALUES ( '%s' ) ", DB_Escape ( pName ( playerid ) ) );
- db_query ( User_Database, Query_User );
- format ( Query_User, sizeof ( Query_User ) , "UPDATE `"USER_DB"` SET `SENHA` = '%s' WHERE `NOME` = '%s'", DB_Escape ( inputtext ) , DB_Escape ( pName ( playerid ) ) );
- db_query ( User_Database, Query_User );
- format ( Query_User, sizeof ( Query_User ) , "UPDATE `"USER_DB"` SET `ADMIN` = '0' WHERE `NOME` = '%s'", DB_Escape ( pName ( playerid ) ) );
- 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
- {
- Kick(playerid);
- }
- }
- if ( dialogid == DIALOG_LOGIN )
- {
- if ( response )
- {
- new
- Query_User[ 500 ],
- DBResult: Resultado
- ;
- if ( !strcmp ( inputtext, USER[ playerid ][ pSENHA ], false ) )
- {
- format ( Query_User, sizeof ( Query_User ) , "SELECT * FROM `"USER_DB"` WHERE `NOME` = '%s'", DB_Escape ( 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_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
- {
- Kick(playerid);
- }
- }
- return 1;
- }
- CMD:setlevel ( playerid, params[] )
- {
- new
- Target,
- Level,
- String[129]
- ;
- 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[playerid][pADMIN] = Level;
- return 1;
- }
- stock pName ( playerid )
- {
- new
- GetName[ MAX_PLAYER_NAME ]
- ;
- GetPlayerName ( playerid, GetName, sizeof ( GetName ) );
- return GetName;
- }
- stock DB_Escape ( text[ ] )
- {
- new
- ret[ 80 * 2 ],
- ch,
- i,
- j;
- while ( ( ch = text[ i++ ] ) && j < sizeof ( ret ) )
- {
- if ( ch == '\'' ) //'
- {
- if ( j < sizeof ( ret ) - 2 )
- {
- ret[ j++ ] = '\'';
- ret[ j++ ] = '\'';
- }
- }
- else if ( j < sizeof ( ret ) )
- {
- ret[ j++ ] = ch;
- }
- else
- {
- j++;
- }
- }
- ret[ sizeof ( ret ) - 1 ] = '\0';
- return ret;
- }
- stock 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;
- }
Add Comment
Please, Sign In to add comment