SSGamers - Fique atualizado
Chegou o novo tema 6.1.3 / SSGames - Servidores online de qualidade - Inscreva-se Ja! é entre para nossa comunidade! - Ouça nossa web radio -Veja nossas novidades - Participe dos nossos setores de jogos online - Parcerias aberta fale já com um administrador.

bCini8 - Trabalhando eficazmente/velozmente com arquivos locais

Weslley_Script
SS - Fundador
SS - Fundador
Weslley_Script
Steam Steam : WeslleySSGames
Zello : WeslleySSGames
Mensagens : 9109
Moedas : 1024576
Data de inscrição : 06/10/2011
Idade : 24
Localização : Brasil

Mensagem por Weslley_Script em Sex 21 Set 2018 - 17:44

Include bCini8

Eu havia prometido para mim mesmo que eu não postaria mais nenhuma 🆒 bCini aqui no fórum, porém isso fez eu rever o meu conceito sobre esta decisão... Diversas pessoas não são capazes de te acompanhar e te julgam por seus trabalhos, e isto não é legal.

Então, eu estou aqui hoje então para postar a include de salvamento de arquivos locais mais rápida que eu consegui programar até hoje (que finalmente supera DOF2 em inúmeros aspectos), a oitava e provavelmente (quase que certamente) última versão desta include, a bCini8, acompanhem:

Funções nativas

Código:
bCini6_Open - fopen
bCini6_Exists - fexist
bCini6_Write - fwrite
bCini6_Read - fread
bCini6_Close - fclose
bCini6_Delete - fremove

Escrita

Função ( arquivo, nome da linha, escrita );

Escrevendo textos em um arquivo:

Código:
main()
{
      bCini8_SetText("Biel_COP.ini","Olá","Como você vai ?");
}

Escrevendo int's em um arquivo:

Código:
main()
{
      bCini8_SetInt("Biel_COP.ini","Olá",1000);
}

Escrevendo float's em um arquivo:

Código:
main()
{
      bCini8_SetFloat("Biel_COP.ini","Olá",50.0);
}

Leitura

Função ( arquivo, nome da linha );

Lendo textos de um arquivo

Código:
main()
{
      printf("%s",bCini8_ReadText("Biel_COP.ini","Olá"));
}

Lendo int's de um arquivo:

Código:
main()
{
      printf("%d",bCini8_ReadInt("Biel_COP.ini","Olá"));
}

Lendo float's de um arquivo:

Código:
main()
{
      printf("%f",bCini8_ReadFloat("Biel_COP.ini","Olá"));
}

Mais funções

bCini8_ReadLineName ( nome do arquivo, id da linha ); - Obtenha o nome do ID de uma linha já existente.

Código:
main()
{
     printf("%s",bCini8_ReadLineName("Biel_COP.ini",0));
}

bCini8_DeleteSet ( nome do arquivo, nome da linha ); - Delete uma linha que já existe.

Código:
main()
{
     bCini8_DeleteSet("Biel_COP.ini","Olá");
}

bCini8_Copy ( nome do arquivo 1, nome do arquivo 2, valor da variável de deleção ); - Copie todo o conteúdo de um arquivo para outro arquivo.

Dica: O valor da variável de deleção deverá ser 1 para que o arquivo 1 seja deletado após ser copiado para o arquivo 2; o valor 0 indica que haverá cópia, mas não haverá deleção!

Código:
main()
{
     bCini8_Copy("Biel_COP.ini","Biel.ini",1); // Deletar o arquivo 1 após copiá-lo para o arquivo 2
}

bCini8_ChangeLine (nome do arquivo, linha, novo nome da linha); - Troque o nome de uma linha

Código:
main()
{
     bCini8_ChangeLine("Biel_COP.ini","Olá","Olá 2");
}

bCini8_IsSet ( nome do arquivo, nome da linha ); - Cheque se uma linha já existe.

Código:
main()
{
     if(bCini8_IsSet("Biel_COP.ini","Olá"))
     {
          print("A linha 'Olá' do arquivo 'Biel_COP.ini' existe!");
     }
     return 1;
}

Benchmark com a DOF2

Eu tenho sã consciência que o que as diferem em velocidade é algo bem 'rasteiro', porém já se dá para notar uma enorme melhora com isto; finalmente houve uma include brasileira que sim, pôde competir com a tão aclamada DOF2... Smile

bCini8 - Trabalhando eficazmente/velozmente com arquivos locais ExlG6VH

Download

Como instalar/usar: Crie um arquivo em sua pasta pawno/includes com o nome de bCini8.inc (sim, a extensão deve ser .inc para que haja reconhecimento da parte do compilador) e copie/cole todo o código abaixo neste novo arquivo; após isto, vá até o seu gamemode e use

Código:
#define bCini8.inc

no início do gamemode! Com isto, basta usá-la com as funções citadas aqui Wink

Código:
// Include bCini8

#define bCini8_Open fopen
#define bCini8_Exists fexist
#define bCini8_Write fwrite
#define bCini8_Read fread
#define bCini8_Close fclose

#define bCini8_Create(%0) if(!bCini8_Exists(%0)) bCini8_Close(bCini8_Open(%0,io_write)) && bCini8_OpenArchive(%0)
#define bCini8_Delete(%0) if(bCini8_Exists(%0)) fremove(%0)

// Include definitions

#define bCini8_Lines 100
#define bCini8_Capacity 256

#define bCini8_Separator "="
#define bCini8_Null_Text "null"

// Variables

stock bCini8_Archive_Line[bCini8_Lines][bCini8_Capacity/4],bCini8_Archive_Value[bCini8_Lines][bCini8_Capacity],bCini8_Archive_Name[64] = bCini8_Null_Text,bCini8_Archive_Lines = 1,bool:bCini8_Archive_Has_Been_Used,Include_bCini8[bCini8_Capacity];

// Functions

#define bCini8_SetInt(%0,%1,%2) format(Include_bCini8,bCini8_Capacity,"%d",%2) && bCini8_SetText(%0,%1,Include_bCini8)
#define bCini8_SetFloat(%0,%1,%2) format(Include_bCini8,bCini8_Capacity,"%.2f",%2) && bCini8_SetText(%0,%1,Include_bCini8)

#define bCini8_ReadText(%0,%1) bCini8_Archive_Value[bCini8_IsSet(%0,%1)]
#define bCini8_ReadInt(%0,%1) strval(bCini8_Archive_Value[bCini8_IsSet(%0,%1)])
#define bCini8_ReadFloat(%0,%1) floatstr(bCini8_Archive_Value[bCini8_IsSet(%0,%1)])

#define bCini8_CleanArchive(%0) if(bCini8_Exists(%0)) bCini8_OpenArchive(%0); for(new i = 1; i < bCini8_Archive_Lines; ++i) bCini8_DeleteSet(%0,bCini8_Archive_Line[i])
#define bCini8_Log(%0,%1) new File:bCini8_Archive = bCini8_Open(%0,io_append); bCini8_Write(bCini8_Archive,%1) && bCini8_Close(bCini8_Archive)

stock bCini8_SetText(archive[],line[],value[])
{
 if(bCini8_Archive_Lines < bCini8_Lines)
 {
     bCini8_Create(archive);

     if(!bCini8_IsSet(archive,line))
     {
 // Line

        strunpack(bCini8_Archive_Line[bCini8_Archive_Lines],line);

 if(!strlen(bCini8_Archive_Line[bCini8_Archive_Lines]))
    {
        strunpack(bCini8_Archive_Line[bCini8_Archive_Lines],bCini8_Null_Text);
        }
        // Value

        strunpack(bCini8_Archive_Value[bCini8_Archive_Lines],value);

        if(!strlen(bCini8_Archive_Value[bCini8_Archive_Lines]))
    {
        strunpack(bCini8_Archive_Value[bCini8_Archive_Lines],bCini8_Null_Text);
        }
 ++bCini8_Archive_Lines;
 }
 else
 {
    new bCini8_Line_ID = bCini8_IsSet(archive,line);

    strunpack(bCini8_Archive_Value[bCini8_Line_ID],value);

    if(!strlen(bCini8_Archive_Value[bCini8_Line_ID]))
    {
        strunpack(bCini8_Archive_Value[bCini8_Line_ID],bCini8_Null_Text);
    }
 }
 bCini8_Archive_Has_Been_Used = true;
 }
 return 1;
}
stock bCini8_ReadLineName(archive[],line)
{
 bCini8_OpenArchive(archive);

 return bCini8_Archive_Line[line];
}
stock bCini8_DeleteSet(archive[],line[])
{
    new bCini8_Line_ID = bCini8_IsSet(archive,line);

 if(bCini8_Line_ID)
 {
 bCini8_Archive_Line[bCini8_Line_ID][0] = 0;
 bCini8_Archive_Value[bCini8_Line_ID][0] = 0;

 bCini8_Archive_Has_Been_Used = true;
 }
 return 1;
}
stock bCini8_Copy(archive[],archive2[],bool:delete_archive)
{
    if(bCini8_Exists(archive))
 {
    if(!bCini8_Exists(archive2))
    {
 bCini8_OpenArchive(archive);

 new File:bCini8_Archive_Used = bCini8_Open(archive2,io_write),bCini8_Format[bCini8_Capacity];

 for(new i = 1; i < bCini8_Archive_Lines; ++i)
 {
 if(bCini8_Archive_Line[i][0])
 {
 format(bCini8_Format,bCini8_Capacity,"%s=%s\r\n",bCini8_Archive_Line[i],bCini8_Archive_Value[i]);

 bCini8_Write(bCini8_Archive_Used,bCini8_Format);
 }
 }
 bCini8_Close(bCini8_Archive_Used);

 if(delete_archive)
 {
    bCini8_Delete(archive);
 }
 }
 }
 return 1;
}
stock bCini8_ChangeLine(archive[],line[],new_line[])
{
    if(bCini8_Exists(archive))
 {
    new bCini8_Line_ID = bCini8_IsSet(archive,line);

 if(bCini8_Line_ID)
 {
 strunpack(bCini8_Archive_Line[bCini8_Line_ID],new_line);

 bCini8_Archive_Has_Been_Used = true;
 }
 }
 return 1;
}
// Open & Close

