24.04.2011, 00:51
Fini Cache File System
Principais funзхes || Modos de uso || Exemplos incluнdos
Principais funзхes || Modos de uso || Exemplos incluнdos
Olб.
Hoje venho trazer um tutorial sobre algumas coisas fundamentais para a utilizaзгo de Fini. Alguns dias atrбs eu recebi algumas mensagens solicitando ajuda sobre como usa-la, e tambйm andei vendo que algumas pessoas estгo deixando de utiliza-la por causa de falta de informaзгo, entгo eis que venho lhe da toda a informaзгo necessбria para estб criando o que vocк bem quiser.
Primeiramente nуs devemos saber algumas coisas e o por que utilizar Fini ao invйs de outros sistemas. Pois bem, Fini й um sistema de salvamento de dados que trabalha em armazenamento em cache o que o torna mais rбpido que outros sistemas como por exemplo dini.
Em relaзгo а outros sistemas que trabalham da mesma forma que Fini, ele se destaca pela sua velocidade e fбcil utilizaзгo. Abaixo alguns testes realizados em sua ъltima versгo(4).
Superando Dini em atй 400 vezes mais rбpido na escrita, como 120 vezes mais rбpido na leitura
Agora que sabemos o por que utilizar Fini e como ele irб melhorar e muito nossos scripts, vamos conhecer as funзхes que estгo contidas na include:
Principais Funзхes
Fini_Exists:
Verifica se um determinado arquivo й existente
Fini_OpenFile:
Abri um arquivo para ser utilizado, antes de ler ou escrever algo em seus arquivo vocк deverб abri-lo.
Fini_CloseFile:
Fecha um arquivo que foi recentemente aberto, toda vez que vocк abrir um arquivo vocк deverб fecha-lo, caso contrбrio irб causar um "conflito" e gerar erros no que vocк estiver fazendo(escrita e/ou leitura)
Fini_SaveFile:
Salva um determinado arquivo, deve ser usado sempre que vocк alterar o valor de alguma coisa em seu arquivo(Em casos de salvar)
Fini_Remove:
Remove um arquivo, deleta, apaga.
Fini_Create:
Como o prуprio nome sugere ele cria um arquivo.
Escrita
Fini_SetStr:
Escreve "string's" em seu arquivo. Como por exemplo "Falcon", logo abaixo a alguns exemplos de utilizaзгo, juntamente com um FilterScript
Fini_SetVal:
Escreve nъmeros inteiros, por exemplo: ( 1234 ), sendo tambйm utilizados em casos como GivePlayerMoney, SetPlayerScore, etc...
Fini_SetBool:
Faz a escrita em forma booleana. Ele nгo escreve dentro do arquivo true e false, ele pega o valor contido dentro de true e false e transforma em: 0 e 1
Fini_SetFloat:
Escreve floats em seu arquivo. Como por exemplo: 1234.5678, podendo ser utilizado em casos de salvar vida, colete, coordenadas de players.
Leitura
Fini_GetStr:
Funзгo a leitura de "string's", como no exemplo dado acima ele irб ler o valor contido: "Falcon", mais exemplos abaixo e tambйm no FilterScript a ser mostrado.
Fini_GetValue:
Faz a leitura de nъmeros inteiros ( 1234 ), tambйm sendo utilizado por exemplo em GetPlayerMoney, GetPlayerScore...
Fini_GetBool:
Realiza a leitura de valores booleanos, como citado no treco acima ele vai entender o valor salvo(1 ou 0) como true e false na hora que vocк utilizar em alguma funзгo
Fini_GetFloat:
Faz a leitura de nъmeros em floats ( 12345.67890 ) , como o caso de posiзхes de players, health, armour, etc...
Agora que jб sabemos para que cada funзгo serve, iremos ver alguns exemplos em que se encaixam elas, assim tambйm retirando algumas dъvidas de forma de utilizaзгo. Apуs ser concluнdo este tutorial, irб ser postado alguns sistemas feitos a base de Fini. A visualizaзгo do mesmo tambйm ajudarб a compreender melhor o funcionamento.
!! Exemplos em prбtica !!
Vale lembrar tambйm que Fini faz a leitura e escrita em dois formatos: .txt e .ini
Vocк poderб fazer a junзгo das duas extensхes de arquivos para vбrios fatores como por exemplo salvar dois arquivos com o mesmo nome no mesmo diretуrio, colocando algumas informaзхes em um e outras no outro arquivo com extenзгo diferente. Alguns exemplos tambйm irб mostrando sobre a junзгo dos dois arquivos
Atenзгo: Cuidado para nгo se embaralhar e trocar as extensхes que vocк deseja utilizar em algo !!
Para facilitar mais o entendimento irб ser colocado uma parte de somente a funзгo e outra das funзхes anteriores juntamente com a que vai ser estб sendo falada no momento !!
Fini_Exists:
Em modo de somente uma extensгo:
pawn Код:
if(Fini_Exists("MeuArquivo.ini"))
{
print("Meu arquivo .ini nгo existe");
}
else
{
print("Meu arquivo .ini й existente");
}
if(!Fini_Exists("MeuArquivo.ini")) return print("Meu arquivo nгo existe, entгo vamos parar por aqui");
pawn Код:
if(!Fini_Exists("MeuArquivo.ini") && !Fini_Exists("MeuArquivo.txt"))
{
print("Meus arquivos em .ini e .txt nгo existem");
}
else
{
print("Meus arquivo .ini e .txt sгo existentes");
}
if(Fini_Exists("MeuArquivo.ini") && !Fini_Exists("MeuArquivo.txt"))
{
print("Meus arquivo .ini existe e meu arquivo .txt nгo existe");
}
Fini_OpenFile:
Em modo de somente uma extensгo:
pawn Код:
if(Fini_Exists("ForumSamp.ini"))
{
Fini_OpenFile("ForumSamp.ini");
}
if(Fini_Exists("ForumSamp.ini")) Fini_OpenFile("ForumSamp.ini");
pawn Код:
if(!Fini_Exists("ForumSamp.ini"))
{
Fini_OpenFile("ForumSamp.txt");
print("Nosso arquivo .ini nгo existe entгo abriremos o .txt");
}
if(Fini_Exists("ForumSamp.txt") && Fini_Exists("ForumSamp.ini"))
{
Fini_OpenFile("ForumSamp.txt");
print("Os dois arquivos sгo existentes. Entretanto sу podemos abrir um deles");
}
Fini_CloseFile:
pawn Код:
if(Fini_Exists("Falcon.ini"))
{
Fini_OpenFile("Falcon.ini");
print("Agora nуs abrimos nosso arquivo e iremos fazer o que queremos dentro dele");
Fini_CloseFile();
print("Fechamos o arquivo pois jб fizemos tudo que tinha que ser feito");
}
Fini_SaveFile:
pawn Код:
if(Fini_Exists("Galinha.ini"))
{
Fini_OpenFile("Galinha.ini");
//Salvamos aqui - iremos ver logo abaixo juntamente com este cуdigo como salvar coisas
Fini_SaveFile("Galinha.ini");
Fini_CloseFile();
}
Fini_Remove:
pawn Код:
if(Fini_Exists("Gatinho.txt")) Fini_Remove("Gatinho.txt");
if(strcmp(cmdtext, "/apagargatinho", true))
{
if(!Fini_Exists("Gatinho.ini")) return SendClientMessage(playerid, 0xFFFFFFAA, "O arquivo Gatinho.ini nгo existe");
SendClientMessage(playerid, 0xFFFFFFAA, "O arquivo Gatinho.ini exite, portando agora ele nгo existirб mais ..:: Deletando ::..");
Fini_Remove("Gatinho.ini");
return true;
}
Fini_Create:
Em modo de somente uma extensгo:
pawn Код:
if(!Fini_Exists("MeuFini.ini")) Fini_Create("MeuFini.ini");
if(!Fini_Exists("MeuFini.ini"))
{
Fini_Create("MeuFini.ini");
Fini_OpenFile("MeuFini.ini");
Fini_SaveFile("MeuFini.ini");
Fini_CloseFile();
Fini_Remove("MeuFini.ini");
}
pawn Код:
if(!Fini_Exists("Teste.ini")) Fini_Create("Teste.txt");
if(!Fini_Exists("Teste.ini") && !Fini_Exists("Teste.txt"))
{
Fini_Create("Teste.ini");
Fini_Create("Teste.txt");
}
Fini_SetStr:
pawn Код:
if(!Fini_Exists("Escrevendo.ini")) Fini_Create("Escrevendo.ini");
Fini_OpenFile("Escrevendo.ini");
Fini_SetStr("Ola", "Oi");
Fini_SetStr("SeuNome", "Falcon");
Fini_SaveFile("Escrevendo.ini");//lembre-se de salvar o arquivo apуs escrever
Fini_CloseFile()//Lembre-se de fechar o arquivo que foi aberto
//Ficando da seguinte forma no arquivo:
Ola=Oi
SeuNome=Falcon
Fini_SetVal:
pawn Код:
Fini_OpenFile("SemNome.txt");
Fini_SetVal("Dinheiro", GetPlayerMoney(playerid));
Fini_SetVal("Numeros", 1234);
Fini_SaveFile("SemNome.txt");//Lembre-se de salvar pois acabamos de escrever
Fini_CloseFile();
Fini_SetBool:
pawn Код:
new bool:Falcon;
Falcon = true;
Fini_OpenFile("OtherFile.ini");
Fini_SetBool("Booleana", Falcon);
Falcon = false;
Fini_SetBool("Booleana", Falcon);
Fini_SaveFile("OtherFile.ini");
Fini_CloseFile();
}
Fini_SetFloat:
pawn Код:
new Float:MinhaVida, Float:MeuColete;
GetPlayerHealth(playerid, MinhaVida);
GetPlayerArmour(playerid, MeuColete);
Fini_OpenFile("Posting.ini");
Fini_SetFloat("Health", MinhaVida);
Fini_SetFloat("Armour", MeuColete);
Fini_SaveFile("Posting.ini");//lembre-se de salvar, acabamos de escrever !!
Fini_CloseFile();
Fini_GetStr:
pawn Код:
new fString[21];
if(!Fini_Exists("MeuArquivo.txt")) Fini_Create("MeuArquivo.txt");
Fini_OpenFile("MeuArquivo.txt");
Fini_SetStr("MeuNome", "Joazinho");
Fini_SaveFile("MeuArquivo.txt");//salve aqui porque acabamos de escrever !!
format(fString, , "Meu nome й: %s", Fini_GetStr("MeuNome"));
SendClientMessage(playerid, 0xFFFFFFAA, fString);
Fini_CloseFile();
Fini_GetValue:
pawn Код:
Fini_OpenFile("Janela.ini");
GivePlayerMoney(playerid, Fini_GetValue("Dinheiro"));
Fini_CloseFile();
if(Fini_Exists("Janela.txt") && Fini_Exists("Janela.ini"))
{
Fini_OpenFile("Janela.ini");
GivePlayerMoney(playerid, Fini_GetValue("Dinheiro"));
Fini_CloseFile();
Fini_OpenFile("Janela.txt");
GivePlayerMoney(playerid, Fini_GetValue("Dinheiro"));
Fini_CloseFile();
}
Fini_GetBool:
pawn Код:
new bool:Tutorial;
Tutorial = false;
if(Tutorial == false)
{
Fini_OpenFile("NossoArquivo.ini");
Fini_SetBool("Booleana", false);
Fini_SaveFile("NossoArquivo.ini");
Fini_CloseFile();
}
if(Tutorial == Fini_GetBool("Booleana"))
{
print("O valor da booleana tutorial й igual ao valor encontrado no arquivo");
}
Fini_GetFloat:
pawn Код:
new Float:fX, Float:fY, Float:fZ;
GetPlayerPos(playerid, fX, fY, fZ);
Fini_Create("Falcon.ini");
Fini_OpenFile("Falcon.ini");
Fini_SetFloat("PosX", fX);
Fini_SetFloat("PosY", fY);
Fini_SetFloat("PosZ", fZ);
Fini_SaveFile("Falcon.ini");
SetPlayerPos(playerid, Fini_GetFloat("PosX"), Fini_GetFloat("PosY"), Fini_GetFloat("PosZ"));
Fini_CloseFile();
Bem atй momento todo o assunto que me veio a cabeзa relacionado a Fini eu coloquei aqui, Caso alguйm tenha alguma dъvida poste aqui que serб resolvida.
Caso tenham alguma dica ou sugestгo envie-me um MP que eu irei acrescentar ao tutorial juntamente com o nome na participaзгo !!
Em alguns instantes eu irei estб terminando alguns sistemas feitos com Fini e estarei postando tambйm, nele vocкs poderгo estб visualizando todo o funcionamento de Fini.
Espero que todos que tinham as dъvidas e deixaram de utilizar Fini por causa de dificuldades comece a utilizar agora pois desculpas nгo hб mais
Atй mais galerinha do fуrum sa-mp.
Agradecimentos:
Eu - Tutorial, Sherlock Holmes do Bugs(by drakins)
Bloco de Notas - Utilizei para salvar o que fiz, pois as vezes a internet caia enquanto eu visualizava e perdia todo o trabalho.
Drakins(banido) e KylePT pelo Desenvolvimento de Fini Cache File System
Jhony - Tester
Atenciosamente,
Falcon.