[Tutorial] Usando Dini [ Principal para Aprende-la ]
#1


Por [FeK]DraKiNs

Olб a todos hoje irei fazer um tutorial meio completo explicando o funcionamento e como usa-se Dini.
Й algo realmente fбcil porйm precisamos gravar suas funзхes,caso contrбrio passaremos tempo e tempos usando COPIAR-COLAR para fazer um simples sistema de dados.

Primeiramente para poupar meu texto irei explicar o que significa algumas palavras na Linguagem Dini,ou Pawn,claro.

EXPLICANDO BБSICO

TAG:
Bom, tag й aquele definiзгo contida dentro de um Arquivo vamos pegar um exemplo de um arquivo de dados do player [FeK]DraKiNs

Grana=1000
AdminLevel=2

Observem que Destaquei a palavra antes do =
Bom porque destaquei?
Simples й porque essas palavras sгo as tais Tags

Vejamos:
pawn Код:
dini_Set("Arquivo.txt","TAG","FazerOque");
Ao fazer isto ele criarб um Arquivo.txt dentro da pasta ScriptFiles que й onde salva.
Dentro dele estarб escrito da seguinte maneira:

TAG=FazerOque

Para ler esta Tag dentro do Arquivo usaremos

pawn Код:
dini_Get("Arquivo.txt","TAG");
Ele irб retornar o FazerOQue


PRINCIPAIS FUNЗХES

Bom entгo vamos explicar as funзгo e suas respectivas aзхes dentro de um Game Mode:


Escrever e Ler String em Arquivo

dini_Set("Arquivo.txt","Key","String");

dini_Set colocarб um String no Arquivo.txt, lembrando que String й Texto e nгo Nъmeros

Como Defino o Arquivo


Aqui algo simples,apenas precisamos de um Array e Format nela.
pawn Код:
new NAME[24]; new Arquivo[44]; // Defini as 2 Array para Salvar Nome e Local do Arquivo, de definiremos poterioemente
GetPlayerName(playerid,NAME,24); // Pega nome do Player e Salva em NAME
format(Arquivo,44,"%s.ini",NAME); //Formata a Array "Arquivo" deixando No nomedoplayer.ini para ler
dini_Set(Arquivo,"Nome",NAME); // Seta No Arquivo NOME=[FeK]DraKiNs
Como comparo Duas Nomes em um Arquivo?

Lembram meu tutorial de String? й usaremos STRCMP,pois NOMES й String.

Exemplo:

pawn Код:
if(!strcmp(dini_Get("Arquivo.txt", "Senha"), dini_Get("Arquivo2.txt", "Senha"), false))
{
     SendClientMessage(playerid,0F0000x,"A Senha do Arquivo1 e Arquivo2 Sгo Iguais");
}

Caso nгo for String? NUMEROS
Bom quando nгo se trata de string normalmente usaremos nъmero,basta usar da seguinte forma

pawn Код:
dini_IntSet("Moneys.ini","[FeK]DraKiNs",GetPlayerMoney(playerid));
Este cуdigo salvarб um arquivo da Seguinte forma:
Em Moneys.ini
Salvarб
TAG:[Fek]DraKiNs
VALOR: 1000 (No Exemplo Tenho 1000 Reais | Euros )

Ficando:

[FeK]DraKiNs=1000

A Tag й [FeK]DraKiNs como dito anteriormente

Como lerei isso? NUMEROS
Para ler usamos dini_Int ele pegarб:

pawn Код:
dini_Int("Moneys","[FeK]DraKiNs");
Ele retornarб 1000 devido a ter salvado 1000 Anteriormente

Criar & Deletar Arquivo

pawn Код:
dini_Create("DraKiNsCat.ini"); // criar
dini_Remove("DraKiNsCat.ini"); // Remover


ATENЗГO

Caso seu Game Mode esteja fechando й porque ele esta tentando abrir/escrever em um arquivo inexistente

EXEMPLO
Arquivo CAT.ini nгo existe

pawn Код:
dini_Set("CAT.ini","DraKiNS","йgato");
Como os Arquivo nгo existe ele crasharб servidor,aconselho colocarem antes de cada Leitura/gravaзгo/Remove:

pawn Код:
if(!dini_Exists("CAT.ini")) dini_Create("CAT.ini");
dini_Set("CAT.ini","DraKiNS","йgato");
dini_Exists checa se existe, se nгo existe ! ele Cria,assim nгo crashando Server


FIM
ERROS? PM-ME
Reply
#2

Obrigado DraKiNs, vai me ajudar mto.
Reply
#3

COMO FASSO UMA DINI PRA CARREGAR ISSO
pawn Код:
public SalvarCofreOrg()
{
    new arquivo[256];
    new idx = 1;
    while (idx < sizeof(CofreOrg))
    {
        format(arquivo, sizeof(arquivo), "/CofreOrg/Org%d.ini",idx);
        dini_IntSet(arquivo,"Dinheiro",CofreOrg[idx][Dinheiro]);
        dini_IntSet(arquivo,"Materiais",CofreOrg[idx][Materiais]);
        dini_IntSet(arquivo,"Maconha",CofreOrg[idx][Maconha]);
        dini_IntSet(arquivo,"Cocaina",CofreOrg[idx][Cocaina]);
        dini_IntSet(arquivo,"Crack",CofreOrg[idx][Crack]);
        printf("-------[SALVANDO COFRE ORG: %d] -----------------------",idx);
        printf("[ORG: %d] Dinheiro = %d",idx,CofreOrg[idx][Dinheiro]);
        printf("[ORG: %d] Materiais = %d",idx,CofreOrg[idx][Materiais]);
        printf("[ORG: %d] Maconha = %d",idx,CofreOrg[idx][Maconha]);
          printf("[ORG: %d] Cocaina = %d",idx,CofreOrg[idx][Cocaina]);
          printf("[ORG: %d] Crack = %d",idx,CofreOrg[idx][Crack]);
          print("-------------------------------------------------");
          idx ++;
      }
    return 1;
}
stock DepositarGranaOrg(org,valor)
{
    new antes = CofreOrg[org][Dinheiro];
    CofreOrg[org][Dinheiro] = antes+valor;
    new arquivo[256];
    format(arquivo, sizeof(arquivo), "/CofreOrg/Org%d.ini",org);
    dini_IntSet(arquivo,"Dinheiro",CofreOrg[org][Dinheiro]);
    return 1;
}
stock SacarGranaOrg(org,valor)
{
    new antes = CofreOrg[org][Dinheiro];
    CofreOrg[org][Dinheiro] = antes-valor;
    new arquivo[256];
    format(arquivo, sizeof(arquivo), "/CofreOrg/Org%d.ini",org);
    dini_IntSet(arquivo,"Dinheiro",CofreOrg[org][Dinheiro]);
    return 1;
}

stock DepositarMaterialOrg(org,valor)
{
    new antes = CofreOrg[org][Materiais];
    CofreOrg[org][Materiais] = antes+valor;
    new arquivo[256];
    format(arquivo, sizeof(arquivo), "/CofreOrg/Org%d.ini",org);
    dini_IntSet(arquivo,"Materiais",CofreOrg[org][Materiais]);
    return 1;
}
stock SacarMaterialOrg(org,valor)
{
    new antes = CofreOrg[org][Materiais];
    CofreOrg[org][Materiais] = antes-valor;
    new arquivo[256];
    format(arquivo, sizeof(arquivo), "/CofreOrg/Org%d.ini",org);
    dini_IntSet(arquivo,"Materiais",CofreOrg[org][Materiais]);
    return 1;
}

stock DepositarMaconhaOrg(org,valor)
{
    new antes = CofreOrg[org][Maconha];
    CofreOrg[org][Maconha] = antes+valor;
    new arquivo[256];
    format(arquivo, sizeof(arquivo), "/CofreOrg/Org%d.ini",org);
    dini_IntSet(arquivo,"Maconha",CofreOrg[org][Maconha]);
    return 1;
}
stock SacarMaconhaOrg(org,valor)
{
    new antes = CofreOrg[org][Maconha];
    CofreOrg[org][Maconha] = antes-valor;
    new arquivo[256];
    format(arquivo, sizeof(arquivo), "/CofreOrg/Org%d.ini",org);
    dini_IntSet(arquivo,"Maconha",CofreOrg[org][Maconha]);
    return 1;
}
stock DepositarCocainaOrg(org,valor)
{
    new antes = CofreOrg[org][Cocaina];
    CofreOrg[org][Cocaina] = antes+valor;
    new arquivo[256];
    format(arquivo, sizeof(arquivo), "/CofreOrg/Org%d.ini",org);
    dini_IntSet(arquivo,"Cocaina",CofreOrg[org][Cocaina]);
    return 1;
}
stock SacarCocainaOrg(org,valor)
{
    new antes = CofreOrg[org][Cocaina];
    CofreOrg[org][Cocaina] = antes-valor;
    new arquivo[256];
    format(arquivo, sizeof(arquivo), "/CofreOrg/Org%d.ini",org);
    dini_IntSet(arquivo,"Cocaina",CofreOrg[org][Cocaina]);
    return 1;
}
stock DepositarCrackOrg(org,valor)
{
    new antes = CofreOrg[org][Crack];
    CofreOrg[org][Crack] = antes+valor;
    new arquivo[256];
    format(arquivo, sizeof(arquivo), "/CofreOrg/Org%d.ini",org);
    dini_IntSet(arquivo,"Crack",CofreOrg[org][Crack]);
    return 1;
}
stock SacarCrackOrg(org,valor)
{
    new antes = CofreOrg[org][Crack];
    CofreOrg[org][Crack] = antes-valor;
    new arquivo[256];
    format(arquivo, sizeof(arquivo), "/CofreOrg/Org%d.ini",org);
    dini_IntSet(arquivo,"Crack",CofreOrg[org][Crack]);
    return 1;
}
Reply
#4

sitio errado...

bem drakon ja sabes o que disse sobre este topico
Reply
#5

Tб atй aqui tudo bem, mais e agora como faзo para exibir no jogo o que tem dentro do arquivo usando SendClientMessage ?
Й que tipo, nгo sei o que esta dentro do arquivo, quero simplesmente que apareзa no jogo o que estб la dentro.
Reply
#6

voces andao bebedos ou que? ja disse SITIO ERRADO AQUI E SO PARA DISCUTIR SOBRE O TOPICO!

se kerem ajuda criem um topico no "outro lado" e se ja o criaram esperem pela ajuda!
Reply
#7

fav
Reply
#8

Quote:
Originally Posted by Homer_Tihuana
Посмотреть сообщение
COMO FASSO UMA DINI PRA CARREGAR ISSO
pawn Код:
public SalvarCofreOrg()
{
    new arquivo[256];
    new idx = 1;
    while (idx < sizeof(CofreOrg))
    {
        format(arquivo, sizeof(arquivo), "/CofreOrg/Org%d.ini",idx);
        dini_IntSet(arquivo,"Dinheiro",CofreOrg[idx][Dinheiro]);
        dini_IntSet(arquivo,"Materiais",CofreOrg[idx][Materiais]);
        dini_IntSet(arquivo,"Maconha",CofreOrg[idx][Maconha]);
        dini_IntSet(arquivo,"Cocaina",CofreOrg[idx][Cocaina]);
        dini_IntSet(arquivo,"Crack",CofreOrg[idx][Crack]);
        printf("-------[SALVANDO COFRE ORG: %d] -----------------------",idx);
        printf("[ORG: %d] Dinheiro = %d",idx,CofreOrg[idx][Dinheiro]);
        printf("[ORG: %d] Materiais = %d",idx,CofreOrg[idx][Materiais]);
        printf("[ORG: %d] Maconha = %d",idx,CofreOrg[idx][Maconha]);
          printf("[ORG: %d] Cocaina = %d",idx,CofreOrg[idx][Cocaina]);
          printf("[ORG: %d] Crack = %d",idx,CofreOrg[idx][Crack]);
          print("-------------------------------------------------");
          idx ++;
      }
    return 1;
}
stock DepositarGranaOrg(org,valor)
{
    new antes = CofreOrg[org][Dinheiro];
    CofreOrg[org][Dinheiro] = antes+valor;
    new arquivo[256];
    format(arquivo, sizeof(arquivo), "/CofreOrg/Org%d.ini",org);
    dini_IntSet(arquivo,"Dinheiro",CofreOrg[org][Dinheiro]);
    return 1;
}
stock SacarGranaOrg(org,valor)
{
    new antes = CofreOrg[org][Dinheiro];
    CofreOrg[org][Dinheiro] = antes-valor;
    new arquivo[256];
    format(arquivo, sizeof(arquivo), "/CofreOrg/Org%d.ini",org);
    dini_IntSet(arquivo,"Dinheiro",CofreOrg[org][Dinheiro]);
    return 1;
}

stock DepositarMaterialOrg(org,valor)
{
    new antes = CofreOrg[org][Materiais];
    CofreOrg[org][Materiais] = antes+valor;
    new arquivo[256];
    format(arquivo, sizeof(arquivo), "/CofreOrg/Org%d.ini",org);
    dini_IntSet(arquivo,"Materiais",CofreOrg[org][Materiais]);
    return 1;
}
stock SacarMaterialOrg(org,valor)
{
    new antes = CofreOrg[org][Materiais];
    CofreOrg[org][Materiais] = antes-valor;
    new arquivo[256];
    format(arquivo, sizeof(arquivo), "/CofreOrg/Org%d.ini",org);
    dini_IntSet(arquivo,"Materiais",CofreOrg[org][Materiais]);
    return 1;
}

stock DepositarMaconhaOrg(org,valor)
{
    new antes = CofreOrg[org][Maconha];
    CofreOrg[org][Maconha] = antes+valor;
    new arquivo[256];
    format(arquivo, sizeof(arquivo), "/CofreOrg/Org%d.ini",org);
    dini_IntSet(arquivo,"Maconha",CofreOrg[org][Maconha]);
    return 1;
}
stock SacarMaconhaOrg(org,valor)
{
    new antes = CofreOrg[org][Maconha];
    CofreOrg[org][Maconha] = antes-valor;
    new arquivo[256];
    format(arquivo, sizeof(arquivo), "/CofreOrg/Org%d.ini",org);
    dini_IntSet(arquivo,"Maconha",CofreOrg[org][Maconha]);
    return 1;
}
stock DepositarCocainaOrg(org,valor)
{
    new antes = CofreOrg[org][Cocaina];
    CofreOrg[org][Cocaina] = antes+valor;
    new arquivo[256];
    format(arquivo, sizeof(arquivo), "/CofreOrg/Org%d.ini",org);
    dini_IntSet(arquivo,"Cocaina",CofreOrg[org][Cocaina]);
    return 1;
}
stock SacarCocainaOrg(org,valor)
{
    new antes = CofreOrg[org][Cocaina];
    CofreOrg[org][Cocaina] = antes-valor;
    new arquivo[256];
    format(arquivo, sizeof(arquivo), "/CofreOrg/Org%d.ini",org);
    dini_IntSet(arquivo,"Cocaina",CofreOrg[org][Cocaina]);
    return 1;
}
stock DepositarCrackOrg(org,valor)
{
    new antes = CofreOrg[org][Crack];
    CofreOrg[org][Crack] = antes+valor;
    new arquivo[256];
    format(arquivo, sizeof(arquivo), "/CofreOrg/Org%d.ini",org);
    dini_IntSet(arquivo,"Crack",CofreOrg[org][Crack]);
    return 1;
}
stock SacarCrackOrg(org,valor)
{
    new antes = CofreOrg[org][Crack];
    CofreOrg[org][Crack] = antes-valor;
    new arquivo[256];
    format(arquivo, sizeof(arquivo), "/CofreOrg/Org%d.ini",org);
    dini_IntSet(arquivo,"Crack",CofreOrg[org][Crack]);
    return 1;
}
pq vcs nгo para de roubar e comeзa a criar ?
Reply
#9

O que eu uso pra pegar o que tб escrito no fazeroque e aplicar ela numa funзгo? exemplo:

pawn Код:
public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
{
GetPlayerName(playerid,ip,256);
format(vstring,256,"/placas/%s.txt",ip);
dini_Get(vstring,"%s.txt","fazeroque");
SetVehicleNumberPlate(GetPlayerVehicleID(playerid), fazeroque);
    return 1;
}
O que eu quero й um seguinte, que ele identifique o que tб escrito no txt e aplique o que tб escrito na funзгo SetVehicleNumberPlate. Serб que pode me ajudar? Obrigado.
Reply
#10

Quote:
Originally Posted by Josma_cmd
Посмотреть сообщение
O que eu uso pra pegar o que tб escrito no fazeroque e aplicar ela numa funзгo? exemplo:

pawn Код:
public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
{
GetPlayerName(playerid,ip,256);
format(vstring,256,"/placas/%s.txt",ip);
dini_Get(vstring,"%s.txt","fazeroque");
SetVehicleNumberPlate(GetPlayerVehicleID(playerid), fazeroque);
    return 1;
}
O que eu quero й um seguinte, que ele identifique o que tб escrito no txt e aplique o que tб escrito na funзгo SetVehicleNumberPlate. Serб que pode me ajudar? Obrigado.
Use o Search !

Achei pra vocк:

https://sampforum.blast.hk/showthread.php?tid=214417

Espero ter ajudado
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)