Guest User

MySQL Register / Login System By Maor (make_belive from fxp)

a guest
Jan 27th, 2013
1,913
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. // Register & Login system based on MySQL By maor (make_belive) from fxp.co.il
  2. //#define FILTERSCRIPT
  3.  
  4. #include <a_samp>
  5. #include <a_mysql>
  6. #include <colors>
  7. #include <foreach>
  8.  
  9. // פה תכניסו את פרטי ההתחברות של הMySQL שלכם
  10. #define mysql_host "localhost"
  11. #define mysql_user "root"
  12. #define mysql_password ""
  13. #define mysql_database "sa:mp"
  14.  
  15. #define DIALOG_LOGIN 1
  16. #define DIALOG_REGISTER 2
  17. #define TRYS_BEFORE_KICK 5 // כמה פעמים השחקן יוכל להכניס ססמא שגויה לפני שהוא יקבל קיק, תשנו את זה למה שאתם רוצים
  18. new cHandle;
  19. new xstring[128];
  20. enum pData
  21. {
  22.     pName,
  23.     pRegisterDate,
  24.     pIP,
  25.     pPass
  26. };
  27. new Data[MAX_PLAYERS][pData];
  28. new WrongPass[MAX_PLAYERS];
  29. public OnFilterScriptInit()
  30. {
  31.     print("\n--------------------------------------");
  32.     print(" MySQL Register & Login System, By Maor (make_belive)");
  33.     print(" From FxP.co.il");
  34.     print("--------------------------------------\n");
  35.     cHandle = mysql_connect(mysql_host, mysql_user, mysql_database, mysql_password);
  36.     mysql_debug(1);
  37.     format(xstring, sizeof(xstring),"CREATE TABLE IF NOT EXISTS usersdata(pName VARCHAR(24), pIP VARCHAR(16), pPass VARCHAR(25) )");
  38.     mysql_function_query(cHandle, xstring, false, "", "");
  39.     return 1;
  40. }
  41.  
  42. public OnFilterScriptExit()
  43. {
  44.     foreach(Player, i)
  45.     {
  46.         if(IsPlayerConnected(i)) MySQL_SaveStats(i);
  47.     }
  48.     return 1;
  49. }
  50.  
  51. public OnPlayerConnect(playerid)
  52. {
  53.     new query[150];
  54.     format(query, sizeof(query), "SELECT * FROM `usersdata` WHERE `pName` = '%s' LIMIT 0,1",GetName(playerid));
  55.     mysql_function_query(cHandle, query, true, "LoadPData", "d", playerid);
  56.     return 1;
  57. }
  58. forward LoadPData(playerid);
  59. public LoadPData(playerid)
  60. {
  61.     new rows, fields;
  62.     cache_get_data(rows, fields);
  63.     if(!rows)
  64.     {
  65.         ShowPlayerDialog(playerid,DIALOG_REGISTER,DIALOG_STYLE_PASSWORD,"Register","In order to play this server, you neeed to register.\nTo register type your password bellow:","Register","Exit");
  66.     }
  67.     else
  68.     {
  69.         ShowPlayerDialog(playerid,DIALOG_LOGIN,DIALOG_STYLE_PASSWORD,"Login","You are registerd user.\nTo login type your password bellow:","Login","Exit");
  70.         MySQL_LoadStats(playerid);
  71.     }
  72.     return 1;
  73. }
  74.  
  75. public OnPlayerDisconnect(playerid, reason)
  76. {
  77.     MySQL_SaveStats(playerid);
  78.     return 1;
  79. }
  80. public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
  81. {
  82.     if(dialogid == DIALOG_REGISTER)
  83.     {
  84.         if(response)
  85.         {
  86.             if(!strlen(inputtext)) return ShowPlayerDialog(playerid,DIALOG_REGISTER,DIALOG_STYLE_PASSWORD,"Register","Enter Password !","Register","Exit");
  87.             new EscapePass[60],string[300],playerip[16];
  88.             mysql_real_escape_string(inputtext, EscapePass);
  89.             GetPlayerIp(playerid, playerip, sizeof(playerip));
  90.             SendClientMessage(playerid,COLOR_WHITE,"You are registered user now ");
  91.             format(string,sizeof(string),"INSERT INTO usersdata(`pName`, `pIP`, `pPass`) VALUES('%s', '%s', '%s')",GetName(playerid),playerip,EscapePass);
  92.             mysql_function_query(cHandle, string, false, "", "");
  93.             strmid(Data[playerid][pName], GetName(playerid), 0, strlen(GetName(playerid)), 255);
  94.             strmid(Data[playerid][pPass], EscapePass, 0, strlen(EscapePass), 255);
  95.             strmid(Data[playerid][pIP], playerip, 0, strlen(playerip), 255);
  96.             MySQL_SaveStats(playerid);         
  97.         }
  98.         else
  99.         {
  100.             SendClientMessage(playerid,COLOR_RED,"You choosed to quit");
  101.             Kick(playerid);
  102.         }
  103.     }
  104.     if(dialogid == DIALOG_LOGIN)
  105.     {
  106.         if(response)
  107.         {
  108.             new EscapedPass[60];
  109.             mysql_real_escape_string(inputtext, EscapedPass);
  110.             if(!strlen(inputtext)) return ShowPlayerDialog(playerid,DIALOG_LOGIN,DIALOG_STYLE_PASSWORD,"Login","You are registerd user, to login type your password bellow:","Login","Exit");
  111.             if(strcmp(EscapedPass, Data[playerid][pPass]))
  112.             {
  113.                 WrongPass[playerid] ++;
  114.                 if(WrongPass[playerid] >= TRYS_BEFORE_KICK)
  115.                 {
  116.                     format(xstring,sizeof(xstring),"You entered wrong password %d times, you are kicked .",WrongPass);
  117.                     SendClientMessage(playerid, COLOR_RED,xstring);
  118.                     Kick(playerid);
  119.                 }
  120.                 SendClientMessage(playerid,COLOR_RED,"Wrong password!");
  121.                 format(xstring,sizeof(xstring),"Wrong password: %d/%d",WrongPass[playerid],TRYS_BEFORE_KICK);      
  122.                 ShowPlayerDialog(playerid,DIALOG_LOGIN,DIALOG_STYLE_PASSWORD,"Login",xstring,"Login","Exit");
  123.             }
  124.             else
  125.             {              
  126.                 SendClientMessage(playerid,COLOR_GREEN,"[Login] You successfully logged in ! ");
  127.                 MySQL_LoadStats(playerid);
  128.             }  
  129.         }
  130.         else
  131.         {
  132.             SendClientMessage(playerid,COLOR_RED,"You choosed to quit");
  133.             Kick(playerid);
  134.         }
  135.     }
  136.     return 1;
  137. }
  138. MySQL_LoadStats(playerid)
  139. {
  140.     new count = GetTickCount();
  141.     new query[300], pname[24];
  142.     GetPlayerName(playerid, pname, 24);
  143.     format(query, sizeof(query), "SELECT * FROM `usersdata` WHERE `pName` = '%s'", pname);
  144.     mysql_function_query(cHandle, query, true, "", "");
  145.     new rows,fields;
  146.     cache_get_data(rows, fields, cHandle);
  147.     if(rows)
  148.     {
  149.         cache_get_row(0, 0, Data[playerid][pName]),
  150.         cache_get_row(0, 1, Data[playerid][pIP]),
  151.         cache_get_row(0, 2, Data[playerid][pPass]);
  152.     }
  153.     printf("Loading %s account took %d seconds (cached)",GetName(playerid),GetTickCount() - count);
  154.     return 1;
  155. }
  156. MySQL_SaveStats(playerid)
  157. {
  158.     new playerip[16],query[200];
  159.     GetPlayerIp(playerid, playerip, sizeof(playerip));
  160.     format(query,sizeof(query),"UPDATE `usersdata` SET `pName` = '%s', `pIP` = '%s', `pPass` = '%s' WHERE `pName` = '%s'",GetName(playerid),Data[playerid][pIP],Data[playerid][pPass],GetName(playerid));
  161.     print(query);
  162.     mysql_function_query(cHandle, query, false, "", "");
  163.     return 1;
  164. }
  165. GetName(playerid)
  166. {
  167.     new planame[MAX_PLAYER_NAME];
  168.     GetPlayerName(playerid, planame, sizeof(planame));
  169.     return planame;
  170. }
Advertisement
Add Comment
Please, Sign In to add comment