SA-MP Forums Archive
[Plugin] zSINI - Rбpido e Seguro! - Printable Version

+- SA-MP Forums Archive (https://sampforum.blast.hk)
+-- Forum: Non-English (https://sampforum.blast.hk/forumdisplay.php?fid=9)
+--- Forum: Languages (https://sampforum.blast.hk/forumdisplay.php?fid=33)
+---- Forum: Português/Portuguese (https://sampforum.blast.hk/forumdisplay.php?fid=34)
+----- Forum: Lançamentos/Releases (https://sampforum.blast.hk/forumdisplay.php?fid=56)
+----- Thread: [Plugin] zSINI - Rбpido e Seguro! (/showthread.php?tid=608794)



zSINI - Rбpido e Seguro! - zSuYaNw - 05.06.2016

zSINI



Introduзгo:
Em 2012 que comecei a desenvolver essa plugin no intuito de criar funзхes extras e tambйm rapidez com eficiкncia e seguranзa, Tendo em visto que o principal mйtodo de salvamento de arquivos era o "sistema ini" e que hoje em dia estб perdendo espaзo para bancos em SQL ( MySL / SQLite ). Inicialmente eu estava desenvolvendo meu servidor e precisava de algumas funзхes para manipular diretуrio. Como eu estava tambйm iniciando na linguagem C/C++ resolvi desenvolver uma plugin para me desenvoler e apurar meu 6є sentido. Desenvolvi essa plugin livres de bugs e ainda considerando uma rapidez enorme comparada ao DOF2 e os atuais sistemas de arquivos.





Caracterнsticas:
O Algorнtimo й realmente simples! Nгo utilizei nenhuma tecnologia do C++ apenas procurei programar totalmente em cache que й um mйtodo rбpido e totalmente eficaz.
* Pensei em utilizar thread porйm pela velocidade que eu consegui com cache, nгo achei necessбrio.
Exemplo:
Fiz um pequeno sistema de registro para vocкs entenderem o uso dessa plugin!
PHP код:
#include <a_samp>
#include zcmd
#include zsini
public OnFilterScriptInit()
{
    
    print(
"Simples sistema de registro e login carregado com sucesso!");
    return 
1;
}
public 
OnPlayerRequestSpawn(playerid)
{
    new 
string[128];
    new 
Nome[24];
    
GetPlayerName(playeridNome24);
    
format(stringsizeof(string),"%s.ini"Nome);
    
    if(
IniExists(string)){
        
SendClientMessage(playerid, -1"[INFO]:  Vocк tem uma conta! digite /logar");
    }
    return 
true;
}
CMD:logar(playeridparams[]){
    if(
isnull(params)){
        return 
SendClientMessage(playerid, -1"[INFO]: Por favor, digite uma senha!");
    }
    new 
string[128];
    new 
Nome[24];
    
GetPlayerName(playeridNome24);
    
format(stringsizeof(string),"%s.ini"Nome);
    
    if(!
IniExists(string)){
        return 
SendClientMessage(playerid, -1"[INFO]:  Vocк nгo tem uma conta! digite /registrar");
    }
    
    
    new 
senha[10];
    
    
IniOpen(string);
    {
    
        
format(senhasizeof(senha), IniGet("Senha"));
        
    }
    
IniClose();
    
    if(
strcmp(senhaparams) != 0){
        return 
SendClientMessage(playerid, -1"[INFO]:  senha errada!");
    }
    
    
    
    
IniOpen(string);
    {
        
SetPlayerScore(playeridIniIntGet("Score"));
    }
    
IniClose();
    
format(stringsizeof(string), "Nome: %s - %s"Nomesenha);
    
SendClientMessage(playerid, -1string);
    
    
    
    
SendClientMessage(playerid, -1"[INFO]:  Logado!!");
    return 
1;
}
CMD:registrar(playeridparams[]){
    
    if(
isnull(params)){
        return 
SendClientMessage(playerid, -1"[INFO]: Por favor, digite uma senha!");
    }
    
    if(
strlen(params) > || strlen(params) < 3){
        return 
SendClientMessage(playerid, -1"[INFO]: Por favor, digite uma senha de no mнnimo 3 caracteres, e no mбximo 8");
    }
    
    new 
string[128];
    new 
Nome[24];
    
    
GetPlayerName(playeridNome24);
    
    
format(stringsizeof(string),"%s.ini"Nome);
    
    
IniCreate(string);
    
    
IniOpen(string);
    {
        
IniSet("Senha"params);
        
IniIntSet("Score"GetPlayerScore(playerid));
    }
    
IniClose();
    
    
format(stringsizeof(string), "Cadastrado %s! Senha: %s"Nomeparams);
    
SendClientMessage(playerid, -1string);
    return 
true;




Crйditos:
Essa plugin foi desenvolvida totalmente por mim, vendo alguns tutoriais no fуrum e estudando bastante. Nгo permito a postagem da mesma em quaisquer meio de comunicaзгo sem minha concepзгo. Obra registrada.


Agradecimentos:
- Breakdrift ( Marcelo )
- ipsLeon ( Leonardo )
- Dolby ( Gustavo Araъjo )
- Multikill



Nota:
Caso falte algumas DLL's em seu computador, sugiro que atualize os seguintes aplicativos da microsoft:
Quote:
Originally Posted by Konstantinos
Посмотреть сообщение



Download:


Versгo 1.1:
#Linux ( zSINI.so )
#Windows ( zSINI.dll )
#Include
#Source


Re: zSINI - Rбpido e Seguro! - BreakDriFT - 05.06.2016

Bom trabalho gato, eu jб disse que te amo nй ? <3

Agora sim, temos uma уtima opзгo para substituir os outros que existem aqui pelo fуrum.

Te pago um aзai mais tarde ��


Re: zSINI - Rбpido e Seguro! - iTzMatheus - 05.06.2016

Nгo olhei bem o cуdigo, mas nunca vн nenhum trabalho ruim seu, SuYaN. Afinal, evolui do 0 no pawn com seu tutorial geral sobre pawn, sou agradecido meu caro.

Link do tutorial do SuYaN: Link


Re: zSINI - Rбpido e Seguro! - zSuYaNw - 05.06.2016

Quote:
Originally Posted by BreakDriFT
Посмотреть сообщение
Bom trabalho gato, eu jб disse que te amo nй ? <3

Agora sim, temos uma уtima opзгo para substituir os outros que existem aqui pelo fуrum.

Te pago um aзai mais tarde ��
Obrigado meu anjo, te amo e considero como se fosse meu pote de whey hidrolisado! Daqui uns anos estaremos subindo no palco do Mr. Olympia! hahahahah




Quote:
Originally Posted by iTzMatheus
Посмотреть сообщение
Nгo olhei bem o cуdigo, mas nunca vн nenhum trabalho ruim seu, SuYaN. Afinal, evolui do 0 no pawn com seu tutorial geral sobre pawn, sou agradecido meu caro.

Link do tutorial do SuYaN: Link
Obrigado pela preferкncia, dб uma analisada na plugin e me dб sua opiniгo.. ela й muito importante para mim :P


Re: zSINI - Rбpido e Seguro! - iTzMatheus - 05.06.2016

Eu vi o cуdigo feito por vocк, estб bastante explicado de fбcil entendimento. Gostei da simplicidade que vocк deixou no plugin, se for rбpido como vocк realmente disse eu pretendo utiliza-lo em sistemas externos da gamemode pois ainda assim, acho que continuaria com MySQL. Excelente trabalho brother.


Re: zSINI - Rбpido e Seguro! - n0minal - 05.06.2016

Muito bom Suyan, sу faltou tratar a palavra plug-in como sendo do gкnero masculino, fora esse shemale aн que vocк cisma em usar, уtimo trabalho!


Re: zSINI - Rбpido e Seguro! - zSuYaNw - 05.06.2016

Quote:
Originally Posted by iTzMatheus
Посмотреть сообщение
Eu vi o cуdigo feito por vocк, estб bastante explicado de fбcil entendimento. Gostei da simplicidade que vocк deixou no plugin, se for rбpido como vocк realmente disse eu pretendo utiliza-lo em sistemas externos da gamemode pois ainda assim, acho que continuaria com MySQL. Excelente trabalho brother.
Bom, ele й realmente rбpido e totalmente seguro e com vбrias funзхes extras...

Fiz um pequeno benchmark comparando com o mais utilizado DOF2,


Na leitura, o zSINI consegue ser atй o dobro de velocidade contra o DOF2, e na escrita consegue ser atй 3x mais rбpido..
source
PHP код:
#include <a_samp>
#include zsini
#include dof2
#define START_BENCH(%0); {new __a=%0,__b=0,__c,__d=GetTickCount(),__e=1;do{}\
    
while(__d==GetTickCount());__c=GetTickCount();__d=__c;while(__c-__d<__a||\
    
__e){if(__e){if(__c-__d>=__a){__e=0;__c=GetTickCount();do{}while(__c==\
    
GetTickCount());__c=GetTickCount();__d=__c;__b=0;}}{
    
#define FINISH_BENCH(%0); }__b++;__c=GetTickCount();}printf(" Bench for "\
    
%0": executes, by average, %.2f times/ms.",floatdiv(__b,__a));}
    
#define time 1500
#pragma tabsize 0
public OnFilterScriptInit()
{
    
// do no remove
    
START_BENCHtime );
    
FINISH_BENCH# );
    //
    // testing
    
printf("===[ LEITURA ]====");
    {
    
        
START_BENCH(time);
        {
            
DOF2_GetString("zSuYaNw.ini""Senha");
        }
        
FINISH_BENCH("DOF2");
    }
    
    
IniOpen("zSuYaNw.ini");
    {
        
START_BENCH(time);
        {
             
IniGet("Senha");
        }
        
FINISH_BENCH("zsini");
    }
    
IniClose();
    
printf("==================");
    
    
    
    
printf("===[ Escrita ]====");
    {
        
START_BENCH(time);
        {
            
DOF2_SetString("zSuYaNw.ini""Senha""HelloWorld");
            
        }
        
FINISH_BENCH("DOF2");
    }
    
DOF2_Exit();
    
    
IniOpen("zSuYaNw.ini");
    {
        
START_BENCH(time);
        {
             
IniSet("Senha","Amoooor");
        }
        
FINISH_BENCH("zsini");
    }
    
IniClose();
    
printf("==================");
    return 
1;





Comparei tambйm com bcini:


source
PHP код:
#include <a_samp>
#include zsini
#include bcini
#define START_BENCH(%0); {new __a=%0,__b=0,__c,__d=GetTickCount(),__e=1;do{}\
    
while(__d==GetTickCount());__c=GetTickCount();__d=__c;while(__c-__d<__a||\
    
__e){if(__e){if(__c-__d>=__a){__e=0;__c=GetTickCount();do{}while(__c==\
    
GetTickCount());__c=GetTickCount();__d=__c;__b=0;}}{
    
#define FINISH_BENCH(%0); }__b++;__c=GetTickCount();}printf(" Bench for "\
    
%0": executes, by average, %.2f times/ms.",floatdiv(__b,__a));}
    
#define time 1500
#pragma tabsize 0
public OnFilterScriptInit()
{
    
// do no remove
    
START_BENCHtime );
    
FINISH_BENCH# );
    //
    // testing write speed
    
printf("===[ LEITURA ]====");
    {
    
        
START_BENCH(time);
        {
            
bCini6_ReadText("zSuYaNw.ini""Senha");
        }
        
FINISH_BENCH("bCINI");
    }
    
    
IniOpen("zSuYaNw.ini");
    {
        
START_BENCH(time);
        {
             
IniGet("Senha");
        }
        
FINISH_BENCH("zsini");
    }
    
IniClose();
    
printf("==================");
    
    
    
    
printf("===[ Escrita ]====");
    {
        
START_BENCH(time);
        {
            
bCini6_SetText("zSuYaNw.ini""Senha""HelloWorld");
            
        }
        
FINISH_BENCH("bCINI");
    }
    
    
IniOpen("zSuYaNw.ini");
    {
        
START_BENCH(time);
        {
             
IniSet("Senha","Amoooor");
        }
        
FINISH_BENCH("zsini");
    }
    
IniClose();
    
printf("==================");
    return 
1;

Observaзгo: Nгo estou buscando super rapidez nessa projeto! Apenas quero que esteja rбpida mantendo a total seguranзa!



Quote:
Originally Posted by ipsLeon
Посмотреть сообщение
Muito bom Suyan, sу faltou tratar a palavra plug-in como sendo do gкnero masculino, fora esse shemale aн que vocк cisma em usar, уtimo trabalho!
Obrigado mano, este mйtodo shemale nгo sei da onde vem mas acaba escapando


Re: zSINI - Rбpido e Seguro! - pWesley - 05.06.2016

Um feedback bacana, era vocк colocar aquela mesma funзгo do DOF2, onde vocк cria o arquivo e de quebra cria a senha junto.


Re: zSINI - Rбpido e Seguro! - Coreia - 05.06.2016

Que legal Gato, pena que minha vibe nгo й arquivos ini, sou da equipe SQLite, banco de dados; Mas para quem gosta tб ai um bom projeto super rбpido e eficaz.


Re: zSINI - Rбpido e Seguro! - PT - 05.06.2016

Й quase uma dini em c++ gostei do seu trabalho!