Advertisement
RiseAboveHate

Basic Register system on MySQL

Aug 2nd, 2015
361
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 5.63 KB | None | 0 0
  1. #include <a_samp>
  2. #include <a_mysql>
  3.  
  4. enum pInfo
  5. {
  6.     pName[MAX_PLAYER_NAME + 1],
  7.     pPassword[32],
  8.     pKills,
  9.     pDeaths,
  10.     bool:pLogged
  11. };
  12. new
  13.     PInfo[MAX_PLAYERS][pInfo],
  14.     gString[128],
  15.     Connection,
  16.     gRows,
  17.     gFields;
  18.    
  19. #define Name(%0)    PInfo[%0][pName]
  20.  
  21. #define DB_IP           "localhost"
  22. #define DB_USER         "root"
  23. #define DB_DATABASE     "Mode"
  24. #define DB_PASSWORD     ""
  25.  
  26. #define DIALOG_REGISTER             0
  27. #define DIALOG_REGISTER_DETAILS     1
  28. #define DIALOG_LOGIN                2
  29.  
  30. #define MINIMUM_PASSWORD_LENGTH 6
  31. #define MAXIMUM_PASSWORD_LENGTH 32
  32.  
  33. #define Kick2_Kick(%0) SetTimerEx("KickP2", 200, false, "d", %0)
  34. #if defined _ALS_Kick
  35. #define fwrite fwrite_utf8
  36. #undef Kick
  37. #else
  38. #define     _ALS_Kick
  39. #endif
  40. forward public KickP2(playerid);public KickP2(playerid) return Kick(playerid);
  41. #define     Kick Kick2_Kick
  42.  
  43. #define strcpy(%0,%1,%2) strcat((%0[0] = EOS, %0), %1, %2)
  44.  
  45. forward LoadPlayerData(playerid);
  46.  
  47. #define FILTERSCRIPT
  48.  
  49. public OnFilterScriptInit()
  50. {
  51.     Connection = mysql_connect(DB_IP, DB_USER, DB_DATABASE, DB_PASSWORD);
  52.     if(mysql_errno(Connection))
  53.     {
  54.         printf("[MySQL ERROR] failed to connect, please check your database login details.");
  55.     }
  56.     else
  57.     {
  58.         printf("[MySQL] Connected successfully to database.");
  59.     }
  60.     return 1;
  61. }
  62.  
  63. public OnFilterScriptExit()
  64. {
  65.     mysql_close(Connection);
  66.     return 1;
  67. }
  68.  
  69. public OnPlayerConnect(playerid)
  70. {
  71.     GetPlayerName(playerid, Name(playerid), MAX_PLAYER_NAME + 1);
  72.     PInfo[playerid][pLogged] = false;
  73.     mysql_format(Connection, gString, sizeof gString, "SELECT * FROM `Users` WHERE `Username`='%s'", Name(playerid));
  74.     mysql_query(Connection, gString);
  75.     cache_get_data(gRows, gFields, Connection);
  76.     if(!gRows)
  77.     {
  78.         ShowPlayerDialog(playerid, DIALOG_REGISTER, DIALOG_STYLE_INPUT, "הרשמה", ",ברוך הבא לשרת\n.אנא בחר סיסמה שבה תרצה להשתמש בעתיד", "אישור", "יציאה");
  79.     }
  80.     else
  81.     {
  82.         mysql_format(Connection, gString, sizeof gString, "SELECT * FROM `Users` WHERE `Username`='%s'", Name(playerid));
  83.         mysql_tquery(Connection, gString, "LoadPlayerData", "d", playerid);
  84.         ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_PASSWORD, "התחברות", ",ברוך שובך לשרת\n.אנא התחבר לשרת על מנת לשחק", "אישור", "יציאה");
  85.     }
  86.     return 1;
  87. }
  88.  
  89. public OnPlayerDisconnect(playerid, reason)
  90. {
  91.     mysql_format(Connection, gString, sizeof gString, "UPDATE `Users` SET `Password`='%s',`Kills`='%d',`Deaths`='%d' WHERE `Username`='%s'", PInfo[playerid][pPassword], PInfo[playerid][pKills], PInfo[playerid][pDeaths], Name(playerid));
  92.     mysql_query(Connection, gString);
  93.     PInfo[playerid][pName][0] = 0;
  94.     return 1;
  95. }
  96.  
  97. public OnPlayerRequestSpawn(playerid)
  98. {
  99.     if(!PInfo[playerid][pLogged])
  100.     {
  101.         return SendClientMessage(playerid, 0xFF0000AA, ".אתה חייב להתחבר / להירשם על מנת להשתגר"), 0;
  102.     }
  103.     return 1;
  104. }
  105.  
  106. public OnPlayerDeath(playerid, killerid, reason)
  107. {
  108.     if(killerid != INVALID_PLAYER_ID)
  109.     {
  110.         SendDeathMessage(killerid, playerid, reason);
  111.         PInfo[playerid][pDeaths]++;
  112.         PInfo[killerid][pKills]++;
  113.     }
  114.     return 1;
  115. }
  116.  
  117. public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
  118. {
  119.     if(dialogid == DIALOG_REGISTER)
  120.     {
  121.         if(!response)
  122.         {
  123.             return SendClientMessage(playerid, 0xFF0000AA, ".בחרת לצאת מהשרת, ולכן קיבלת קיק"), Kick(playerid);
  124.         }
  125.         if(!strlen(inputtext)) return ShowPlayerDialog(playerid, DIALOG_REGISTER, DIALOG_STYLE_INPUT, "הרשמה", "!אתה חייב להקיש סיסמה", "אישור", "יציאה");
  126.         if(strlen(inputtext) < MINIMUM_PASSWORD_LENGTH || strlen(inputtext) > MAXIMUM_PASSWORD_LENGTH) return ShowPlayerDialog(playerid, DIALOG_REGISTER, DIALOG_STYLE_INPUT, "הרשמה", ".אורך הסיסמה חייב להיות 6-32 תווים", "אישור", "יציאה");
  127.         strcpy(PInfo[playerid][pPassword], inputtext, 32);
  128.         PInfo[playerid][pLogged] = true;
  129.         mysql_format(Connection, gString, sizeof gString, "INSERT INTO `Users` (`Username`,`Password`,`Kills`,`Deaths`) VALUES ('%s','%s','%d','%d')", Name(playerid), PInfo[playerid][pPassword], PInfo[playerid][pKills], PInfo[playerid][pDeaths], Name(playerid));
  130.         mysql_query(Connection, gString);
  131.         format(gString, sizeof gString, "!נרשמת בהצלחה לשרת\n%s :סיסמתך היא", PInfo[playerid][pPassword]);
  132.         ShowPlayerDialog(playerid, DIALOG_REGISTER_DETAILS, DIALOG_STYLE_MSGBOX, "פרטי ההרשמה", gString, "אישור", "");
  133.     }
  134.     if(dialogid == DIALOG_LOGIN)
  135.     {
  136.         if(!response)
  137.         {
  138.             return SendClientMessage(playerid, 0xFF0000AA, ".בחרת לצאת מהשרת, ולכן קיבלת קיק"), Kick(playerid);
  139.         }
  140.         if(!strlen(inputtext)) return ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_PASSWORD, "התחברות", "!אתה חייב להקיש סיסמה", "אישור", "יציאה");
  141.         if(strcmp(PInfo[playerid][pPassword], inputtext, true) != 0)
  142.         {
  143.             ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_INPUT, "התחברות", ".הסיסמה שהקשת אינה נכונה, אנא נסה מחדש", "אישור", "יציאה");
  144.         }
  145.         else
  146.         {
  147.             PInfo[playerid][pLogged] = true;
  148.             SendClientMessage(playerid, 0xFF0000AA, "!הצלחת להתחבר לשרת בהצלחה");
  149.         }
  150.     }
  151.     return 1;
  152. }
  153.  
  154. public LoadPlayerData(playerid)
  155. {
  156.     cache_get_data(gRows, gFields, Connection);
  157.     for(new i, j = gRows; i < j; i++)
  158.     {
  159.         cache_get_field_content(i, "Password", PInfo[playerid][pPassword], Connection, 32);
  160.         PInfo[playerid][pKills] = cache_get_field_content_int(i, "Kills", Connection);
  161.         PInfo[playerid][pDeaths] = cache_get_field_content_int(i, "Deaths", Connection);
  162.     }
  163.     return 1;
  164. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement