Advertisement
Guest User

Untitled

a guest
Dec 8th, 2010
281
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 5.56 KB | None | 0 0
  1. /*
  2.     Basic Registration
  3.     (c)2010 by case 1337:
  4. */
  5.  
  6. // You are prohibited from stealing this script and claiming copyright off it.
  7.  
  8. #include <a_samp>
  9. #include <Dini>
  10.  
  11. #define COLOR_RED    0xAA3333AA
  12. #define COLOR_YELLOW 0xF5DEB3AA
  13. #define COLOR_WHITE  0xFFFFFFAA
  14.  
  15. #define REGISTER_PATH "Accounts/%s.ini"
  16. // Change this to the folder in scriptfiles that will store all the accounts.
  17. // NOTE: If you remove .ini, it will fuck this filterscript up.
  18. // NOTE: You can change .ini to an extension of your choice (one you can read)
  19.  
  20. new IsPlayerLogged[MAX_PLAYERS];
  21.  
  22. public OnFilterScriptInit()
  23. {
  24.     print("\n--------------------------------------");
  25.     print(" Basic Registration Filterscript ");
  26.     print(" Copyright (c) 2010 by case 1337:");
  27.     print("--------------------------------------\n");
  28.     return 1;
  29. }
  30.  
  31. public OnPlayerConnect(playerid)
  32. {
  33.     new pFile[100], pName[MAX_PLAYER_NAME];
  34.     GetPlayerName(playerid, pName, sizeof(pName));
  35.     format(pFile, sizeof(pFile), REGISTER_PATH, pName);
  36.     if(dini_Exists(pFile))
  37.     {
  38.         SendClientMessage(playerid, COLOR_YELLOW, "Welcome, you may now login by typing '/login [password]'.");
  39.         return 1;
  40.     }
  41.     else if(!dini_Exists(pFile))
  42.     {
  43.         SendClientMessage(playerid, COLOR_YELLOW, "Welcome, you may now register by typing '/register [password]'.");
  44.         return 1;
  45.     }
  46.     return 1;
  47. }
  48.  
  49. public OnPlayerRequestSpawn(playerid)
  50. {
  51.     if(IsPlayerLogged[playerid] == 0)
  52.     {
  53.         new pFile[100], pName[MAX_PLAYER_NAME];
  54.         GetPlayerName(playerid, pName, sizeof(pName));
  55.         format(pFile, sizeof(pFile), REGISTER_PATH, pName);
  56.         if(dini_Exists(pFile))
  57.         {
  58.             SendClientMessage(playerid, COLOR_RED, "You must login first before performing this action.");
  59.             SendClientMessage(playerid, COLOR_WHITE, "HINT: /login [password]");
  60.             return 0;
  61.         }
  62.         else if(!dini_Exists(pFile))
  63.         {
  64.             SendClientMessage(playerid, COLOR_RED, "You must register first before performing this action.");
  65.             SendClientMessage(playerid, COLOR_WHITE, "HINT: /register [password]");
  66.             return 0;
  67.         }
  68.         return 0;
  69.     }
  70.     return 1;
  71. }
  72.  
  73. public OnPlayerDisconnect(playerid, reason)
  74. {
  75.     if(IsPlayerLogged[playerid] == 1) {
  76.         new pFile[100], pName[MAX_PLAYER_NAME];
  77.         new pMoney = GetPlayerMoney(playerid);
  78.         GetPlayerName(playerid, pName, sizeof(pName));
  79.         format(pFile, sizeof(pFile), REGISTER_PATH, pName);
  80.         dini_IntSet(pFile, "Cash", pMoney);
  81.         return 1;
  82.     }
  83.     return 1;
  84. }
  85.  
  86. public OnPlayerCommandText(playerid, cmdtext[])
  87. {
  88.     new cmd[256];
  89.     new idx;
  90.     cmd = strtok(cmdtext, idx);
  91.  
  92.     if(strcmp(cmd, "/register", true) == 0)
  93.     {
  94.         new tmp[256];
  95.         new string[256], pFile[100];
  96.         new pName[MAX_PLAYER_NAME];
  97.         tmp = strtok(cmdtext, idx);
  98.         format(pFile, sizeof(pFile), REGISTER_PATH, pName);
  99.         GetPlayerName(playerid, pName, sizeof(pName));
  100.         if(!strlen(tmp))
  101.         {
  102.             SendClientMessage(playerid, COLOR_WHITE, "SYNTAX: /register [password]");
  103.             return 1;
  104.         }
  105.         if(dini_Exists(pFile))
  106.         {
  107.             SendClientMessage(playerid, COLOR_RED, "You are already registered!");
  108.             return 1;
  109.         }
  110.         if(IsPlayerLogged[playerid] == 1)
  111.         {
  112.             SendClientMessage(playerid, COLOR_RED, "You are already logged in.");
  113.             return 1;
  114.         }
  115.         if(!dini_Exists(pFile))
  116.         {
  117.             format(string, sizeof(string), "You have registered successfully with the password '%s', you have been logged in.",tmp);
  118.             SendClientMessage(playerid, COLOR_YELLOW, string);
  119.             IsPlayerLogged[playerid] = 1;
  120.             dini_Create(pFile);
  121.             dini_IntSet(pFile, "Password", udb_encode(tmp));
  122.             dini_IntSet(pFile, "Cash", 50000);
  123.             GivePlayerMoney(playerid, 50000);
  124.             return 1;
  125.         }
  126.         return 1;
  127.     }
  128.     if(strcmp(cmd, "/login", true) == 0)
  129.     {
  130.         new pFile[100];
  131.         new pName[MAX_PLAYER_NAME];
  132.         new tmp[256], pass[256];
  133.         tmp = strtok(cmdtext, idx);
  134.         GetPlayerName(playerid, pName, sizeof(pName));
  135.         format(pFile, sizeof(pFile), REGISTER_PATH, pName);
  136.         pass = dini_Get(pFile, "Password");
  137.         if(!strlen(tmp))
  138.         {
  139.             SendClientMessage(playerid, COLOR_WHITE, "SYNTAX: /login [password]");
  140.             return 1;
  141.         }
  142.         if(IsPlayerLogged[playerid] == 1)
  143.         {
  144.             SendClientMessage(playerid, COLOR_RED, "You are already logged in.");
  145.             return 1;
  146.         }
  147.         if(!dini_Exists(pFile))
  148.         {
  149.             SendClientMessage(playerid, COLOR_RED, "You must register first before performing this action.");
  150.             SendClientMessage(playerid, COLOR_WHITE, "HINT: /register [password]");
  151.             return 1;
  152.         }
  153.         if(udb_encode(tmp) == strval(pass))
  154.         {
  155.             IsPlayerLogged[playerid] = 1;
  156.             GivePlayerMoney(playerid, dini_Int(pFile, "Cash"));
  157.             SendClientMessage(playerid, COLOR_YELLOW, "You have successfully logged into your account.");
  158.             return 1;
  159.         }
  160.         else
  161.         {
  162.             SendClientMessage(playerid, COLOR_RED, "The password you have entered is incorrect.");
  163.             return 1;
  164.         }
  165.     }
  166.     return 0;
  167. }
  168.  
  169. strtok(const string[], &index)
  170. {
  171.     new length = strlen(string);
  172.     while ((index < length) && (string[index] <= ' '))
  173.     {
  174.         index++;
  175.     }
  176.  
  177.     new offset = index;
  178.     new result[20];
  179.     while ((index < length) && (string[index] > ' ') && ((index - offset) < (sizeof(result) - 1)))
  180.     {
  181.         result[index - offset] = string[index];
  182.         index++;
  183.     }
  184.     result[index - offset] = EOS;
  185.     return result;
  186. }
  187.  
  188. stock udb_encode(buf[])
  189. {
  190.     new length = strlen(buf);
  191.     new s1 = 1;
  192.     new s2 = 0;
  193.     new n;
  194.     for (n=0; n<length; n++)
  195.     {
  196.        s1 = (s1 + buf[n]) % 65521;
  197.        s2 = (s2 + s1)     % 65521;
  198.     }
  199.     return (s2 << 16) + s1;
  200. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement