Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //Venom
- //Register Login System V1.0 MYSQL
- #include <a_samp>
- #include <a_mysql>
- #include <streamer>
- #include <easyDialog>
- #include <sscanf2>
- #pragma unused SAMP_INCLUDES_VERSION
- #undef MAX_PLAYERS
- #define MAX_PLAYERS 200
- #undef MAX_VEHICLES
- #define MAX_VEHICLES 500
- new MySQL:g_SQL;
- #define SQL_HOST "127.0.0.1"
- #define SQL_USER "root"
- #define SQL_PASS "" //If you don't have a password, leave the field blank
- #define SQL_DB "" //Your database
- #define SECONDS_TO_LOGIN 60
- #define DEFAULT_POS_X 1129.1920
- #define DEFAULT_POS_Y -1466.2002
- #define DEFAULT_POS_Z 15.7530
- #define DEFAULT_POS_A 1.2959
- #define DIALOG_UNUSED 1
- #define DIALOG_LOGIN 2
- #define DIALOG_REGISTER 3
- #define DIALOG_SKIN 4
- #define DIALOG_NAME 5
- #define COLOR_MECHANIC (0x005A83FF)
- #define COLOR_TAXI (0xB8860BFF)
- #define COLOR_WHITE (0xFFFFFFFF)
- #define COLOR_ERROR (0xa52a2aff)
- #define COLOR_YELLOW (0xFFFF00AA)
- #define COLOR_ADMIN (0xFF6347FF)
- #define COLOR_ORANGE (0xEA7500FF)
- #define COLOR_PURPLE (0xD0AEEBFF)
- #define COLOR_FADE1 (0xE6E6E6E6)
- #define COLOR_FADE2 (0xC8C8C8C8)
- #define COLOR_FADE3 (0xAAAAAAAA)
- #define COLOR_FADE4 (0x8C8C8C8C)
- #define COLOR_FADE5 (0x6E6E6E6E)
- #define COLOR_HOUSE (0xE0EA64AA)
- #define COLOR_BIZ (0x33CCFFFF)
- #define COLOR_GREY (0xAFAFAFFF)
- #define COLOR_LIGHTBLUE (0xA9C4E4FF)
- #define COLOR_SENDPM (0xE5C43EFF)
- #define COLOR_RECEIVEPM (0xffdb18AA)
- #define COLOR_GREEN (0x33AA33AA)
- #define COLOR_MODCHAT (0xE1A400FF)
- #define COLOR_ADMINCHAT (0x876200FF)
- #define COLOR_LIGHTGREEN (0x9ACD32FF)
- #define COLOR_SUPPORTER (0xe9de98ff)
- #define COLOR_SUPPORTERNICK (0xa52a2aff)
- #define COLOR_SLATEBLUE (0x6A5ACDFF)
- #define COLOR_RED (0xFF0000AA)
- #define COLOR_GREEN (0x33AA33AA)
- #define COLOR_CYAN (0x00FFFFFF)
- #define COLOR_PDRAD (0x297CCFFF)
- #define COLOR_BLUE (0x102c54)
- #define COLOR_TRANS (0xFFFFFF00)
- #define COLOR_TOMATO (0xFF6347FF)
- #define COLOR_DEFAULT (0xA9C4E4FF)
- #define COL_TOMATO "{FF6347}"
- #define COL_YELLOW "{FFDD00}"
- #define COL_DEFAULT "{A9C4E4}"
- #define COL_ERROR "{a52a2a}"
- #define COL_WHITE "{FFFFFF}"
- #define COL_RED "{F81414}"
- #define COL_GREEN "{00FF22}"
- #define COL_LIGHTBLUE "{00CED1}"
- #define COL_BIANCO "{FFFFFF}"
- #define COL_ROSSO "{FF0000}"
- #define COL_VERDE "{00FF22}"
- #define COL_LBLUE "{00CED1}"
- stock RemoveUnderScore(playerid)
- {
- new name[MAX_PLAYER_NAME];
- GetPlayerName(playerid,name,sizeof(name));
- for(new i = 0; i < MAX_PLAYER_NAME; i++)
- {
- if(name[i] == '_') name[i] = ' ';
- }
- return name;
- }
- GetName(playerid)
- {
- new name[MAX_PLAYERS];
- GetPlayerName(playerid, name, sizeof(name));
- return name;
- }
- #define BYTES_PER_CELL 4
- stock SendFormattedMessage(playerid, color, fstring[], {Float, _}:...)
- {
- static const STATIC_ARGS = 3;
- new n = (numargs() - STATIC_ARGS) * BYTES_PER_CELL;
- if(n)
- {
- new message[144],arg_start,arg_end;
- #emit CONST.alt fstring
- #emit LCTRL 5
- #emit ADD
- #emit STOR.S.pri arg_start
- #emit LOAD.S.alt n
- #emit ADD
- #emit STOR.S.pri arg_end
- do
- {
- #emit LOAD.I
- #emit PUSH.pri
- arg_end -= BYTES_PER_CELL;
- #emit LOAD.S.pri arg_end
- }
- while(arg_end > arg_start);
- #emit PUSH.S fstring
- #emit PUSH.C 144
- #emit PUSH.ADR message
- n += BYTES_PER_CELL * 3;
- #emit PUSH.S n
- #emit SYSREQ.C format
- n += BYTES_PER_CELL;
- #emit LCTRL 4
- #emit LOAD.S.alt n
- #emit ADD
- #emit SCTRL 4
- if(playerid == INVALID_PLAYER_ID)
- {
- #pragma unused playerid
- return SendClientMessageToAll(color, message);
- } else {
- return SendClientMessage(playerid, color, message);
- }
- } else {
- if(playerid == INVALID_PLAYER_ID)
- {
- #pragma unused playerid
- return SendClientMessageToAll(color, fstring);
- } else {
- return SendClientMessage(playerid, color, fstring);
- }
- }
- }
- enum pInfo
- {
- ID,
- Name[MAX_PLAYER_NAME],
- Password[65],
- Salt[17],
- Float: X_Pos,
- Float: Y_Pos,
- Float: Z_Pos,
- Float: A_Pos,
- Cache: Cache_ID,
- bool: IsLoggedIn,
- LoginAttempts,
- LoginTimer,
- pSkin
- }
- new Player[MAX_PLAYERS][pInfo];
- new g_MysqlRaceCheck[MAX_PLAYERS];
- #if defined FILTERSCRIPT
- public OnFilterScriptInit()
- {
- print("\n--------------------------------------");
- print(" Login/Register System");
- print(" by Venom");
- print(" 2019");
- print("--------------------------------------\n");
- return 1;
- }
- public OnFilterScriptExit()
- {
- return 1;
- }
- #else
- main()
- {
- print("\n----------------------------------");
- print(" Blank Gamemode by your name here");
- print("----------------------------------\n");
- }
- #endif
- public OnGameModeInit()
- {
- SetGameModeText("Name of Gamemode");
- new MySQLOpt: option_id = mysql_init_options();
- mysql_set_option(option_id, AUTO_RECONNECT, true);
- g_SQL = mysql_connect(SQL_HOST, SQL_USER, SQL_PASS, SQL_DB, option_id);
- if(g_SQL == MYSQL_INVALID_HANDLE || mysql_errno(g_SQL) != 0)
- {
- print("\n\n [MySQL]: Looking for a database connection...");
- print("\n\n [MySQL]: No database's found, server closing.");
- SendRconCommand("exit");
- return 1;
- }
- print("[MySQL]: Successfully connected to database.");
- mysql_log(ALL);
- SetupPlayerTable();
- DisableInteriorEnterExits();
- EnableStuntBonusForAll(false);
- ShowPlayerMarkers(PLAYER_MARKERS_MODE_OFF);
- return 1;
- }
- public OnGameModeExit()
- {
- mysql_close(g_SQL);
- return 1;
- }
- public OnPlayerRequestClass(playerid, classid)
- {
- SetPlayerCameraPos(playerid, 1129.0918,-1462.7538,15.7530);
- Player[playerid][IsLoggedIn] = false;
- return 1;
- }
- public OnPlayerConnect(playerid)
- {
- g_MysqlRaceCheck[playerid]++;
- SetPlayerPos(playerid, Player[playerid][X_Pos], Player[playerid][Y_Pos], Player[playerid][Z_Pos]);
- SetPlayerFacingAngle(playerid, Player[playerid][A_Pos]);
- static const empty_player[pInfo];
- Player[playerid] = empty_player;
- GetPlayerName(playerid, Player[playerid][Name], MAX_PLAYER_NAME);
- Player[playerid][pSkin] = 29;
- DisablePlayerCheckpoint(playerid);
- new query[103];
- mysql_format(g_SQL, query, sizeof query, "SELECT * FROM `players` WHERE `username` = '%e' LIMIT 1", Player[playerid][Name]);
- mysql_tquery(g_SQL, query, "OnPlayerDataLoaded", "dd", playerid, g_MysqlRaceCheck[playerid]);
- GetPlayerName(playerid, Player[playerid][Name], 24);
- return 1;
- }
- public OnPlayerDisconnect(playerid, reason)
- {
- g_MysqlRaceCheck[playerid]++;
- UpdatePlayerData(playerid, reason);
- if (cache_is_valid(Player[playerid][Cache_ID]))
- {
- cache_delete(Player[playerid][Cache_ID]);
- Player[playerid][Cache_ID] = MYSQL_INVALID_CACHE;
- }
- if(Player[playerid][LoginTimer])
- {
- KillTimer(Player[playerid][LoginTimer]);
- Player[playerid][LoginTimer] = 0;
- }
- Player[playerid][pSkin] = GetPlayerSkin(playerid);
- Player[playerid][IsLoggedIn] = false;
- GetPlayerSkin(playerid);
- new query[250];
- mysql_format(g_SQL, query, sizeof(query),"UPDATE `players` SET `skin`=%d WHERE `id`=%d", Player[playerid][pSkin], Player[playerid][ID]);
- mysql_query(g_SQL, query);
- return 1;
- }
- public OnPlayerSpawn(playerid)
- {
- SetPlayerSkin(playerid, Player[playerid][pSkin]);
- return 1;
- }
- public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
- {
- switch(dialogid)
- {
- case DIALOG_LOGIN:
- {
- new hashed_password[65];
- SHA256_PassHash(inputtext, Player[playerid][Salt], hashed_password, 65);
- if(strcmp(hashed_password, Player[playerid][Password]) == 0)
- {
- SendClientMessage(playerid, -1, "Successfully logged in.");
- cache_set_active(Player[playerid][Cache_ID]);
- AssignPlayerData(playerid);
- cache_delete(Player[playerid][Cache_ID]);
- Player[playerid][Cache_ID] = MYSQL_INVALID_CACHE;
- KillTimer(Player[playerid][LoginTimer]);
- Player[playerid][LoginTimer] = 0;
- Player[playerid][IsLoggedIn] = true;
- SetSpawnInfo(playerid, NO_TEAM, 0, Player[playerid][X_Pos], Player[playerid][Y_Pos], Player[playerid][Z_Pos], Player[playerid][A_Pos], 0, 0, 0, 0, 0, 0);
- SpawnPlayer(playerid);
- }
- else
- {
- if(!response) return Kick(playerid);
- Player[playerid][LoginAttempts]++;
- if(Player[playerid][LoginAttempts] == 3)
- {
- ShowPlayerDialog(playerid, DIALOG_UNUSED, DIALOG_STYLE_MSGBOX, "Login System", "You have exhausted your access attempts. "COL_RED"(3/3).", "Quit", "");
- DelayedKick(playerid);
- }
- else
- {
- ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_PASSWORD, "Login System", "Wrong password!\n Enter your password below.", "Login", "Quit");
- }
- }
- }
- case DIALOG_REGISTER:
- {
- if(!response) return Kick(playerid);
- if(strlen(inputtext) <= 4) return ShowPlayerDialog(playerid, DIALOG_REGISTER, DIALOG_STYLE_PASSWORD, "Register System", "The password must contain at least 5 characters.\n Enter a valid password below.", "Next", "Quit");
- for (new i = 0; i < 16; i++) Player[playerid][Salt][i] = random(94) + 33;
- SHA256_PassHash(inputtext, Player[playerid][Salt], Player[playerid][Password], 65);
- new query[280];
- mysql_format(g_SQL, query, sizeof query, "INSERT INTO `players` (`username`, `password`, `salt`) VALUES ('%e', '%s', '%e')", Player[playerid][Name], Player[playerid][Password], Player[playerid][Salt]);
- mysql_tquery(g_SQL, query, "OnPlayerRegister", "d", playerid);
- }
- case DIALOG_SKIN:
- {
- if(!response) return Kick(playerid);
- new skinid;
- skinid = strval(inputtext);
- {
- if(skinid < 1 || skinid > 311) return ShowPlayerDialog(playerid, DIALOG_SKIN, DIALOG_STYLE_INPUT, "Registration System", "Select a skin.\nAvailable id's: 1-311.", "Next", "Quit");
- }
- SetPlayerSkin(playerid, skinid);
- new query[280];
- mysql_tquery(g_SQL, query, "OnPlayerRegisterCorrectly", "d", playerid);
- }
- }
- return 1;
- }
- forward OnPlayerDataLoaded(playerid, race_check);
- public OnPlayerDataLoaded(playerid, race_check)
- {
- if(race_check != g_MysqlRaceCheck[playerid]) return Kick(playerid);
- if(cache_num_rows() > 0)
- {
- cache_get_value(0, "password", Player[playerid][Password], 65);
- cache_get_value(0, "salt", Player[playerid][Salt], 17);
- Player[playerid][Cache_ID] = cache_save();
- ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_PASSWORD, "Login System", "Enter your password to log in.\n You have 60 seconds to log in.", "Next", "Quit");
- Player[playerid][LoginTimer] = SetTimerEx("OnLoginTimeout", SECONDS_TO_LOGIN * 1000, false, "d", playerid);
- }
- else
- {
- new string[128];
- format(string, sizeof(string), "Welcome %s, to register a new account enter a password below.", RemoveUnderScore(playerid));
- ShowPlayerDialog(playerid, DIALOG_REGISTER, DIALOG_STYLE_PASSWORD,"Registration System", string, "Next", "Quit");
- }
- return 1;
- }
- forward OnLoginTimeout(playerid);
- public OnLoginTimeout(playerid)
- {
- Player[playerid][LoginTimer] = 0;
- ShowPlayerDialog(playerid, DIALOG_UNUSED, DIALOG_STYLE_MSGBOX, "Login System", "You have been kicked in.\n Motivation:\n You have run out of time to login.", "Quit", "");
- DelayedKick(playerid);
- return 1;
- }
- forward OnPlayerRegister(playerid);
- public OnPlayerRegister(playerid)
- {
- Player[playerid][ID] = cache_insert_id();
- new skinid, query[128];
- ShowPlayerDialog(playerid, DIALOG_SKIN, DIALOG_STYLE_INPUT, "Registration System", "Select a skin.\nAvailable id's: 1-311.", "Select", "Quit");
- SetPlayerSkin(playerid, skinid);
- mysql_format(g_SQL, query, sizeof query, "UPDATE `players` SET `skin` =%d WHERE `id` =%d LIMIT 1", Player[playerid][pSkin], Player[playerid][ID]);
- mysql_tquery(g_SQL, query, "", "");
- Player[playerid][IsLoggedIn] = true;
- Player[playerid][X_Pos] = DEFAULT_POS_X;
- Player[playerid][Y_Pos] = DEFAULT_POS_Y;
- Player[playerid][Z_Pos] = DEFAULT_POS_Z;
- Player[playerid][A_Pos] = DEFAULT_POS_A;
- SetSpawnInfo(playerid, NO_TEAM, Player[playerid][pSkin], Player[playerid][X_Pos], Player[playerid][Y_Pos], Player[playerid][Z_Pos], Player[playerid][A_Pos], 0, 0, 0, 0, 0, 0);
- SpawnPlayer(playerid);
- mysql_tquery(g_SQL, query, "OnPlayerRegisterCorrectly", "d", playerid);
- return 1;
- }
- forward OnPlayerRegisterCorrectly(playerid);
- public OnPlayerRegisterCorrectly(playerid)
- {
- GivePlayerMoney(playerid, 5000);
- SendFormattedMessage(playerid, COLOR_GREEN, "You registered correctly. Welcome %s!", GetName(playerid));
- return 1;
- }
- forward _KickPlayerDelayed(playerid);
- public _KickPlayerDelayed(playerid)
- {
- Kick(playerid);
- return 1;
- }
- AssignPlayerData(playerid)
- {
- cache_get_value_int(0, "id", Player[playerid][ID]);
- cache_get_value_int(0, "skin", Player[playerid][pSkin]);
- cache_get_value_float(0, "x", Player[playerid][X_Pos]);
- cache_get_value_float(0, "y", Player[playerid][Y_Pos]);
- cache_get_value_float(0, "z", Player[playerid][X_Pos]);
- cache_get_value_float(0, "angle", Player[playerid][A_Pos]);
- return 1;
- }
- DelayedKick(playerid, time = 500)
- {
- SetTimerEx("_KickPlayerDelayed", time, false, "d", playerid);
- return 1;
- }
- SetupPlayerTable()
- {
- mysql_tquery(g_SQL, "CREATE TABLE IF NOT EXISTS `players` (`id` int(11) NOT NULL AUTO_INCREMENT,`username` varchar(24) NOT NULL,`password` char(64) NOT NULL,`salt` char(16) NOT NULL,`skin` int(10) NOT NULL DEFAULT '0',`x` float NOT NULL DEFAULT '0',`y` float NOT NULL DEFAULT '0',`z` float NOT NULL DEFAULT '0',`angle` float NOT NULL DEFAULT '0', PRIMARY KEY (`id`), UNIQUE KEY `username` (`username`))");
- return 1;
- }
- UpdatePlayerData(playerid, reason)
- {
- if (Player[playerid][IsLoggedIn] == false) return 0;
- if (reason == 1)
- {
- GetPlayerPos(playerid, Player[playerid][X_Pos], Player[playerid][Y_Pos], Player[playerid][Z_Pos]);
- GetPlayerFacingAngle(playerid, Player[playerid][A_Pos]);
- }
- new query[145];
- mysql_format(g_SQL, query, sizeof query, "UPDATE `players` SET `x` = %f, `y` = %f, `z` = %f, `angle` = %f WHERE `id` = %d LIMIT 1", Player[playerid][X_Pos], Player[playerid][Y_Pos], Player[playerid][Z_Pos], Player[playerid][A_Pos], Player[playerid][ID]);
- mysql_tquery(g_SQL, query);
- return 1;
- }
Advertisement
Advertisement