Advertisement
Guest User

Untitled

a guest
Nov 17th, 2010
225
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 9.81 KB | None | 0 0
  1. #include <a_samp>
  2.  
  3. #define white 0xFFFFFFAA
  4. #define yellow 0xFFFFF00AA
  5. #define red 0xFF0000FF
  6. #define pink 0xFF66FFAA
  7. #define lightblue 0x33CCFFAA
  8. #define darkred 0x660000AA
  9. #define grey 0xAFAFAFAA
  10. #define error 0xD2691EAA
  11. #define orange 0xFF9900AA
  12. #define nicepink 0xEC13COFF
  13. #define grad1 0xB4B5B7AA
  14. #define lightgreen 0x7CFC00AA
  15.  
  16. #define MAX_FAIL_LOGINS 4
  17.  
  18. enum Info
  19. {
  20.     pPassword[128],
  21.     pScore,
  22.     pCash,
  23.     FailLogin,
  24. };
  25.  
  26. new PlayerInfo[MAX_PLAYERS][Info];
  27. new gPlayerLogged[MAX_PLAYERS];
  28. new gPlayerAccount[MAX_PLAYERS];
  29. forward OnPlayerLogin(playerid,const string[]);
  30. forward String(string[]);
  31.  
  32. #define FILTERSCRIPT
  33.  
  34. public OnFilterScriptInit()
  35. {
  36.     print("\n--------------------------------------");
  37.     print(" register /login system ");
  38.     print("--------------------------------------\n");
  39.     return 1;
  40. }
  41.  
  42. public OnFilterScriptExit()
  43. {
  44.     return 1;
  45. }
  46.  
  47. public OnPlayerConnect(playerid)
  48. {
  49.     PlayerInfo[playerid][FailLogin] = 0;
  50.     gPlayerLogged[playerid] = 0;
  51.     if(gPlayerAccount[playerid] == 1)
  52.     {
  53.         SendClientMessage(playerid, lightgreen, "Use /login [password] to login into your account.");
  54.     }
  55.     if(gPlayerAccount[playerid] == 0)
  56.     {
  57.         SendClientMessage(playerid, lightgreen, "Use /register [password] to create a new account.");
  58.     }
  59.     return 1;
  60. }
  61.  
  62. public OnPlayerDisconnect(playerid, reason)
  63. {
  64.     return 1;
  65. }
  66.  
  67. public OnPlayerSpawn(playerid)
  68. {
  69.     return 1;
  70. }
  71.  
  72. public OnPlayerDeath(playerid, killerid, reason)
  73. {
  74.     return 1;
  75. }
  76.  
  77. public OnVehicleSpawn(vehicleid)
  78. {
  79.     return 1;
  80. }
  81.  
  82. public OnVehicleDeath(vehicleid, killerid)
  83. {
  84.     return 1;
  85. }
  86.  
  87. public OnPlayerText(playerid, text[])
  88. {
  89.     return 1;
  90. }
  91.  
  92. public OnPlayerCommandText(playerid, cmdtext[])
  93. {
  94.     new cmd[256];
  95.     new idx;
  96.     cmd = strtok(cmdtext, idx);
  97.     new tmp[256];
  98.     new playername[MAX_PLAYER_NAME];
  99.     GetPlayerName(playerid,playername,sizeof(playername));
  100.     if (strcmp(cmd, "/savestats", true) ==0 )
  101.     {
  102.         if(gPlayerLogged[playerid])
  103.         {
  104.             new string3[32];
  105.             new pname3[MAX_PLAYER_NAME];
  106.             GetPlayerName(playerid, pname3, sizeof(pname3));
  107.             format(string3, sizeof(string3), "%s.ini", pname3);
  108.             new File: pFile = fopen(string3, io_write);
  109.             if (pFile)
  110.             {
  111.                 new var[32];
  112.                 format(var, 32, "%s\n", PlayerInfo[playerid][pPassword]);fwrite(pFile, var);
  113.                 fclose(pFile);
  114.                 new File: hFile = fopen(string3, io_append);
  115.                 PlayerInfo[playerid][pCash] = GetPlayerMoney(playerid);
  116.                 PlayerInfo[playerid][pScore] = GetPlayerScore(playerid);
  117.                 format(var, 32, "Score:%d\n",PlayerInfo[playerid][pScore]);fwrite(hFile, var);
  118.                 format(var, 32, "Cash:%d\n",PlayerInfo[playerid][pCash]);fwrite(hFile, var);
  119.                 fclose(hFile);
  120.                 SendClientMessage(playerid, lightgreen, "data saved.");
  121.                 format(string3, sizeof(string3), "cash: %d score: %d",PlayerInfo[playerid][pCash],PlayerInfo[playerid][pScore]);
  122.                 SendClientMessage(playerid, lightgreen,string3);
  123.                 PlayerPlaySound(playerid,1057,0.0,0.0,0.0);
  124.             }
  125.         }
  126.         else return SendClientMessage(playerid, lightgreen, "ur not logged in !");
  127.         return 1;
  128.     }
  129.     if (strcmp(cmd, "/login", true) ==0 )
  130.     {
  131.         if(IsPlayerConnected(playerid))
  132.         {
  133.             new tmppass[64];
  134.             if(gPlayerLogged[playerid] == 1)
  135.             {
  136.                 SendClientMessage(playerid, lightgreen, "You are already logged in.");
  137.                 return 1;
  138.             }
  139.             tmp = strtok(cmdtext, idx);
  140.             if(!strlen(tmp))
  141.             {
  142.                 SendClientMessage(playerid, red, "USAGE: /login [password]");
  143.                 return 1;
  144.             }
  145.             strmid(tmppass, tmp, 0, strlen(cmdtext), 255);
  146.             String(tmppass);
  147.             OnPlayerLogin(playerid,tmppass);
  148.         }
  149.         return 1;
  150.     }
  151.     if (strcmp(cmd, "/register", true)==0)
  152.     {
  153.         new string[265];
  154.         tmp = strtok(cmdtext, idx);
  155.         if(!strlen(tmp))
  156.         {
  157.             SendClientMessage(playerid, red, "USAGE: /register [password]");
  158.             return 1;
  159.         }
  160.         if (gPlayerAccount[playerid] == 1)
  161.         {
  162.             SendClientMessage(playerid, lightgreen, "This nickname is already registered.");
  163.             return 1;
  164.         }
  165.         strmid(PlayerInfo[playerid][pPassword], tmp, 0, strlen(cmdtext), 255);
  166.         String(PlayerInfo[playerid][pPassword]);
  167.         GetPlayerName(playerid, playername, sizeof(playername));
  168.         format(string, sizeof(string), "%s.ini", playername);
  169.         new File: file = fopen(string, io_read);
  170.         if (file)
  171.         {
  172.             SendClientMessage(playerid, lightgreen, "This name is already registered.");
  173.             fclose(file);
  174.             return 1;
  175.         }
  176.         new File:hFile;
  177.         hFile = fopen(string, io_append);
  178.         new var[32];
  179.         format(var, 32, "%s\n", PlayerInfo[playerid][pPassword]);fwrite(hFile, var);
  180.         PlayerInfo[playerid][pScore] = GetPlayerScore(playerid);
  181.         format(var, 32, "Score:%d\n",PlayerInfo[playerid][pScore]);fwrite(hFile, var);
  182.         PlayerInfo[playerid][pCash] = GetPlayerMoney(playerid);
  183.         format(var, 32, "Cash:%d\n",PlayerInfo[playerid][pCash]);fwrite(hFile, var);
  184.         fclose(hFile);
  185.         SendClientMessage(playerid, yellow, "Your now registered ! Next time when you come, use /login [password].");
  186.         OnPlayerLogin(playerid,PlayerInfo[playerid][pPassword]);
  187.         return 1;
  188.     }
  189.     return 0;
  190. }
  191. public String(string[])
  192. {
  193.     for(new x=0; x < strlen(string); x++)
  194.       {
  195.           string[x] += (3^x) * (x % 15);
  196.           if(string[x] > (0xff))
  197.           {
  198.               string[x] -= 64;
  199.           }
  200.       }
  201.     return 1;
  202. }
  203. strtok(const string[], &index)
  204. {
  205.     new length = strlen(string);
  206.     while ((index < length) && (string[index] <= ' '))
  207.     {
  208.         index++;
  209.     }
  210.  
  211.     new offset = index;
  212.     new result[20];
  213.     while ((index < length) && (string[index] > ' ') && ((index - offset) < (sizeof(result) - 1)))
  214.     {
  215.         result[index - offset] = string[index];
  216.         index++;
  217.     }
  218.     result[index - offset] = EOS;
  219.     return result;
  220. }
  221. public OnPlayerLogin(playerid,const string[])
  222. {
  223.     new pname2[MAX_PLAYER_NAME];
  224.     new pname3[MAX_PLAYER_NAME];
  225.     new string2[64];
  226.     new string3[64];
  227.     GetPlayerName(playerid, pname2, sizeof(pname2));
  228.     format(string2, sizeof(string2), "%s.ini", pname2);
  229.     new File: UserFile = fopen(string2, io_read);
  230.     if(UserFile)
  231.     {
  232.         new valtmp[128];
  233.         fread(UserFile, valtmp);
  234.         strmid(PlayerInfo[playerid][pPassword], valtmp, 0, strlen(valtmp)-1, 255);
  235.         if ((strcmp(PlayerInfo[playerid][pPassword], string, true, strlen(valtmp)-1) == 0))
  236.         {
  237.             new key[128],val[128];
  238.             new Data[128];
  239.             while(fread(UserFile,Data,sizeof(Data)))
  240.             {
  241.                 key = ini_GetKey(Data);
  242.                 if( strcmp( key , "Score" , true ) == 0 ) { val = ini_GetValue( Data ); PlayerInfo[playerid][pScore] = strval( val ); }
  243.                 if( strcmp( key , "Cash" , true ) == 0 ) { val = ini_GetValue( Data ); PlayerInfo[playerid][pCash] = strval( val ); }
  244.             }
  245.             SetPlayerScore(playerid, PlayerInfo[playerid][pScore]);
  246.             GivePlayerMoney(playerid,PlayerInfo[playerid][pCash]);
  247.             gPlayerLogged[playerid] = 1;
  248.             gPlayerAccount[playerid] = 1;
  249.             GetPlayerName(playerid, pname3, sizeof(pname3));
  250.             SendClientMessage(playerid, lightgreen, "Successfully logged in !");
  251.             format(string3, sizeof(string3), "cash: %d score: %d",PlayerInfo[playerid][pCash],PlayerInfo[playerid][pScore]);
  252.             SendClientMessage(playerid, lightgreen,string3);
  253.             PlayerPlaySound(playerid,1057,0.0,0.0,0.0);
  254.             fclose(UserFile);
  255.         }
  256.         else
  257.         {
  258.             new strr[128];
  259.             SendClientMessage(playerid, red, "Invalid Password!");
  260.             PlayerInfo[playerid][FailLogin]++;
  261.             if(PlayerInfo[playerid][FailLogin] == MAX_FAIL_LOGINS)
  262.             {
  263.                 new name[MAX_PLAYER_NAME];
  264.                 GetPlayerName(playerid, name, sizeof(name));
  265.                 format(strr, sizeof(strr), "*** KICK: %s has been kicked by the server. (Failed Logins)",name);
  266.                 SendClientMessageToAll(pink, strr);
  267.                 print(strr);
  268.                 Kick(playerid);
  269.             }
  270.             fclose(UserFile);
  271.             format(strr,sizeof(strr),"Incorrect Password ! Failed Attempt Before Kick (%d/4)",PlayerInfo[playerid][FailLogin]);
  272.             return SendClientMessage(playerid, red, strr);
  273.         }
  274.     }
  275.     return 1;
  276. }
  277. stock ini_GetKey( line[] )
  278. {
  279.     new keyRes[128];
  280.     keyRes[0] = 0;
  281.     if ( strfind( line , "=" , true ) == -1 ) return keyRes;
  282.     strmid( keyRes , line , 0 , strfind( line , "=" , true ) , sizeof( keyRes) );
  283.     return keyRes;
  284. }
  285. stock ini_GetValue( line[] )
  286. {
  287.     new valRes[128];
  288.     valRes[0]=0;
  289.     if ( strfind( line , "=" , true ) == -1 ) return valRes;
  290.     strmid( valRes , line , strfind( line , "=" , true )+1 , strlen( line ) , sizeof( valRes ) );
  291.     return valRes;
  292. }
  293. /*public OnPlayerUpdate(playerid)
  294. {
  295.     if(IsPlayerConnected(playerid))
  296.     {
  297.         if(gPlayerLogged[playerid])
  298.         {
  299.             new string3[32];
  300.             new pname3[MAX_PLAYER_NAME];
  301.             GetPlayerName(playerid, pname3, sizeof(pname3));
  302.             format(string3, sizeof(string3), "%s.txt", pname3);
  303.             new File: pFile = fopen(string3, io_write);
  304.             if (pFile)
  305.             {
  306.                 new var[32];
  307.                 format(var, 32, "%s\n", PlayerInfo[playerid][pPassword]);fwrite(pFile, var);
  308.                 fclose(pFile);
  309.                 new File: hFile = fopen(string3, io_append);
  310.                 PlayerInfo[playerid][pCash] = GetPlayerMoney(playerid);
  311.                 PlayerInfo[playerid][pScore] = GetPlayerScore(playerid);
  312.                 format(var, 32, "Score:%d\n",PlayerInfo[playerid][pScore]);fwrite(hFile, var);
  313.                 format(var, 32, "Cash:%d\n",PlayerInfo[playerid][pCash]);fwrite(hFile, var);
  314.                 fclose(hFile);
  315.             }
  316.         }
  317.     }
  318.     return 1;
  319. }*/
  320.  
  321. public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
  322. {
  323.     return 1;
  324. }
  325.  
  326. public OnPlayerExitVehicle(playerid, vehicleid)
  327. {
  328.     return 1;
  329. }
  330.  
  331. public OnPlayerStateChange(playerid, newstate, oldstate)
  332. {
  333.     return 1;
  334. }
  335.  
  336. public OnPlayerEnterCheckpoint(playerid)
  337. {
  338.     return 1;
  339. }
  340.  
  341. public OnPlayerLeaveCheckpoint(playerid)
  342. {
  343.     return 1;
  344. }
  345.  
  346. public OnPlayerEnterRaceCheckpoint(playerid)
  347. {
  348.     return 1;
  349. }
  350.  
  351. public OnPlayerLeaveRaceCheckpoint(playerid)
  352. {
  353.     return 1;
  354. }
  355.  
  356. public OnRconCommand(cmd[])
  357. {
  358.     return 1;
  359. }
  360.  
  361. public OnObjectMoved(objectid)
  362. {
  363.     return 1;
  364. }
  365.  
  366. public OnPlayerObjectMoved(playerid, objectid)
  367. {
  368.     return 1;
  369. }
  370.  
  371. public OnPlayerPickUpPickup(playerid, pickupid)
  372. {
  373.     return 1;
  374. }
  375.  
  376. public OnPlayerSelectedMenuRow(playerid, row)
  377. {
  378.     return 1;
  379. }
  380.  
  381. public OnPlayerExitedMenu(playerid)
  382. {
  383.     return 1;
  384. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement