Advertisement
AleeFerreira

SQLite Registro

Jul 30th, 2012
729
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 5.23 KB | None | 0 0
  1. #include <a_samp>
  2.  
  3. #if defined MAX_PLAYERS
  4.     #undef MAX_PLAYERS
  5. #endif
  6. #define MAX_PLAYERS (250) //altere para o número de slots do seu servidor
  7.  
  8. #define DialogLogin (1)
  9. #define DialogRegistro (2)
  10.  
  11. enum Dados{
  12.     Admin,
  13.     Cash,
  14.     Matou,
  15.     Morreu,
  16.     bool:Logado
  17. }
  18. new PlayerDados[MAX_PLAYERS][Dados], DB:SQLiteBase, TentouLogar[MAX_PLAYERS];
  19.  
  20. public OnFilterScriptInit()
  21. {
  22.     SQLiteBase = db_open("Base.db");
  23.     db_query(SQLiteBase,"CREATE TABLE IF NOT EXISTS `PLAYERS` (`Nick`,`Senha`,`Level`,`Grana`,`Admin`,`Cash`,`Matou`,`Morreu`)");
  24.     return 1;
  25. }
  26.  
  27. public OnFilterScriptExit()
  28. {
  29.     db_close(SQLiteBase);
  30.     return 1;
  31. }
  32.  
  33. public OnPlayerConnect(playerid)
  34. {
  35.     new DBResult: Resultado, Query[200];
  36.     format(Query, sizeof(Query), "SELECT * FROM `PLAYERS` WHERE `Nick` = '%s'",DB_Escape(PlayerName(playerid)));
  37.     Resultado = db_query(SQLiteBase, Query);
  38.     if(db_num_rows(Resultado)){
  39.    
  40.         ShowPlayerDialog(playerid, DialogLogin,DIALOG_STYLE_PASSWORD,"Login","Olá, seja bem vindo novamente\nDigite sua senha no campo abaixo para logar-se","Logar","Sair");
  41.     }
  42.     else{
  43.         ShowPlayerDialog(playerid, DialogRegistro,DIALOG_STYLE_INPUT,"Registro","Olá, seja bem vindo novato\nPor favor, digite uma senha no campo abaixo para se registrar no servidor","Registrar","Sair");
  44.     }
  45.     db_free_result(Resultado);
  46.     return 1;
  47. }
  48.  
  49. public OnPlayerDisconnect(playerid, reason)
  50. {
  51.     new Query[200];
  52.     if(PlayerDados[playerid][Logado]){
  53.         PlayerDados[playerid][Logado] = false;
  54.         format(Query,sizeof Query,"UPDATE `PLAYERS` SET Level=%i,Admin=%i,Cash=%i,Matou=%i,Morreu=%i,Grana=%i",GetPlayerScore(playerid),PlayerDados[playerid][Admin],PlayerDados[playerid][Cash],PlayerDados[playerid][Matou],PlayerDados[playerid][Morreu],GetPlayerMoney(playerid));
  55.         db_query(SQLiteBase, Query);
  56.     }
  57.     return 1;
  58. }
  59.  
  60. public OnPlayerSpawn(playerid)
  61. {
  62.     if(!PlayerDados[playerid][Logado]){
  63.         SendClientMessage(playerid,-1,"| ERRO | Você precisa estar logado");
  64.         Kick(playerid);
  65.     }
  66.     return 1;
  67. }
  68.  
  69. public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
  70. {
  71.     new DBResult: Resultado, Query[270];
  72.     if(dialogid == DialogLogin){
  73.         if(!response) return Kick(playerid);
  74.         format(Query,sizeof Query,"SELECT * FROM `PLAYERS` WHERE `Nick` = '%s' AND `Senha` = '%s'",DB_Escape(PlayerName(playerid)),DB_Escape(inputtext));
  75.         Resultado = db_query(SQLiteBase,Query);
  76.         if(db_num_rows(Resultado)){
  77.             SendClientMessage(playerid,0x4682B4AA,"| INFO | Seus dados foram carregados com sucesso, tenha um bom jogo!");
  78.             new Campo[50];
  79.             db_get_field_assoc(Resultado,"Admin",Campo,50);
  80.             PlayerDados[playerid][Admin] = strval(Campo);
  81.             db_get_field_assoc(Resultado,"Matou",Campo,50);
  82.             PlayerDados[playerid][Matou] = strval(Campo);
  83.             db_get_field_assoc(Resultado,"Morreu",Campo,50);
  84.             PlayerDados[playerid][Morreu] = strval(Campo);
  85.             db_get_field_assoc(Resultado,"Level",Campo,50);
  86.             SetPlayerScore(playerid, strval(Campo));
  87.             db_get_field_assoc(Resultado,"Grana",Campo,50);
  88.             GivePlayerMoney(playerid, strval(Campo));
  89.             db_get_field_assoc(Resultado,"Cash",Campo,50);
  90.             PlayerDados[playerid][Cash] = strval(Campo);
  91.             PlayerDados[playerid][Logado] = true;
  92.         }
  93.         else{
  94.             ++TentouLogar[playerid];
  95.             format(Query, sizeof Query,"| SENHA | Isso é meio constrangedor, mas se o senhor(a) errar a senha mais %i vezes será kickado.",5-TentouLogar[playerid]);
  96.             SendClientMessage(playerid,0xB22222AA,Query);
  97.             ShowPlayerDialog(playerid, DialogLogin,DIALOG_STYLE_PASSWORD,"Login","Olá, seja bem vindo novamente\nDigite sua senha no campo abaixo para logar-se","Logar","Sair");
  98.             if(TentouLogar[playerid] == 5){
  99.                 SendClientMessage(playerid, 0xB22222AA,"| SENHA | O senhor(a) errou a senha 5 vezes e por medidas de segurança foi kickado.");
  100.                 TentouLogar[playerid] = 0;
  101.                 Kick(playerid);
  102.             }
  103.             db_free_result(Resultado);
  104.         }
  105.     }
  106.     if(dialogid == DialogRegistro){
  107.         if(!response) return Kick(playerid);
  108.         if(strlen(inputtext) < 5 || strlen(inputtext) > 25){
  109.             SendClientMessage(playerid,0xB22222AA,"| SENHA | Sua senha deve ser maior que 5 e menor que 25 caracteres");
  110.              ShowPlayerDialog(playerid, DialogLogin,DIALOG_STYLE_PASSWORD,"Login","Olá, seja bem vindo novamente\nDigite sua senha no campo abaixo para logar-se","Logar","Sair");
  111.         }else{
  112.             format(Query,sizeof Query,"INSERT INTO `PLAYERS` (`Nick`,`Senha`,`Level`,`Grana`,`Admin`,`Cash`,`Matou`,`Morreu`) VALUES('%s','%s','0','2000','0','0','0','0')",DB_Escape(PlayerName(playerid)),DB_Escape(inputtext));
  113.             db_query(SQLiteBase, Query);
  114.             SendClientMessage(playerid,0x4682B4AA,"| INFO | Sua conta foi criada com sucesso em nossa database, tenha um bom jogo!");
  115.             GivePlayerMoney(playerid, 2000);
  116.             PlayerDados[playerid][Logado] = true;
  117.         }
  118.     }
  119.     return 1;
  120. }
  121.  
  122. stock PlayerName(playerid){
  123.     new Nome[25]; GetPlayerName(playerid,Nome,25);
  124.     return Nome;
  125. }
  126.  
  127. stock DB_Escape(text[])
  128. {
  129.     new
  130.     ret[80 * 2],
  131.     ch,
  132.     i,
  133.     j;
  134.     while ((ch = text[i++]) && j < sizeof (ret))
  135.     {
  136.  
  137.         if (ch == '\'')
  138.         {
  139.  
  140.             if (j < sizeof (ret) - 2)
  141.             {
  142.  
  143.                 ret[j++] = '\'';
  144.                 ret[j++] = '\'';
  145.             }
  146.         }
  147.         else if (j < sizeof (ret))
  148.         {
  149.  
  150.             ret[j++] = ch;
  151.         }
  152.         else
  153.         {
  154.  
  155.             j++;
  156.         }
  157.     }
  158.     ret[sizeof (ret) - 1] = '\0';
  159.     return ret;
  160. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement