SA-MP Forums Archive
[Include] Bini (INI FILES) Versao 4 - 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: [Include] Bini (INI FILES) Versao 4 (/showthread.php?tid=353754)

Pages: 1 2


Bini (INI FILES) (V4.1) - ipsBruno - 24.06.2012

Bini 4

Apуs algumas semanas de desenvolvimento da nova versгo de Bini. Finalmente consigo acaba-la.
A nova versгo de Bini nгo conta com muitas alteraзхes, exceto a engine de manipulaзгo de arquivos na memуria. Desta vez utiliza memуria cache mais avanзada usando Setproperty e Getproperty!

BINI FOI ATUALIZADO DA ЪLTIMA VEZ 1/07 as 3:39. Agora o modo de uso й igual DINI. Nгo precisa dar OPEN, NEM CLOSE. Muito menos SAVE

Por mais que nгo seja necessбrio o uso de INI_Save. Aconselha o USO DA MESMA, pois em caso de crashs ou eventuais bugs no seu servidor decorrente em outros fatores, alguns arquivos podem ser perdidos !!


Velocidade
Com esta nova engine, a velocidade foi bastante aprimorada. O que jб era rбpido ficou mais rбpido ainda



Quote:

[09:59:37]
[00:57:47] Bini -> write 3304 ms - read 32 ms - read/write 3336 ms
[00:57:47] Dof2 -> write 3557 ms - read 258 ms - read/write 3815 ms

A funзгo write apesar de ser mais rбpida que todos os outros sistemas de arquivos ainda precisa de alguns ajustes de velocidade e estabilidade, entгo eventuais atualizaзхes estгo para surgir

Cуdigo usado para teste de velocidade:
pawn Код:
main() {


    DOF2_CreateFile("ipsBruno1");
    DOF2_CreateFile("ipsBruno2");


    new dof[3];

    dof[0] = GetTickCount();
    dof[2] = GetTickCount();
    for(new i; i != 3000; i++) {
        DOF2_SetInt("ipsBruno1", "teste1", 1000);
        DOF2_SetInt("ipsBruno1", "teste2", 2000);
        DOF2_SetInt("ipsBruno1", "teste3", 3000);
        DOF2_SetInt("ipsBruno1", "teste4", 4000);
        DOF2_SetInt("ipsBruno1", "teste5", 5000);
        DOF2_SetInt("ipsBruno1", "teste6", 6000);
        DOF2_SetInt("ipsBruno1", "teste7", 7000);
        DOF2_SetInt("ipsBruno1", "teste8", 8000);
        DOF2_SetInt("ipsBruno1", "teste9", 9000);
        DOF2_SetInt("ipsBruno1", "teste10", 10000);
        DOF2_SetInt("ipsBruno1", "teste11", 11000);

        DOF2_SaveFile();
    }
    dof[0] = GetTickCount() - dof[0];

    dof[1] = GetTickCount();
    for(new i; i != 3000; i++) {
        DOF2_GetInt("ipsBruno1", "teste1");
        DOF2_GetInt("ipsBruno1", "teste2");
        DOF2_GetInt("ipsBruno1", "teste3");
        DOF2_GetInt("ipsBruno1", "teste4");
        DOF2_GetInt("ipsBruno1", "teste5");
        DOF2_GetInt("ipsBruno1", "teste6");
        DOF2_GetInt("ipsBruno1", "teste7");
        DOF2_GetInt("ipsBruno1", "teste8");
        DOF2_GetInt("ipsBruno1", "teste9");
        DOF2_GetInt("ipsBruno1", "teste10");
        DOF2_GetInt("ipsBruno1", "teste11");
    }
    dof[1] = GetTickCount() - dof[1];
    dof[2] = GetTickCount() - dof[2];


    //


    new bin[3];

    bin[0] = GetTickCount();
    bin[2] = GetTickCount();
    for(new i; i != 3000; i++) {
        INI_WriteInt("ipsBruno2", "teste1", 1000);
        INI_WriteInt("ipsBruno2", "teste2", 2000);
        INI_WriteInt("ipsBruno2", "teste3", 3000);
        INI_WriteInt("ipsBruno2", "teste4", 4000);
        INI_WriteInt("ipsBruno2", "teste5", 5000);
        INI_WriteInt("ipsBruno2", "teste6", 6000);
        INI_WriteInt("ipsBruno2", "teste7", 7000);
        INI_WriteInt("ipsBruno2", "teste8", 8000);
        INI_WriteInt("ipsBruno2", "teste9", 9000);
        INI_WriteInt("ipsBruno2", "teste10", 10000);
        INI_WriteInt("ipsBruno2", "teste11", 11000);
        INI_Save();
    }

    bin[0] = GetTickCount() - bin[0];
    bin[1] = GetTickCount();

    for(new i; i != 3000; i++) {
        INI_ReadInt("ipsBruno2", "teste1");
        INI_ReadInt("ipsBruno2", "teste2");
        INI_ReadInt("ipsBruno2", "teste3");
        INI_ReadInt("ipsBruno2", "teste4");
        INI_ReadInt("ipsBruno2", "teste5");
        INI_ReadInt("ipsBruno2", "teste6");
        INI_ReadInt("ipsBruno2", "teste7");
        INI_ReadInt("ipsBruno2", "teste8");
        INI_ReadInt("ipsBruno2", "teste9");
        INI_ReadInt("ipsBruno2", "teste10");
        INI_ReadInt("ipsBruno2", "teste11");
    }
   
   

    bin[1] = GetTickCount() - bin[1];
    bin[2] = GetTickCount() - bin[2];

    printf("Bini -> write %d ms - read %d ms - read/write %d ms", bin[0], bin[1], bin[2]);
    printf("Dof2 -> write %d ms - read %d ms - read/write %d ms", dof[0], dof[1], dof[2]);
    return true;
}


public OnFilterScriptExit() {
    DOF2_Exit();
    INI_Exit();
    return true;
}
NOVOS TESTES DE VELOCIDADES SERГO ACEITOS

Usando
Para usar Bini й bastante simples! Basta fazer o seguinte:

Escrevendo:

Nъmeros
pawn Код:
INI_WriteInt("arquivo.ini", "key", valor);
Textos:
pawn Код:
INI_WriteString("arquivo.ini", "key", "valor");
Lendo valores:

Nъmeros
pawn Код:
INI_ReadInt("arquivo.ini", "key")

Textos
pawn Код:
INI_ReadString("arquivo.ini", "key")
Entгo sempre deixe:
pawn Код:
public OnFilterScriptExit() {
    INI_Exit();
    return true;
}

** Importante
- Se vocк tem arquivos escritos por DOF2 ou Y_Ini este sistema nгo serб compatнvel pois meu sistema usa o mйtodo formal para escrita de escrita em arquivos ini, sem espaзo entre as keys
Quote:

key=value

e nгo
Quote:

key = value

http://en.wikipedia.org/wiki/INI_file

Porйm й TOTALMENTE compatнvel com Dini e outros sistemas conhecidos

Funзхes disponнveis:
pawn Код:
// Funзхes Atuais:

//   CallBack INI_WriteString("arquivo", "key", "valor")
//   CallBack INI_WriteFloat("arquivo"",key", valor)
//   CallBack INI_WriteInt("arquivo","key", valor)
//   CallBack INI_WriteBool("arquivo","key", bool:valor)

//   CallBack INI_ReadString("arquivo", "key")
//   CallBack INI_ReadInt("arquivo", "key")
//   CallBack INI_ReadFloat("arquivo","key")
//   CallBack INI_ReadBool("arquivo","key")

//   CallBack INI_Create("arquivo")
//   CallBack INI_Delete("arquivo")
//   CallBack INI_Open("arquivo")
Download
-> http://pastebin.com/gjEJMnH5

Com estб velocidade й permitido que vocк possa colocar em atй 50 escritas/leituras em OnPlayerUpdate
Salve em bini.inc por favor.

FAQ
Antes de seguir as resoluзхes de problemas abaixo verifique sua versгo й atual. Baixando esta:
http://pastebin.com/gjEJMnH5


Arquivo nгo salvando
Caso for um ъnico arquivo, veja se

Se nгo estiver salvando o ъltimo arquivo й porque o servidor nгo estб sendo fechado corretamente. Quando vocк nгo fecha por RCON EXIT o OnGameModeExit/FilterScriptExit nгo sгo chamados e logo INI_Exit tambйm nгo й !!

Caso for vбrios arquivos tente aumentar o valor max_lines_file para acima de 999


Exemplo
pawn Код:
#define max_lines_file  5000
Servidor crashando
Certifique-se se antes de usar algum arquivo INI_Open/INI_READ o arquivo existe. Use
pawn Код:
if(fexist(#arquivo.ini)) // o arquivo existe
Ocupando muito AMX
Nem sempre o que ocupa muito amx й lento. Bini usa um sistema avanзado de cache, onde tudo й registrado no amx em tempo real. Mas й tudo registrado no AMX, nгo ocupa nada de memуria do seu computador. Sу ocuparб memуria se de alguma forma outros fatores externos a Bini ultrapassarem isto.

http://pt.wikipedia.org/wiki/Cache
Desenvolvimento Geral:
Desenvolvido por Bruno da Silva


Agradecimentos a:
Leonado1434 (achou um pequeno bug em INI Open)
[S]trong (me ajudou na primeira versгo da include.)

Projeto [iPs]TeaM ©


Re: Bini (INI FILES) Versao 4 - humildadeforever - 24.06.2012

Muita gente aн que acabou de aprender DOF2 e nгo sabe usar Bini vai ficar meio irritado, pois jб vai ter que aprender por ser mais rбpido kkk
Parabйns ^^


Re: Bini (INI FILES) Versao 4 - ipsBruno - 24.06.2012

A forma de uso й a mesma do DOF2. O que muda й o nome das funзхes


Mas nгo se engane, BINI nгo funciona com arquivos do DOF2 (dof 2 coloca espaзo entre ' = ' logo voce vai ter que pegar as keys com um espaзo no final). Pelo menos por enquanto.


Re: Bini (INI FILES) Versao 4 - EditPawn - 24.06.2012

Aprendi DOF2 a pouco tempo, irei passar para BINI '-'
Muito bom Drakins, gostei da include pela rapidez!


Re: Bini (INI FILES) Versao 4 - ipsBruno - 24.06.2012

Quote:
Originally Posted by EditPawn
Посмотреть сообщение
Aprendi DOF2 a pouco tempo, irei passar para BINI '-'
Muito bom Drakins, gostei da include pela rapidez!
Estamos ainda em fase beta-teste. Se APARECER bugs peзo que me avise imediatamente.

Novos testes de velocidade c/ imagem serгo bem vindos !!


@ 3000 posts novamente '-'
# Aparecer, nгo aprender UHSUHAs


Re: Bini (INI FILES) Versao 4 - BreakDriFT - 24.06.2012



xD


Parabйns pela INC vou utilizar =)


Re: Bini (INI FILES) Versao 4 - ipsBruno - 24.06.2012

Quote:
Originally Posted by BreakDriFT
Посмотреть сообщение


xD


Parabйns pela INC vou utilizar =)
As velocidades de leitura giram em torno de 8 vezes mais rбpido que DOF2


Re: Bini (INI FILES) Versao 4 - humildadeforever - 24.06.2012

