Advertisement
pmiranda

[SQLite] Registro

May 24th, 2013
215
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 4.51 KB | None | 0 0
  1. #include <a_samp>
  2.  
  3.  
  4. #define DIALOG_REGISTER (1000)
  5. #define DIALOG_LOGIN    (2000)
  6.  
  7.  
  8. #define DEFAULT_MONEY   (5000)
  9. #define DEFAULT_SKIN    (136)
  10.  
  11.  
  12. #define DEFAULT_X       (2247.6187)
  13. #define DEFAULT_Y       (-1262.2136)
  14. #define DEFAULT_Z       (23.9550)
  15. #define DEFAULT_A       (266.1028)
  16.  
  17.  
  18. new DB:db_handle;
  19.  
  20.  
  21. public OnFilterScriptInit() {
  22.  
  23.     db_handle = db_open("sqlite.db");
  24.  
  25.     db_query(db_handle, "CREATE TABLE IF NOT EXISTS `player_info` (`name`, `password`, `money`, `skin`)");
  26.     return true;
  27. }
  28.  
  29. public OnFilterScriptExit() {
  30.  
  31.     db_close(db_handle);
  32.     return true;
  33. }
  34.  
  35. public OnPlayerConnect(playerid) {
  36.     new
  37.         szName[25],
  38.         szString[150],
  39.         DBResult:szResult;
  40.  
  41.     GetPlayerName(playerid, szName, sizeof szName);
  42.  
  43.     format(szString, sizeof szString, "SELECT * FROM `player_info` WHERE `name` = '%s'", DB_Escape(szName));
  44.     szResult = db_query(db_handle, szString);
  45.  
  46.     if(db_num_rows(szResult)) {
  47.         format(szString, sizeof szString, "{ffffff}Bem-vindo, {f6f600}%s{ffffff}!\n\nDigite sua senha para logar.", szName);
  48.         ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_PASSWORD, "{ffffff}Login", szString, "Login", "Sair");
  49.     }
  50.     else {
  51.         format(szString, sizeof szString, "{ffffff}Bem-vindo, {f6f600}%s{ffffff}!\nVocê ainda não é registrado no servidor.\n\nDigite uma senha abaixo para se registrar.", szName);
  52.         ShowPlayerDialog(playerid, DIALOG_REGISTER, DIALOG_STYLE_PASSWORD, "{ffffff}Registro", szString, "Registrar", "Sair");
  53.     }
  54.     db_free_result(szResult);
  55.     return true;
  56. }
  57.  
  58. public OnPlayerDisconnect(playerid, reason) {
  59.  
  60.     if(GetPVarInt(playerid, "pLogged")) {
  61.         new
  62.             szName[25],
  63.             szString[150];
  64.  
  65.         GetPlayerName(playerid, szName, sizeof szName);
  66.  
  67.         format(szString, sizeof szString, "UPDATE `player_info` SET `money` = %d, `skin` = %d WHERE `name` = '%s'", GetPlayerMoney(playerid), GetPlayerSkin(playerid), DB_Escape(szName));
  68.         db_query(db_handle, szString);
  69.     }
  70.     return true;
  71. }
  72.  
  73. public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[]) {
  74.  
  75.     new
  76.         szName[25],
  77.         szString[150];
  78.  
  79.     GetPlayerName(playerid, szName, sizeof szName);
  80.     switch(dialogid) {
  81.  
  82.         case DIALOG_REGISTER: {
  83.             if(!response)
  84.                 Kick(playerid);
  85.             else {
  86.                 if(!(4 < strlen(inputtext) < 33))
  87.                     ShowPlayerDialog(playerid, DIALOG_REGISTER, DIALOG_STYLE_PASSWORD, "{ffffff}Registro", "{ffffff}Sua senha deve conter no mínimo 05 e no máximo 32 caracteres.\nPor favor, tente novamente.", "Registrar", "Sair");
  88.                 else {
  89.                     format(szString, sizeof szString, "INSERT INTO `player_info` (`name`, `password`, `money`, `skin`) VALUES ('%s', '%s', %d, %d)", szName, inputtext, DEFAULT_MONEY, DEFAULT_SKIN);
  90.                     db_query(db_handle, szString);
  91.  
  92.                     format(szString, sizeof szString, "{ffffff}Muito bem, {f6f600}%s{ffffff}.\nVocê se registrou com sucesso!\n\nDigite sua senha abaixo para logar.", szName);
  93.                     ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_PASSWORD, "{ffffff}Login", szString, "Login", "Sair");
  94.                 }
  95.             }
  96.         }
  97.  
  98.         case DIALOG_LOGIN: {
  99.             if(!response)
  100.                 Kick(playerid);
  101.             else {
  102.                 new
  103.                     DBResult:szResult;
  104.  
  105.                 format(szString, sizeof szString, "SELECT * FROM `player_info` WHERE `name` = '%s' AND `password` = '%s'", DB_Escape(szName), DB_Escape(inputtext));
  106.                 szResult = db_query(db_handle, szString);
  107.  
  108.                 if(db_num_rows(szResult)) {
  109.                     new
  110.                         szField[32];
  111.  
  112.                     SetPVarInt(playerid, "pLogged", 1);
  113.  
  114.                     db_get_field_assoc(szResult, "money", szField, 32);
  115.                     ResetPlayerMoney(playerid);
  116.                     GivePlayerMoney(playerid, strval(szField));
  117.  
  118.                     db_get_field_assoc(szResult, "skin", szField, 32);
  119.                     SetSpawnInfo(playerid, 0, strval(szField), DEFAULT_X, DEFAULT_Y, DEFAULT_Z, DEFAULT_A, 0, 0, 0, 0, 0, 0);
  120.                     SpawnPlayer(playerid);
  121.  
  122.                     SendClientMessage(playerid, 0x32cd32ff, ">> Logado com sucesso!");
  123.                 }
  124.                 else {
  125.                     ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_PASSWORD, "{ffffff}Login", "{ffffff}Senha incorreta.\nPor favor, tente novamente.", "Login", "Sair");
  126.                 }
  127.             }
  128.         }
  129.  
  130.         //
  131.     }
  132.     return true;
  133. }
  134.  
  135.  
  136.  
  137. stock DB_Escape(text[])
  138. {
  139.     new
  140.         ret[80 * 2],
  141.         ch,
  142.         i,
  143.         j;
  144.     while ((ch = text[i++]) && j < sizeof (ret))
  145.     {
  146.         if (ch == '\'')
  147.         {
  148.             if (j < sizeof (ret) - 2)
  149.             {
  150.                 ret[j++] = '\'';
  151.                 ret[j++] = '\'';
  152.             }
  153.         }
  154.         else if (j < sizeof (ret))
  155.         {
  156.             ret[j++] = ch;
  157.         }
  158.         else
  159.         {
  160.             j++;
  161.         }
  162.     }
  163.     ret[sizeof (ret) - 1] = '\0';
  164.     return ret;
  165. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement