Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.

Entrar

descriptionUsando dini para salvamento/carregamento de dados EmptyUsando dini para salvamento/carregamento de dados

more_horiz
Apresentação

Olá a todos,sou o Phantoria,mas podem me chamar de Rafael,lido com Pawno desde 2012,faço GM's desde o final de 2013,e sim,eu tenho um blog,criado a poucos dias atrás,porém,sem conteúdo,a não ser uma apresentação breve minha e do próprio blog.

Dini


O que é

Dini é uma include que lida com arquivos .ini criado por DracoBlue,o mesmo criador do famoso zcmd,dubd e dutils.


Porque usar

Dini é focado em arquivos .ini,que por sinal,são grandes aliados quando se trata de salvar algo para ser carregado em dado momento.


Como usar

Bem,isto será breve,porque o Dini é uma include simples de se usar,e não necessita de muita habilidade para ser um grande utilitário em seu Filterscript,ou até em sua Gamemode.


Tags

Tags são identificadores que você seta,para claro,você identificar o que o valor que ela tem diz respeito.

Exemplo:

Código:


public OnPlayerDisconnect(playerid)
{
   new file[128], pName[MAX_PLAYER_NAME]; // Cria duas variaveis para armazenamento.
   GetPlayerName(playerid, pName, MAX_PLAYER_NAME); // Armazenamos o nome do jogador na pName
   format(file, sizeof(file), "%s.ini", pName); // Formatamos a var file com o nome do jogador
        if(!dini_Exists(file)) dini_Create(file);
   dini_Set(file, "Nome", pName); // Setamos no arquivo formatado o a tag "Nome" com o nome do jogador
   dini_IntSet(file, "Dinheiro", GetPlayerMoney(playerid)); // Setamos o dinheiro do player na tag "Dinheiro"
   dini_IntSet(file, "Score", GetPlayerScore(playerid)); // Setamos o score do player na tag "Score"
   dini_IntSet(file, "Skin", GetPlayerSkin(playerid)); // Setamos a id da skin do player na tag "Skin"
   return 1; // Retornamos ao jogo que tudo foi executado com sucesso.
}


No exemplo que foi dado,criamos duas variaveis.

file = Para chamarmos ela no dini,mostrando ao mesmo como achar o arquivo responsavel por cada jogador.
Para isso,usamos a função format,que mostra neste exemplo,que não serve só para formatar textos,setando que na pasta Scriptfiles do seu servidor,cada jogador novo que entrar,ira ser criado um arquivo com seu nome,contendo as tags que setamos.

pName = Esta var ficou responsavel por guardar o nome do jogador,sendo usada no format para guiar o dini em sua procura.

Logo após,usamos o GetPlayerName para pegar o nome do jogador e guardar o mesmo na variavel pName.

OBS:É recomendado que sempre que você for criar variaveis que irão guardar nomes dos jogadores,use sempre MAX_PLAYER_NAME.

Depois usamos o format para formatar a var file,para isso, setamos que estamos tratando da var file,depois pegamos o tamanho do file, e dentro dos "_" usamos o %s para mostrarmos que se trata de texto,e não de integers (numeros),logo após,fechamos os "_" e colocamos a var pName,para entrar no lugar do %s.

O !dini_Exists foi usado para checar se o arquivo já não existe,ou seja,se o jogador já não entrou no servidor,caso não,ele irá criar o arquivo e continuar,caso contrário,ele só irá continuar.

Logo após,usamos o dini_Set que é usado para setar textos (strings) nas tags,no dini_Set do exemplo,setamos que a tag ficara dentro do file(arquivo do jogador), logo após,criamos uma tag chamada "Nome" e colocamos o nome do jogador nesta tag usando a var que continha o mesmo (pName).

Após isto,usamos o dini_IntSet para setar numeros inteiros(integers) nas tags,neste dini_IntSet,setamos que a tag ficará dentro do file,logo após,criamos outra tag só que com o nome de "Dinheiro" tratando-se do dinheiro do jogador,e log após isso,para não usar mais variaveis,usamos direto a função GetPlayerMoney,que funciona do mesmo jeito.

Depois,seguindo a mesma regra,só mudando o nome das tags,usamos o GetPlayerScore para guardar o score da pessoa na tag "Score" e GetPlayerSkin para guardar a id da skin da pessoa na tag "Skin".


Usando as tags

Neste exemplo a seguir,usamos duas publics, OnPlayerConnect e OnPlayerRespawn.

Exemplo:

Código:


public OnPlayerConnect(playerid)
{
   new file[128], pName[MAX_PLAYER_NAME]; // Recriamos as mesmas variaveis,só que em publics diferentes.
   GetPlayerName(playerid, pName, MAX_PLAYER_NAME); // Pegamos o nome da pessoa e guardamos em pName.
   format(file, sizeof(file), "%s.ini", pName); // Formatamos o caminho para o dini dentro da var file
   if(!dini_Exists(file)) dini_Create(file);  // Checamos se o arquivo do player existe,se não existir,ele cria.
   ResetPlayerMoney(playerid); // Reseta o dinheiro do jogador para não bugar.
   GivePlayerMoney(playerid, dini_Int(file, "Dinheiro")); // Da o dinheiro guardado na tag "Dinheiro"
   SetPlayerScore(playerid, dini_Int(file, "Score")); // Da o score guardado na tag "Score"
   return 1; // Retornamos sucesso.
}

public OnPlayerSpawn(playerid)
{
   new file[128], pName[MAX_PLAYER_NAME]; // Recriamos as mesmas variaveis novamente
   GetPlayerName(playerid, pName, MAX_PLAYER_NAME); // Pegamos o nome da pessoa e guardamos
   format(file, sizeof(file), "%s.ini", pName); // Formatamos mais uma vez o caminho para o dini
   SetPlayerSkin(playerid, dini_Int(file, "Skin")); // Setamos a skin guardada na tag "Skin"
   return 1; // Retornamos sucesso.
}


Neste exemplo,usamos o dini_Int, para pegar os numeros guardados nas tags que setamos anteriormente,quando a pessoa sai do server.

Lembrando que para pegar os valores,não é preciso colocar nada mais que 2 paramêtros,o nome do arquivo,que no caso para nós era o file,e a tag que você vai pegar o valor,que neste caso,eram Skin para a skin do player, Dinheiro para pegar o dinheiro do player e Score para pegar o score da pessoa.

Com isso,usamos o SetPlayerSkin, GivePlayerMoney e SetPlayerScore, normalmente,só que,no lugar de um valor,usamos o dini_Int para pegar os valores setados nas tags "Skin", "Dinheiro" e "Score".


Onde usar

dini_Exists = Checa se o arquivo existe,recomendado usar no OnPlayerConnect
dini_Create = Cria o arquivo,recomendado usar em dialogs ou comandos para criação de contas ( OnPlayerDisconnect/OnPlayerConnect ou OnPlayerCommandText)
dini_IntSet = Seta um valor definido por você ou por uma variavel,na tag escolhida
dini_Set = Seta um text (string) definida por você ou por uma variavel,na tag escolhida,um exemplo ? Um nome.
dini_Int = Pega o valor em integer (numero inteiro) na tag escolhida.

OBS: dini_IntSet NÃO deve ser usado para salvar numeros float (não inteiros) ,para os mesmos,a função dini_FloatSet deve ser usada.

Sinceramente,outras funções como dini_Remove,para mim,não funcionaram,caso queira deletar o arquivo,é recomendado o fremove que funciona da mesma forma que o mesmo (fremove(file)).

Comentários Finais


Para começar,este mesmo tutorial estará disponivel no blog,caso queira visitar o blog,entre em meu perfil e olhe nas informações.

Sou um scripter médio,independende dos filterscripts "marotos" (como dizem) que eu já fiz,eu ainda sou só uma criança no pawno,porém,o que aprendi,eu vou procurar passar para todos(as) aqueles(as) que procuram aprender,mais precisamente,tutoriais estarão no blog,toda semana,caso eu não consiga postar por semana,postarei mais reforçado,e por mês.

Muito obrigado a você que se interessa por pawn,que se dedica e que procura,cada dia mais,se tornar mais experiente,assim como eu.

descriptionUsando dini para salvamento/carregamento de dados EmptyRe: Usando dini para salvamento/carregamento de dados

more_horiz
Bom tutorial, mais na minha opinião prefiro DOF2 & MySQL

descriptionUsando dini para salvamento/carregamento de dados EmptyRe: Usando dini para salvamento/carregamento de dados

more_horiz
Sr.Rockstar escreveu:
Bom tutorial, mais na minha opinião prefiro DOF2 & MySQL


Dini é mais básico que estes,para novatos é fundamental saber a usar o Dini para carregar dados em arquivos .ini caso os mesmo queiram salvar dados como contas de jogadores.

MySQL é algo um pouco mais avançado,eu não acho que é recomendado iniciar com coisas assim.
Mesmo assim,obrigado por ingressar um comentário.

descriptionUsando dini para salvamento/carregamento de dados EmptyRe: Usando dini para salvamento/carregamento de dados

more_horiz
privacy_tip Permissões neste sub-fórum
Não podes responder a tópicos
power_settings_newInicie sessão para responder