PCheriyan007

SQLite Testing Filterscript

Jun 23rd, 2011
531
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 4.27 KB | None | 0 0
  1. #include a_samp
  2. #include <zcmd>
  3.  
  4. #define FormatQuery(%0,%1,%2) format((%0), sizeof(%0), (%1), %2)
  5.  
  6. enum P_ENUM_DATA
  7. {
  8.     Score,
  9.     Money,
  10.     PlayerIP,
  11.     bool:Logged
  12. }
  13.  
  14. new
  15.     P_DATA[MAX_PLAYERS] [P_ENUM_DATA],
  16.     DB:Database;
  17.  
  18. public OnFilterScriptInit( )
  19. {
  20.     Database = db_open("SArcr.db");
  21.     db_free_result(db_query(Database, "CREATE TABLE IF NOT EXISTS `Users` (`IP`,`Name`,`Password`,`Money`,`Score`)"));
  22.     return 1;
  23. }
  24. public OnFilterScriptExit( )
  25. {
  26.     db_close(Database);
  27.     return 1;
  28. }
  29. CMD:register(playerid,params[])
  30. {
  31.     if(P_DATA[playerid][Logged]) return SendClientMessage(playerid, ~1, "You are already logged in!");
  32.  
  33.     new Query[256], DBResult:Result;
  34.  
  35.     format(Query, sizeof(Query), "SELECT * FROM `Users` WHERE `Name` = '%s'", Name(playerid));
  36.     Result = db_query(Database,Query);
  37.  
  38.     if(!db_num_rows(Result))
  39.     {
  40.         if(strlen(params))
  41.         {
  42.             if(strlen(params) > 5 && strlen(params) < 24)
  43.             {
  44.                 FormatQuery( Query, "INSERT INTO `Users` (`IP`,`Name`,`Password`,`Money`,`Score`) VALUES('%s','%s','%s','%d','%d')", GetPlayerIPEx(playerid), Name(playerid), params, GetPlayerMoney(playerid), GetPlayerScore(playerid) );
  45.                 db_free_result( db_query(Database, Query) );
  46.  
  47.                 SendClientMessage(playerid, ~1, "Your account has been succesfully registered!");
  48.                 format(Query, 256, "Your password is: %s.", params);
  49.                 SendClientMessage(playerid, ~1, Query);
  50.             }
  51.             else return SendClientMessage(playerid, ~1, "Password must contain at least 5 characters and maximum 24.");
  52.         }
  53.         else return SendClientMessage(playerid, ~1, "USAGE: /register <password>");
  54.     }
  55.     else return SendClientMessage(playerid, ~1, "Your account already exists, use / login <password>");
  56.     return 1;
  57. }
  58. CMD:login(playerid,params[])
  59. {
  60.     if(P_DATA[playerid][Logged]) return SendClientMessage(playerid, ~1, "You're already logged in!");
  61.  
  62.     if(strlen(params))
  63.     {
  64.         new Query[256], DBResult:Result ;
  65.  
  66.         FormatQuery(Query, "SELECT * FROM `Users` WHERE `Name` = '%s'", Name(playerid));
  67.         Result = db_query(Database,Query);
  68.  
  69.         if(db_num_rows(Result))
  70.         {
  71.             FormatQuery(Query, "SELECT * FROM `Users` WHERE `Name` = '%s' AND `Password` = '%s'", Name(playerid), params);
  72.             Result = db_query(Database,Query);
  73.             if(db_num_rows(Result))
  74.             {
  75.                 new Field[30] ;
  76.  
  77.                 db_get_field_assoc(Result, "Money", Field, 30 );
  78.                 P_DATA[playerid][Money] = strval(Field);
  79.  
  80.                 db_get_field_assoc(Result, "Score", Field, 30 );
  81.                 P_DATA[playerid][Score] = strval(Field);
  82.  
  83.                 ResetPlayerMoney(playerid);
  84.                 GivePlayerMoney(playerid, P_DATA[playerid][Money]);
  85.  
  86.                 SetPlayerScore(playerid, P_DATA[playerid][Score]);
  87.  
  88.                 new Str[129];
  89.                 format(Str, sizeof(Str), "You've successfully logged in! You have %d and %d Score Money", P_DATA[playerid][Money], P_DATA[playerid][Score] );
  90.                 SendClientMessage(playerid, ~1, Str);
  91.  
  92.                 P_DATA[playerid][Logged] = true;
  93.             }
  94.             else SendClientMessage(playerid, ~1, "Password does not match the database password! Please try again!");
  95.             db_free_result(Result);
  96.         }
  97.         else
  98.         {
  99.             new Str[129];
  100.             format(Str, sizeof(Str), "Account %s does not exist in the database! Use /register <password>", Name(playerid));
  101.             SendClientMessage(playerid, ~1, Str);
  102.         }
  103.         db_free_result(Result);
  104.     }
  105.     else SendClientMessage(playerid, ~1, "USAGE: /login <password>");
  106.     return 1;
  107. }
  108. public OnPlayerConnect(playerid)
  109. {
  110.     new Query[256], DBResult:Result ;
  111.  
  112.     format(Query, sizeof(Query), "SELECT * FROM `Users` WHERE `Name` = '%s'", Name(playerid));
  113.     Result = db_query(Database,Query);
  114.  
  115.     if(db_num_rows(Result))
  116.     SendClientMessage(playerid, ~1, "This name is registered! Use /login <password>");
  117.     else
  118.     SendClientMessage(playerid, ~1, "This name is not registered! Use /register <password>");
  119.  
  120.     db_free_result(Result);
  121.  
  122.     P_DATA[playerid][Logged] = false;
  123.     return 1;
  124. }
  125. public OnPlayerDisconnect(playerid, reason)
  126. {
  127.     if(P_DATA[playerid][Logged])
  128.     {
  129.         new Query[256] ;
  130.         format(Query, sizeof(Query), "UPDATE `Users` SET (`Money` = '%d', `Score` = '%d') WHERE `Name` = '%s'",P_DATA[playerid][Money], P_DATA[playerid][Score], Name(playerid));
  131.         db_free_result(db_query(Database, Query));
  132.         P_DATA[playerid][Logged] = false;
  133.     }
  134.     return 1;
  135. }
  136. GetPlayerIPEx(playerid)
  137. {
  138.     new IP[24];
  139.     GetPlayerIp(playerid, IP, 24);
  140.     return IP;
  141. }
  142. Name(i)
  143. {
  144.     new n[24];
  145.     GetPlayerName(i,n,24);
  146.     return n;
  147. }
Advertisement
Add Comment
Please, Sign In to add comment