[Include] RocksFile: Sistema de Salvamento de Dados
#1


Sistema de Salvamento de Dados
Olб hoje venho compartilhar com vocкs um sistema que desenvolvi em funзгo de ajudar no salvamento e carregamento de arquivos.
Um dos principais motivos por trabalhar nesta include foi pela velocidade muito baixa da Dini e tambйm tive problemas com Fini de estar salvando nos arquivos errados, entгo decidi criar a minha prуpria.
O uso desta include й muito semelhante a Dini e Fini, atй porque o sistema foi criado usando a facilidade da Dini e o sistema de Cache da Fini, ok vamos ver como usa-lб.

Funзхes:
pawn Code:
native RocksFile_Existe(diretorio[]);
native RocksFile_Excluir(diretorio[]);
native RocksFile_Criar(diretorio[]);
native RocksFile_Carregar(nomearquivo[],diretorio[]);
native RocksFile_Escrever(nomearquivo[],chave[],escrita[]);
native RocksFile_EscreverInteiro(nomearquivo[],chave[],escrita[]);
native RocksFile_EscreverFloat(nomearquivo[],chave[],escrita[]);
native RocksFile_Ler(nomearquivo[],chave[]);
native RocksFile_LerInteiro(nomearquivo[],chave[]);
native RocksFile_LerFloat(nomearquivo[],chave[]);
native RocksFile_Salvar(nomearquivo[]);
native RocksFile_Fechar(nomearquivo[]);
pawn Code:
RocksFile_Existe(diretorio[])//Й usada para verificar se um arquivo jб й existente.
pawn Code:
RocksFile_Excluir(diretorio[])//Й usada para excluir um arquivo de determinado diretуrio.
pawn Code:
RocksFile_Criar(diretorio[])//Й usada para criar um arquivo em determinado diretуrio.
pawn Code:
RocksFile_Carregar(nomearquivo[],diretorio[])//carrega um arquivo.
//em 'nomearquivo' serб um nome dado para aquele carregamento. tambйm pode se usar numeros como 'ids'.
//e o diretуrio serб o caminho para encontrar o arquivo б carregar.
//OBS: Antes de escrever,ler,salvar e fechar vocк deverб carregar o arquivo usando esta funзгo.
pawn Code:
RocksFile_Escrever(nomearquivo[],chave[],escrita[])//Й usada para escrever uma frase no arquivo jб carregado.
//aqui temos uma novidade, em dini vocк colocaria o diretуrio para salvar, mas aqui voce colocarб o nome que vocк usou para carregar o arquivo.
pawn Code:
RocksFile_EscreverInteiro(nomearquivo[],chave[],escrita[])//Escreve um nъmero inteiro no arquivo(nъmeros sem casas decimais).
pawn Code:
RocksFile_EscreverFloat(nomearquivo[],chave[],escrita[])//Escreve um nъmero 'flutuante' com casas decimais no arquivo.
pawn Code:
RocksFile_Ler(nomearquivo[],chave[])//Usada para pegar uma frase (string) do arquivo carregado.
pawn Code:
RocksFile_LerInteiro(nomearquivo[],chave[])//Usada para pegar um nъmero inteiro de um arquivo carregado.
pawn Code:
RocksFile_LerFloat(nomearquivo[],chave[])//Usada para pegar um nъmero com casas decimais de um arquivo carregado.
pawn Code:
RocksFile_Salvar(nomearquivo[])//Usada para atualizar um arquivo jб carregado e suas escritas posteriores
//OBS: vocк deve usar esta funзгo para que o arquivo com os dados seja atualizado e que os dados sejam salvos.
pawn Code:
RocksFile_Fechar(nomearquivo[])//Usada para fechar um carregamento e limpar os dados do cache.
//OBS: Use a funзгo RocksFile_Salvar(nomearquivo[]) antes de fechar para nao perder os dados.
Exemplo das funзхes em prбtica:
Sistema de registro e login simples em dialog usando RocksFile:
pawn Code:
//topo do gamemode
#include <RocksFile>
new Nivel[MAX_PLAYERS];//cria a variavel nivel para salvar o nivel carregado dos arquivos dos jogadores

//funзхes do script

public OnPlayerConnect(playerid)
{
    new nome[30],file[50];//cria as variaveis nome e file
    GetPlayerName(playerid,nome,30);//pega o nome do jogador e salva na variavel nome
    format(file,50,"%s.ini",nome);//formata a variavel file para o destino das contas de usuario
    if(RocksFile_Existe(file))//vai checar se jб existe um registro com o nome deste jogador
    {
        //irб mostrar o dialog para logar
        ShowPlayerDialog(playerid,999,DIALOG_STYLE_INPUT,"Login RocksFile","Digite abaixo sua senha para logar.","Logar","Sair");
        return 1;
    }else{
        //irб mostrar o dialog para registrar
        ShowPlayerDialog(playerid,998,DIALOG_STYLE_INPUT,"Registro RocksFile","Digite abaixo sua senha para registrar.","registrar","Sair");
    }
    return 1;
}

public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{

    if(dialogid == 999)//login
    {
        new nome[30],file[50];//cria as variaveis nome e file
        GetPlayerName(playerid,nome,30);//pega o nome do jogador e salva na variavel nome
        format(file,50,"%s.ini",nome);//formata a variavel file para o destino das contas de usuario
        if(response)
        {
            RocksFile_Carregar(nome,file);//estaremos carregando o arquivo do jogador com o prуprio nome dele e o diretorio do arquivo
            if(!strcmp(RocksFile_Ler(nome,"Senha"),inputtext,true))//irб checar se a senha digitada й igual a que ele registrou
            {
                RocksFile_Fechar(nome);//irб fechar o arquivo aberto
                CarregarJogador(playerid);//irб direcionar para esta funзгo
                SpawnPlayer(playerid);
                return 1;
            }
            ShowPlayerDialog(playerid,999,DIALOG_STYLE_INPUT,"Login RocksFile","Digite abaixo sua senha para logar.","Logar","Sair");
            RocksFile_Fechar(nome);//irб fechar o arquivo aberto
        }else{//caso clique em sair
            Kick(playerid);
            RocksFile_Fechar(nome);//irб fechar o arquivo aberto
        }
    }
    if(dialogid == 998) //registro
    {
        new nome[30],file[50];//cria as variaveis nome e file
        GetPlayerName(playerid,nome,30);//pega o nome do jogador e salva na variavel nome
        format(file,50,"%s.ini",nome);//formata a variavel file para o destino das contas de usuario
        if(response)
        {
            if(strlen(inputtext) > 5)//checa se a senha digitada й maior que 5 digitos
            {
                RegistrarJogador(playerid,inputtext);
                return 1;
            }
        }else{
            Kick(playerid);
        }
    }
    return 1;
}

stock CarregarJogador(playerid)
{
    new nome[30],file[50];//cria as variaveis nome e file
    GetPlayerName(playerid,nome,30);//pega o nome do jogador e salva na variavel nome
    format(file,50,"%s.ini",nome);//formata a variavel file para o destino das contas de usuario
    if(!RocksFile_Existe(file))//vai checar se jб existe um registro com o nome deste jogador
    {
        //irб mostrar o dialog para registrar
        ShowPlayerDialog(playerid,998,DIALOG_STYLE_INPUT,"Registro RocksFile","Digite abaixo sua senha para registrar.","registrar","Sair");
        return 1;
    }
    //hora de carregar as informaзхes
    RocksFile_Carregar(nome,file);//carrega o arquivo do jogador
    Nivel[playerid] = RocksFile_LerInteiro(nome,"Nivel");//ira carregar o nivel que escrevemos no registro
    SetPlayerScore(playerid,Nivel[playerid]);//ira setar o nivel do jogador co o nivel que carregou
    SendClientMessage(playerid,-1,Nivel[playerid]);
    return 1;
}


stock RegistrarJogador(playerid,senha[])
{
    new nome[30],file[50];//cria as variaveis nome e file
    GetPlayerName(playerid,nome,30);//pega o nome do jogador e salva na variavel nome
    format(file,50,"%s.ini",nome);//formata a variavel file para o destino das contas de usuario
    if(RocksFile_Existe(file))//vai checar se jб existe um registro com o nome deste jogador
    {
        //irб mostrar o dialog para logar
        ShowPlayerDialog(playerid,999,DIALOG_STYLE_INPUT,"Login RocksFile","Digite abaixo sua senha para logar.","Logar","Sair");
        return 1;
    }
    else
    {
        //caso nao exista um registro irб registra-lo
        RocksFile_Criar(file);//cria um arquivo
        RocksFile_Carregar(nome,file);//carrega o arquivo criado acima
        RocksFile_Escrever(nome,"Senha",senha);//ira escrever que a senha й a que o jogador digitou
        RocksFile_EscreverInteiro(nome,"Nivel",0);//ira escrever que o nivel do jogador й 0
        //voce pode escrever muitas outras coisas apenas seguindo o padrгo acima
        RocksFile_Salvar(nome);//irб salvar o registro e atualizar o arquivo criado
        CarregarJogador(playerid);//vai carregar o jogador
        SpawnPlayer(playerid);//irб spawna-lo para comeзar a jogar
        return 1;
    }
}


public OnPlayerDisconnect(playerid,reason)
{
    new nome[30],file[50];//cria as variaveis nome e file
    GetPlayerName(playerid,nome,30);//pega o nome do jogador e salva na variavel nome
    format(file,50,"%s.ini",nome);//formata a variavel file para o destino das contas de usuario
    if(RocksFile_Existe(file))
    {
        new Float:x,Float:y,Float:z;
        GetPlayerPos(playerid,x,y,z);
        RocksFile_EscreverInteiro(nome,"Nivel",Nivel[playerid]); //irб atualizar o registro anterior
        RocksFile_EscreverFloat(nome,"PosX",x);
        RocksFile_EscreverFloat(nome,"PosX",y);
        RocksFile_EscreverFloat(nome,"PosX",z);
        //   ^^ salva a posiзгo do jogador no arquivo que pode ser carregada depois usando RocksFile_LerFloat
        RocksFile_Salvar(nome);//irб salvar e registrar no arquivo
        RocksFile_Fechar(nome);//й muito importante fechar o arquivo quando nгo for mais utilizado
        return 1;
    }
    return 1;
}
Download:
http://pastebin.com/sVpqyEA0

Peзo desculpas pela postagem sem boas explicaзхes pois estou com um pouco de pressa, e se alguйm puder fazer um tutorial de como utiliza-lб ficarei muito grato.
OBS: Usem a vontade.
OBSІ: atй agora o sistema nгo apontou falhas e bugs, caso encontre por favor me contatar *-*
Reply
#2

Gostei Man
Reply
#3

ficou legal cara

Quote:

se alguйm puder fazer um tutorial de como utiliza-lб ficarei muito grato.

WTF? vc q fez a include e quer q alguem ensine como usa-la

Posta pastebin ae
Reply
#4

Quote:
Originally Posted by Lucas_Alemao
View Post
ficou legal cara


WTF? vc q fez a include e quer q alguem ensine como usa-la

Posta pastebin ae
й pq eu so foda mano!! kkkk moro cara,
quando eu escrevi isto eu tava me referindo a quem tinha entendido a que jб tem no post kkkk
Reply
#5

Nossa cara, atй a hora que vocк postou, atй agora, eu estou tentando usar a include.
Somente agora que eu fui entender e usa-lб.
Уtima include, bom trabalho, contiue assim.
Reply
#6

Quote:
Originally Posted by Đeagle
View Post
Nossa cara, atй a hora que vocк postou, atй agora, eu estou tentando usar a include.
Somente agora que eu fui entender e usa-lб.
Уtima include, bom trabalho, contiue assim.
thanx, eu sabia que seria difнcil a compreensгo mas vou fazer um tutorial completinho amanhг pra ficar bacana.
Reply
#7

Nгo seria melhor deixar RF de veis RocksFile, iria dar menos trabalho.
Reply
#8

Quote:
Originally Posted by iReflesh
View Post
Nгo seria melhor deixar RF de veis RocksFile, iria dar menos trabalho.
sim sim eu pensei nisso mas amanhг eu vou fazer algumas modificaзхes e vou colocar para que os doi mйtodos funcionem, obrigado pelo comentбrio
Reply
#9

BlackCoder,
Eu sempre tive uma dъvida, em todas as includes de salvamento de dados, mais eu nгo iria reviver um tуpico pra coisa inъtil.

Й o seguinte por exemplo. Eu faзo um comando, й ao player digitar algo salvar.

Por exemplo,
Eu faзo um comando e o resultado por exemplo, salvar em um arquivo.

Por exemplo
/Eu 1 Ficou Doidгo
/Eu 5 Ficou Normal

Й no arquivo ficar assim
NomeDoPlayer, 1 Resultado: Ficou Doidгo
NomeDoPlayer, 5 Resultado: Ficou Normal


Enfim, como que eu faзo pra salvar isso, em um comando , em apenas um arquivo e nгo ficar criando arquivos?
Me ajude nessa por favor.
Reply
#10

Quote:
Originally Posted by BlackCoder
View Post
vocк estб dizendo como se fosse criar um arquivo de LOG, para ir salvando tudo o que acontece?
@edit kkkk quando terminei de postar olhei para cima o forever alone ali.
kkkkkkk

@TOPIC
Nгo.
Por exemplo,
Sу salvar quando o player digitar o comando, vamos supor que ele digitou o comando /eu 7 ficou chapado
No arquivo salvar assim, NomeDoPlayer, 7 Ficou chapado.
Eu sempre tive essa dъvida.
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)