Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <a_samp>
- // Nastavenia pre odosielanie emailov pomocou Gmail SMTP
- #define GMAIL_USERNAME "tvojemail@gmail.com"
- #define GMAIL_PASSWORD "tvojeheslo"
- #define GMAIL_SMTP "smtp.gmail.com"
- #define GMAIL_PORT 587
- new MySQL:db;
- main()
- {
- db = mysql_connect("localhost", "používateľ", "heslo", "databáza");
- if (db)
- {
- print("Pripojené k MySQL databáze!");
- while (true)
- {
- OnPlayerDeath(playerid, killerid, reason)
- {
- mysql_query(db, "UPDATE hraci SET zivy = 0 WHERE id = " + playerid);
- SendClientMessage(playerid, COLOR_RED, "Zomrel si. Nemôžeš ďalej hrať na tomto serveri a všetky tvoje štatistiky budú vymazané. Vytvor si prosím nový účet.");
- Kick(playerid);
- }
- OnPlayerConnect(playerid)
- {
- new playername[MAX_PLAYER_NAME];
- GetPlayerName(playerid, playername, sizeof(playername));
- new password[64];
- GetPlayerNetworkStats(playerid, password, sizeof(password));
- new query[256];
- mysql_format(db, query, sizeof(query), "SELECT zivy, heslo, kod, email FROM hraci WHERE meno = '%s'", playername);
- mysql_query(db, query);
- new result = mysql_store_result();
- if (mysql_num_rows(result) > 0)
- {
- new row[8], savedPassword[64], savedCode[8], email[MAX_PLAYER_NAME];
- mysql_fetch_row(result);
- mysql_fetch_field(result);
- mysql_data_seek(result, 0);
- mysql_fetch_row(result, row);
- strval(row[1], savedPassword, sizeof(savedPassword));
- strval(row[2], savedCode, sizeof(savedCode));
- strval(row[3], email, sizeof(email));
- if (strval(row[0]) == "0")
- {
- SendClientMessage(playerid, COLOR_RED, "Nemôžeš hrať s týmto účtom na tomto serveri. Vytvor si prosím nový účet.");
- Kick(playerid);
- }
- else if (strcmp(password, savedPassword, true) != 0)
- {
- SendClientMessage(playerid, COLOR_RED, "Nesprávne heslo. Skúsiš to znova?");
- Kick(playerid);
- }
- else if (strcmp(savedCode, "", true) != 0)
- {
- SendClientMessage(playerid, COLOR_YELLOW, "Prosím, zadaj overovací kód poslaný na tvoj email.");
- }
- else
- {
- new randCode[6]; // Vytvorí náhodný overovací kód
- format(randCode, sizeof(randCode), "%d%d%d%d%d%d", random(0, 9), random(0, 9), random(0, 9), random(0, 9), random(0, 9), random(0, 9));
- mysql_format(db, query, sizeof(query), "UPDATE hraci SET kod = '%s' WHERE meno = '%s'", randCode, playername);
- mysql_query(db, query);
- // Odoslanie emailu s overovacím kódom
- new mailSubject[128], mailContent[256];
- format(mailSubject, sizeof(mailSubject), "Overovací kód pre server");
- format(mailContent, sizeof(mailContent), "Váš overovací kód pre server je: %s", randCode);
- if (!SendEmail(GMAIL_USERNAME, GMAIL_PASSWORD, email, mailSubject, mailContent))
- {
- SendClientMessage(playerid, COLOR_RED, "Nepodarilo sa odoslať overovací kód na váš email. Skúste to znova neskôr.");
- Kick(playerid);
- }
- else
- {
- SendClientMessage(playerid, COLOR_YELLOW, "Poslali sme vám email s overovacím kódom. Prosím, skontrolujte svoj email.");
- }
- }
- }
- mysql_free_result(result);
- new hracIP[MAX_PLAYER_NAME];
- GetPlayerIp(playerid, hracIP, sizeof(hracIP));
- if (IsPlayerUsingVPN(playerid) || IsPlayerUsingProxy(playerid))
- {
- SendClientMessage(playerid, COLOR_RED, "Používanie VPN alebo proxy nie je povolené na tomto serveri.");
- Kick(playerid);
- }
- }
- }
- }
- else
- {
- print("Nepodarilo sa pripojiť k MySQL databáze!");
- }
- return 0;
- }
- SendEmail(from[], password[], to[], subject[], content[])
- {
- new socket, smtp_server[MAX_PLAYER_NAME], buffer[512];
- format(smtp_server, sizeof(smtp_server), "%s:%d", GMAIL_SMTP, GMAIL_PORT);
- if (socket = socket_open(SOCK_TCP, smtp_server))
- {
- socket_connect(socket, smtp_server);
- socket_send(socket, "EHLO localhost\r\n");
- socket_send(socket, "STARTTLS\r\n");
- while (!socket_available(socket)) wait(50);
- socket_recv(socket, buffer, sizeof(buffer));
- if (!strstr(buffer, "220")) return 0;
- socket_send(socket, "AUTH LOGIN\r\n");
- while (!socket_available(socket)) wait(50);
- socket_recv(socket, buffer, sizeof(buffer));
- if (!strstr(buffer, "334")) return 0;
- base64encode(from);
- socket_send(socket, from);
- socket_send(socket, "\r\n");
- while (!socket_available(socket)) wait(50);
- socket_recv(socket, buffer, sizeof(buffer));
- if (!strstr(buffer, "334")) return 0;
- base64encode(password);
- socket_send(socket, password);
- socket_send(socket, "\r\n");
- while (!socket_available(socket)) wait(50);
- socket_recv(socket, buffer, sizeof(buffer));
- if (!strstr(buffer, "235")) return 0;
- format(buffer, sizeof(buffer), "MAIL FROM: <%s>\r\n", from);
- socket_send(socket, buffer);
- while (!socket_available(socket)) wait(50);
- socket_recv(socket, buffer, sizeof(buffer));
- if (!strstr(buffer, "250")) return 0;
- format(buffer, sizeof(buffer), "RCPT TO: <%s>\r\n", to);
- socket_send(socket, buffer);
- while (!socket_available(socket)) wait(50);
- socket_recv(socket, buffer, sizeof(buffer));
- if (!strstr(buffer, "250")) return 0;
- socket_send(socket, "DATA\r\n");
- while (!socket_available(socket)) wait(50);
- socket_recv(socket, buffer, sizeof(buffer));
- if (!strstr(buffer, "354")) return 0;
- format(buffer, sizeof(buffer), "Subject: %s\r\n", subject);
- socket_send(socket, buffer);
- socket_send(socket, "MIME-Version: 1.0\r\n");
- socket_send(socket, "Content-Type: text/plain; charset=UTF-8\r\n");
- socket_send(socket, "\r\n");
- format(buffer, sizeof(buffer), "%s\r\n.\r\n", content);
- socket_send(socket, buffer);
- while (!socket_available(socket)) wait(50);
- socket_recv(socket, buffer, sizeof(buffer));
- if (!strstr(buffer, "250")) return 0;
- socket_send(socket, "QUIT\r\n");
- socket_close(socket);
- return 1;
- }
- else
- {
- print("Nepodarilo sa pripojiť na SMTP server!");
- return 0;
- }
- }
Add Comment
Please, Sign In to add comment