T4125Gamer

pw_vergessen.pwn

Aug 8th, 2014
257
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #define FILTERSCRIPT
  2. //==========[ Includes ]==========//
  3. #include <a_samp>
  4. #include <a_mysql>
  5. #include <md5>
  6. #include <a_http>
  7.  
  8. //==========[ Farben ]==========//
  9. #define ROT         0xFF1400FF
  10. #define WEISS       0xFFFFFFFF
  11. #define ORANGE      0xFFB400FF
  12.  
  13. //==========[ Dialoge ]==========//
  14. enum{
  15.     DIALOG_REGISTER,
  16.     DIALOG_REGISTER2,
  17.     DIALOG_REGISTER3,
  18.     DIALOG_LOGIN,
  19.     DIALOG_LOGIN2,
  20.     DIALOG_SETTINGS,
  21.     DIALOG_PWC,
  22.     DIALOG_PWC2
  23. }
  24.  
  25. //==========[ Forwards ]==========//
  26. forward KickEx(playerid);
  27. forward EmailSenden(index, response_code, data[]);
  28.  
  29. //==========[ MySQL Daten ]==========//
  30. #define MYSQL_HOST  ""
  31. #define MYSQL_USER  ""
  32. #define MYSQL_PW    ""
  33. #define MYSQL_DB    ""
  34.  
  35. //==========[ Sonstiges ]==========//
  36. new kick_status[MAX_PLAYERS];
  37. new login_status[MAX_PLAYERS];
  38. #define MAIL_DOMAIN     "ni130511_1.vweb19.nitrado.net/samp"
  39.  
  40. public OnFilterScriptInit()
  41. {
  42.     print("\n----------------------------------");
  43.     print(" Passwort Vergessen Filterscript geladen");
  44.     print("----------------------------------\n");
  45.     mysql_debug(1);
  46.     ConnectMySQL();
  47.     AddPlayerClass(0, 1958.3783, 1343.1572, 15.3746, 269.1425, 0, 0, 0, 0, 0, 0);
  48.     return 1;
  49. }
  50.  
  51. public OnFilterScriptExit()
  52. {
  53.     return 1;
  54. }
  55.  
  56. public OnPlayerConnect(playerid)
  57. {
  58.     new dstring[500],sName[MAX_PLAYER_NAME];
  59.     GetPlayerName(playerid,sName,sizeof(sName));
  60.     if(!CheckUser(sName)){
  61.         format(dstring,sizeof(dstring),"Herzlich Willkommen auf TG - RP %s\nDein Account wurde nicht gefunden, gebe nun ein Passwort ein.",sName);
  62.         ShowPlayerDialog(playerid,DIALOG_REGISTER,DIALOG_STYLE_PASSWORD,"TG - RP || Register",dstring,"Registrieren","Abbrechen");
  63.     }
  64.     else{
  65.         format(dstring,sizeof(dstring),"Herzlich Willkommen zurück auf TG - RP %s\nDein Account wurde gefunden, gebe nun dein Passwort ein.",sName);
  66.         ShowPlayerDialog(playerid,DIALOG_LOGIN,DIALOG_STYLE_PASSWORD,"TG - RP || Login",dstring,"Anmelden","Abbrechen");
  67.     }
  68.     return 1;
  69. }
  70.  
  71. public OnPlayerCommandText(playerid, cmdtext[])
  72. {
  73.     if(strcmp(cmdtext,"/einstellungen",true) == 0){
  74.         ShowPlayerDialog(playerid,DIALOG_SETTINGS,DIALOG_STYLE_LIST,"TG - RP || Einstellungen","1. Passwort Ändern","Auswählen","Abbrechen");
  75.         return 1;
  76.     }
  77.     return 0;
  78. }
  79.  
  80. public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
  81. {
  82.     switch(dialogid){
  83.         case DIALOG_REGISTER:{
  84.             if(response){
  85.                 if(!strlen(inputtext)){
  86.                     ShowPlayerDialog(playerid,DIALOG_REGISTER,DIALOG_STYLE_PASSWORD,"TG - RP || Register","FEHLER: Es wurde nichts eingegeben.\nGebe nun ein Passwort ein.","Registrieren","Abbrechen");
  87.                 }
  88.                 else if(strlen(inputtext) < 6){
  89.                     ShowPlayerDialog(playerid,DIALOG_REGISTER,DIALOG_STYLE_PASSWORD,"TG - RP || Register","FEHLER: Es wurden weniger als 6 Zeichen eingegeben.\nUm die Sicherheit deines Accounts zu garantieren, wähle bitte ein Passwort mit 6 Zeichen.\nWähle ebenfalls ein Passwort das du sonst nirgends verwendest.","Registrieren","Abbrechen");
  90.                 }
  91.                 else if(strlen(inputtext) >= 6){
  92.                     CreateAccount(playerid,MD5_Hash(inputtext));
  93.                     ShowPlayerDialog(playerid,DIALOG_REGISTER2,DIALOG_STYLE_INPUT,"TG - RP || Register","Gebe nun deine E-Mail Adresse ein.\nDiese wird für das UCP benötigt","Weiter","");
  94.                 }
  95.             }
  96.             else{
  97.                 SendClientMessage(playerid,ROT,"Du hast die Registrierung abgebrochen");
  98.                 KickEx(playerid);
  99.             }
  100.         }
  101.         case DIALOG_REGISTER2:{
  102.             if(response){
  103.                 if(strfind(inputtext,"@",true) != -1){
  104.                     UpdatePlayerString(playerid,"EMail",inputtext);
  105.                     ShowPlayerDialog(playerid,DIALOG_REGISTER3,DIALOG_STYLE_MSGBOX,"TG - RP || Finish","Du hast nun erfolgreich einen Account angelegt.\nMöchtest du eine Einführung von einem Admin?","Ja","Nein");
  106.                 }
  107.                 else{
  108.                     ShowPlayerDialog(playerid,DIALOG_REGISTER2,DIALOG_STYLE_INPUT,"TG - RP || Register","FEHLER: Format - email@email.de\nGebe nun deine E-Mail Adresse ein.\nDiese wird für das UCP benötigt","Weiter","");
  109.                 }
  110.             }
  111.             else{
  112.                 ShowPlayerDialog(playerid,DIALOG_REGISTER2,DIALOG_STYLE_INPUT,"TG - RP || Register","Gebe nun deine E-Mail Adresse ein.\nDiese wird für das UCP benötigt","Weiter","");
  113.             }
  114.         }
  115.         case DIALOG_REGISTER3:{
  116.             if(response){
  117.                 SendClientMessage(playerid,WEISS,"Alles klar, es wird nun ein Administrator/Supporter kontaktiert, sofern einer Online ist");
  118.             }
  119.             else{
  120.                 SendClientMessage(playerid,WEISS,"Alle klar, du kannst, sofern gewünscht, mit /tutorial das Tutorial anschauen");
  121.                 SendClientMessage(playerid,WEISS,"Das Team wünscht dir viel Spaß auf dem Server");
  122.             }
  123.         }
  124.         case DIALOG_LOGIN:{
  125.             if(response){
  126.                 if(!strlen(inputtext)){
  127.                     ShowPlayerDialog(playerid,DIALOG_LOGIN,DIALOG_STYLE_PASSWORD,"TG - RP || Login","FEHLER: Es wurde nichts eingegeben.\nGebe nun dein Passwort ein","Anmelden","Abbrechen");
  128.                 }
  129.                 else{
  130.                     if(!strcmp(CheckPW(playerid),MD5_Hash(inputtext),false)){
  131.                         SendClientMessage(playerid,WEISS,"Du hast dich erfolgreich eingeloggt");
  132.                         SpawnPlayer(playerid);
  133.                     }
  134.                     else{
  135.                         switch(login_status[playerid]){
  136.                             case 0:{
  137.                                 ShowPlayerDialog(playerid,DIALOG_LOGIN,DIALOG_STYLE_PASSWORD,"TG - RP || Login","FEHLER: Das eingegebene Passwort ist Falsch. (1/3)\nGebe nun dein Passwort ein","Anmelden","Abbrechen");
  138.                                 login_status[playerid]++;
  139.                             }
  140.                             case 1:{
  141.                                 ShowPlayerDialog(playerid,DIALOG_LOGIN,DIALOG_STYLE_PASSWORD,"TG - RP || Login","FEHLER: Das eingegebene Passwort ist Falsch. (2/3)\nGebe nun dein Passwort ein","Anmelden","Abbrechen");
  142.                                 login_status[playerid]++;
  143.                             }
  144.                             case 2:{
  145.                                 ShowPlayerDialog(playerid,DIALOG_LOGIN,DIALOG_STYLE_PASSWORD,"TG - RP || Login","FEHLER: Das eingegebene Passwort ist Falsch. (3/3)\nGebe nun dein Passwort ein","Anmelden","Abbrechen");
  146.                                 login_status[playerid]++;
  147.                             }
  148.                             case 3:{
  149.                                 ShowPlayerDialog(playerid,DIALOG_LOGIN2,DIALOG_STYLE_MSGBOX,"TG - RP || Login","Du hast dein Passwort dreimal falsch eingegeben.\nDu kannst nun einmal Reconnecten, oder die Passwort vergessen Funktion anwenden.","Reconnect","Passwort Vergessen");
  150.                             }
  151.                         }
  152.                     }
  153.                 }
  154.             }
  155.             else{
  156.                 SendClientMessage(playerid,ROT,"Du hast den Loginvorgang abgebrochen");
  157.                 KickEx(playerid);
  158.             }
  159.         }
  160.         case DIALOG_LOGIN2:{
  161.             if(response){
  162.                 SendClientMessage(playerid,ROT,"Du wurdest Gekickt");
  163.                 KickEx(playerid);
  164.             }
  165.             else{
  166.                 new string[300],sName[MAX_PLAYER_NAME];
  167.                 GetPlayerName(playerid,sName,sizeof(sName));
  168.                 format(string,sizeof(string), "%s/pw_reset.php?mail=%s&username=%s",MAIL_DOMAIN,GetString(playerid,"EMail"),sName);
  169.                 HTTP(playerid, HTTP_GET,string, " ", "EmailSenden");
  170.             }
  171.         }
  172.         case DIALOG_SETTINGS:{
  173.             if(response){
  174.                 ShowPlayerDialog(playerid,DIALOG_PWC,DIALOG_STYLE_PASSWORD,"TG - RP || Passwort Ändern","Gebe nun dein altes Passwort ein","Weiter","Zurück");
  175.             }
  176.         }
  177.         case DIALOG_PWC:{
  178.             if(response){
  179.                 if(!strcmp(CheckPW(playerid),MD5_Hash(inputtext),false)){
  180.                     ShowPlayerDialog(playerid,DIALOG_PWC2,DIALOG_STYLE_PASSWORD,"TG - RP || Passwort Ändern","Gebe nun ein neues Passwort ein","Weiter","");
  181.                 }
  182.                 else ShowPlayerDialog(playerid,DIALOG_PWC,DIALOG_STYLE_PASSWORD,"TG - RP || Passwort Ändern","FEHLER: Das eingegebene Passwort stimmt nicht mit deinem jetzigen überein\nGebe nun dein altes Passwort ein","Weiter","Zurück");
  183.             }
  184.             else ShowPlayerDialog(playerid,DIALOG_SETTINGS,DIALOG_STYLE_LIST,"TG - RP || Einstellungen","1. Passwort Ändern","Auswählen","Abbrechen");
  185.         }
  186.         case DIALOG_PWC2:{
  187.             if(response){
  188.                 new string[200];
  189.                 UpdatePlayerString(playerid,"Passwort",MD5_Hash(inputtext));
  190.                 format(string,sizeof(string),"Dein Passwort wurde erfolgreich auf %s geändert",inputtext);
  191.                 SendClientMessage(playerid,WEISS,string);
  192.                 ShowPlayerDialog(playerid,DIALOG_SETTINGS,DIALOG_STYLE_LIST,"TG - RP || Einstellungen","1. Passwort Ändern","Auswählen","Abbrechen");
  193.             }
  194.             else ShowPlayerDialog(playerid,DIALOG_PWC2,DIALOG_STYLE_PASSWORD,"TG - RP || Passwort Ändern","Gebe nun ein neues Passwort ein","Weiter","");
  195.         }
  196.     }
  197.     return 1;
  198. }
  199.  
  200. stock GetString(playerid,name[]){
  201.     new query[100],sName[MAX_PLAYER_NAME],value[50];
  202.     GetPlayerName(playerid,sName,sizeof(sName));
  203.     mysql_real_escape_string(sName,sName);
  204.     format(query,sizeof(query),"SELECT `%s` FROM `accounts` WHERE `Name`='%s'",name,sName);
  205.     mysql_query(query);
  206.     mysql_store_result();
  207.     mysql_fetch_row(value);
  208.     mysql_free_result();
  209.     return value;
  210. }
  211.  
  212. stock UpdatePlayerString(playerid, name[], value[]){
  213.     new query[100],sName[MAX_PLAYER_NAME];
  214.     GetPlayerName(playerid,sName,sizeof(sName));
  215.     mysql_real_escape_string(sName,sName);
  216.     mysql_real_escape_string(name,name);
  217.     mysql_real_escape_string(value,value);
  218.     format(query,sizeof(query),"UPDATE `accounts` SET `%s`='%s' WHERE `Name`='%s'",name,value,sName);
  219.     mysql_query(query);
  220.     return 1;
  221. }
  222.  
  223. stock CreateAccount(playerid, pass[]){
  224.     new query[800], sName[MAX_PLAYER_NAME];
  225.     GetPlayerName(playerid,sName,sizeof(sName));
  226.     mysql_real_escape_string(sName,sName);
  227.     mysql_real_escape_string(pass,pass);
  228.     format(query,sizeof(query),"INSERT INTO `accounts` (`Name`,`Passwort`) VALUES ('%s','%s')",sName,pass);
  229.     mysql_query(query);
  230.     print(query);
  231.     return 1;
  232. }
  233.  
  234. stock CheckUser(Name[]){
  235.     new query[100], count;
  236.     format(query,sizeof(query),"SELECT * FROM `accounts` WHERE `Name`='%s'",Name);
  237.     mysql_query(query);
  238.     mysql_store_result();
  239.     count = mysql_num_rows();
  240.     mysql_free_result();
  241.     return count;
  242. }
  243.  
  244. stock CheckPW(playerid){
  245.     new query[100],sName[MAX_PLAYER_NAME],pass[50];
  246.     GetPlayerName(playerid,sName,sizeof(sName));
  247.     mysql_real_escape_string(sName,sName);
  248.     format(query,sizeof(query),"SELECT `Passwort` FROM `accounts` WHERE `Name`='%s'",sName);
  249.     mysql_query(query);
  250.     mysql_store_result();
  251.     mysql_fetch_row(pass);
  252.     mysql_free_result();
  253.     return pass;
  254. }
  255.  
  256. stock ConnectMySQL(){
  257.     mysql_connect(MYSQL_HOST,MYSQL_USER,MYSQL_DB,MYSQL_PW);
  258.     if(mysql_ping() == 1){
  259.         print("Der Verbindungsaufbau war erfolgreich.");
  260.         return true;
  261.     }
  262.     else{
  263.         print("Es konnte keine Verbindung aufgebaut werden.");
  264.         print("Es wird erneut versucht eine Verbindung aufzubauen.");
  265.         if(mysql_ping() == 1){
  266.             print("Es konnte beim zweiten Versuch eine Verbindung aufgebaut werden.");
  267.             return true;
  268.         }
  269.         else{
  270.             print("Es konnte beim zweiten Versuch keine Verindung aufgebaut werden.");
  271.             print("Der Server wird nun beendet");
  272.             SendRconCommand("exit");
  273.             return true;
  274.         }
  275.     }
  276. }
  277.  
  278.  
  279. public EmailSenden(index, response_code, data[])
  280. {
  281.     if(response_code == 200)
  282.     {
  283.         new dstring[500],sName[MAX_PLAYER_NAME];
  284.         GetPlayerName(index,sName,sizeof(sName));
  285.         SendClientMessage(index, WEISS, "E-Mail gesendet");
  286.         format(dstring,sizeof(dstring),"Herzlich Willkommen zurück auf TG - RP %s\nDein Account wurde gefunden, gebe nun dein Passwort ein.",sName);
  287.         ShowPlayerDialog(index,DIALOG_LOGIN,DIALOG_STYLE_PASSWORD,"TG - RP || Login",dstring,"Anmelden","Abbrechen");
  288.         login_status[index] = 0;
  289.     }
  290.     else
  291.     {
  292.         new dstring[500],sName[MAX_PLAYER_NAME];
  293.         GetPlayerName(index,sName,sizeof(sName));
  294.         SendClientMessage(index, ROT, "FEHLER: Senden von E-Mail fehlgeschlagen");
  295.         format(dstring,sizeof(dstring),"Herzlich Willkommen zurück auf TG - RP %s\nDein Account wurde gefunden, gebe nun dein Passwort ein.",sName);
  296.         ShowPlayerDialog(index,DIALOG_LOGIN,DIALOG_STYLE_PASSWORD,"TG - RP || Login",dstring,"Anmelden","Abbrechen");
  297.     }
  298.     return 1;
  299. }
  300.  
  301. public KickEx(playerid){
  302.     if(!kick_status[playerid]){
  303.         kick_status[playerid] = 1;
  304.         SetTimerEx("KickEx",200,false,"i",playerid);
  305.     }
  306.     else{
  307.         Kick(playerid);
  308.     }
  309. }
RAW Paste Data