Advertisement
b64tuck

Simple register/login

Feb 4th, 2014
2,055
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.86 KB | None | 0 0
  1.  
  2.  
  3. #include <a_samp>
  4. #include <YSI\y_ini>
  5.  
  6. #define DIALOG_REGISTER 1
  7. #define DIALOG_LOGIN 2
  8. #define DIALOG_SUCCESS_1 3
  9. #define DIALOG_SUCCESS_2 4
  10.  
  11. #define PATH "/Users/%s.ini"
  12.  
  13. #define COL_WHITE "{FFFFFF}"
  14. #define COL_RED "{F81414}"
  15. #define COL_GREEN "{00FF22}"
  16. #define COL_LIGHTBLUE "{00CED1}"
  17.  
  18. enum pInfo
  19. {
  20. pPass,
  21. pCash,
  22. pAdmin,
  23. pKills,
  24. pDeaths
  25. }
  26. new PlayerInfo[MAX_PLAYERS][pInfo];
  27.  
  28. forward LoadUser_data(playerid,name[],value[]);
  29. public LoadUser_data(playerid,name[],value[])
  30. {
  31. INI_Int("Password",PlayerInfo[playerid][pPass]);
  32. INI_Int("Cash",PlayerInfo[playerid][pCash]);
  33. INI_Int("Admin",PlayerInfo[playerid][pAdmin]);
  34. INI_Int("Kills",PlayerInfo[playerid][pKills]);
  35. INI_Int("Deaths",PlayerInfo[playerid][pDeaths]);
  36. return 1;
  37. }
  38.  
  39. stock UserPath(playerid)
  40. {
  41. new string[128],playername[MAX_PLAYER_NAME];
  42. GetPlayerName(playerid,playername,sizeof(playername));
  43. format(string,sizeof(string),PATH,playername);
  44. return string;
  45. }
  46.  
  47.  
  48. stock udb_hash(buf[]) {
  49. new length=strlen(buf);
  50. new s1 = 1;
  51. new s2 = 0;
  52. new n;
  53. for (n=0; n<length; n++)
  54. {
  55. s1 = (s1 + buf[n]) % 65521;
  56. s2 = (s2 + s1) % 65521;
  57. }
  58. return (s2 << 16) + s1;
  59. }
  60.  
  61. main()
  62. {
  63. print("\n----------------------------------");
  64. print(" Tuck and thanks to dude for tutorial");
  65. print("----------------------------------\n");
  66. }
  67. public OnPlayerConnect(playerid)
  68. {
  69. if(fexist(UserPath(playerid)))
  70. {
  71. INI_ParseFile(UserPath(playerid), "LoadUser_%s", .bExtra = true, .extra = playerid);
  72. ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_INPUT,""COL_WHITE"Login",""COL_WHITE"Write down your password so you could login.","Login","Quit");
  73. }
  74. else
  75. {
  76. ShowPlayerDialog(playerid, DIALOG_REGISTER, DIALOG_STYLE_INPUT,""COL_WHITE"Registering...",""COL_WHITE"Write the password to register.","Register","Quit");
  77. }
  78. return 1;
  79. }
  80.  
  81. public OnPlayerDisconnect(playerid, reason)
  82. {
  83. new INI:File = INI_Open(UserPath(playerid));
  84. INI_SetTag(File,"data");
  85. INI_WriteInt(File,"Cash",GetPlayerMoney(playerid));
  86. INI_WriteInt(File,"Admin",PlayerInfo[playerid][pAdmin]);
  87. INI_WriteInt(File,"Kills",PlayerInfo[playerid][pKills]);
  88. INI_WriteInt(File,"Deaths",PlayerInfo[playerid][pDeaths]);
  89. INI_Close(File);
  90. return 1;
  91. }
  92.  
  93. public OnPlayerSpawn(playerid)
  94. {
  95. return 1;
  96. }
  97.  
  98. public OnPlayerDeath(playerid, killerid, reason)
  99. {
  100. PlayerInfo[killerid][pKills]++;
  101. PlayerInfo[playerid][pDeaths]++;
  102. return 1;
  103. }
  104.  
  105. public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
  106. {
  107. switch( dialogid )
  108. {
  109. case DIALOG_REGISTER:
  110. {
  111. if (!response) return Kick(playerid);
  112. if(response)
  113. {
  114. if(!strlen(inputtext)) return ShowPlayerDialog(playerid, DIALOG_REGISTER, DIALOG_STYLE_INPUT, ""COL_WHITE"Registering...",""COL_RED"You have entered an invalid password.\n"COL_WHITE"Type your password below to register a new account.","Register","Quit");
  115. new INI:File = INI_Open(UserPath(playerid));
  116. INI_SetTag(File,"data");
  117. INI_WriteInt(File,"Password",udb_hash(inputtext));
  118. INI_WriteInt(File,"Cash",0);
  119. INI_WriteInt(File,"Admin",0);
  120. INI_WriteInt(File,"Kills",0);
  121. INI_WriteInt(File,"Deaths",0);
  122. INI_Close(File);
  123.  
  124. SetSpawnInfo(playerid, 0, 0, 1958.33, 1343.12, 15.36, 269.15, 0, 0, 0, 0, 0, 0);
  125. SpawnPlayer(playerid);
  126. ShowPlayerDialog(playerid, DIALOG_SUCCESS_1, DIALOG_STYLE_MSGBOX,""COL_WHITE"Success!",""COL_GREEN"Great! Your Y_INI system works perfectly. Relog to save your stats!","Ok","");
  127. }
  128. }
  129.  
  130. case DIALOG_LOGIN:
  131. {
  132. if ( !response ) return Kick ( playerid );
  133. if( response )
  134. {
  135. if(udb_hash(inputtext) == PlayerInfo[playerid][pPass])
  136. {
  137. INI_ParseFile(UserPath(playerid), "LoadUser_%s", .bExtra = true, .extra = playerid);
  138. GivePlayerMoney(playerid, PlayerInfo[playerid][pCash]);
  139. ShowPlayerDialog(playerid, DIALOG_SUCCESS_2, DIALOG_STYLE_MSGBOX,""COL_WHITE"Success!",""COL_GREEN"You have successfully logged in!","Ok","");
  140. }
  141. else
  142. {
  143. ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_INPUT,""COL_WHITE"Login",""COL_RED"Your password is inncorect.\n"COL_WHITE"Write down your password to login in.","Login","Quit");
  144. }
  145. return 1;
  146. }
  147. }
  148. }
  149. return 1;
  150. }
  151.  
  152. public OnPlayerClickPlayer(playerid, clickedplayerid, source)
  153. {
  154. return 1;
  155. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement