Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <a_samp>
- native WP_Hash( buffer[ ], len, const str[ ] );
- new DB:Database;
- enum DATOS_USERS
- {
- USER_ID,
- USER_NOMBRE[MAX_PLAYER_NAME],
- USER_PASSWORD[129],
- USER_ADMIN,
- bool: USER_LOGUEADO
- };
- new InfoJugador[MAX_PLAYERS][DATOS_USERS];
- #define LOGIN 10
- #define REGISTRO 11
- main()
- {
- print("\n----------------------------------");
- print(" Blank Gamemode by your name here");
- print("----------------------------------\n");
- }
- public OnGameModeInit()
- {
- SetGameModeText("Blank Script");
- AddPlayerClass(0, 1958.3783, 1343.1572, 15.3746, 269.1425, 0, 0, 0, 0, 0, 0);
- Database = db_open("server.db");
- /*db_query(Database, "PRAGMA synchronous = OFF");
- db_query(Database, "CREATE TABLE IF NOT EXISTS users (userid INTEGER PRIMARY KEY AUTOINCREMENT, username VARCHAR(24) COLLATE NOCASE, password VARCHAR(129), admin INTEGER DEFAULT 0 NOT NULL)");*/
- return 1;
- }
- public OnGameModeExit()
- {
- /*db_close(Database);*/
- return 1;
- }
- public OnPlayerRequestClass(playerid, classid)
- {
- SetPlayerPos(playerid, 1958.3783, 1343.1572, 15.3746);
- SetPlayerCameraPos(playerid, 1958.3783, 1343.1572, 15.3746);
- SetPlayerCameraLookAt(playerid, 1958.3783, 1343.1572, 15.3746);
- return 1;
- }
- public OnPlayerConnect(playerid)
- {
- for(new i; i < _: DATOS_USERS; ++i) InfoJugador[playerid][DATOS_USERS: i] = 0;
- //Login
- GetPlayerName(playerid, InfoJugador[playerid][USER_NOMBRE], MAX_PLAYER_NAME);
- new Query[82], DBResult: result;
- format(Query, sizeof(Query), "SELECT password FROM users WHERE username = '%s' LIMIT 0, 1", DB_Escape(InfoJugador[playerid][USER_NOMBRE]));
- result = db_query(Database, Query);
- if(db_num_rows(result))
- {
- db_get_field_assoc(result, "password", InfoJugador[playerid][USER_PASSWORD], 129);
- ShowPlayerDialog(playerid, LOGIN, DIALOG_STYLE_PASSWORD, "{FFFF00}Login", "Ingresa tu pawssword abajo para loguearte", "Login", "Salir");
- }
- else ShowPlayerDialog(playerid, REGISTRO, DIALOG_STYLE_INPUT, "{FFFF00}Registro", "Ingresa un password para registrarte", "Registrar", "Salir" );
- return 1;
- }
- public OnPlayerDisconnect(playerid, reason)
- {
- for(new i; i < _: DATOS_USERS; ++i) InfoJugador[playerid][DATOS_USERS: i] = 0;
- if(InfoJugador[playerid][USER_LOGUEADO] == true)
- {
- new Query[72];
- format(Query, sizeof(Query), "UPDATE users SET admin = %d WHERE username = '%s'", InfoJugador[playerid][USER_ADMIN], DB_Escape(InfoJugador[playerid][USER_NOMBRE]));
- db_query(Database, Query);
- }
- return 1;
- }
- public OnPlayerSpawn(playerid)
- {
- return 1;
- }
- public OnPlayerDeath(playerid, killerid, reason)
- {
- return 1;
- }
- //Funciones
- // Para evitar inyecciones sql.
- 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;
- }
- public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
- {
- switch(dialogid)
- {
- case REGISTRO:
- {
- if(response)
- {
- if(strlen(inputtext) < 3 || strlen(inputtext) > 24)
- {
- SendClientMessage( playerid, 0xFF0000FF, "[ERROR]: Ingresa un password de 3 a 24 caracteres" );
- ShowPlayerDialog( playerid, REGISTRO, DIALOG_STYLE_PASSWORD, "{FFFF00}Registro", "Ingresa un password para registrar esta cuenta", "Registrar", "Salir" );
- return 1;
- }
- new Query[208];
- WP_Hash(InfoJugador[playerid][USER_PASSWORD], 129, inputtext);
- format(Query, sizeof(Query), "INSERT INTO users (username, password) VALUES ('%s', '%s')", DB_Escape(InfoJugador[playerid][USER_NOMBRE]), DB_Escape(InfoJugador[playerid][USER_PASSWORD]));
- db_query(Database, Query);
- InfoJugador[playerid][USER_LOGUEADO] = true;
- SendClientMessage(playerid, 0x00FF00FF, "[SERVIDOR]: Gracias por registrarte en nuestro servidor! Te has logueado automáticamente");
- } else Kick(playerid);
- }
- case LOGIN:
- {
- if(response)
- {
- new buf[129];
- WP_Hash(buf, 129, inputtext);
- if(!strcmp(buf, InfoJugador[playerid][USER_PASSWORD], false))
- {
- new Query[75];
- new DBResult:Result;
- format(Query, sizeof(Query), "SELECT * FROM users WHERE username = '%s' LIMIT 0, 1", DB_Escape(InfoJugador[playerid][USER_NOMBRE] ) );
- Result = db_query(Database, Query);
- if(db_num_rows(Result))
- {
- db_get_field_assoc(Result, "userid", Query, 7);
- InfoJugador[playerid][USER_ID] = strval(Query);
- db_get_field_assoc(Result, "admin", Query, 3);
- InfoJugador[playerid][USER_ADMIN] = strval(Query);
- InfoJugador[playerid][USER_LOGUEADO] = true;
- SendClientMessage( playerid, 0x00FF00FF, "[SERVIDOR]: Has ingresado correctamente a tu cuenta!" );
- }
- db_free_result(Result);
- }
- else
- {
- SendClientMessage(playerid, 0xFF0000FF, "[ERROR]: Password incorrecto!" );
- ShowPlayerDialog(playerid, LOGIN, DIALOG_STYLE_PASSWORD, "{FFFF00}Login", "Ingresa tu password para ingresar a tu cuenta", "Login", "Salir");
- }
- } else Kick(playerid);
- }
- }
- return 1;
- }
Advertisement
Add Comment
Please, Sign In to add comment