11.03.2012, 03:05
(
Last edited by BlackCoder; 11/03/2012 at 04:20 PM.
)
Sistema de Salvamento de Dados
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.
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;
}
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 *-*