E para verificar se o arquivo existe? Teria que usar if(fexist ... ?

Pois se utilizar o
pawn Код:
if(INI_Open("arquivo.ini"))
ele jб cria, pelo menos nas versхes antigas... '-'


Re: Bini (INI FILES) Versao 4 - ipsBruno - 24.06.2012

Quote:
Originally Posted by humildadeforever
Посмотреть сообщение
E para verificar se o arquivo existe? Teria que usar if(fexist ... ?

Pois se utilizar o
pawn Код:
if(INI_Open("arquivo.ini"))
ele jб cria, pelo menos nas versхes antigas... '-'
Para verificar se o arquivo existe usa-se: fexist

Nгo necessita mais usar INI_Open. Internamente ele jб faz isto em INI_Write e INI_Read. Mas precisa checar se o arquivo existe para fazer as modificaзхes e leitura


Re: Bini (INI FILES) Versao 4 - humildadeforever - 24.06.2012

Quote:
Originally Posted by [FeK]DraKiNs
Посмотреть сообщение
Para verificar se o arquivo existe usa-se: fexist

Nгo necessita mais usar INI_Open. Internamente ele jб faz isto em INI_Write e INI_Read. Mas precisa checar se o arquivo existe para fazer as modificaзхes e leitura
Ah, acertei *-* kkkk
Vlw por esclarecer minha dъvida, уtimo trabalho.


Re: Bini (INI FILES) Versao 4 - Edu33 - 24.06.2012

Vou estudб-la melhor tambйm.
Parabйns Bruno!


Re: Bini (INI FILES) Versao 4 - Bruno Pereira - 24.06.2012

Nice job dude!
As funзхes sгo quase todas iguais a SII, isso й bom para quem usa


Re: Bini (INI FILES) Versao 4 - pWesley - 24.06.2012

Quote:
Originally Posted by Bruno Pereira
View Post
Nice job dude!
As funзхes sгo quase todas iguais a SII, isso й bom para quem usa
Eu tentei trocar as includes SII para bini com as mesmas funзхes mais gerou erro pra caramba ...

Mais й bacana essa include. Muito boa e muito rбpida.


Re: Bini (INI FILES) Versao 4 - Ricop522 - 24.06.2012

Nгo vou usar , mas bom trabalho desenvolvendo ..
Muitas das vezes algumas includes suas de salvar/carregar tem muitos bugs, e vocк nem da continuidade nelas.. (fini, etc)
(sem te desmerecer, claro)


Re: Bini (INI FILES) Versao 4 - ipsBruno - 24.06.2012

Quote:
Originally Posted by Ricop522
View Post
Nгo vou usar , mas bom trabalho desenvolvendo ..
Muitas das vezes algumas includes suas de salvar/carregar tem muitos bugs, e vocк nem da continuidade nelas.. (fini, etc)
(sem te desmerecer, claro)
E quando lancei Bini nгo deixei claro que ela seria uma continuaзгo de Fini? Ah, vou novamente dizer

Bini й uma versгo PУS FINI

Quote:
Originally Posted by [BPW]Wesley
View Post
Eu tentei trocar as includes SII para bini com as mesmas funзхes mais gerou erro pra caramba ...

Mais й bacana essa include. Muito boa e muito rбpida.
Nгo cara, nгo й a mesma coisa que SII. Й um pouco diferente:

pawn Code:
INI_WriteString("key", "value") // sii
INI_WriteString("arquivo", "key", "value") // bini
Bini nгo usa mais INI_Open. Internamente ele jб faz isto. BINI й IGUAL DOF2. O que muda й o nome das funзхes, que sгo iguais ao SII. Exceto o uso, que й igual a DOF2. Entendeu??


Re: Bini (INI FILES) Versao 4 - ipsBruno - 24.06.2012

Sу pra constar. Apenas a ъltima versгo de Fini veio a ocorrer bugs. Por este motivo eu demorei um certo periodo atй desenvolver Bini. Em relaзгo a BINI, NUNCA TIVE PROBLEMAS. Em todas as versхes sempre foram bem testadas

Estб versгo atual ainda estб em testes, pode apresentar bugs? Pode! Mas estou com bastante tempo para testes nels


Re: Bini (INI FILES) Versao 4 - paulor - 24.06.2012

Oww, Уtima include! Conseguiu melhor velocidade em cima do DOF2 sem ter que abrir e fechar o arquivo manualmente! ++REP
pawn Code:
#define DarRep(%0,%1) SetPVarInt(%0, #Rep, (GetPVarInt(%0, #Rep)+%1)); //By. Paulo_TerroR
@Edit
LoL, nunca te dei REP.
BUG: You must spread some Reputation around before giving it to [FeK]DraKiNs again.


Re: Bini (INI FILES) Versao 4 - Mr.Hardy - 24.06.2012

Melhor include do mundo! Vou utilizar no meu servidor com certeza..

Motivo:

DOF2 - Nгo salva meus usuarios nem б pau!

Bini - Й quase Dini.. Dini salva kk!


Re: Bini (INI FILES) Versao 4 - Bruno Pereira - 24.06.2012

Drakins, essa include й igual a SII, que nгo pode editar nada pela pasta, sу in-game?


Re: Bini (INI FILES) Versao 4 - ipsBruno - 24.06.2012

Quote:
Originally Posted by Bruno Pereira
View Post
Drakins, essa include й igual a SII, que nгo pode editar nada pela pasta, sу in-game?
Pode editar pela pasta sim. Eu uso fwrite