Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <a_samp>
- #define DIALOG_REGISTER (1000)
- #define DIALOG_LOGIN (2000)
- #define DEFAULT_MONEY (5000)
- #define DEFAULT_SKIN (136)
- #define DEFAULT_X (2247.6187)
- #define DEFAULT_Y (-1262.2136)
- #define DEFAULT_Z (23.9550)
- #define DEFAULT_A (266.1028)
- new DB:db_handle;
- public OnFilterScriptInit() {
- db_handle = db_open("sqlite.db");
- db_query(db_handle, "CREATE TABLE IF NOT EXISTS `player_info` (`name`, `password`, `money`, `skin`)");
- return true;
- }
- public OnFilterScriptExit() {
- db_close(db_handle);
- return true;
- }
- public OnPlayerConnect(playerid) {
- new
- szName[25],
- szString[150],
- DBResult:szResult;
- GetPlayerName(playerid, szName, sizeof szName);
- format(szString, sizeof szString, "SELECT * FROM `player_info` WHERE `name` = '%s'", DB_Escape(szName));
- szResult = db_query(db_handle, szString);
- if(db_num_rows(szResult)) {
- format(szString, sizeof szString, "{ffffff}Bem-vindo, {f6f600}%s{ffffff}!\n\nDigite sua senha para logar.", szName);
- ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_PASSWORD, "{ffffff}Login", szString, "Login", "Sair");
- }
- else {
- format(szString, sizeof szString, "{ffffff}Bem-vindo, {f6f600}%s{ffffff}!\nVocê ainda não é registrado no servidor.\n\nDigite uma senha abaixo para se registrar.", szName);
- ShowPlayerDialog(playerid, DIALOG_REGISTER, DIALOG_STYLE_PASSWORD, "{ffffff}Registro", szString, "Registrar", "Sair");
- }
- db_free_result(szResult);
- return true;
- }
- public OnPlayerDisconnect(playerid, reason) {
- if(GetPVarInt(playerid, "pLogged")) {
- new
- szName[25],
- szString[150];
- GetPlayerName(playerid, szName, sizeof szName);
- format(szString, sizeof szString, "UPDATE `player_info` SET `money` = %d, `skin` = %d WHERE `name` = '%s'", GetPlayerMoney(playerid), GetPlayerSkin(playerid), DB_Escape(szName));
- db_query(db_handle, szString);
- }
- return true;
- }
- public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[]) {
- new
- szName[25],
- szString[150];
- GetPlayerName(playerid, szName, sizeof szName);
- switch(dialogid) {
- case DIALOG_REGISTER: {
- if(!response)
- Kick(playerid);
- else {
- if(!(4 < strlen(inputtext) < 33))
- ShowPlayerDialog(playerid, DIALOG_REGISTER, DIALOG_STYLE_PASSWORD, "{ffffff}Registro", "{ffffff}Sua senha deve conter no mínimo 05 e no máximo 32 caracteres.\nPor favor, tente novamente.", "Registrar", "Sair");
- else {
- format(szString, sizeof szString, "INSERT INTO `player_info` (`name`, `password`, `money`, `skin`) VALUES ('%s', '%s', %d, %d)", szName, inputtext, DEFAULT_MONEY, DEFAULT_SKIN);
- db_query(db_handle, szString);
- format(szString, sizeof szString, "{ffffff}Muito bem, {f6f600}%s{ffffff}.\nVocê se registrou com sucesso!\n\nDigite sua senha abaixo para logar.", szName);
- ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_PASSWORD, "{ffffff}Login", szString, "Login", "Sair");
- }
- }
- }
- case DIALOG_LOGIN: {
- if(!response)
- Kick(playerid);
- else {
- new
- DBResult:szResult;
- format(szString, sizeof szString, "SELECT * FROM `player_info` WHERE `name` = '%s' AND `password` = '%s'", DB_Escape(szName), DB_Escape(inputtext));
- szResult = db_query(db_handle, szString);
- if(db_num_rows(szResult)) {
- new
- szField[32];
- SetPVarInt(playerid, "pLogged", 1);
- db_get_field_assoc(szResult, "money", szField, 32);
- ResetPlayerMoney(playerid);
- GivePlayerMoney(playerid, strval(szField));
- db_get_field_assoc(szResult, "skin", szField, 32);
- SetSpawnInfo(playerid, 0, strval(szField), DEFAULT_X, DEFAULT_Y, DEFAULT_Z, DEFAULT_A, 0, 0, 0, 0, 0, 0);
- SpawnPlayer(playerid);
- SendClientMessage(playerid, 0x32cd32ff, ">> Logado com sucesso!");
- }
- else {
- ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_PASSWORD, "{ffffff}Login", "{ffffff}Senha incorreta.\nPor favor, tente novamente.", "Login", "Sair");
- }
- }
- }
- //
- }
- return true;
- }
- 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;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement