[TUT] Completo usando DFile
Autor: Antonio Souza | Publicado: 2012-01-24T14:07:00-08:00

Descrição: 

Bom, estou aqui para ensinar quem ainda não sabe sobre como utilizar o dfile. 
Pra quem não sabe o dfile é um gerenciador de arquivos, muitos  chamam de database, cache enfim, a função dele é intermediar entre o HD  principal onde estão as informações até o solicitante da informação, em  resumo com ele você poderá salvar informações como nível de admin,  textos, logs ou qualquer coisa do gênero. 

 Funções: 

Escrita e leitura: 
► dfile_WriteInt(Tag, valor); 
► dfile_WriteBool(Tag, true/false); 
► dfile_WriteFloat(Tag, valor fracionado); 
► dfile_WriteString(Tag, Texto); 
► dfile_ReadInt(Tag); 
► dfile_ReadBool(Tag); 
► dfile_ReadFloat(Tag); 
► dfile_ReadString(Tag); 
► dfile_ReadPerseString(Tag, string); 

Criação e remoção: 
► dfile_Create(Arquivo[]); 
► dfile_Delete(Arquivo[]); 
► dfile_CreateDirectory(Pasta[]); 
► dfile_DeleteDirectory(Pasta[]); 

Verificação e outros: 
► dfile_OpenFile(Arquivo); 
► dfile_SaveFile(); 
► dfile_CloseFile(); 
► dfile_FileExists(Arquivo[]); 
► dfile_DirectoryExists(Pasta[]); 
► dfile_RenameFile(Arquivo[], NovoNome[]); 
► dfile_IsSet(Tag); 
► dfile_UnSet(Tag); 

Como usar: 

Bom, acima vocês viram quais são as funcionalidades do dfile, aprenderemos agora como usa-las com exemplos. 

A programação em si segue uma lógica muito básica, assim como no seu dia-a-dia na programação você deve seguir etapas, exemplo. 
Você quer setar um valor em um arquivo, antes você deverá verificar  se ele existe, caso não exista você deverá cria-lo, nomea-lo, salva-lo e  fecha-lo. Então, faremos isso. 
Caso você tente escrever algo em um arquivo que não existe logicamente você não conseguirá. 

► dfile_FileExists(Arquivo[]); 
► dfile_OpenFile(Arquivo); 
► dfile_SaveFile(); 
► dfile_CloseFile(); 

if(dfile_FileExists("Progressão.ini");

{

dfile_Open("Progressão.ini");

//Funções de escrita

SaveFile();

CloseFile();

}
Explicação: 
Bom, com esses passos iremos verificar se o arquivo Progressão.ini  existe na scriptfiles usando o id(se) e o dfile_FileExists... caso ele  exista, ele após a chave { será aberto usando  dfile_Open("Progressão.ini"); Será escrito algo nele(Você deverá usar a  função de escrita no lugar da anotação), após isso será salvo o arquivo e  será fechado. 

Por que no SaveFile e Closefile não precisa do parametro(Arquivo)?  Simples, porque a ação SaveFile e CloseFile são direcionadas ao arquivo  aberto no momento... Diferente de Dini, o DFile abre apenas o arquivo  necessário evitando assim muitas contas desnecessárias por segundo. 

► dfile_Create(Arquivo[]); 
► dfile_WriteInt(Tag, valor); 
► dfile_WriteBool(Tag, true/false); 
► dfile_WriteFloat(Tag, valor fracionado); 
► dfile_WriteString(Tag, Texto); 



if(!dfile_FileExists("Progressão.ini"))//Verifica se NÃO existe por causa do ! Exclamação

{

dfile_Create("Progressão.ini"); //Caso não exista ele criará, pois está entre as chaves

}

dfile_Open("Progressão.ini");

dfile_WriteInt("NumeroInteiro", 12345);     //Numeros inteiros, sem fração

dfile_WriteBool("VerdadeiroOuFalso", true); //Variável booleanea, true ou false = verdadeiro ou falso

dfile_WriteFloat("NumeroFracionado", 1234.56789); //Numeros fracionados como coordenada de mapas, quantia de vida entre outros

dfile_WriteString("TextoQualquer", "Progressão Pawn, envolvendo jogadores revolucionando servidores"); //Qualquer tipo de texto

dfile_SaveFile();

dfile_CloseFile();

Explicação: 
Caso o arquivo "Progressão.ini" não exista ele será criado pois está  entre as chaves, após ele ser criado, será aberto e então será escrito  escrito as informações no arquivo, WriteInt serve pra escrever numeros  inteiros sem fração, é aceito numeros de 0 à 9(Claro, podendo ser juntos  formando dezenas, centenas e assim por diante). 
WriteBool salva valores booleaneos que são true/false verdadeiro/falso positivo/negativo. 
WriteFloat salva valores fracionados como a coordenada X, Y, Z do mapa entre outras coisas. 
WriteString Salva qualquer tipo de texto, sendo ele junto com  números ou não, apenas números ou apenas letras, geralmente usado para  salvar senhas/logs entre outras informações. 
Após escrever esses dados no arquivo ele será salvo e fechado, é bom  lembrar que caso você não salve este texto ao fechar o arquivo já não  será mais possível ler os dados no arquivo. 

► dfile_ReadInt(Tag); 
► dfile_ReadBool(Tag); 
► dfile_ReadFloat(Tag); 
► dfile_ReadString(Tag); 

new varInt, Float:varFloat, bool:varBool, varString[128];

if(dfile_FileExists("Progressão.ini"))//Verifica se existeo arquivo

{

dfile_Open("Progressão.ini");                //Caso exista será aberto

varInt = dfile_WriteInt("NumeroInteiro");     //O numero inteiro nesta tag será escrito na varInt

varBool = dfile_WriteBool("VerdadeiroOuFalso"); //O valor bool que estiver nesta tag será escrito na varBool

varFloat = dfile_WriteFloat("NumeroFracionado"); //O numero frácionado que estiver nesta tag será escrito na varFloat

varString = dfile_WriteString("TextoQualquer"); //O texto que estiver nesta tag será escrito na variável varString

dfile_CloseFile(); //Fechará o arquivo sem salvar pois você apenas fez leituras e não alterou nada

}

Explicação: 
O script criará as variáveis varInt, varFloat, varBool e varString  cada uma com suas respectivas tags, caso o arquivo exista a varInt terá o  valor da tag NumeroInteiro atribuído a ela. a varBool terá o valor da  tag VerdadeiroOuFalso atribuído à ela, a varFloat terá o valor da tag  NumeroFracionado atribuído à ela e a varString terá o texto na tag  TextoQualquer atribuído à ela. 
Você pode usar também o dfile_ReadPerseString que compara uma string à tag. 

► dfile_Create(Arquivo[]); 
► dfile_Delete(Arquivo[]); 
► dfile_CreateDirectory(Pasta[]); 
► dfile_DeleteDirectory(Pasta[]);  

if(dfile_FileExists("Progressão.ini"))

{

dfile_Delete("Progressão.ini"); //Deleta o arquivo se existir

}

if(!dfile_FileExists("Progressão.ini"))

{

dfile_Create("Progressão.ini"); //Cria o arquivo se não existir

}



if(!dfile_DirectoryExists("ForumSamp"))

{

dfile_DCreateirectory("ForumSamp"); //Cria a pasta se não existir

}

if(dfile_DirectoryExists("ForumSamp"))

{

dfile_DeleteDirectory("ForumSamp"); //Deleta a pasta se existir

}

Explicação: Nas anotações. 


► dfile_RenameFile(Arquivo[], NovoNome[]); 
► dfile_IsSet(Tag); 
► dfile_UnSet(Tag);  


if(dfile_FileExists("Progressão.ini"))

{

if(dfile_IsSet("Exemplo"); //Verifica se a TAG Exemplo tem algum valor

{

dfile_UnSet("Exemplo"); //Tira o valor da TAG Exemplo se existir

}

return 1;

}



dfile_RenameFile("Progressao.ini", "ProgressaoPawn.ini"); 

Explicação: 
Se o arquivo Progressão.ini existir ele vai verificar se a tag  'Exemplo' tem algum valor setado usando dfile_IsSet e caso tenha um  valor setado ele irá retirar este valor usando dfile_UnSet. 


Download&nbsp;