SHARE
TWEET

[FS] FilterScript SQLite - Registro

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