27.01.2014, 22:30
(
Последний раз редактировалось Lucas_Pawno; 30.01.2014 в 12:18.
)
Desta vez, todos os cуdigos sao de autoria minha (Biel_COP).
Antes de tudo, eu peзo desculpas pelo que o Lixoso que logou na conta do Lucas fez --'
Obrigado por deletarem.
Primeira coisa: DanDRT, x9 do kct, vsf.
Segunda coisa: Vamos lб!
BY BIEL_COP ~>
O projeto da bCini comeзou quando eu nao tinha muito conhecimento em manuseiar arquivos.
Porйm de uns tempos para cб eu venho me aprofundando nisto, eu nao sou o melhor (e nunca serei), porйm o meu esforзo foi recompensado com a criaзao da bCini3!
Agora totalmente em cachк, a bCini3 estб 970x mais rбpida que a Dini e 2x mais rбpida que a DOF2 (em alguns casos), tambйm podendo competir com a bIni.
Obs: A include й muito leve, puxa muito pouco processamento de Amx (eu acho que й isto) e realmente dб um tom diferente, principalmente para iniciantes que querem comeзar aprendendo pelo prуprio portuguкs.
A funзao й usada para criar arquivos.
Exemplo de Uso:
A funзao й usada como um fexist, ou seja, para verificar se o tal arquivo existe.
Exemplo de Uso:
A funзao й usada para remover um arquivo jб criado.
Exemplo de Uso:
A funзao й usada para setar em um arquivo as ints, ou seja: valores de alguma variбvel, etc.
Exemplo de Uso:
A funзao й usada para setar em um arquivo as variбveis booleanas em um arquivo.
Exemplo de Uso:
A funзao й usada para setar em um arquivo as floats, ou seja: posiзoes, vida de um jogador, etc.
Exemplo de Uso:
A funзao й usada para setar em um arquivo algum texto.
Exemplo de Uso:
A funзao й usada para ler em um arquivo uma int jб setada.
Exemplo de Uso:
A funзao й usada para ler em um arquivo uma booleana jб setada.
Exemplo de Uso:
A funзao й usada para ler em um arquivo um float jб setado.
Exemplo de Uso:
A funзao й usada para ler em um arquivo um texto jб setado.
Exemplo de Uso:
Em algumas includes .ini, esta funзao tem um uso prуprio para copiar arquivos.
Na bCini vocк nao gasta muitas linhas!
Com uma lуgica bem simples, ao invйs de usar isto:
Vocк pode usar isto para copiar e logo apуs deletar o arquivo:
Para apenas copiar, use isto:
Entenderam ? Simples, nao ?
A funзao й usada para mostrar todas as configuraзoes (Linha e Valor) de um arquivo no console.
Exemplo de uso:
Resultado:
Cуdigo usado:
Como o prуprio nome diz, esta funзao faz a limpa de todo o conteъdo do arquivo especificado.
Exemplo de Uso:
Com esta funзao, vocк pode verificar se existe tal linha no arquivo especificado.
Exemplo de Uso:
A funзao й usada para desescrever alguma linha do arquivo especificado.
Exemplo de Uso:
A funзao й usada para criar logs dinвmicas.
Exemplo de Uso:
A include tambйm possui vбrias 'funзoes redirecionadoras', que sao elas ~>
Tambйm й possнvel editб-la para que fique mais leve (ou mais pesada), de acordo com o seu gamemode:
Obs: Й Recomendбvel que vocк mude de acordo com o seu gamemode, pois caso nao mude, complicaзoes ocorrerao.
Obs І: Caso estas definiзoes sejam suficientes para suprir as nescessidades do seu gamemode, deixe como estб.
Quais sao as mudanзas ?
Bom, da bCini2 para a bCini3, tudo foi otimizado.
Eu refiz praticamente tudo, e a progressao da bCini3 usa um pouco da lуgica do IpsBruno, onde ele nao abre nada e nem fecha caso o arquivo foi apenas lido.
Tambйm й possнvel notar a diferenзa nos cуdigos, eles foram supervisionados por um professor de programaзao amigo meu, Joao.
Eu fiz um teste bбsico aqui usando benchmark, setando, criando e lendo alguns arquivos e deu nisto:
IpsBruno: Ajudou na primeira Include (bCini) e pela lуgica da bIni, muito obrigado mano!
zSuYaNw: Ajudou na funзao de criar arquivos, valeu gato!
Willian_Luigi: Ajudou na funзao de Setar Textos, й nуis!
Biel_COP: Idealizador da bCini e programador total da bCini3.
Obs: Adicione bCini3_Iniciar(); no OnGameModeInit() e bCini3_Encerrar(); no OnGameModeExit();
Obs 2: A definiзao bCini3_Separador й a definiзao responsбvel pelo Set dos Arquivos, exemplo:
Linha bCini3_Separador Valor
Se o bCini3_Separador for :, o arquivo Ficarб assim:
Linha:Valor
Antes de tudo, eu peзo desculpas pelo que o Lixoso que logou na conta do Lucas fez --'
Obrigado por deletarem.
Primeira coisa: DanDRT, x9 do kct, vsf.
Segunda coisa: Vamos lб!
BY BIEL_COP ~>
O projeto da bCini comeзou quando eu nao tinha muito conhecimento em manuseiar arquivos.
Porйm de uns tempos para cб eu venho me aprofundando nisto, eu nao sou o melhor (e nunca serei), porйm o meu esforзo foi recompensado com a criaзao da bCini3!
Agora totalmente em cachк, a bCini3 estб 970x mais rбpida que a Dini e 2x mais rбpida que a DOF2 (em alguns casos), tambйm podendo competir com a bIni.
Obs: A include й muito leve, puxa muito pouco processamento de Amx (eu acho que й isto) e realmente dб um tom diferente, principalmente para iniciantes que querem comeзar aprendendo pelo prуprio portuguкs.
bCini3_Criar
A funзao й usada para criar arquivos.
Exemplo de Uso:
pawn Код:
main()
{
bCini3_Criar("Biel_COP.ini");
}
bCini3_Existe
A funзao й usada como um fexist, ou seja, para verificar se o tal arquivo existe.
Exemplo de Uso:
pawn Код:
main()
{
if(bCini3_Existe("Biel_COP.ini"))
{
return 1;
}
}
bCini3_Remover
A funзao й usada para remover um arquivo jб criado.
Exemplo de Uso:
pawn Код:
main()
{
bCini3_Remover("Biel_COP.ini");
}
bCini3_SetarInt
A funзao й usada para setar em um arquivo as ints, ou seja: valores de alguma variбvel, etc.
Exemplo de Uso:
pawn Код:
main()
{
bCini3_SetarInt("Biel_COP.ini","Olб",1);
}
bCini3_SetarBool
A funзao й usada para setar em um arquivo as variбveis booleanas em um arquivo.
Exemplo de Uso:
pawn Код:
main()
{
bCini3_SetarBool("Biel_COP.ini","Olб",false);
}
bCini3_SetarFloat
A funзao й usada para setar em um arquivo as floats, ou seja: posiзoes, vida de um jogador, etc.
Exemplo de Uso:
pawn Код:
main()
{
bCini3_SetarFloat("Biel_COP.ini","Olб",0.0);
}
bCini3_SetarTexto
A funзao й usada para setar em um arquivo algum texto.
Exemplo de Uso:
pawn Код:
main()
{
bCini3_SetarTexto("Biel_COP.ini","Olб","Como vocк vai ?");
}
bCini3_GetarInt
A funзao й usada para ler em um arquivo uma int jб setada.
Exemplo de Uso:
pawn Код:
main()
{
printf("%d",bCini3_GetarInt("Biel_COP.ini","Olб"));
}
bCini3_GetarBool
A funзao й usada para ler em um arquivo uma booleana jб setada.
Exemplo de Uso:
pawn Код:
main()
{
printf("%d",bCini3_GetarBool("Biel_COP.ini","Olб"));
}
bCini3_GetarFloat
A funзao й usada para ler em um arquivo um float jб setado.
Exemplo de Uso:
pawn Код:
main()
{
printf("%f",bCini3_GetarFloat("Biel_COP.ini","Olб")) ;
}
bCini3_GetarTexto
A funзao й usada para ler em um arquivo um texto jб setado.
Exemplo de Uso:
pawn Код:
main()
{
printf("%s",bCini3_GetarTexto("Biel_COP.ini","Olб")) ;
}
bCini3_Copiar
Em algumas includes .ini, esta funзao tem um uso prуprio para copiar arquivos.
Na bCini vocк nao gasta muitas linhas!
Com uma lуgica bem simples, ao invйs de usar isto:
pawn Код:
main()
{
DOF2_CopyFile("Biel_COP.ini","Biel_COP2.ini");
DOF2_RemoveFile("Biel_COP.ini");
}
pawn Код:
main()
{
bCini3_Copiar("Biel_COP.ini","Biel_COP2.ini",true);
}
pawn Код:
main()
{
bCini3_Copiar("Biel_COP.ini","Biel_COP2.ini",false);
}
bCini3_Console
A funзao й usada para mostrar todas as configuraзoes (Linha e Valor) de um arquivo no console.
Exemplo de uso:
pawn Код:
main()
{
bCini3_Console("Biel_COP.ini");
}
Cуdigo usado:
pawn Код:
main()
{
bCini3_Criar("Biel_COP.ini");
bCini3_SetarTexto("Biel_COP.ini","Admin","Fundador" );
bCini3_SetarTexto("Biel_COP.ini","Gosta","De Pepecas");
bCini3_SetarInt("Biel_COP.ini","Faleceu",0);
bCini3_Console("Biel_COP.ini");
}
bCini3_LimparArquivo
Como o prуprio nome diz, esta funзao faz a limpa de todo o conteъdo do arquivo especificado.
Exemplo de Uso:
pawn Код:
main()
{
bCini3_LimparArquivo("Biel_COP.ini");
}
bCini3_Setado
Com esta funзao, vocк pode verificar se existe tal linha no arquivo especificado.
Exemplo de Uso:
pawn Код:
main()
{
if(bCini3_Setado("Biel_COP.ini","Admin"))
{
return 1;
}
return 0;
}
bCini3_Desescrever
A funзao й usada para desescrever alguma linha do arquivo especificado.
Exemplo de Uso:
pawn Код:
main()
{
bCini3_Desescrever("Biel_COP.ini","Admin");
}
bCini3_Log
A funзao й usada para criar logs dinвmicas.
Exemplo de Uso:
pawn Код:
main()
{
bCini3_Log("Biel_COP.txt","Biel_COP estб testando a include bCini3.\r\n");
}
pawn Код:
#define bCini3_Abrir fopen
#define bCini3_Existe fexist
#define bCini3_Escrever fwrite
#define bCini3_Ler fread
#define bCini3_Fechar fclose
pawn Код:
#define bCini3_Linhas 50
#define bCini3_Capacidade 64
#define bCini3_Separador "="
#define bCini3_Sim "Console do Arquivo %s:\r\n"
#define bCini3_Nao "O arquivo %s nгo existe!"
Obs І: Caso estas definiзoes sejam suficientes para suprir as nescessidades do seu gamemode, deixe como estб.
bCini, bCini2 e bCini3
Quais sao as mudanзas ?
Bom, da bCini2 para a bCini3, tudo foi otimizado.
Eu refiz praticamente tudo, e a progressao da bCini3 usa um pouco da lуgica do IpsBruno, onde ele nao abre nada e nem fecha caso o arquivo foi apenas lido.
Tambйm й possнvel notar a diferenзa nos cуdigos, eles foram supervisionados por um professor de programaзao amigo meu, Joao.
Eu fiz um teste bбsico aqui usando benchmark, setando, criando e lendo alguns arquivos e deu nisto:
Download e Crйditos
IpsBruno: Ajudou na primeira Include (bCini) e pela lуgica da bIni, muito obrigado mano!
zSuYaNw: Ajudou na funзao de criar arquivos, valeu gato!
Willian_Luigi: Ajudou na funзao de Setar Textos, й nуis!
Biel_COP: Idealizador da bCini e programador total da bCini3.
pawn Код:
// Include bCini3
#define bCini3_Linhas 50
#define bCini3_Capacidade 64
#define bCini3_Separador "="
#define bCini3_Sim "Console do Arquivo %s:\r\n"
#define bCini3_Nao "O arquivo %s nгo existe!"
#define bCini3_Abrir fopen
#define bCini3_Existe fexist
#define bCini3_Escrever fwrite
#define bCini3_Ler fread
#define bCini3_Fechar fclose
#define bCini3_Iniciar() strmid(bCini3_Nome_Arquivo,"Vazio",0,5,6)
#define bCini3_Encerrar() bCini3_FecharArquivo()
#define bCini3_Criar(%0) if(!bCini3_Existe(%0)) bCini3_Fechar(bCini3_Abrir(%0,io_write)) && bCini3_AbrirArquivo(%0)
#define bCini3_Remover(%0) if(bCini3_Existe(%0)) fremove(%0)
stock Include_Texto_bCini3[bCini3_Capacidade];
#define bCini3_SetarInt(%0,%1,%2) format(Include_Texto_bCini3,sizeof(Include_Texto_bCini3),"%d",%2) && bCini3_SetarTexto(%0,%1,Include_Texto_bCini3)
#define bCini3_SetarBool(%0,%1,%2) format(Include_Texto_bCini3,sizeof(Include_Texto_bCini3),"%d",%2) && bCini3_SetarTexto(%0,%1,Include_Texto_bCini3)
#define bCini3_SetarFloat(%0,%1,%2) format(Include_Texto_bCini3,sizeof(Include_Texto_bCini3),"%f",%2) && bCini3_SetarTexto(%0,%1,Include_Texto_bCini3)
#define bCini3_GetarInt(%0,%1) strval(bCini3_GetarTexto(%0,%1))
#define bCini3_GetarBool(%0,%1) bool:strval(bCini3_GetarTexto(%0,%1))
#define bCini3_GetarFloat(%0,%1) floatstr(bCini3_GetarTexto(%0,%1))
stock bCini3_Linha_Valor[bCini3_Linhas][bCini3_Capacidade];
stock bCini3_Nome_Arquivo[bCini3_Capacidade];
stock bCini3_Linhas_Arquivo;
stock bCini3_Linha_ID;
stock bool:bCini3_Escreveu;
// Funзхes Usadas
stock bCini3_SetarTexto(arquivo[],linha[],valor[])
{
if(!strlen(linha) || !strlen(valor))
{
return 1;
}
bCini3_Criar(arquivo);
new bCini3_Texto_Arquivo[bCini3_Capacidade];
format(bCini3_Texto_Arquivo,sizeof(bCini3_Texto_Arquivo),"%s%s%s\r\n",linha,bCini3_Separador,valor);
if(bCini3_Setado(arquivo,linha))
{
strmid(bCini3_Linha_Valor[bCini3_Linha_ID],bCini3_Texto_Arquivo,0,strlen(bCini3_Texto_Arquivo),bCini3_Capacidade);
}
else
{
strmid(bCini3_Linha_Valor[bCini3_Linhas_Arquivo],bCini3_Texto_Arquivo,0,strlen(bCini3_Texto_Arquivo),bCini3_Capacidade);
bCini3_Linhas_Arquivo++;
}
bCini3_Escreveu = true;
return 1;
}
stock bCini3_GetarTexto(arquivo[],linha[])
{
new bCini3_Texto_Arquivo[bCini3_Capacidade];
if(!bCini3_Existe(arquivo) || !strlen(linha) || !bCini3_Setado(arquivo,linha))
{
return bCini3_Texto_Arquivo;
}
strmid(bCini3_Texto_Arquivo,bCini3_Linha_Valor[bCini3_Linha_ID],0,strlen(bCini3_Linha_Valor[bCini3_Linha_ID]),strlen(bCini3_Linha_Valor[bCini3_Linha_ID])+1);
strdel(bCini3_Texto_Arquivo,0,strfind(bCini3_Texto_Arquivo,bCini3_Separador)+1);
if(strfind(bCini3_Texto_Arquivo,"\r\n",true) != -1 || strfind(bCini3_Texto_Arquivo,"\n\r",true) != -1)
{
strdel(bCini3_Texto_Arquivo,strlen(bCini3_Texto_Arquivo)-2,strlen(bCini3_Texto_Arquivo));
}
if(strfind(bCini3_Texto_Arquivo,"\r",true) != -1 || strfind(bCini3_Texto_Arquivo,"\n",true) != -1)
{
strdel(bCini3_Texto_Arquivo,strlen(bCini3_Texto_Arquivo)-1,strlen(bCini3_Texto_Arquivo));
}
return bCini3_Texto_Arquivo;
}
stock bCini3_Setado(arquivo[],linha[])
{
if(!bCini3_Existe(arquivo))
{
return 0;
}
bCini3_AbrirArquivo(arquivo);
bCini3_Linha_ID = bCini3_Linhas-1;
for(new i; i<bCini3_Linhas_Arquivo; i++)
{
if(strlen(bCini3_Linha_Valor[i]))
{
if(strfind(bCini3_Linha_Valor[i],bCini3_Separador,true) != -1)
{
if(strfind(bCini3_Linha_Valor[i],linha,true) != -1)
{
bCini3_Linha_ID = i;
return 1;
}
}
}
}
return 0;
}
stock bCini3_Desescrever(arquivo[],linha[])
{
if(!bCini3_Existe(arquivo) || !strlen(linha) || !bCini3_Setado(arquivo,linha))
{
return 1;
}
strmid(bCini3_Linha_Valor[bCini3_Linha_ID],"Vazio",0,5,6);
bCini3_Escreveu = true;
return 1;
}
stock bCini3_LimparArquivo(arquivo[])
{
if(!bCini3_Existe(arquivo))
{
return 1;
}
bCini3_AbrirArquivo(arquivo);
for(new i; i<bCini3_Linhas_Arquivo; i++)
{
if(strlen(bCini3_Linha_Valor[i]))
{
strmid(bCini3_Linha_Valor[i],"",0,0,1);
}
}
bCini3_Escreveu = true;
return 1;
}
stock bCini3_Console(arquivo[])
{
if(!bCini3_Existe(arquivo))
{
return 1;
}
bCini3_AbrirArquivo(arquivo);
for(new i; i<bCini3_Linhas_Arquivo; i++)
{
if(strlen(bCini3_Linha_Valor[i]))
{
print(bCini3_Linha_Valor[i]);
}
}
return 1;
}
stock bCini3_Copiar(arquivo[],arquivo2[],bool:remover)
{
if(!bCini3_Existe(arquivo))
{
return 1;
}
bCini3_AbrirArquivo(arquivo);
new bCini3_Texto_Arquivo[bCini3_Capacidade*10];
for(new i; i<bCini3_Linhas_Arquivo; i++)
{
if(strlen(bCini3_Linha_Valor[i]))
{
format(bCini3_Texto_Arquivo,sizeof(bCini3_Texto_Arquivo),"%s%s",bCini3_Texto_Arquivo,bCini3_Linha_Valor[i]);
}
}
bCini3_Log(arquivo2,bCini3_Texto_Arquivo);
if(remover)
{
bCini3_Remover(arquivo);
}
return 1;
}
stock bCini3_Log(arquivo[],valor[])
{
new File:bCini3_Arquivo_Open;
bCini3_Arquivo_Open = bCini3_Abrir(arquivo,io_append);
bCini3_Escrever(bCini3_Arquivo_Open,valor);
bCini3_Fechar(bCini3_Arquivo_Open);
return 1;
}
// Funзхes Inusadas
stock bCini3_AbrirArquivo(arquivo[])
{
if(!bCini3_Existe(arquivo) || strcmp(arquivo,bCini3_Nome_Arquivo,true) == 0)
{
return 1;
}
bCini3_FecharArquivo();
new File:bCini3_Arquivo_Open,bCini3_Texto_Arquivo[bCini3_Capacidade];
strmid(bCini3_Nome_Arquivo,arquivo,0,strlen(arquivo),strlen(arquivo)+1);
bCini3_Arquivo_Open = bCini3_Abrir(arquivo,io_read);
while(bCini3_Ler(bCini3_Arquivo_Open,bCini3_Texto_Arquivo))
{
if(strlen(bCini3_Texto_Arquivo))
{
strmid(bCini3_Linha_Valor[bCini3_Linhas_Arquivo],bCini3_Texto_Arquivo,0,strlen(bCini3_Texto_Arquivo),strlen(bCini3_Texto_Arquivo)+1);
bCini3_Linhas_Arquivo++;
}
}
bCini3_Linhas_Arquivo = bCini3_Linhas_Arquivo+1;
bCini3_Fechar(bCini3_Arquivo_Open);
return 1;
}
stock bCini3_FecharArquivo()
{
if(!bCini3_Existe(bCini3_Nome_Arquivo) || !bCini3_Escreveu)
{
strmid(bCini3_Nome_Arquivo,"Vazio",0,5,6);
if(bCini3_Escreveu)
{
for(new i; i<bCini3_Linhas_Arquivo; i++)
{
strmid(bCini3_Linha_Valor[i],"",0,0,1);
}
bCini3_Escreveu = false;
}
bCini3_Linhas_Arquivo = 0;
return 1;
}
new File:bCini3_Arquivo_Open,bCini3_Texto_Arquivo[bCini3_Capacidade*10];
for(new i; i<bCini3_Linhas_Arquivo; i++)
{
if(strlen(bCini3_Linha_Valor[i]))
{
format(bCini3_Texto_Arquivo,sizeof(bCini3_Texto_Arquivo),"%s%s",bCini3_Texto_Arquivo,bCini3_Linha_Valor[i]);
}
strmid(bCini3_Linha_Valor[i],"",0,0,1);
}
bCini3_Arquivo_Open = bCini3_Abrir(bCini3_Nome_Arquivo,io_write);
bCini3_Escrever(bCini3_Arquivo_Open,bCini3_Texto_Arquivo);
bCini3_Fechar(bCini3_Arquivo_Open);
bCini3_Escreveu = false;
bCini3_Linhas_Arquivo = 0;
strmid(bCini3_Nome_Arquivo,"Vazio",0,5,6);
return 1;
}
// Fim da Include bCini3
Obs 2: A definiзao bCini3_Separador й a definiзao responsбvel pelo Set dos Arquivos, exemplo:
Linha bCini3_Separador Valor
Se o bCini3_Separador for :, o arquivo Ficarб assim:
Linha:Valor