Advertisement
Guest User

Register and Login System

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