[Tutorial] Desvendando o DOF2
#1

Olб pessoal.

Muitas pessoas podem ter dъvidas de como usar a include dof2. Nesse tutorial estarei tirando esse misticismo de que й algo complicado, como vemos em muitas comunidade de SA-MP. Apуs ler e entender esse tutorial, vocк estarб apto a desenvolver qualquer tipo de sistema que queira armazenar dados.

O que й
DOF2 й uma include responsбvel por gerenciamento de dados armazenados em arquivos. Ele й muito utilizado em sistemas de registro, salvamento, empresas, etc...

Aonde encontrar
Infelizmente, nгo encontrei o tуpico oficial do DOF2, todavia vocк pode encontralo clicando aqui.

Como instalar
1) Faзa o download do arquivo. Click aqui.
2) Salve o arquivo na pasta pawno/includes com o nome de DOF2.inc. DOF2 em maiъsculo e a extensгo .inc.
3) Na parte de includes no seu gamemode, normalmente no topo, inclua a include inserindo o cуdigo abaixo:
Code:
#include DOF2
Pronto. Seguindo esses 3 passos vocк tem o DOF2 instalado e pronto para ser usado.

Funcionalidade
O sistema de armazenamento e identificaзгo dos dados em DOF2 funciona no formato:
CHAVE=VALOR

CHAVE: й o identificador de cada valor. Vocк nгo pode ter chaves com o mesmo nome. Vocк sempre se referencia a ela quando quer recuperar algum valor.

VALOR: й o valor propriamente dito.

Vocк pode imaginar esse sistema como um sistema de variбvel aonde a chave й o nome da variбvel e o valor й o valor da variбvel.

PS: Vocкs podem encontrar muito no cabeзalho das funзхes a palavra: key[], que se refere a chave;

Comandos bбsicos
Vamos agora entrar na parte dos comandos bбsicos. Nesse tutorial irei ensinar a vocкs o uso dos comandos que acho que vocкs tem a maior chance de usar. Existem diversos outros comandos, todavia, nгo os acho pertinentes.

DOF2_CreateFile(file[],password[]="")
Cria um arquivo.

Exemplo de uso:
Code:
new str[128], name[32];
GetPlayerName(playerid, name. sizeof(name));
format(str, sizeof(str), "contas/%s.ini", name);
DOF2_CreateFile(str);
DOF2_FileExists(file[])
Verifica se um arquivo existe. Retorna true se existir e false caso contrбrio.

Exemplo de uso:
Code:
new str[128], name[32];
GetPlayerName(playerid, name. sizeof(name));
format(str, sizeof(str), "contas/%s.ini", name);
if(!DOF2_FileExists(str) DOF2_CreateFile(str);
DOF2_RenameFile(oldfile[],newfile[])
Renomeia um arquivo.

Exemplo de uso:
Code:
new str[128], new[128];
format(str, sizeof(str), "contas/joao.ini");
format(new, sizeof(new), "contas/pedro.ini");
DOF2_CreateFile(str);
DOF2_RenameFile(str, new);
DOF2_RemoveFile(file[])
Deleta um arquivo.

Exemplo de uso:
Code:
new str[128];
format(str, sizeof(str), "contas/joao.ini");
DOF2_RemoveFile(str);
DOF2_CopyFile(filetocopy[],newfile[])
Copia o conteъdo de um arquivo e cria um novo arquivo a partir desse conteъdo.

Exemplo de uso:
Code:
new str[128], new[128];
format(str, sizeof(str), "contas/joao.ini");
format(new, sizeof(new), "contas/pedro.ini");
DOF2_CreateFile(str);
DOF2_CopyFile(str, new);
DOF2_SaveFile()
Salva o conteъdo do arquivo que estб sendo trabalhado.

Exemplo de uso:
Code:
new str[128];
format(str, sizeof(str), "contas/joao.ini");
DOF2_CreateFile(str);
DOF2_SaveFile();
DOF2_GetString(file[],key[],tag[]="")
DOF2_GetInt(file[],key[],tag[]="")
DOF2_GetFloat(file[],key[],tag[]="")
DOF2_GetBool(file[],key[],tag[]="")
Comandos que recebem um tipo de valor do arquivo: literal, numйrico, fracionбrio e booleano (string, int, float e boolean).

Exemplo de uso:
Code:
new str[128], nome[32], idade, Float:salario;
format(str, sizeof(str), "contas/joao.ini");
nome = DOF2_GetString(str, "name");
idade = DOF2_GetInt(str, "age");
salario = DOF2_GetFloat(str, "salary");
banido = DOF2_GetBool(str, "banned");
DOF2_SetString(file[],key[],tag[]="")
DOF2_SetInt(file[],key[],tag[]="")
DOF2_SetFloat(file[],key[],tag[]="")
Comando que inserem um valor no arquivo. Literal, numйrico, fracionбrio e booleano (string, int, float e boolean).

Exemplo de uso:
Code:
new str[128], nome[32], idade, Float:salario;
format(str, sizeof(str), "contas/joao.ini");
DOF2_SetString(str, "name", "Joao");
DOF2_SetInt(str, "age", 18);
DOF2_SetFloat(str, "salary", 0.0);
DOF2_SetBool(str, "banned", true);
Assim chegamos na parte final do nosso tutorial sobre DOF2. Com esse conteъdo vocкs estгo aptos a construir qualquer sistema de armazenamento de informaзхes que bem desejarem.

Abraзos e atй a prуxima.
Reply
#2

chupa seus bacana eu ja vi primeiro kkk
aprendi dof2

first
Reply
#3

bom tuto,

mas sу uma coisa,
й dof2.ini
ou dof2.inc

rs.

#Sky aff
que cuzao.
eu ia postar primeiro
Reply
#4

@iSmir
Alterado. Confudi a paradex boladex (isso й falta de sopa : /)
Reply
#5

Legal, seria mais legal ainda se fizesse o mesmo com MySQL e SQLite!
Reply
#6

Quote:
Originally Posted by Programador_Macabro
View Post
Legal, seria mais legal ainda se fizesse o mesmo com MySQL e SQLite!
Talvez um dia eu faзa, muito difнcil mas quem sabe... Esse tutorial achei perdido aqui, eu fiz mas nгo tinha postado. Como dei uma parada em SA-MP acho difнcil fazer mais algum tutorial, mas quem sabe :P
Reply
#7

muito bom eu mesmo nunca havia usado dof2 antes
Reply
#8

Ajudara a Muitos.
Parabйns.
Reply
#9

new new[128]; MASOQista

Otimo tutorial =D!
Muito bem explicado e com bastante exemplos.
Reply
#10

bom cara. parabens!
Reply
#11

Bom tutorial, quando lн Desvendando DOF2 pensei em outra coisa :P
Reply
#12

Muito bom Parabкns hehe'
Reply
#13

Quote:
Originally Posted by [Full]Garfield[XDB]
View Post
Bom tutorial, quando lн Desvendando DOF2 pensei em outra coisa :P
Haha eu tambйm.

@Topic.

Уtimo tutorial,
Agora tem onde indicar novatos quando vierem com dъvidas sobre o mesmo.

Rep +!
Reply
#14

Excelente, acho que nгo havia um tгo explicativo na board. Serб de grande serventia para a mуdica quantia de novatos que se dispхem a ler um tutorial.
Reply
#15

Uma coisa que poderia colocar em seu Tutorial й.


Quote:
Originally Posted by humildadeforever
View Post
A ъltima vez que tentei usar tava bugada mesmo! O negуcio й strcmp 4ever <3 '-'
kkkkkkk'
Quote:
Originally Posted by Los
View Post
Se eu nгo me engano, estб funзгo estб "bugada" no DOF2, e como nгo hб mais atualizaзхes do mesmo, creio que nгo vai ser possнvel utiliza-la.
Negativo.






A Funзгo esta correta, sempre esteve!. E so abrir a include que vocк vai notar, Muitos nгo sabem usar corretamente, mas pessoal nгo tem bug algum;

E a forma para usar йla й:


pawn Code:
case DIALOG_REGISTRO:
        {
            switch( response )
            {
                case 0 : return CheckAccount( playerid );
                case 1:
                {
                    new g_String[72], name[24];
                   
                    GetPlayerName( playerid, name, 24 );
                   
                    format( g_String, sizeof( g_String ), "Contas/%.ini", name ); //Exemplo se eu entrar com o nome "SchocC" ele formata deixando o caminho para o Salvamento, aonde sera enviado as Informaзхes em um arquivo .ini;
                   
                    if( !DOF2_FileExists( g_String ) ) //Verifica se nгo existe a Conta
                    {
                        if( 5 < strlen( inputtext ) < 12 ) return  SendClientMessage( "Sua senha deve ter no minimo: 5 Caracteries  e Maximo: 12" );
                        DOF2_CreateFile(    g_String,   inputtext );//Aqui a conta do Player й criada na pasta "SA-MP SERVER\scriptfiles\SchocC.ini"
                    DOF2_SetInt(        g_String,   "Logado",          VariavelComValorAserSalvado    ),
                        DOF2_SetInt(        g_String,   "Dinheiro",         VariavelComValorAserSalvado    ),
                        DOF2_SetInt(        g_String,   "Score",            VariavelComValorAserSalvado    ),
                DOF2_SaveFile();                   
                return true;
                    }

E lenbrando que usando йsta funзaх vocк altomaticamente ja usa um Password Hashing chamado de Hash


Este cуdigo salva um arquivo na pasta:
"SA-MP Server 0.3x\scriptfiles\Contas\SchocC.ini"
Code:
password = 192217830
Logado = 0
Dinheiro = 0
Score = 0
password - й a variavel padrгo do Sistema dof2 que salva a senha para um Sistema de Registro/Login



A funзгo pega a senha do nome do arquivo.
Exemplo: Checando login e senha!
DOF2_CheckLogin( filename[], password[] );

* filename[] - No exemplo acima o 'filename' Representaria "SA-MP Server 0.3x\scriptfiles\Contas\SchocC.ini"
*password[]
A funзгo tem um hach interno embutido coisa facil de se fisualizar;
pawn Code:
stock bool: DOF2::CheckLogin (file [], password [])
    return (file [0] && password [0] && DOF2::num_hash (password) == DOF2::GetInt (file, USER_PW_HASH_KEY));




Eu ia sу dar uma dica e acabei escrevendo atй aqui..
Reply
#16

Pensei em outra coisa nesse desvendando kk'

belo tutorial (MaisPodiaSerVнdeoPraEuOuvirSuaVozGrossaDenovo)
Reply
#17

Gostei!
Reply
#18

Quote:
Originally Posted by JhefTFJ
View Post
Gostei!
Pra que reviver um tуpico de 2013 ? e ainda fazendo spam, nгo agregando conteъdo ao mesmo
Reply
#19

Quote:
Originally Posted by vPunisheR
View Post
Pra que reviver um tуpico de 2013 ? e ainda fazendo spam, nгo agregando conteъdo ao mesmo
Olha dever se porque deu vontade?, alias de minha vontade vocк nгo pode modifica-las, pos quem manda nela sou eu, e eu uso minha conta pra qualquer coisa que eu achar de bom ou de melhor!, Bjs!
Reply
#20

Quote:
Originally Posted by JhefTFJ
View Post
Olha dever se porque deu vontade?, alias de minha vontade vocк nгo pode modifica-las, pos quem manda nela sou eu, e eu uso minha conta pra qualquer coisa que eu achar de bom ou de melhor!, Bjs!
Vai tomar no cu e para de ser lixo
Reply


Forum Jump:


Users browsing this thread: 21 Guest(s)