Advertisement
Guest User

Untitled

a guest
Oct 17th, 2010
1,332
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 4.21 KB | None | 0 0
  1. //Includes
  2. #include <a_samp>
  3. #include <dini>
  4.  
  5. //Must login to spawn
  6. // 1 = yes, 0 = no
  7. new lspawn = 1;
  8. new Logged[MAX_PLAYERS] = 0;
  9. //Defines
  10. #define COLOUR_GREEN    0x33AA33AA
  11. #define COLOUR_RED  0xAA3333AA
  12. #define COLOUR_YELLOW   0xFFFF00AA
  13. #define COLOUR_LIGHTBLUE    0x33CCFFAA
  14. #define COLOUR_ORANGE   0xFF9900AA
  15. #define SKIN_POS    1958.3783, 1343.1572, 15.3746, 269.1425
  16. //Dcmd, youl love dcmd...
  17. #define dcmd(%1,%2,%3) if ((strcmp((%3)[1], #%1, true, (%2)) == 0) && ((((%3)[(%2) + 1] == 0) && (dcmd_%1(playerid, "")))||(((%3)[(%2) + 1] == 32) && (dcmd_%1(playerid, (%3)[(%2) + 2]))))) return 1
  18.  
  19. //Hasher
  20. adler32_hash(buf[]) {
  21.    new length=strlen(buf);
  22.    new s1 = 1;
  23.    new s2 = 0;
  24.    new n;
  25.    for (n=0; n<length; n++)
  26.    {
  27.      s1 = (s1 + buf[n]) % 65521;
  28.      s2 = (s2 + s1)     % 65521;
  29.    }
  30.    return (s2 << 16) + s1;
  31. }
  32.  
  33. public OnFilterScriptInit()
  34. {
  35.     //Credits
  36.     print("Simple Register / Login by Epic-Matrix");
  37.     return 1;
  38. }
  39.  
  40. public OnFilterScriptExit()
  41. {
  42.     return 1;
  43. }
  44.  
  45. public OnPlayerConnect(playerid)
  46. {
  47.     return 1;
  48. }
  49.  
  50. public OnPlayerDisconnect(playerid, reason)
  51. {
  52.     new name[MAX_PLAYER_NAME], file[200];
  53.     GetPlayerName(playerid, name, sizeof(name));
  54.     format(file, sizeof(file), "\\users\\%s.ini", name);
  55.     dini_IntSet(file, "cash", GetPlayerMoney(playerid));
  56.     dini_IntSet(file, "score", GetPlayerScore(playerid));
  57.     Logged[playerid] = 0;
  58.     return 1;
  59. }
  60.  
  61. public OnPlayerRequestSpawn(playerid)
  62. {
  63.     //Can't spawn if your not logged in or registered...
  64.     if(lspawn == 1 && Logged[playerid] == 0)
  65.     {
  66.     SendClientMessage(playerid, COLOUR_RED, "You must login or register to spawn!");
  67.     return 0;
  68.     }else{
  69.     return 1;
  70.     }
  71. }
  72.  
  73. public OnPlayerCommandText(playerid, cmdtext[])
  74. {
  75.     dcmd(register, 8, cmdtext);
  76.     dcmd(login, 5, cmdtext);
  77.     return false;
  78. }
  79.  
  80. //Register
  81. dcmd_register(playerid, params[])
  82. {
  83.     //Varibles
  84.     new name[MAX_PLAYER_NAME], file[200];
  85.     //Get there name
  86.     GetPlayerName(playerid, name, sizeof(name));
  87.     //Build the file name
  88.     format(file, sizeof(file), "\\users\\%s.ini", name);
  89.     //No registering if your logged in!
  90.     if(Logged[playerid] == 1)   return SendClientMessage(playerid, COLOUR_RED, "You are already logged in!");
  91.     //Make shure there not registered!
  92.     if(dini_Exists(file))   return SendClientMessage(playerid, COLOUR_RED, "This name is already registered! Please login!");
  93.     //Can't forget a password!
  94.     else if(strlen(params) == 0)    return SendClientMessage(playerid, COLOUR_RED, "You must enter a password to register!");
  95.     else
  96.     {
  97.         //Make there file
  98.         dini_Create(file);
  99.         //Store a encrypted copy of there password in it
  100.         dini_IntSet(file, "password", adler32_hash(params));
  101.         //Save there money
  102.         dini_IntSet(file, "cash", GetPlayerMoney(playerid));
  103.         //Save there score
  104.         dini_IntSet(file, "score", GetPlayerScore(playerid));
  105.         //Make them logged
  106.         Logged[playerid] = 1;
  107.         //Sucess
  108.         SendClientMessage(playerid, COLOUR_YELLOW, "Your now registered, and have been automaticly logged in!");
  109.     }
  110.     return 1;
  111. }
  112.  
  113. //Login
  114. dcmd_login(playerid, params[])
  115. {
  116.     //Varibles
  117.     new name[MAX_PLAYER_NAME], file[200];
  118.     //Get there name
  119.     GetPlayerName(playerid, name, sizeof(name));
  120.     //Build there file name
  121.     format(file, sizeof(file), "\\users\\%s.ini", name);
  122.     //No /login abuse
  123.     if(Logged[playerid] == 1)   return SendClientMessage(playerid, COLOUR_RED, "You are already logged in!");
  124.     //Make shure there registered!
  125.     if(!dini_Exists(file))   return SendClientMessage(playerid, COLOUR_RED, "This name isn't registered! Please register now!");
  126.     //Can't forget a password!
  127.     else if(strlen(params) == 0)    return SendClientMessage(playerid, COLOUR_RED, "You must enter a password to login!");
  128.     //Hash there password so it can be compaired
  129.     else if(adler32_hash(params) != dini_Int(file, "password")) return SendClientMessage(playerid, COLOUR_RED, "Login failed!");
  130.     else
  131.     {
  132.         //Get there cash
  133.         GivePlayerMoney(playerid, GetPlayerMoney(playerid) - dini_Int(file, "cash"));
  134.         //Get there score
  135.         SetPlayerScore(playerid, dini_Int(file, "score"));
  136.         //Make them logged
  137.         Logged[playerid] = 1;
  138.         //Sucess
  139.         SendClientMessage(playerid, COLOUR_YELLOW, "You are now logged in, and your stats were automaticly loaded!");
  140.     }
  141.     return 1;
  142. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement