sábado, 25 de maio de 2013

0 [SQLite] Simples registro

Estava vendo como se usa SQLite e desenvolvi este pequeno filterscript.
Como não foi trabalhoso, resolvi compartilhar.


Código:

pawn Code:
#include <a_samp> #define DIALOG_REGISTER (1000) #define DIALOG_LOGIN    (2000) #define DEFAULT_MONEY   (5000) #define DEFAULT_SKIN    (136) #define DEFAULT_X       (2247.6187) #define DEFAULT_Y       (-1262.2136) #define DEFAULT_Z       (23.9550) #define DEFAULT_A       (266.1028) new DB:db_handle; public OnFilterScriptInit() {     db_handle = db_open("sqlite.db");     db_query(db_handle, "CREATE TABLE IF NOT EXISTS `player_info` (`name`, `password`, `money`, `skin`)");     return true; } public OnFilterScriptExit() {     db_close(db_handle);     return true; } public OnPlayerConnect(playerid) {     new         szName[25],         szString[150],         DBResult:szResult;     GetPlayerName(playerid, szName, sizeof szName);     format(szString, sizeof szString, "SELECT * FROM `player_info` WHERE `name` = '%s'", DB_Escape(szName));     szResult = db_query(db_handle, szString);     if(db_num_rows(szResult)) {         format(szString, sizeof szString, "{ffffff}Bem-vindo, {f6f600}%s{ffffff}!\n\nDigite sua senha para logar.", szName);         ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_PASSWORD, "{ffffff}Login", szString, "Login", "Sair");     }     else {         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);         ShowPlayerDialog(playerid, DIALOG_REGISTER, DIALOG_STYLE_PASSWORD, "{ffffff}Registro", szString, "Registrar", "Sair");     }     db_free_result(szResult);     return true; } public OnPlayerDisconnect(playerid, reason) {     if(GetPVarInt(playerid, "pLogged")) {         new             szName[25],             szString[150];         GetPlayerName(playerid, szName, sizeof szName);         format(szString, sizeof szString, "UPDATE `player_info` SET `money` = %d, `skin` = %d WHERE `name` = '%s'", GetPlayerMoney(playerid), GetPlayerSkin(playerid), DB_Escape(szName));         db_query(db_handle, szString);     }     return true; } public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[]) {     new         szName[25],         szString[150];     GetPlayerName(playerid, szName, sizeof szName);     switch(dialogid) {         case DIALOG_REGISTER: {             if(!response)                 Kick(playerid);             else {                 if(!(4 < strlen(inputtext) < 33))                     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");                 else {                     format(szString, sizeof szString, "INSERT INTO `player_info` (`name`, `password`, `money`, `skin`) VALUES ('%s', '%s', %d, %d)", szName, inputtext, DEFAULT_MONEY, DEFAULT_SKIN);                     db_query(db_handle, szString);                     format(szString, sizeof szString, "{ffffff}Muito bem, {f6f600}%s{ffffff}.\nVocê se registrou com sucesso!\n\nDigite sua senha abaixo para logar.", szName);                     ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_PASSWORD, "{ffffff}Login", szString, "Login", "Sair");                 }             }         }         case DIALOG_LOGIN: {             if(!response)                 Kick(playerid);             else {                 new                     DBResult:szResult;                 format(szString, sizeof szString, "SELECT * FROM `player_info` WHERE `name` = '%s' AND `password` = '%s'", DB_Escape(szName), DB_Escape(inputtext));                 szResult = db_query(db_handle, szString);                 if(db_num_rows(szResult)) {                     new                         szField[32];                     SetPVarInt(playerid, "pLogged", 1);                     db_get_field_assoc(szResult, "money", szField, 32);                     ResetPlayerMoney(playerid);                     GivePlayerMoney(playerid, strval(szField));                     db_get_field_assoc(szResult, "skin", szField, 32);                     SetSpawnInfo(playerid, 0, strval(szField), DEFAULT_X, DEFAULT_Y, DEFAULT_Z, DEFAULT_A, 0, 0, 0, 0, 0, 0);                     SpawnPlayer(playerid);                     SendClientMessage(playerid, 0x32cd32ff, ">> Logado com sucesso!");                 }                 else {                     ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_PASSWORD, "{ffffff}Login", "{ffffff}Senha incorreta.\nPor favor, tente novamente.", "Login", "Sair");                 }             }         }         //     }     return true; } stock DB_Escape(text[]) {     new         ret[80 * 2],         ch,         i,         j;     while ((ch = text[i++]) && j < sizeof (ret))     {         if (ch == '\'')         {             if (j < sizeof (ret) - 2)             {                 ret[j++] = '\'';                 ret[j++] = '\'';             }         }         else if (j < sizeof (ret))         {             ret[j++] = ch;         }         else         {             j++;         }     }     ret[sizeof (ret) - 1] = '\0';     return ret; }



Download:
http://pastebin.com/mML15SJx



By Jason`

0 comentários: