Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <a_samp>
- #include <core>
- #include <float>
- #include <Pawn.CMD>
- native WP_Hash(buffer[], len, const str[]);
- #pragma tabsize 0
- enum USER_DATA {
- USER_ID,
- USER_NAME[MAX_PLAYER_NAME],
- USER_PASSWORD[129],
- USER_ADMIN
- };
- enum {
- DIALOG_REGISTER, // DIALOG_REGISTER is 0
- DIALOG_LOGIN // DIALOG_LOGIN is 1
- };
- new
- User[MAX_PLAYERS][USER_DATA];
- new DB:Database;
- ConnectDatabase() {
- //if(Database == DB:0) {
- if((Database = db_open("usrp.db")) == DB:0) {
- print("[DB] No fue posible hacer conexion con la base de datos.\n");
- SendRconCommand("exit");
- } else {
- 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)");
- print("[DB] La base de datos fue conectada correctamente.\n");
- } return 1;
- }
- public OnPlayerConnect(playerid) {
- new tmp[USER_DATA];
- User[playerid] = tmp;
- GetPlayerName(playerid, User[playerid][USER_NAME], MAX_PLAYER_NAME);
- new Query[82], DBResult: Result;
- format(Query, sizeof Query, "SELECT password FROM users WHERE username = '%q' LIMIT 1", User[playerid][USER_NAME]);
- Result = db_query(Database, Query);
- if (db_num_rows(Result)) {
- db_get_field_assoc(Result, "password", User[playerid][USER_PASSWORD], 129);
- ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_PASSWORD, "Ingresar", "Ingresa tu contraseña para ingresar.", "Ingresar", "Salir");
- } else {
- ShowPlayerDialog(playerid, DIALOG_REGISTER, DIALOG_STYLE_PASSWORD, "Registro", "Ingresa una contraseña para registrar tu cuenta.", "Registrar", "Salir");
- }
- db_free_result(Result);
- return 1;
- }
- public OnPlayerDisconnect(playerid, reason) {
- new tmp[USER_DATA];
- User[playerid] = tmp;
- new Query[51];
- format(Query, sizeof Query, "UPDATE users SET admin = %d WHERE userid = %d", User[playerid][USER_ADMIN], User[playerid][USER_ID]);
- db_query(Database, Query);
- return 1;
- }
- public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
- {
- switch (dialogid)
- {
- case DIALOG_REGISTER:
- {
- if (!response) return Kick(playerid);
- if (!(3 <= strlen(inputtext) <= 20)) {
- SendClientMessage(playerid, -1, "[ERROR]: La contraseña debe ser mayor a 3 caracteres y menor a 20 caracteres." );
- ShowPlayerDialog(playerid, DIALOG_REGISTER, DIALOG_STYLE_PASSWORD, "Registro", "Ingresa una contraseña para registrar tu cuenta.", "Registrar", "Salir" );
- return 1;
- }
- new Query[208];
- WP_Hash(User[playerid][USER_PASSWORD], 129, inputtext);
- format(Query, sizeof Query, "INSERT INTO users (username, password) VALUES ('%q', '%s')", User[playerid][USER_NAME], User[playerid][USER_PASSWORD]);
- db_query(Database, Query);
- SendClientMessage(playerid, -1, "[SERVER]: Has sido registrado correctamente.");
- new DBResult: Result;
- Result = db_query(Database, "SELECT last_insert_rowid()");
- User[playerid][USER_ID] = db_get_field_int(Result);
- db_free_result(Result);
- }
- case DIALOG_LOGIN:
- {
- if (!response) return Kick(playerid);
- new buf[129];
- WP_Hash(buf, 129, inputtext);
- if (strcmp(buf, User[playerid][USER_PASSWORD]))
- {
- SendClientMessage(playerid, -1, "[ERROR]: Contraseña incorrecta, intentalo de nuevo.");
- ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_PASSWORD, "Ingresar", "Ingresa tu contraseña para ingresar.", "Ingresar", "Salir" );
- }
- new DBResult: Result;
- format(buf, sizeof buf, "SELECT * FROM users WHERE username = '%q' LIMIT 1", User[playerid][USER_NAME]);
- Result = db_query(Database, buf);
- if (db_num_rows(Result)) {
- User[playerid][USER_ID] = db_get_field_assoc_int(Result, "userid");
- User[playerid][USER_ADMIN] = db_get_field_assoc_int(Result, "admin");
- SendClientMessage(playerid, -1, "[SERVER]: Has sido correctamente ingresado!");
- }
- db_free_result(Result);
- }
- default: return 0;
- }
- return 1;
- }
- public OnPlayerSpawn(playerid) {
- SetPlayerInterior(playerid,0);
- TogglePlayerClock(playerid,0);
- SetPlayerPos(playerid, 2098.5884, -1760.7990, 13.5625);
- return 1;
- }
- public OnGameModeInit() {
- ConnectDatabase();
- print("Im working.");
- return 1;
- }
- public OnGameModeExit() {
- if(Database) {
- db_close(Database);
- }
- return 1;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement