Deaderik

SuperGrand, player dead new ACc

Feb 11th, 2024
24
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 7.37 KB | Gaming | 0 0
  1. #include <a_samp>
  2.  
  3. // Nastavenia pre odosielanie emailov pomocou Gmail SMTP
  4. #define GMAIL_USERNAME "tvojemail@gmail.com"
  5. #define GMAIL_PASSWORD "tvojeheslo"
  6. #define GMAIL_SMTP "smtp.gmail.com"
  7. #define GMAIL_PORT 587
  8.  
  9. new MySQL:db;
  10.  
  11. main()
  12. {
  13.     db = mysql_connect("localhost", "používateľ", "heslo", "databáza");
  14.     if (db)
  15.     {
  16.         print("Pripojené k MySQL databáze!");
  17.  
  18.         while (true)
  19.         {
  20.             OnPlayerDeath(playerid, killerid, reason)
  21.             {
  22.                 mysql_query(db, "UPDATE hraci SET zivy = 0 WHERE id = " + playerid);
  23.                 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.");                
  24.                 Kick(playerid);
  25.             }
  26.  
  27.             OnPlayerConnect(playerid)
  28.             {
  29.                 new playername[MAX_PLAYER_NAME];
  30.                 GetPlayerName(playerid, playername, sizeof(playername));
  31.                 new password[64];
  32.                 GetPlayerNetworkStats(playerid, password, sizeof(password));
  33.  
  34.                 new query[256];
  35.                 mysql_format(db, query, sizeof(query), "SELECT zivy, heslo, kod, email FROM hraci WHERE meno = '%s'", playername);
  36.                 mysql_query(db, query);
  37.                
  38.                 new result = mysql_store_result();
  39.                 if (mysql_num_rows(result) > 0)
  40.                 {
  41.                     new row[8], savedPassword[64], savedCode[8], email[MAX_PLAYER_NAME];
  42.                     mysql_fetch_row(result);
  43.                     mysql_fetch_field(result);
  44.                     mysql_data_seek(result, 0);
  45.                     mysql_fetch_row(result, row);
  46.                     strval(row[1], savedPassword, sizeof(savedPassword));
  47.                     strval(row[2], savedCode, sizeof(savedCode));
  48.                     strval(row[3], email, sizeof(email));
  49.                     if (strval(row[0]) == "0")
  50.                     {
  51.                         SendClientMessage(playerid, COLOR_RED, "Nemôžeš hrať s týmto účtom na tomto serveri. Vytvor si prosím nový účet.");
  52.                         Kick(playerid);
  53.                     }
  54.                     else if (strcmp(password, savedPassword, true) != 0)
  55.                     {
  56.                         SendClientMessage(playerid, COLOR_RED, "Nesprávne heslo. Skúsiš to znova?");
  57.                         Kick(playerid);
  58.                     }
  59.                     else if (strcmp(savedCode, "", true) != 0)
  60.                     {
  61.                         SendClientMessage(playerid, COLOR_YELLOW, "Prosím, zadaj overovací kód poslaný na tvoj email.");
  62.                     }
  63.                     else
  64.                     {
  65.                         new randCode[6]; // Vytvorí náhodný overovací kód
  66.                         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));
  67.                         mysql_format(db, query, sizeof(query), "UPDATE hraci SET kod = '%s' WHERE meno = '%s'", randCode, playername);
  68.                         mysql_query(db, query);
  69.  
  70.                         // Odoslanie emailu s overovacím kódom
  71.                         new mailSubject[128], mailContent[256];
  72.                         format(mailSubject, sizeof(mailSubject), "Overovací kód pre server");
  73.                         format(mailContent, sizeof(mailContent), "Váš overovací kód pre server je: %s", randCode);
  74.                         if (!SendEmail(GMAIL_USERNAME, GMAIL_PASSWORD, email, mailSubject, mailContent))
  75.                         {
  76.                             SendClientMessage(playerid, COLOR_RED, "Nepodarilo sa odoslať overovací kód na váš email. Skúste to znova neskôr.");
  77.                             Kick(playerid);
  78.                         }
  79.                         else
  80.                         {
  81.                             SendClientMessage(playerid, COLOR_YELLOW, "Poslali sme vám email s overovacím kódom. Prosím, skontrolujte svoj email.");
  82.                         }
  83.                     }
  84.                 }
  85.                 mysql_free_result(result);
  86.  
  87.                 new hracIP[MAX_PLAYER_NAME];
  88.                 GetPlayerIp(playerid, hracIP, sizeof(hracIP));
  89.  
  90. if (IsPlayerUsingVPN(playerid) || IsPlayerUsingProxy(playerid))
  91.                 {
  92.                     SendClientMessage(playerid, COLOR_RED, "Používanie VPN alebo proxy nie je povolené na tomto serveri.");
  93.                     Kick(playerid);
  94.                 }
  95.             }
  96.         }
  97.     }
  98.     else
  99.     {
  100.         print("Nepodarilo sa pripojiť k MySQL databáze!");
  101.     }
  102.  
  103.     return 0;
  104. }
  105.  
  106. SendEmail(from[], password[], to[], subject[], content[])
  107. {
  108.     new socket, smtp_server[MAX_PLAYER_NAME], buffer[512];
  109.     format(smtp_server, sizeof(smtp_server), "%s:%d", GMAIL_SMTP, GMAIL_PORT);
  110.  
  111.     if (socket = socket_open(SOCK_TCP, smtp_server))
  112.     {
  113.         socket_connect(socket, smtp_server);
  114.         socket_send(socket, "EHLO localhost\r\n");
  115.         socket_send(socket, "STARTTLS\r\n");
  116.  
  117.         while (!socket_available(socket)) wait(50);
  118.         socket_recv(socket, buffer, sizeof(buffer));
  119.         if (!strstr(buffer, "220")) return 0;
  120.  
  121.         socket_send(socket, "AUTH LOGIN\r\n");
  122.         while (!socket_available(socket)) wait(50);
  123.         socket_recv(socket, buffer, sizeof(buffer));
  124.         if (!strstr(buffer, "334")) return 0;
  125.  
  126.         base64encode(from);
  127.         socket_send(socket, from);
  128.         socket_send(socket, "\r\n");
  129.         while (!socket_available(socket)) wait(50);
  130.         socket_recv(socket, buffer, sizeof(buffer));
  131.         if (!strstr(buffer, "334")) return 0;
  132.  
  133.         base64encode(password);
  134.         socket_send(socket, password);
  135.         socket_send(socket, "\r\n");
  136.         while (!socket_available(socket)) wait(50);
  137.         socket_recv(socket, buffer, sizeof(buffer));
  138.         if (!strstr(buffer, "235")) return 0;
  139.  
  140.         format(buffer, sizeof(buffer), "MAIL FROM: <%s>\r\n", from);
  141.         socket_send(socket, buffer);
  142.         while (!socket_available(socket)) wait(50);
  143.         socket_recv(socket, buffer, sizeof(buffer));
  144.         if (!strstr(buffer, "250")) return 0;
  145.  
  146.         format(buffer, sizeof(buffer), "RCPT TO: <%s>\r\n", to);
  147.         socket_send(socket, buffer);
  148.         while (!socket_available(socket)) wait(50);
  149.         socket_recv(socket, buffer, sizeof(buffer));
  150.         if (!strstr(buffer, "250")) return 0;
  151.  
  152.         socket_send(socket, "DATA\r\n");
  153.         while (!socket_available(socket)) wait(50);
  154.         socket_recv(socket, buffer, sizeof(buffer));
  155.         if (!strstr(buffer, "354")) return 0;
  156.  
  157.         format(buffer, sizeof(buffer), "Subject: %s\r\n", subject);
  158.         socket_send(socket, buffer);
  159.  
  160.         socket_send(socket, "MIME-Version: 1.0\r\n");
  161.         socket_send(socket, "Content-Type: text/plain; charset=UTF-8\r\n");
  162.         socket_send(socket, "\r\n");
  163.         format(buffer, sizeof(buffer), "%s\r\n.\r\n", content);
  164.         socket_send(socket, buffer);
  165.  
  166.         while (!socket_available(socket)) wait(50);
  167.         socket_recv(socket, buffer, sizeof(buffer));
  168.         if (!strstr(buffer, "250")) return 0;
  169.  
  170.         socket_send(socket, "QUIT\r\n");
  171.         socket_close(socket);
  172.  
  173.         return 1;
  174.     }
  175.     else
  176.     {
  177.         print("Nepodarilo sa pripojiť na SMTP server!");
  178.         return 0;
  179.     }
  180. }
Add Comment
Please, Sign In to add comment