stock bCini8_OpenArchive(archive[])
{
 if(strcmp(bCini8_Archive_Name,archive,false))
 {
 bCini8_CloseArchive();

 strunpack(bCini8_Archive_Name,archive);

 if(bCini8_Exists(archive))
 {
    new bCini8_i[2],bCini8_Archive[bCini8_Capacity],File:bCini8_Archive_Used = bCini8_Open(archive,io_read);

 while(bCini8_Read(bCini8_Archive_Used,bCini8_Archive))
 {
 if(bCini8_Archive[0])
 {
    if(bCini8_Archive_Lines < bCini8_Lines)
    {
 if(bCini8_Archive[0] >= 256)
 {
 strdel(bCini8_Archive,0,1);
 }
 bCini8_i[0] = strlen(bCini8_Archive);

 if(bCini8_Archive[bCini8_i[0]-1] == '\r' || bCini8_Archive[bCini8_i[0]-1] == '\n')
 {
 bCini8_Archive[bCini8_i[0]-1] = 0;
 }
 if(bCini8_Archive[bCini8_i[0]-2] == '\r' || bCini8_Archive[bCini8_i[0]-2] == '\n')
 {
 bCini8_Archive[bCini8_i[0]-2] = 0;
 }
 bCini8_i[1] = strfind(bCini8_Archive,bCini8_Separator);

 strmid(bCini8_Archive_Line[bCini8_Archive_Lines],bCini8_Archive,0,bCini8_i[1],bCini8_i[1]+1);
 strmid(bCini8_Archive_Value[bCini8_Archive_Lines],bCini8_Archive,bCini8_i[1]+1,bCini8_i[0]);

 ++bCini8_Archive_Lines;
 }
 }
 }
 bCini8_Close(bCini8_Archive_Used);
 }
 }
 return 1;
}
stock bCini8_CloseArchive()
{
    if(bCini8_Exists(bCini8_Archive_Name))
 {
 if(bCini8_Archive_Has_Been_Used)
 {
    new File:bCini8_Archive_Used = bCini8_Open(bCini8_Archive_Name,io_write),bCini8_Format[bCini8_Capacity];

 for(new i = 1; i < bCini8_Archive_Lines; ++i)
 {
     if(bCini8_Archive_Line[i][0])
 {
    format(bCini8_Format,bCini8_Capacity,"%s=%s\r\n",bCini8_Archive_Line[i],bCini8_Archive_Value[i]);

 bCini8_Write(bCini8_Archive_Used,bCini8_Format);
 }
 }
 bCini8_Close(bCini8_Archive_Used);
 }
 }
 for(new i = 1; i < bCini8_Archive_Lines; ++i)
 {
 if(bCini8_Archive_Line[i][0])
 {
 bCini8_Archive_Line[i][0] = 0;
     bCini8_Archive_Value[i][0] = 0;
 }
 }
 bCini8_Archive_Name = bCini8_Null_Text;
 bCini8_Archive_Lines = 1;
 bCini8_Archive_Has_Been_Used = false;

 return 1;
}
stock bCini8_IsSet(archive[],line[])
{
 bCini8_OpenArchive(archive);

 for(new i = 1; i < bCini8_Archive_Lines; ++i)
 {
    if(bCini8_Archive_Line[i][0])
    {
     if(strcmp(bCini8_Archive_Line[i],line,true) == 0)
     {
 return i;
 }
 }
 }
 return 0;
}
// End of the include

Créditos

Biel (me): Toda as versões da bCini);
W. Luigi: Ajuda inicial (bCini e bCini2);
Bruno: Ajuda inicial (bCini);
Gato: Ajuda na função de criar arquivos (bCini);
DracoBlue: Lógicas iniciais (bCini, bCini2 e bCini3).



bCini8 - Trabalhando eficazmente/velozmente com arquivos locais D07Xwqb
bCini8 - Trabalhando eficazmente/velozmente com arquivos locais Yjab9HN
HelderPT
--> Postador Iniciante
--> Postador Iniciante
HelderPT
Mensagens : 34
Moedas : 938
Data de inscrição : 18/03/2018
Idade : 15

Mensagem por HelderPT em Ter 9 Out 2018 - 18:13

Salvamento bom, melhor que DOF2?
SrBlue
--> Postador Fanático
--> Postador Fanático
SrBlue
Zello : Estudante da área de SI ( Segurança da Informação )
Mensagens : 142
Moedas : 1086
Data de inscrição : 23/05/2018
Idade : 21

Mensagem por SrBlue em Dom 21 Out 2018 - 17:13

ôtimo, Uso e recomendo! Velocidade de processamento bem mas rapido do que o DOF2 e DINI
NTz_
--> Postador Iniciante
--> Postador Iniciante
NTz_
Zello : Scripter Iniciante
Mensagens : 9
Moedas : 783
Data de inscrição : 05/07/2018
Idade : 22

Mensagem por NTz_ em Ter 6 Nov 2018 - 1:03

boa irei testar  Very Happy
Conteúdo patrocinado

Mensagem por Conteúdo patrocinado


^
subir
Data/hora atual: Qui 6 Ago 2020 - 19:49