Guest User

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

a guest
Jan 27th, 2013
88
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 5.92 KB | None | 0 0
  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 OnPlayerRequestClass(playerid, classid)
  52. {
  53.     SetPlayerPos(playerid, 1958.3783, 1343.1572, 15.3746);
  54.     SetPlayerCameraPos(playerid, 1958.3783, 1343.1572, 15.3746);
  55.     SetPlayerCameraLookAt(playerid, 1958.3783, 1343.1572, 15.3746);
  56.     return 1;
  57. }
  58.  
  59. public OnPlayerConnect(playerid)
  60. {
  61.     new query[150];
  62.     format(query, sizeof(query), "SELECT * FROM `usersdata` WHERE `pName` = '%s' LIMIT 0,1",GetName(playerid));
  63.     mysql_function_query(cHandle, query, true, "LoadPData", "d", playerid);
  64.     return 1;
  65. }
  66. forward LoadPData(playerid);
  67. public LoadPData(playerid)
  68. {
  69.     new rows, fields;
  70.     cache_get_data(rows, fields);
  71.     if(!rows)
  72.     {
  73.         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");
  74.     }
  75.     else
  76.     {
  77.         ShowPlayerDialog(playerid,DIALOG_LOGIN,DIALOG_STYLE_PASSWORD,"Login","You are registerd user.\nTo login type your password bellow:","Login","Exit");
  78.         MySQL_LoadStats(playerid);
  79.     }
  80.     return 1;
  81. }
  82.  
  83. public OnPlayerDisconnect(playerid, reason)
  84. {
  85.     MySQL_SaveStats(playerid);
  86.     return 1;
  87. }
  88. public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
  89. {
  90.     if(dialogid == DIALOG_REGISTER)
  91.     {
  92.         if(response)
  93.         {
  94.             if(!strlen(inputtext)) return ShowPlayerDialog(playerid,DIALOG_REGISTER,DIALOG_STYLE_PASSWORD,"Register","Enter Password !","Register","Exit");
  95.             new EscapePass[60],string[300],playerip[16];
  96.             mysql_real_escape_string(inputtext, EscapePass);
  97.             GetPlayerIp(playerid, playerip, sizeof(playerip));
  98.             SendClientMessage(playerid,COLOR_WHITE,"You are registered user now ");
  99.             format(string,sizeof(string),"INSERT INTO usersdata(`pName`, `pIP`, `pPass`) VALUES('%s', '%s', '%s')",GetName(playerid),playerip,EscapePass);
  100.             mysql_function_query(cHandle, string, false, "", "");
  101.             strmid(Data[playerid][pName], GetName(playerid), 0, strlen(GetName(playerid)), 255);
  102.             strmid(Data[playerid][pPass], EscapePass, 0, strlen(EscapePass), 255);
  103.             strmid(Data[playerid][pIP], playerip, 0, strlen(playerip), 255);
  104.             MySQL_SaveStats(playerid);         
  105.         }
  106.         else
  107.         {
  108.             SendClientMessage(playerid,COLOR_RED,"You choosed to quit");
  109.             Kick(playerid);
  110.         }
  111.     }
  112.     if(dialogid == DIALOG_LOGIN)
  113.     {
  114.         if(response)
  115.         {
  116.             new EscapedPass[60];
  117.             mysql_real_escape_string(inputtext, EscapedPass);
  118.             if(!strlen(inputtext)) return ShowPlayerDialog(playerid,DIALOG_LOGIN,DIALOG_STYLE_PASSWORD,"Login","You are registerd user, to login type your password bellow:","Login","Exit");
  119.             if(strcmp(EscapedPass, Data[playerid][pPass]))
  120.             {
  121.                 WrongPass[playerid] ++;
  122.                 if(WrongPass[playerid] >= TRYS_BEFORE_KICK)
  123.                 {
  124.                     format(xstring,sizeof(xstring),"You entered wrong password %d times, you are kicked .",WrongPass);
  125.                     SendClientMessage(playerid, COLOR_RED,xstring);
  126.                     Kick(playerid);
  127.                 }
  128.                 SendClientMessage(playerid,COLOR_RED,"Wrong password!");
  129.                 format(xstring,sizeof(xstring),"Wrong password: %d/%d",WrongPass[playerid],TRYS_BEFORE_KICK);      
  130.                 ShowPlayerDialog(playerid,DIALOG_LOGIN,DIALOG_STYLE_PASSWORD,"Login",xstring,"Login","Exit");
  131.             }
  132.             else
  133.             {              
  134.                 SendClientMessage(playerid,COLOR_GREEN,"[Login] You successfully logged in ! ");
  135.                 MySQL_LoadStats(playerid);
  136.             }  
  137.         }
  138.         else
  139.         {
  140.             SendClientMessage(playerid,COLOR_RED,"You choosed to quit");
  141.             Kick(playerid);
  142.         }
  143.     }
  144.     return 1;
  145. }
  146. MySQL_LoadStats(playerid)
  147. {
  148.     new count = GetTickCount();
  149.     new query[300], pname[24];
  150.     GetPlayerName(playerid, pname, 24);
  151.     format(query, sizeof(query), "SELECT * FROM `usersdata` WHERE `pName` = '%s'", pname);
  152.     mysql_function_query(cHandle, query, true, "", "");
  153.     new rows,fields;
  154.     cache_get_data(rows, fields, cHandle);
  155.     if(rows)
  156.     {
  157.         cache_get_row(0, 0, Data[playerid][pName]),
  158.         cache_get_row(0, 1, Data[playerid][pIP]),
  159.         cache_get_row(0, 2, Data[playerid][pPass]);
  160.     }
  161.     printf("Loading %s account took %d seconds (cached)",GetName(playerid),GetTickCount() - count);
  162.     return 1;
  163. }
  164. MySQL_SaveStats(playerid)
  165. {
  166.     new playerip[16],query[200];
  167.     GetPlayerIp(playerid, playerip, sizeof(playerip));
  168.     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));
  169.     print(query);
  170.     mysql_function_query(cHandle, query, false, "", "");
  171.     return 1;
  172. }
  173. GetName(playerid)
  174. {
  175.     new planame[MAX_PLAYER_NAME];
  176.     GetPlayerName(playerid, planame, sizeof(planame));
  177.     return planame;
  178. }
Add Comment
Please, Sign In to add comment